Built with Alectryon, running Coq+SerAPI v8.18.0+0.18.1. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑ Ctrl+↓ to navigate, Ctrl+🖱️ to focus. On Mac, use instead of Ctrl.
[Loading ML file ring_plugin.cmxs (using legacy method) ... done]
[Loading ML file zify_plugin.cmxs (using legacy method) ... done]
[Loading ML file micromega_plugin.cmxs (using legacy method) ... done]
[Loading ML file btauto_plugin.cmxs (using legacy method) ... done]
[Loading ML file coq-itauto.plugin ... done]
From Coq Require Import FinFun FunctionalExtensionality. From stdpp Require Import prelude finite. From VLSM.Lib Require Import Preamble ListExtras StdppListSet. From VLSM.Core Require Import VLSM VLSMProjections Composition ProjectionTraces Validator. From VLSM.Core Require Import SubProjectionTraces Equivocation. From VLSM.Core Require Import Equivocation.NoEquivocation. From VLSM.Core Require Import Equivocators.Equivocators Equivocators.EquivocatorsProjections.
[Loading ML file extraction_plugin.cmxs (using legacy method) ... done]
[Loading ML file equations_plugin.cmxs (using legacy method) ... done]
From VLSM.Core Require Import Equivocators.MessageProperties.

Core: VLSM Equivocator Composition Projections

Section sec_equivocators_composition_projections.

Context {message : Type}
  `{finite.Finite index}
  (IM : index -> VLSM message)
  `{forall i : index, HasBeenSentCapability (IM i)}
  (FreeE := free_composite_vlsm (equivocator_IM IM))
  (PreFreeE := preloaded_with_all_messages_vlsm FreeE)
  (Free := free_composite_vlsm IM)
  (PreFree := preloaded_with_all_messages_vlsm Free)
  .
Given a transition_item item in the compositions of equivocators of components IM and an equivocator_descriptors, if the descriptors are all valid in the destination of the transition this returns a set of updated descriptors for corresponding positions in the origin state of the transition, and if the transition was an in-place change to an existing alternative it also returns a projected transition item in the plain composition of IM.
Definition equivocators_transition_item_project
  (eqv_descriptors : equivocator_descriptors IM)
  (item : composite_transition_item (equivocator_IM IM))
  : option (option (composite_transition_item IM) * equivocator_descriptors IM)
  :=
  let sx := equivocators_state_project IM eqv_descriptors (destination item) in
  let eqv := projT1 (l item) in
  let deqv := eqv_descriptors eqv in
  match
    equivocator_vlsm_transition_item_project
      (IM eqv)
      (composite_transition_item_projection (equivocator_IM IM) item)
      deqv
      with
  | Some (Some item', deqv') =>
    Some
      (Some (Build_transition_item Free
        (existT eqv (l item'))
        (input item) sx (output item))
      , equivocator_descriptors_update IM eqv_descriptors eqv deqv')
  | Some (None, deqv') => Some (None, equivocator_descriptors_update IM eqv_descriptors eqv deqv')
  | None => None
  end.

message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
oitem: option (composite_transition_item IM)
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
Hdescriptors: proper_equivocator_descriptors IM descriptors (destination item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Hpr: equivocators_transition_item_project descriptors item = Some (oitem, idescriptors)

set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) (destination item)) (newmachine_descriptors_list IM (enum index) descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
oitem: option (composite_transition_item IM)
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
Hdescriptors: proper_equivocator_descriptors IM descriptors (destination item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Hpr: equivocators_transition_item_project descriptors item = Some (oitem, idescriptors)

set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) (destination item)) (newmachine_descriptors_list IM (enum index) descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
oitem: option (composite_transition_item IM)
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
Hdescriptors: proper_equivocator_descriptors IM descriptors (destination item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Hpr: match equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := eq_rect_r (λ n : index, EquivocatorLabel (IM n)) (projT2 (l item)) eq_refl; input := input item; destination := destination item (projT1 (l item)); output := output item |} (descriptors (projT1 (l item))) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM descriptors (destination item); output := output item |}, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | None => None end = Some (oitem, idescriptors)

set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) (destination item)) (newmachine_descriptors_list IM (enum index) descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
oitem: option (composite_transition_item IM)
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
Hdescriptors: proper_equivocator_descriptors IM descriptors (destination item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Hpr: match equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (descriptors (projT1 (l item))) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM descriptors (destination item); output := output item |}, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | None => None end = Some (oitem, idescriptors)

set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) (destination item)) (newmachine_descriptors_list IM (enum index) descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
oitem: option (composite_transition_item IM)
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
Hdescriptors: proper_equivocator_descriptors IM descriptors (destination item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
oitemx: option transition_item
deqv': MachineDescriptor (IM (projT1 (l item)))
Hitem_pr: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (descriptors (projT1 (l item))) = Some (oitemx, deqv')
Hpr: match oitemx with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM descriptors (destination item); output := output item |}, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | None => Some (None, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') end = Some (oitem, idescriptors)

set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) (destination item)) (newmachine_descriptors_list IM (enum index) descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
oitem: option (composite_transition_item IM)
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
Hdescriptors: proper_equivocator_descriptors IM descriptors (destination item)
Ht: (let (i, li) := l item in let (si', om') := equivocator_transition (IM i) li (s i, input item) in (state_update (equivocator_IM IM) s i si', om')) = (destination item, output item)
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
oitemx: option transition_item
deqv': MachineDescriptor (IM (projT1 (l item)))
Hitem_pr: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (descriptors (projT1 (l item))) = Some (oitemx, deqv')
Hpr: match oitemx with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM descriptors (destination item); output := output item |}, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | None => Some (None, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') end = Some (oitem, idescriptors)

set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) (destination item)) (newmachine_descriptors_list IM (enum index) descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
l: label (composite_type (equivocator_IM IM))
input: option message
destination: state (composite_type (equivocator_IM IM))
output: option message
oitem: option (composite_transition_item IM)
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
Hdescriptors: proper_equivocator_descriptors IM descriptors (VLSM.destination {| l := l; input := input; destination := destination; output := output |})
Ht: (let (i, li) := VLSM.l {| l := l; input := input; destination := destination; output := output |} in let (si', om') := equivocator_transition (IM i) li (s i, VLSM.input {| l := l; input := input; destination := destination; output := output |}) in (state_update (equivocator_IM IM) s i si', om')) = (VLSM.destination {| l := l; input := input; destination := destination; output := output |}, VLSM.output {| l := l; input := input; destination := destination; output := output |})
Hv: composite_valid (equivocator_IM IM) (VLSM.l {| l := l; input := input; destination := destination; output := output |}) (s, VLSM.input {| l := l; input := input; destination := destination; output := output |})
oitemx: option transition_item
deqv': MachineDescriptor (IM (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |})))
Hitem_pr: equivocator_vlsm_transition_item_project (IM (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |}))) {| l := projT2 (VLSM.l {| l := l; input := input; destination := destination; output := output |}); input := VLSM.input {| l := l; input := input; destination := destination; output := output |}; destination := VLSM.destination {| l := l; input := input; destination := destination; output := output |} (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |})); output := VLSM.output {| l := l; input := input; destination := destination; output := output |} |} (descriptors (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |}))) = Some (oitemx, deqv')
Hpr: match oitemx with | Some item' => Some (Some {| l := existT (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |})) (VLSM.l item'); input := VLSM.input {| l := l; input := input; destination := destination; output := output |}; destination := equivocators_state_project IM descriptors (VLSM.destination {| l := l; input := input; destination := destination; output := output |}); output := VLSM.output {| l := l; input := input; destination := destination; output := output |} |}, equivocator_descriptors_update IM descriptors (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |})) deqv') | None => Some (None, equivocator_descriptors_update IM descriptors (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |})) deqv') end = Some (oitem, idescriptors)

set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) (VLSM.destination {| l := l; input := input; destination := destination; output := output |})) (newmachine_descriptors_list IM (enum index) descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
l: composite_label (equivocator_IM IM)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
oitem: option (composite_transition_item IM)
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
Hdescriptors: proper_equivocator_descriptors IM descriptors destination
Ht: (let (i, li) := l in let (si', om') := equivocator_transition (IM i) li (s i, input) in (state_update (equivocator_IM IM) s i si', om')) = (destination, output)
Hv: let (i, li) := l in equivocator_valid (IM i) li (s i, input)
oitemx: option transition_item
deqv': MachineDescriptor (IM (projT1 l))
Hitem_pr: equivocator_vlsm_transition_item_project (IM (projT1 l)) {| l := projT2 l; input := input; destination := destination (projT1 l); output := output |} (descriptors (projT1 l)) = Some (oitemx, deqv')
Hpr: match oitemx with | Some item' => Some (Some {| l := existT (projT1 l) (VLSM.l item'); input := input; destination := equivocators_state_project IM descriptors destination; output := output |}, equivocator_descriptors_update IM descriptors (projT1 l) deqv') | None => Some (None, equivocator_descriptors_update IM descriptors (projT1 l) deqv') end = Some (oitem, idescriptors)

set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) destination) (newmachine_descriptors_list IM (enum index) descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
i: index
li: label (equivocator_IM IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
oitem: option (composite_transition_item IM)
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
Hdescriptors: proper_equivocator_descriptors IM descriptors destination
Ht: (let (si', om') := equivocator_transition (IM i) li (s i, input) in (state_update (equivocator_IM IM) s i si', om')) = (destination, output)
Hv: equivocator_valid (IM i) li (s i, input)
oitemx: option transition_item
deqv': MachineDescriptor (IM (projT1 (existT i li)))
Hitem_pr: equivocator_vlsm_transition_item_project (IM (projT1 (existT i li))) {| l := projT2 (existT i li); input := input; destination := destination (projT1 (existT i li)); output := output |} (descriptors (projT1 (existT i li))) = Some (oitemx, deqv')
Hpr: match oitemx with | Some item' => Some (Some {| l := existT (projT1 (existT i li)) (l item'); input := input; destination := equivocators_state_project IM descriptors destination; output := output |}, equivocator_descriptors_update IM descriptors (projT1 (existT i li)) deqv') | None => Some (None, equivocator_descriptors_update IM descriptors (projT1 (existT i li)) deqv') end = Some (oitem, idescriptors)

set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) destination) (newmachine_descriptors_list IM (enum index) descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
oitem: option (composite_transition_item IM)
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
Hdescriptors: proper_equivocator_descriptors IM descriptors destination
Ht: (let (si', om') := equivocator_transition (IM i) li (s i, input) in (state_update (equivocator_IM IM) s i si', om')) = (destination, output)
Hv: equivocator_valid (IM i) li (s i, input)
oitemx: option transition_item
deqv': MachineDescriptor (IM i)
Hitem_pr: equivocator_vlsm_transition_item_project (IM i) {| l := li; input := input; destination := destination i; output := output |} (descriptors i) = Some (oitemx, deqv')
Hpr: match oitemx with | Some item' => Some (Some {| l := existT i (l item'); input := input; destination := equivocators_state_project IM descriptors destination; output := output |}, equivocator_descriptors_update IM descriptors i deqv') | None => Some (None, equivocator_descriptors_update IM descriptors i deqv') end = Some (oitem, idescriptors)

set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) destination) (newmachine_descriptors_list IM (enum index) descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
oitem: option (composite_transition_item IM)
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
Hdescriptors: proper_equivocator_descriptors IM descriptors destination
si': equivocator_state (IM i)
om: option message
Htei: equivocator_transition (IM i) li (s i, input) = (si', om)
Ht: (state_update (equivocator_IM IM) s i si', om) = (destination, output)
Hv: equivocator_valid (IM i) li (s i, input)
oitemx: option transition_item
deqv': MachineDescriptor (IM i)
Hitem_pr: equivocator_vlsm_transition_item_project (IM i) {| l := li; input := input; destination := destination i; output := output |} (descriptors i) = Some (oitemx, deqv')
Hpr: match oitemx with | Some item' => Some (Some {| l := existT i (l item'); input := input; destination := equivocators_state_project IM descriptors destination; output := output |}, equivocator_descriptors_update IM descriptors i deqv') | None => Some (None, equivocator_descriptors_update IM descriptors i deqv') end = Some (oitem, idescriptors)

set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) destination) (newmachine_descriptors_list IM (enum index) descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
input, output: option message
oitem: option (composite_transition_item IM)
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
si': equivocator_state (IM i)
Hdescriptors: proper_equivocator_descriptors IM descriptors (state_update (equivocator_IM IM) s i si')
Htei: equivocator_transition (IM i) li (s i, input) = (si', output)
Hv: equivocator_valid (IM i) li (s i, input)
oitemx: option transition_item
deqv': MachineDescriptor (IM i)
Hpr: match oitemx with | Some item' => Some (Some {| l := existT i (l item'); input := input; destination := equivocators_state_project IM descriptors (state_update (equivocator_IM IM) s i si'); output := output |}, equivocator_descriptors_update IM descriptors i deqv') | None => Some (None, equivocator_descriptors_update IM descriptors i deqv') end = Some (oitem, idescriptors)
Hitem_pr: equivocator_vlsm_transition_item_project (IM i) {| l := li; input := input; destination := state_update (equivocator_IM IM) s i si' i; output := output |} (descriptors i) = Some (oitemx, deqv')

set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) (state_update (equivocator_IM IM) s i si')) (newmachine_descriptors_list IM (enum index) descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
input, output: option message
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
si': equivocator_state (IM i)
Hdescriptors: proper_equivocator_descriptors IM descriptors (state_update (equivocator_IM IM) s i si')
Htei: equivocator_transition (IM i) li (s i, input) = (si', output)
Hv: equivocator_valid (IM i) li (s i, input)
oitemx: option transition_item
deqv': MachineDescriptor (IM i)
Hitem_pr: equivocator_vlsm_transition_item_project (IM i) {| l := li; input := input; destination := state_update (equivocator_IM IM) s i si' i; output := output |} (descriptors i) = Some (oitemx, deqv')

set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) (equivocator_descriptors_update IM descriptors i deqv')) ⊆ set_union (equivocating_indices IM (enum index) (state_update (equivocator_IM IM) s i si')) (newmachine_descriptors_list IM (enum index) descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
input, output: option message
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
si': equivocator_state (IM i)
Hdescriptors: proper_equivocator_descriptors IM descriptors (state_update (equivocator_IM IM) s i si')
Htei: equivocator_transition (IM i) li (s i, input) = (si', output)
Hv: equivocator_valid (IM i) li (s i, input)
oitemx: option transition_item
deqv': MachineDescriptor (IM i)
Hitem_pr: equivocator_vlsm_transition_item_project (IM i) {| l := li; input := input; destination := state_update (equivocator_IM IM) s i si' i; output := output |} (descriptors i) = Some (oitemx, deqv')
eqv: index
Heqv: eqv ∈ set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) (equivocator_descriptors_update IM descriptors i deqv'))

eqv ∈ set_union (equivocating_indices IM (enum index) (state_update (equivocator_IM IM) s i si')) (newmachine_descriptors_list IM (enum index) descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
input, output: option message
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
si': equivocator_state (IM i)
Hdescriptors: proper_equivocator_descriptors IM descriptors (state_update (equivocator_IM IM) s i si')
Htei: equivocator_transition (IM i) li (s i, input) = (si', output)
Hv: equivocator_valid (IM i) li (s i, input)
oitemx: option transition_item
deqv': MachineDescriptor (IM i)
Hitem_pr: equivocator_vlsm_transition_item_project (IM i) {| l := li; input := input; destination := state_update (equivocator_IM IM) s i si' i; output := output |} (descriptors i) = Some (oitemx, deqv')
eqv: index
Heqv: eqv ∈ equivocating_indices IM (enum index) s ∨ eqv ∈ newmachine_descriptors_list IM (enum index) (equivocator_descriptors_update IM descriptors i deqv')

eqv ∈ set_union (equivocating_indices IM (enum index) (state_update (equivocator_IM IM) s i si')) (newmachine_descriptors_list IM (enum index) descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
input, output: option message
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
si': equivocator_state (IM i)
Hdescriptors: proper_equivocator_descriptors IM descriptors (state_update (equivocator_IM IM) s i si')
Htei: equivocator_transition (IM i) li (s i, input) = (si', output)
Hv: equivocator_valid (IM i) li (s i, input)
oitemx: option transition_item
deqv': MachineDescriptor (IM i)
Hitem_pr: equivocator_vlsm_transition_item_project (IM i) {| l := li; input := input; destination := state_update (equivocator_IM IM) s i si' i; output := output |} (descriptors i) = Some (oitemx, deqv')
eqv: index
Heqv: eqv ∈ equivocating_indices IM (enum index) s ∨ eqv ∈ newmachine_descriptors_list IM (enum index) (equivocator_descriptors_update IM descriptors i deqv')

eqv ∈ equivocating_indices IM (enum index) (state_update (equivocator_IM IM) s i si') ∨ eqv ∈ newmachine_descriptors_list IM (enum index) descriptors
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
input, output: option message
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
si': equivocator_state (IM i)
Hdescriptors: proper_equivocator_descriptors IM descriptors (state_update (equivocator_IM IM) s i si')
Htei: equivocator_transition (IM i) li (s i, input) = (si', output)
Hv: equivocator_valid (IM i) li (s i, input)
oitemx: option transition_item
deqv': MachineDescriptor (IM i)
Hitem_pr: equivocator_vlsm_transition_item_project (IM i) {| l := li; input := input; destination := state_update (equivocator_IM IM) s i si' i; output := output |} (descriptors i) = Some (oitemx, deqv')
eqv: index
Heqv: eqv ∈ equivocating_indices IM (enum index) s ∨ eqv ∈ newmachine_descriptors_list IM (enum index) (equivocator_descriptors_update IM descriptors i deqv')
e: eqv = i

eqv ∈ equivocating_indices IM (enum index) (state_update (equivocator_IM IM) s i si') ∨ eqv ∈ newmachine_descriptors_list IM (enum index) descriptors
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
input, output: option message
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
si': equivocator_state (IM i)
Hdescriptors: proper_equivocator_descriptors IM descriptors (state_update (equivocator_IM IM) s i si')
Htei: equivocator_transition (IM i) li (s i, input) = (si', output)
Hv: equivocator_valid (IM i) li (s i, input)
oitemx: option transition_item
deqv': MachineDescriptor (IM i)
Hitem_pr: equivocator_vlsm_transition_item_project (IM i) {| l := li; input := input; destination := state_update (equivocator_IM IM) s i si' i; output := output |} (descriptors i) = Some (oitemx, deqv')
eqv: index
Heqv: eqv ∈ equivocating_indices IM (enum index) s ∨ eqv ∈ newmachine_descriptors_list IM (enum index) (equivocator_descriptors_update IM descriptors i deqv')
n: eqv ≠ i
eqv ∈ equivocating_indices IM (enum index) (state_update (equivocator_IM IM) s i si') ∨ eqv ∈ newmachine_descriptors_list IM (enum index) descriptors
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
input, output: option message
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
si': equivocator_state (IM i)
Hdescriptors: proper_equivocator_descriptors IM descriptors (state_update (equivocator_IM IM) s i si')
Htei: equivocator_transition (IM i) li (s i, input) = (si', output)
Hv: equivocator_valid (IM i) li (s i, input)
oitemx: option transition_item
deqv': MachineDescriptor (IM i)
Hitem_pr: equivocator_vlsm_transition_item_project (IM i) {| l := li; input := input; destination := state_update (equivocator_IM IM) s i si' i; output := output |} (descriptors i) = Some (oitemx, deqv')
eqv: index
Heqv: eqv ∈ equivocating_indices IM (enum index) s ∨ eqv ∈ newmachine_descriptors_list IM (enum index) (equivocator_descriptors_update IM descriptors i deqv')
e: eqv = i

eqv ∈ equivocating_indices IM (enum index) (state_update (equivocator_IM IM) s i si') ∨ eqv ∈ newmachine_descriptors_list IM (enum index) descriptors
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
eqv: index
s: composite_state (equivocator_IM IM)
deqv': MachineDescriptor (IM eqv)
Heqv: eqv ∈ equivocating_indices IM (enum index) s ∨ eqv ∈ newmachine_descriptors_list IM (enum index) (equivocator_descriptors_update IM descriptors eqv deqv')
li: EquivocatorLabel (IM eqv)
input, output: option message
idescriptors: equivocator_descriptors IM
oitemx: option transition_item
si': equivocator_state (IM eqv)
Hitem_pr: equivocator_vlsm_transition_item_project (IM eqv) {| l := li; input := input; destination := state_update (equivocator_IM IM) s eqv si' eqv; output := output |} (descriptors eqv) = Some (oitemx, deqv')
Hv: equivocator_valid (IM eqv) li (s eqv, input)
Htei: equivocator_transition (IM eqv) li (s eqv, input) = ( si', output)
Hdescriptors: proper_equivocator_descriptors IM descriptors (state_update (equivocator_IM IM) s eqv si')

eqv ∈ equivocating_indices IM (enum index) (state_update (equivocator_IM IM) s eqv si') ∨ eqv ∈ newmachine_descriptors_list IM (enum index) descriptors
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
eqv: index
s: composite_state (equivocator_IM IM)
deqv': MachineDescriptor (IM eqv)
Heqv: eqv ∈ filter (λ i : index, is_equivocating_state (IM i) (s i)) (enum index) ∨ eqv ∈ newmachine_descriptors_list IM (enum index) (equivocator_descriptors_update IM descriptors eqv deqv')
li: EquivocatorLabel (IM eqv)
input, output: option message
idescriptors: equivocator_descriptors IM
oitemx: option transition_item
si': equivocator_state (IM eqv)
Hitem_pr: equivocator_vlsm_transition_item_project (IM eqv) {| l := li; input := input; destination := state_update (equivocator_IM IM) s eqv si' eqv; output := output |} (descriptors eqv) = Some (oitemx, deqv')
Hv: equivocator_valid (IM eqv) li (s eqv, input)
Htei: equivocator_transition (IM eqv) li (s eqv, input) = ( si', output)
Hdescriptors: proper_equivocator_descriptors IM descriptors (state_update (equivocator_IM IM) s eqv si')

eqv ∈ filter (λ i : index, is_equivocating_state (IM i) (state_update (equivocator_IM IM) s eqv si' i)) (enum index) ∨ eqv ∈ newmachine_descriptors_list IM (enum index) descriptors
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
eqv: index
s: composite_state (equivocator_IM IM)
deqv': MachineDescriptor (IM eqv)
Heqv: eqv ∈ filter (λ i : index, is_equivocating_state (IM i) (s i)) (enum index) ∨ eqv ∈ filter (λ i : index, is_newmachine_descriptor (IM i) (equivocator_descriptors_update IM descriptors eqv deqv' i)) (enum index)
li: EquivocatorLabel (IM eqv)
input, output: option message
idescriptors: equivocator_descriptors IM
oitemx: option transition_item
si': equivocator_state (IM eqv)
Hitem_pr: equivocator_vlsm_transition_item_project (IM eqv) {| l := li; input := input; destination := state_update (equivocator_IM IM) s eqv si' eqv; output := output |} (descriptors eqv) = Some (oitemx, deqv')
Hv: equivocator_valid (IM eqv) li (s eqv, input)
Htei: equivocator_transition (IM eqv) li (s eqv, input) = ( si', output)
Hdescriptors: proper_equivocator_descriptors IM descriptors (state_update (equivocator_IM IM) s eqv si')

eqv ∈ filter (λ i : index, is_equivocating_state (IM i) (state_update (equivocator_IM IM) s eqv si' i)) (enum index) ∨ eqv ∈ filter (λ i : index, is_newmachine_descriptor (IM i) (descriptors i)) (enum index)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
eqv: index
s: composite_state (equivocator_IM IM)
deqv': MachineDescriptor (IM eqv)
Heqv: is_equivocating_state (IM eqv) (s eqv) ∧ eqv ∈ enum index ∨ is_newmachine_descriptor (IM eqv) (equivocator_descriptors_update IM descriptors eqv deqv' eqv) ∧ eqv ∈ enum index
li: EquivocatorLabel (IM eqv)
input, output: option message
idescriptors: equivocator_descriptors IM
oitemx: option transition_item
si': equivocator_state (IM eqv)
Hitem_pr: equivocator_vlsm_transition_item_project (IM eqv) {| l := li; input := input; destination := state_update (equivocator_IM IM) s eqv si' eqv; output := output |} (descriptors eqv) = Some (oitemx, deqv')
Hv: equivocator_valid (IM eqv) li (s eqv, input)
Htei: equivocator_transition (IM eqv) li (s eqv, input) = ( si', output)
Hdescriptors: proper_equivocator_descriptors IM descriptors (state_update (equivocator_IM IM) s eqv si')

is_equivocating_state (IM eqv) (state_update (equivocator_IM IM) s eqv si' eqv) ∧ eqv ∈ enum index ∨ is_newmachine_descriptor (IM eqv) (descriptors eqv) ∧ eqv ∈ enum index
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
eqv: index
s: composite_state (equivocator_IM IM)
deqv': MachineDescriptor (IM eqv)
Heqv: is_equivocating_state (IM eqv) (s eqv) ∧ eqv ∈ enum index ∨ is_newmachine_descriptor (IM eqv) (equivocator_descriptors_update IM descriptors eqv deqv' eqv) ∧ eqv ∈ enum index
li: EquivocatorLabel (IM eqv)
input, output: option message
idescriptors: equivocator_descriptors IM
oitemx: option transition_item
si': equivocator_state (IM eqv)
Hitem_pr: equivocator_vlsm_transition_item_project (IM eqv) {| l := li; input := input; destination := state_update (equivocator_IM IM) s eqv si' eqv; output := output |} (descriptors eqv) = Some (oitemx, deqv')
Hv: equivocator_valid (IM eqv) li (s eqv, input)
Htei: equivocator_transition (IM eqv) li (s eqv, input) = ( si', output)
Hdescriptors: proper_descriptor (IM eqv) (descriptors eqv) (state_update (equivocator_IM IM) s eqv si' eqv)

is_equivocating_state (IM eqv) (state_update (equivocator_IM IM) s eqv si' eqv) ∧ eqv ∈ enum index ∨ is_newmachine_descriptor (IM eqv) (descriptors eqv) ∧ eqv ∈ enum index
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
eqv: index
s: composite_state (equivocator_IM IM)
deqv': MachineDescriptor (IM eqv)
Heqv: is_equivocating_state (IM eqv) (s eqv) ∧ eqv ∈ enum index ∨ is_newmachine_descriptor (IM eqv) deqv' ∧ eqv ∈ enum index
li: EquivocatorLabel (IM eqv)
input, output: option message
idescriptors: equivocator_descriptors IM
oitemx: option transition_item
si': equivocator_state (IM eqv)
Hitem_pr: equivocator_vlsm_transition_item_project (IM eqv) {| l := li; input := input; destination := si'; output := output |} (descriptors eqv) = Some (oitemx, deqv')
Hv: equivocator_valid (IM eqv) li (s eqv, input)
Htei: equivocator_transition (IM eqv) li (s eqv, input) = ( si', output)
Hdescriptors: proper_descriptor (IM eqv) (descriptors eqv) si'

is_equivocating_state (IM eqv) si' ∧ eqv ∈ enum index ∨ is_newmachine_descriptor (IM eqv) (descriptors eqv) ∧ eqv ∈ enum index
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
eqv: index
s: composite_state (equivocator_IM IM)
deqv': MachineDescriptor (IM eqv)
Heqv: is_equivocating_state (IM eqv) (s eqv) ∧ eqv ∈ enum index ∨ is_newmachine_descriptor (IM eqv) deqv' ∧ eqv ∈ enum index
li: EquivocatorLabel (IM eqv)
input, output: option message
idescriptors: equivocator_descriptors IM
oitemx: option transition_item
si': equivocator_state (IM eqv)
Hitem_pr: equivocator_vlsm_transition_item_project (IM eqv) {| l := li; input := input; destination := si'; output := output |} (descriptors eqv) = Some (oitemx, deqv')
Hv: equivocator_valid (IM eqv) li (s eqv, input)
Htei: equivocator_transition (IM eqv) li (s eqv, input) = ( si', output)
Hdescriptors: proper_descriptor (IM eqv) (descriptors eqv) si'

is_equivocating_state (IM eqv) si' ∨ is_newmachine_descriptor (IM eqv) (descriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
eqv: index
s: composite_state (equivocator_IM IM)
deqv': MachineDescriptor (IM eqv)
Heqv: is_equivocating_state (IM eqv) (s eqv) ∧ eqv ∈ enum index ∨ is_newmachine_descriptor (IM eqv) deqv' ∧ eqv ∈ enum index
li: EquivocatorLabel (IM eqv)
input, output: option message
idescriptors: equivocator_descriptors IM
oitemx: option transition_item
si': equivocator_state (IM eqv)
Hitem_pr: equivocator_vlsm_transition_item_project (IM eqv) {| l := li; input := input; destination := si'; output := output |} (descriptors eqv) = Some (oitemx, deqv')
Hv: equivocator_valid (IM eqv) li (s eqv, input)
Htei: equivocator_transition (IM eqv) li (s eqv, input) = ( si', output)
Hdescriptors: proper_descriptor (IM eqv) (descriptors eqv) si'

is_equivocating_state (IM eqv) (s eqv) ∨ is_newmachine_descriptor (IM eqv) deqv'
by itauto.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
input, output: option message
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
si': equivocator_state (IM i)
Hdescriptors: proper_equivocator_descriptors IM descriptors (state_update (equivocator_IM IM) s i si')
Htei: equivocator_transition (IM i) li (s i, input) = (si', output)
Hv: equivocator_valid (IM i) li (s i, input)
oitemx: option transition_item
deqv': MachineDescriptor (IM i)
Hitem_pr: equivocator_vlsm_transition_item_project (IM i) {| l := li; input := input; destination := state_update (equivocator_IM IM) s i si' i; output := output |} (descriptors i) = Some (oitemx, deqv')
eqv: index
Heqv: eqv ∈ equivocating_indices IM (enum index) s ∨ eqv ∈ newmachine_descriptors_list IM (enum index) (equivocator_descriptors_update IM descriptors i deqv')
n: eqv ≠ i

eqv ∈ equivocating_indices IM (enum index) (state_update (equivocator_IM IM) s i si') ∨ eqv ∈ newmachine_descriptors_list IM (enum index) descriptors
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
input, output: option message
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
si': equivocator_state (IM i)
Hdescriptors: proper_equivocator_descriptors IM descriptors (state_update (equivocator_IM IM) s i si')
Htei: equivocator_transition (IM i) li (s i, input) = (si', output)
Hv: equivocator_valid (IM i) li (s i, input)
oitemx: option transition_item
deqv': MachineDescriptor (IM i)
Hitem_pr: equivocator_vlsm_transition_item_project (IM i) {| l := li; input := input; destination := state_update (equivocator_IM IM) s i si' i; output := output |} (descriptors i) = Some (oitemx, deqv')
eqv: index
Heqv: is_equivocating_state (IM eqv) (s eqv)
Hin: eqv ∈ enum index
n: eqv ≠ i

eqv ∈ equivocating_indices IM (enum index) (state_update (equivocator_IM IM) s i si') ∨ eqv ∈ newmachine_descriptors_list IM (enum index) descriptors
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
input, output: option message
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
si': equivocator_state (IM i)
Hdescriptors: proper_equivocator_descriptors IM descriptors (state_update (equivocator_IM IM) s i si')
Htei: equivocator_transition (IM i) li (s i, input) = (si', output)
Hv: equivocator_valid (IM i) li (s i, input)
oitemx: option transition_item
deqv': MachineDescriptor (IM i)
Hitem_pr: equivocator_vlsm_transition_item_project (IM i) {| l := li; input := input; destination := state_update (equivocator_IM IM) s i si' i; output := output |} (descriptors i) = Some (oitemx, deqv')
eqv: index
Heqv: is_newmachine_descriptor (IM eqv) (equivocator_descriptors_update IM descriptors i deqv' eqv)
Hin: eqv ∈ enum index
n: eqv ≠ i
eqv ∈ equivocating_indices IM (enum index) (state_update (equivocator_IM IM) s i si') ∨ eqv ∈ newmachine_descriptors_list IM (enum index) descriptors
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
input, output: option message
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
si': equivocator_state (IM i)
Hdescriptors: proper_equivocator_descriptors IM descriptors (state_update (equivocator_IM IM) s i si')
Htei: equivocator_transition (IM i) li (s i, input) = (si', output)
Hv: equivocator_valid (IM i) li (s i, input)
oitemx: option transition_item
deqv': MachineDescriptor (IM i)
Hitem_pr: equivocator_vlsm_transition_item_project (IM i) {| l := li; input := input; destination := state_update (equivocator_IM IM) s i si' i; output := output |} (descriptors i) = Some (oitemx, deqv')
eqv: index
Heqv: is_equivocating_state (IM eqv) (s eqv)
Hin: eqv ∈ enum index
n: eqv ≠ i

eqv ∈ equivocating_indices IM (enum index) (state_update (equivocator_IM IM) s i si') ∨ eqv ∈ newmachine_descriptors_list IM (enum index) descriptors
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
input, output: option message
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
si': equivocator_state (IM i)
Hdescriptors: proper_equivocator_descriptors IM descriptors (state_update (equivocator_IM IM) s i si')
Htei: equivocator_transition (IM i) li (s i, input) = (si', output)
Hv: equivocator_valid (IM i) li (s i, input)
oitemx: option transition_item
deqv': MachineDescriptor (IM i)
Hitem_pr: equivocator_vlsm_transition_item_project (IM i) {| l := li; input := input; destination := state_update (equivocator_IM IM) s i si' i; output := output |} (descriptors i) = Some (oitemx, deqv')
eqv: index
Heqv: is_equivocating_state (IM eqv) (s eqv)
Hin: eqv ∈ enum index
n: eqv ≠ i

eqv ∈ equivocating_indices IM (enum index) (state_update (equivocator_IM IM) s i si')
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
input, output: option message
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
si': equivocator_state (IM i)
Hdescriptors: proper_equivocator_descriptors IM descriptors (state_update (equivocator_IM IM) s i si')
Htei: equivocator_transition (IM i) li (s i, input) = (si', output)
Hv: equivocator_valid (IM i) li (s i, input)
oitemx: option transition_item
deqv': MachineDescriptor (IM i)
Hitem_pr: equivocator_vlsm_transition_item_project (IM i) {| l := li; input := input; destination := state_update (equivocator_IM IM) s i si' i; output := output |} (descriptors i) = Some (oitemx, deqv')
eqv: index
Heqv: is_equivocating_state (IM eqv) (s eqv)
Hin: eqv ∈ enum index
n: eqv ≠ i

is_equivocating_state (IM eqv) (state_update (equivocator_IM IM) s i si' eqv) ∧ eqv ∈ enum index
by state_update_simpl.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
input, output: option message
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
si': equivocator_state (IM i)
Hdescriptors: proper_equivocator_descriptors IM descriptors (state_update (equivocator_IM IM) s i si')
Htei: equivocator_transition (IM i) li (s i, input) = (si', output)
Hv: equivocator_valid (IM i) li (s i, input)
oitemx: option transition_item
deqv': MachineDescriptor (IM i)
Hitem_pr: equivocator_vlsm_transition_item_project (IM i) {| l := li; input := input; destination := state_update (equivocator_IM IM) s i si' i; output := output |} (descriptors i) = Some (oitemx, deqv')
eqv: index
Heqv: is_newmachine_descriptor (IM eqv) (equivocator_descriptors_update IM descriptors i deqv' eqv)
Hin: eqv ∈ enum index
n: eqv ≠ i

eqv ∈ equivocating_indices IM (enum index) (state_update (equivocator_IM IM) s i si') ∨ eqv ∈ newmachine_descriptors_list IM (enum index) descriptors
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
input, output: option message
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
si': equivocator_state (IM i)
Hdescriptors: proper_equivocator_descriptors IM descriptors (state_update (equivocator_IM IM) s i si')
Htei: equivocator_transition (IM i) li (s i, input) = (si', output)
Hv: equivocator_valid (IM i) li (s i, input)
oitemx: option transition_item
deqv': MachineDescriptor (IM i)
Hitem_pr: equivocator_vlsm_transition_item_project (IM i) {| l := li; input := input; destination := state_update (equivocator_IM IM) s i si' i; output := output |} (descriptors i) = Some (oitemx, deqv')
eqv: index
Heqv: is_newmachine_descriptor (IM eqv) (equivocator_descriptors_update IM descriptors i deqv' eqv)
Hin: eqv ∈ enum index
n: eqv ≠ i

eqv ∈ newmachine_descriptors_list IM (enum index) descriptors
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
input, output: option message
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
si': equivocator_state (IM i)
Hdescriptors: proper_equivocator_descriptors IM descriptors (state_update (equivocator_IM IM) s i si')
Htei: equivocator_transition (IM i) li (s i, input) = (si', output)
Hv: equivocator_valid (IM i) li (s i, input)
oitemx: option transition_item
deqv': MachineDescriptor (IM i)
Hitem_pr: equivocator_vlsm_transition_item_project (IM i) {| l := li; input := input; destination := state_update (equivocator_IM IM) s i si' i; output := output |} (descriptors i) = Some (oitemx, deqv')
eqv: index
Heqv: is_newmachine_descriptor (IM eqv) (equivocator_descriptors_update IM descriptors i deqv' eqv)
Hin: eqv ∈ enum index
n: eqv ≠ i

is_newmachine_descriptor (IM eqv) (descriptors eqv) ∧ eqv ∈ enum index
by state_update_simpl. Qed.
zero_descriptors are preserved when projecting transition_items of the composition of equivocators.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
oitem: option (composite_transition_item IM)
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Hpr: equivocators_transition_item_project descriptors item = Some (oitem, idescriptors)

i : index, descriptors i = Existing 0 → idescriptors i = Existing 0
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
oitem: option (composite_transition_item IM)
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Hpr: equivocators_transition_item_project descriptors item = Some (oitem, idescriptors)

i : index, descriptors i = Existing 0 → idescriptors i = Existing 0
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
oitem: option (composite_transition_item IM)
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Hpr: equivocators_transition_item_project descriptors item = Some (oitem, idescriptors)
i: index
Hi: descriptors i = Existing 0

idescriptors i = Existing 0
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
oitem: option (composite_transition_item IM)
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Hpr: match equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) (descriptors (projT1 (l item))) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM descriptors (destination item); output := output item |}, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | None => None end = Some (oitem, idescriptors)
i: index
Hi: descriptors i = Existing 0

idescriptors i = Existing 0
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
oitem: option (composite_transition_item IM)
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Hpr: match equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) (descriptors (projT1 (l item))) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM descriptors (destination item); output := output item |}, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | None => None end = Some (oitem, idescriptors)
i: index
Hi: descriptors i = Existing 0
e: i = projT1 (l item)

idescriptors i = Existing 0
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
oitem: option (composite_transition_item IM)
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Hpr: match equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) (descriptors (projT1 (l item))) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM descriptors (destination item); output := output item |}, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | None => None end = Some (oitem, idescriptors)
i: index
Hi: descriptors i = Existing 0
n: i ≠ projT1 (l item)
idescriptors i = Existing 0
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
oitem: option (composite_transition_item IM)
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Hpr: match equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) (descriptors (projT1 (l item))) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM descriptors (destination item); output := output item |}, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | None => None end = Some (oitem, idescriptors)
i: index
Hi: descriptors i = Existing 0
e: i = projT1 (l item)

idescriptors i = Existing 0
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
oitem: option (composite_transition_item IM)
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Hpr: match equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) (descriptors (projT1 (l item))) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM descriptors (destination item); output := output item |}, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | None => None end = Some (oitem, idescriptors)
Hi: descriptors (projT1 (l item)) = Existing 0

idescriptors (projT1 (l item)) = Existing 0
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
oitem: option (composite_transition_item IM)
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Hpr: match equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) (Existing 0) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM descriptors (destination item); output := output item |}, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | None => None end = Some (oitem, idescriptors)
Hi: descriptors (projT1 (l item)) = Existing 0

idescriptors (projT1 (l item)) = Existing 0
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
oitem: option (composite_transition_item IM)
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Hpr: match equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) (Existing 0) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM descriptors (destination item); output := output item |}, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | None => None end = Some (oitem, idescriptors)
Hi: descriptors (projT1 (l item)) = Existing 0
Hpr_item: transition (l (composite_transition_item_projection (equivocator_IM IM) item)) (s (projT1 (l item)), input (composite_transition_item_projection (equivocator_IM IM) item)) = (destination (composite_transition_item_projection (equivocator_IM IM) item), output (composite_transition_item_projection (equivocator_IM IM) item)) → valid (l (composite_transition_item_projection (equivocator_IM IM) item)) (s (projT1 (l item)), input (composite_transition_item_projection (equivocator_IM IM) item)) → oitem : option transition_item, equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) (Existing 0) = Some (oitem, Existing 0)

idescriptors (projT1 (l item)) = Existing 0
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
oitem: option (composite_transition_item IM)
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
pr_item: let i := projT1 (l item) in transition_item
Heqpr_item: pr_item = composite_transition_item_projection (equivocator_IM IM) item
Hpr: match equivocator_vlsm_transition_item_project (IM (projT1 (l item))) pr_item (Existing 0) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM descriptors (destination item); output := output item |}, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | None => None end = Some (oitem, idescriptors)
Hi: descriptors (projT1 (l item)) = Existing 0
Hpr_item: transition (l pr_item) (s (projT1 (l item)), input pr_item) = (destination pr_item, output pr_item) → valid (l pr_item) (s (projT1 (l item)), input pr_item) → oitem : option transition_item, equivocator_vlsm_transition_item_project (IM (projT1 (l item))) pr_item (Existing 0) = Some (oitem, Existing 0)

idescriptors (projT1 (l item)) = Existing 0
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
oitem: option (composite_transition_item IM)
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
pr_item: let i := projT1 (l item) in transition_item
Heqpr_item: pr_item = composite_transition_item_projection (equivocator_IM IM) item
Hpr: match equivocator_vlsm_transition_item_project (IM (projT1 (l item))) pr_item (Existing 0) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM descriptors (destination item); output := output item |}, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | None => None end = Some (oitem, idescriptors)
Hi: descriptors (projT1 (l item)) = Existing 0
Hpr_item: transition (l pr_item) (s (projT1 (l item)), input pr_item) = (destination pr_item, output pr_item) → valid (l pr_item) (s (projT1 (l item)), input pr_item) → oitem : option transition_item, equivocator_vlsm_transition_item_project (IM (projT1 (l item))) pr_item (Existing 0) = Some (oitem, Existing 0)

transition (l pr_item) (s (projT1 (l item)), input pr_item) = (destination pr_item, output pr_item)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
oitem: option (composite_transition_item IM)
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
pr_item: let i := projT1 (l item) in transition_item
Heqpr_item: pr_item = composite_transition_item_projection (equivocator_IM IM) item
Hpr: match equivocator_vlsm_transition_item_project (IM (projT1 (l item))) pr_item (Existing 0) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM descriptors (destination item); output := output item |}, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | None => None end = Some (oitem, idescriptors)
Hi: descriptors (projT1 (l item)) = Existing 0
Hpr_item: valid (l pr_item) (s (projT1 (l item)), input pr_item) → oitem : option transition_item, equivocator_vlsm_transition_item_project (IM (projT1 (l item))) pr_item (Existing 0) = Some (oitem, Existing 0)
idescriptors (projT1 (l item)) = Existing 0
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
oitem: option (composite_transition_item IM)
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
pr_item: let i := projT1 (l item) in transition_item
Heqpr_item: pr_item = composite_transition_item_projection (equivocator_IM IM) item
Hpr: match equivocator_vlsm_transition_item_project (IM (projT1 (l item))) pr_item (Existing 0) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM descriptors (destination item); output := output item |}, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | None => None end = Some (oitem, idescriptors)
Hi: descriptors (projT1 (l item)) = Existing 0
Hpr_item: transition (l pr_item) (s (projT1 (l item)), input pr_item) = (destination pr_item, output pr_item) → valid (l pr_item) (s (projT1 (l item)), input pr_item) → oitem : option transition_item, equivocator_vlsm_transition_item_project (IM (projT1 (l item))) pr_item (Existing 0) = Some (oitem, Existing 0)

transition (l pr_item) (s (projT1 (l item)), input pr_item) = (destination pr_item, output pr_item)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
item: composite_transition_item (equivocator_IM IM)
s: composite_state (equivocator_IM IM)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
pr_item: let i := projT1 (l item) in transition_item
Heqpr_item: pr_item = composite_transition_item_projection (equivocator_IM IM) item

transition (l pr_item) (s (projT1 (l item)), input pr_item) = (destination pr_item, output pr_item)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
l: label (composite_type (equivocator_IM IM))
input: option message
destination: state (composite_type (equivocator_IM IM))
output: option message
s: composite_state (equivocator_IM IM)
Ht: composite_transition (equivocator_IM IM) (VLSM.l {| l := l; input := input; destination := destination; output := output |}) (s, VLSM.input {| l := l; input := input; destination := destination; output := output |}) = (VLSM.destination {| l := l; input := input; destination := destination; output := output |}, VLSM.output {| l := l; input := input; destination := destination; output := output |})
pr_item: let i := projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |}) in transition_item
Heqpr_item: pr_item = composite_transition_item_projection (equivocator_IM IM) {| l := l; input := input; destination := destination; output := output |}

transition (VLSM.l pr_item) (s (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |})), VLSM.input pr_item) = (VLSM.destination pr_item, VLSM.output pr_item)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
l: composite_label (equivocator_IM IM)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
s: composite_state (equivocator_IM IM)
Ht: (let (i, li) := l in let (si', om') := equivocator_transition (IM i) li (s i, input) in (state_update (equivocator_IM IM) s i si', om')) = (destination, output)
pr_item: transition_item
Heqpr_item: pr_item = composite_transition_item_projection (equivocator_IM IM) {| l := l; input := input; destination := destination; output := output |}

equivocator_transition (IM (projT1 l)) (VLSM.l pr_item) (s (projT1 l), VLSM.input pr_item) = (VLSM.destination pr_item, VLSM.output pr_item)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
i: index
li: label (equivocator_IM IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
s: composite_state (equivocator_IM IM)
Ht: (let (si', om') := equivocator_transition (IM i) li (s i, input) in (state_update (equivocator_IM IM) s i si', om')) = (destination, output)
pr_item: transition_item
Heqpr_item: pr_item = composite_transition_item_projection (equivocator_IM IM) {| l := existT i li; input := input; destination := destination; output := output |}

equivocator_transition (IM (projT1 (existT i li))) (l pr_item) (s (projT1 (existT i li)), VLSM.input pr_item) = (VLSM.destination pr_item, VLSM.output pr_item)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
i: index
li: label (equivocator_IM IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
s: composite_state (equivocator_IM IM)
Ht: (let (si', om') := equivocator_transition (IM i) li (s i, input) in (state_update (equivocator_IM IM) s i si', om')) = (destination, output)
pr_item: transition_item
Heqpr_item: pr_item = composite_transition_item_projection (equivocator_IM IM) {| l := existT i li; input := input; destination := destination; output := output |}

equivocator_transition (IM i) (l pr_item) (s i, VLSM.input pr_item) = (VLSM.destination pr_item, VLSM.output pr_item)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
i: index
li: label (equivocator_IM IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
o: option message
H: equivocator_transition (IM i) li (s i, input) = (e, o)
Ht: (state_update (equivocator_IM IM) s i e, o) = (destination, output)
pr_item: transition_item
Heqpr_item: pr_item = composite_transition_item_projection (equivocator_IM IM) {| l := existT i li; input := input; destination := destination; output := output |}

equivocator_transition (IM i) (l pr_item) (s i, VLSM.input pr_item) = (VLSM.destination pr_item, VLSM.output pr_item)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
i: index
li: label (equivocator_IM IM i)
input, output: option message
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Ht: (state_update (equivocator_IM IM) s i e, output) = (state_update (equivocator_IM IM) s i e, output)
H: equivocator_transition (IM i) li (s i, input) = (e, output)

equivocator_transition (IM i) li (s i, input) = (state_update (equivocator_IM IM) s i e i, output)
by state_update_simpl.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
oitem: option (composite_transition_item IM)
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
pr_item: let i := projT1 (l item) in transition_item
Heqpr_item: pr_item = composite_transition_item_projection (equivocator_IM IM) item
Hpr: match equivocator_vlsm_transition_item_project (IM (projT1 (l item))) pr_item (Existing 0) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM descriptors (destination item); output := output item |}, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | None => None end = Some (oitem, idescriptors)
Hi: descriptors (projT1 (l item)) = Existing 0
Hpr_item: valid (l pr_item) (s (projT1 (l item)), input pr_item) → oitem : option transition_item, equivocator_vlsm_transition_item_project (IM (projT1 (l item))) pr_item (Existing 0) = Some (oitem, Existing 0)

idescriptors (projT1 (l item)) = Existing 0
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
oitem: option (composite_transition_item IM)
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
pr_item: let i := projT1 (l item) in transition_item
Heqpr_item: pr_item = composite_transition_item_projection (equivocator_IM IM) item
Hpr: match equivocator_vlsm_transition_item_project (IM (projT1 (l item))) pr_item (Existing 0) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM descriptors (destination item); output := output item |}, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | None => None end = Some (oitem, idescriptors)
Hi: descriptors (projT1 (l item)) = Existing 0
Hpr_item: valid (l pr_item) (s (projT1 (l item)), input pr_item) → oitem : option transition_item, equivocator_vlsm_transition_item_project (IM (projT1 (l item))) pr_item (Existing 0) = Some (oitem, Existing 0)

valid (l pr_item) (s (projT1 (l item)), input pr_item)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
oitem: option (composite_transition_item IM)
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
pr_item: let i := projT1 (l item) in transition_item
Heqpr_item: pr_item = composite_transition_item_projection (equivocator_IM IM) item
Hpr: match equivocator_vlsm_transition_item_project (IM (projT1 (l item))) pr_item (Existing 0) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM descriptors (destination item); output := output item |}, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | None => None end = Some (oitem, idescriptors)
Hi: descriptors (projT1 (l item)) = Existing 0
Hpr_item: oitem : option transition_item, equivocator_vlsm_transition_item_project (IM (projT1 (l item))) pr_item (Existing 0) = Some (oitem, Existing 0)
idescriptors (projT1 (l item)) = Existing 0
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
oitem: option (composite_transition_item IM)
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
pr_item: let i := projT1 (l item) in transition_item
Heqpr_item: pr_item = composite_transition_item_projection (equivocator_IM IM) item
Hpr: match equivocator_vlsm_transition_item_project (IM (projT1 (l item))) pr_item (Existing 0) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM descriptors (destination item); output := output item |}, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | None => None end = Some (oitem, idescriptors)
Hi: descriptors (projT1 (l item)) = Existing 0
Hpr_item: valid (l pr_item) (s (projT1 (l item)), input pr_item) → oitem : option transition_item, equivocator_vlsm_transition_item_project (IM (projT1 (l item))) pr_item (Existing 0) = Some (oitem, Existing 0)

valid (l pr_item) (s (projT1 (l item)), input pr_item)
message, index: Type
IM: index → VLSM message
item: composite_transition_item (equivocator_IM IM)
s: composite_state (equivocator_IM IM)
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
pr_item: let i := projT1 (l item) in transition_item
Heqpr_item: pr_item = composite_transition_item_projection (equivocator_IM IM) item

valid (l pr_item) (s (projT1 (l item)), input pr_item)
message, index: Type
IM: index → VLSM message
l: label (composite_type (equivocator_IM IM))
input: option message
destination: state (composite_type (equivocator_IM IM))
output: option message
s: composite_state (equivocator_IM IM)
Hv: composite_valid (equivocator_IM IM) (VLSM.l {| l := l; input := input; destination := destination; output := output |}) (s, VLSM.input {| l := l; input := input; destination := destination; output := output |})
pr_item: let i := projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |}) in transition_item
Heqpr_item: pr_item = composite_transition_item_projection (equivocator_IM IM) {| l := l; input := input; destination := destination; output := output |}

valid (VLSM.l pr_item) (s (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |})), VLSM.input pr_item)
message, index: Type
IM: index → VLSM message
l: composite_label (equivocator_IM IM)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
s: composite_state (equivocator_IM IM)
Hv: let (i, li) := l in equivocator_valid (IM i) li (s i, input)
pr_item: transition_item
Heqpr_item: pr_item = composite_transition_item_projection (equivocator_IM IM) {| l := l; input := input; destination := destination; output := output |}

equivocator_valid (IM (projT1 l)) (VLSM.l pr_item) (s (projT1 l), VLSM.input pr_item)
by destruct l as [i li]; subst.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
oitem: option (composite_transition_item IM)
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
pr_item: let i := projT1 (l item) in transition_item
Heqpr_item: pr_item = composite_transition_item_projection (equivocator_IM IM) item
Hpr: match equivocator_vlsm_transition_item_project (IM (projT1 (l item))) pr_item (Existing 0) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM descriptors (destination item); output := output item |}, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | None => None end = Some (oitem, idescriptors)
Hi: descriptors (projT1 (l item)) = Existing 0
Hpr_item: oitem : option transition_item, equivocator_vlsm_transition_item_project (IM (projT1 (l item))) pr_item (Existing 0) = Some (oitem, Existing 0)

idescriptors (projT1 (l item)) = Existing 0
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
oitem: option (composite_transition_item IM)
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
pr_item: let i := projT1 (l item) in transition_item
Heqpr_item: pr_item = composite_transition_item_projection (equivocator_IM IM) item
Hpr: match equivocator_vlsm_transition_item_project (IM (projT1 (l item))) pr_item (Existing 0) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM descriptors (destination item); output := output item |}, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | None => None end = Some (oitem, idescriptors)
Hi: descriptors (projT1 (l item)) = Existing 0
oitem': option transition_item
Hpr_item: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) pr_item (Existing 0) = Some (oitem', Existing 0)

idescriptors (projT1 (l item)) = Existing 0
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
oitem: option (composite_transition_item IM)
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
pr_item: let i := projT1 (l item) in transition_item
Heqpr_item: pr_item = composite_transition_item_projection (equivocator_IM IM) item
oitem': option transition_item
Hpr: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM descriptors (destination item); output := output item |}, equivocator_descriptors_update IM descriptors (projT1 (l item)) (Existing 0)) | None => Some (None, equivocator_descriptors_update IM descriptors (projT1 (l item)) (Existing 0)) end = Some (oitem, idescriptors)
Hi: descriptors (projT1 (l item)) = Existing 0
Hpr_item: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) pr_item (Existing 0) = Some (oitem', Existing 0)

idescriptors (projT1 (l item)) = Existing 0
by destruct oitem'; inversion Hpr; state_update_simpl.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
oitem: option (composite_transition_item IM)
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Hpr: match equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) (descriptors (projT1 (l item))) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM descriptors (destination item); output := output item |}, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | None => None end = Some (oitem, idescriptors)
i: index
Hi: descriptors i = Existing 0
n: i ≠ projT1 (l item)

idescriptors i = Existing 0
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
oitem: option (composite_transition_item IM)
idescriptors: equivocator_descriptors IM
s: composite_state (equivocator_IM IM)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
p: (option transition_item * MachineDescriptor (IM (projT1 (l item))))%type
Hpr': equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) (descriptors (projT1 (l item))) = Some p
Hpr: (let (o, deqv') := p in match o with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM descriptors (destination item); output := output item |}, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') | None => Some (None, equivocator_descriptors_update IM descriptors (projT1 (l item)) deqv') end) = Some (oitem, idescriptors)
i: index
Hi: descriptors i = Existing 0
n: i ≠ projT1 (l item)

idescriptors i = Existing 0
by destruct p, o; inversion Hpr; state_update_simpl. Qed.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
i:= projT1 (l item): index
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (destination item i)

is_Some (equivocators_transition_item_project eqv_descriptors item)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
i:= projT1 (l item): index
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (destination item i)

is_Some (equivocators_transition_item_project eqv_descriptors item)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
i:= projT1 (l item): index
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (destination item i)
itemx: (option transition_item * MachineDescriptor (IM (projT1 (l item))))%type
Hpr_item: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) (eqv_descriptors (projT1 (l item))) = Some itemx

is_Some (equivocators_transition_item_project eqv_descriptors item)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
i:= projT1 (l item): index
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (destination item i)
itemx: (option transition_item * MachineDescriptor (IM (projT1 (l item))))%type
Hpr_item: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) (eqv_descriptors (projT1 (l item))) = Some itemx

is_Some match equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) (eqv_descriptors (projT1 (l item))) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM eqv_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) deqv') | None => None end
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
i:= projT1 (l item): index
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (destination item i)
itemx: (option transition_item * MachineDescriptor (IM (projT1 (l item))))%type
Hpr_item: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) (eqv_descriptors (projT1 (l item))) = Some itemx

is_Some (let (o, deqv') := itemx in match o with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM eqv_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) deqv') | None => Some (None, equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) deqv') end)
by destruct itemx, o; eexists. Qed.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
Hproper: proper_equivocator_descriptors IM eqv_descriptors (destination item)

is_Some (equivocators_transition_item_project eqv_descriptors item)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
Hproper: proper_equivocator_descriptors IM eqv_descriptors (destination item)

is_Some (equivocators_transition_item_project eqv_descriptors item)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
Hproper: proper_equivocator_descriptors IM eqv_descriptors (destination item)

proper_descriptor (IM (projT1 (l item))) (eqv_descriptors (projT1 (l item))) (destination item (projT1 (l item)))
by apply Hproper. Qed.
A generalization of no_equivocating_equivocator_transition_item_project to the composition of equivocators.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
i:= projT1 (l item): index
Hzero: eqv_descriptors i = Existing 0
Hdest_i: is_singleton_state (IM i) (destination item i)
s: composite_state (equivocator_IM IM)
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)

Hex : existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)), let lx := existT i (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) Hex) in equivocators_transition_item_project eqv_descriptors item = Some (Some {| l := lx; input := input item; destination := equivocators_state_project IM eqv_descriptors (destination item); output := output item |}, eqv_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
i:= projT1 (l item): index
Hzero: eqv_descriptors i = Existing 0
Hdest_i: is_singleton_state (IM i) (destination item i)
s: composite_state (equivocator_IM IM)
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)

Hex : existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)), let lx := existT i (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) Hex) in equivocators_transition_item_project eqv_descriptors item = Some (Some {| l := lx; input := input item; destination := equivocators_state_project IM eqv_descriptors (destination item); output := output item |}, eqv_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
i:= projT1 (l item): index
Hzero: eqv_descriptors i = Existing 0
Hdest_i: is_singleton_state (IM i) (destination item i)
s: composite_state (equivocator_IM IM)
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Heqv_pr: valid (l (composite_transition_item_projection (equivocator_IM IM) item)) (s i, input (composite_transition_item_projection (equivocator_IM IM) item)) → transition (l (composite_transition_item_projection (equivocator_IM IM) item)) (s i, input (composite_transition_item_projection (equivocator_IM IM) item)) = (destination (composite_transition_item_projection (equivocator_IM IM) item), output (composite_transition_item_projection (equivocator_IM IM) item)) → Hex : existing_equivocator_label (IM i) (l (composite_transition_item_projection (equivocator_IM IM) item)), equivocator_vlsm_transition_item_project (IM i) (composite_transition_item_projection (equivocator_IM IM) item) (Existing 0) = Some (Some {| l := existing_equivocator_label_extract (IM i) (l (composite_transition_item_projection (equivocator_IM IM) item)) Hex; input := input (composite_transition_item_projection (equivocator_IM IM) item); destination := equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) (Existing 0); output := output (composite_transition_item_projection (equivocator_IM IM) item) |}, Existing 0)

Hex : existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)), let lx := existT i (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) Hex) in equivocators_transition_item_project eqv_descriptors item = Some (Some {| l := lx; input := input item; destination := equivocators_state_project IM eqv_descriptors (destination item); output := output item |}, eqv_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
x: index
l: label (equivocator_IM IM x)
input: option message
destination: state (composite_type (equivocator_IM IM))
output: option message
i:= projT1 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |}): index
Hzero: eqv_descriptors i = Existing 0
Hdest_i: is_singleton_state (IM i) (VLSM.destination {| l := existT x l; input := input; destination := destination; output := output |} i)
s: composite_state (equivocator_IM IM)
Hv: composite_valid (equivocator_IM IM) (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |}) (s, VLSM.input {| l := existT x l; input := input; destination := destination; output := output |})
Ht: composite_transition (equivocator_IM IM) (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |}) (s, VLSM.input {| l := existT x l; input := input; destination := destination; output := output |}) = (VLSM.destination {| l := existT x l; input := input; destination := destination; output := output |}, VLSM.output {| l := existT x l; input := input; destination := destination; output := output |})
Heqv_pr: valid (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) (s i, VLSM.input (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) → transition (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) (s i, VLSM.input (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) = (VLSM.destination (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}), VLSM.output (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) → Hex : existing_equivocator_label (IM i) (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})), equivocator_vlsm_transition_item_project (IM i) (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}) (Existing 0) = Some (Some {| l := existing_equivocator_label_extract (IM i) (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) Hex; input := VLSM.input (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}); destination := equivocator_state_descriptor_project (VLSM.destination (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) (Existing 0); output := VLSM.output (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}) |}, Existing 0)

Hex : existing_equivocator_label (IM (projT1 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |}))) (projT2 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |})), let lx := existT i (existing_equivocator_label_extract (IM (projT1 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |}))) (projT2 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |})) Hex) in equivocators_transition_item_project eqv_descriptors {| l := existT x l; input := input; destination := destination; output := output |} = Some (Some {| l := lx; input := VLSM.input {| l := existT x l; input := input; destination := destination; output := output |}; destination := equivocators_state_project IM eqv_descriptors (VLSM.destination {| l := existT x l; input := input; destination := destination; output := output |}); output := VLSM.output {| l := existT x l; input := input; destination := destination; output := output |} |}, eqv_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
x: index
l: label (equivocator_IM IM x)
input: option message
destination: state (composite_type (equivocator_IM IM))
output: option message
i:= projT1 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |}): index
Hzero: eqv_descriptors i = Existing 0
Hdest_i: is_singleton_state (IM i) (VLSM.destination {| l := existT x l; input := input; destination := destination; output := output |} i)
s: composite_state (equivocator_IM IM)
Hv: equivocator_valid (IM x) l (s x, input)
Ht: (let (si', om') := equivocator_transition (IM x) l (s x, input) in (state_update (equivocator_IM IM) s x si', om')) = (destination, output)
Heqv_pr: valid (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) (s i, VLSM.input (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) → transition (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) (s i, VLSM.input (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) = (VLSM.destination (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}), VLSM.output (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) → Hex : existing_equivocator_label (IM i) (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})), equivocator_vlsm_transition_item_project (IM i) (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}) (Existing 0) = Some (Some {| l := existing_equivocator_label_extract (IM i) (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) Hex; input := VLSM.input (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}); destination := equivocator_state_descriptor_project (VLSM.destination (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) (Existing 0); output := VLSM.output (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}) |}, Existing 0)

Hex : existing_equivocator_label (IM (projT1 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |}))) (projT2 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |})), let lx := existT i (existing_equivocator_label_extract (IM (projT1 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |}))) (projT2 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |})) Hex) in equivocators_transition_item_project eqv_descriptors {| l := existT x l; input := input; destination := destination; output := output |} = Some (Some {| l := lx; input := VLSM.input {| l := existT x l; input := input; destination := destination; output := output |}; destination := equivocators_state_project IM eqv_descriptors (VLSM.destination {| l := existT x l; input := input; destination := destination; output := output |}); output := VLSM.output {| l := existT x l; input := input; destination := destination; output := output |} |}, eqv_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
x: index
l: label (equivocator_IM IM x)
input: option message
destination: state (composite_type (equivocator_IM IM))
output: option message
i:= x: index
Hzero: eqv_descriptors i = Existing 0
Hdest_i: is_singleton_state (IM i) (VLSM.destination {| l := existT x l; input := input; destination := destination; output := output |} i)
s: composite_state (equivocator_IM IM)
Hv: equivocator_valid (IM x) l (s x, input)
Ht: (let (si', om') := equivocator_transition (IM x) l (s x, input) in (state_update (equivocator_IM IM) s x si', om')) = (destination, output)
Heqv_pr: valid (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) (s i, VLSM.input (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) → transition (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) (s i, VLSM.input (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) = (VLSM.destination (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}), VLSM.output (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) → Hex : existing_equivocator_label (IM i) (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})), equivocator_vlsm_transition_item_project (IM i) (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}) (Existing 0) = Some (Some {| l := existing_equivocator_label_extract (IM i) (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) Hex; input := VLSM.input (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}); destination := equivocator_state_descriptor_project (VLSM.destination (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) (Existing 0); output := VLSM.output (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}) |}, Existing 0)

Hex : existing_equivocator_label (IM (projT1 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |}))) (projT2 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |})), let lx := existT i (existing_equivocator_label_extract (IM (projT1 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |}))) (projT2 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |})) Hex) in equivocators_transition_item_project eqv_descriptors {| l := existT x l; input := input; destination := destination; output := output |} = Some (Some {| l := lx; input := VLSM.input {| l := existT x l; input := input; destination := destination; output := output |}; destination := equivocators_state_project IM eqv_descriptors (VLSM.destination {| l := existT x l; input := input; destination := destination; output := output |}); output := VLSM.output {| l := existT x l; input := input; destination := destination; output := output |} |}, eqv_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
x: index
l: label (equivocator_IM IM x)
input: option message
destination: state (composite_type (equivocator_IM IM))
output: option message
Hzero: eqv_descriptors x = Existing 0
Hdest_i: is_singleton_state (IM x) (VLSM.destination {| l := existT x l; input := input; destination := destination; output := output |} x)
s: composite_state (equivocator_IM IM)
Hv: equivocator_valid (IM x) l (s x, input)
Ht: (let (si', om') := equivocator_transition (IM x) l (s x, input) in (state_update (equivocator_IM IM) s x si', om')) = (destination, output)
Heqv_pr: valid (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) (s x, VLSM.input (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) → transition (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) (s x, VLSM.input (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) = (VLSM.destination (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}), VLSM.output (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) → Hex : existing_equivocator_label (IM x) (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})), equivocator_vlsm_transition_item_project (IM x) (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}) (Existing 0) = Some (Some {| l := existing_equivocator_label_extract (IM x) (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) Hex; input := VLSM.input (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}); destination := equivocator_state_descriptor_project (VLSM.destination (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) (Existing 0); output := VLSM.output (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}) |}, Existing 0)

Hex : existing_equivocator_label (IM (projT1 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |}))) (projT2 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |})), let lx := existT x (existing_equivocator_label_extract (IM (projT1 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |}))) (projT2 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |})) Hex) in equivocators_transition_item_project eqv_descriptors {| l := existT x l; input := input; destination := destination; output := output |} = Some (Some {| l := lx; input := VLSM.input {| l := existT x l; input := input; destination := destination; output := output |}; destination := equivocators_state_project IM eqv_descriptors (VLSM.destination {| l := existT x l; input := input; destination := destination; output := output |}); output := VLSM.output {| l := existT x l; input := input; destination := destination; output := output |} |}, eqv_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
x: index
l: label (equivocator_IM IM x)
input: option message
destination: state (composite_type (equivocator_IM IM))
output: option message
Hzero: eqv_descriptors x = Existing 0
Hdest_i: is_singleton_state (IM x) (VLSM.destination {| l := existT x l; input := input; destination := destination; output := output |} x)
s: composite_state (equivocator_IM IM)
Hv: equivocator_valid (IM x) l (s x, input)
Ht: (let (si', om') := equivocator_transition (IM x) l (s x, input) in (state_update (equivocator_IM IM) s x si', om')) = (destination, output)
Heqv_pr: transition (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) (s x, VLSM.input (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) = (VLSM.destination (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}), VLSM.output (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) → Hex : existing_equivocator_label (IM x) (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})), equivocator_vlsm_transition_item_project (IM x) (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}) (Existing 0) = Some (Some {| l := existing_equivocator_label_extract (IM x) (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) Hex; input := VLSM.input (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}); destination := equivocator_state_descriptor_project (VLSM.destination (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) (Existing 0); output := VLSM.output (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}) |}, Existing 0)

Hex : existing_equivocator_label (IM (projT1 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |}))) (projT2 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |})), let lx := existT x (existing_equivocator_label_extract (IM (projT1 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |}))) (projT2 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |})) Hex) in equivocators_transition_item_project eqv_descriptors {| l := existT x l; input := input; destination := destination; output := output |} = Some (Some {| l := lx; input := VLSM.input {| l := existT x l; input := input; destination := destination; output := output |}; destination := equivocators_state_project IM eqv_descriptors (VLSM.destination {| l := existT x l; input := input; destination := destination; output := output |}); output := VLSM.output {| l := existT x l; input := input; destination := destination; output := output |} |}, eqv_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
x: index
l: label (equivocator_IM IM x)
input: option message
destination: state (composite_type (equivocator_IM IM))
output: option message
Hzero: eqv_descriptors x = Existing 0
Hdest_i: is_singleton_state (IM x) (VLSM.destination {| l := existT x l; input := input; destination := destination; output := output |} x)
s: composite_state (equivocator_IM IM)
Hv: equivocator_valid (IM x) l (s x, input)
Ht: (let (si', om') := equivocator_transition (IM x) l (s x, input) in (state_update (equivocator_IM IM) s x si', om')) = (destination, output)
Heqv_pr: transition (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) (s x, VLSM.input (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) = (VLSM.destination (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}), VLSM.output (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) → Hex : existing_equivocator_label (IM x) (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})), equivocator_vlsm_transition_item_project (IM x) (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}) (Existing 0) = Some (Some {| l := existing_equivocator_label_extract (IM x) (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) Hex; input := VLSM.input (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}); destination := equivocator_state_descriptor_project (VLSM.destination (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) (Existing 0); output := VLSM.output (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}) |}, Existing 0)

transition (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) (s x, VLSM.input (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) = (VLSM.destination (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}), VLSM.output (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}))
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
x: index
l: label (equivocator_IM IM x)
input: option message
destination: state (composite_type (equivocator_IM IM))
output: option message
Hzero: eqv_descriptors x = Existing 0
Hdest_i: is_singleton_state (IM x) (VLSM.destination {| l := existT x l; input := input; destination := destination; output := output |} x)
s: composite_state (equivocator_IM IM)
Hv: equivocator_valid (IM x) l (s x, input)
Ht: (let (si', om') := equivocator_transition (IM x) l (s x, input) in (state_update (equivocator_IM IM) s x si', om')) = (destination, output)
Heqv_pr: Hex : existing_equivocator_label (IM x) (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})), equivocator_vlsm_transition_item_project (IM x) (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}) (Existing 0) = Some (Some {| l := existing_equivocator_label_extract (IM x) (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) Hex; input := VLSM.input (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}); destination := equivocator_state_descriptor_project (VLSM.destination (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) (Existing 0); output := VLSM.output (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}) |}, Existing 0)
Hex : existing_equivocator_label (IM (projT1 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |}))) (projT2 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |})), let lx := existT x (existing_equivocator_label_extract (IM (projT1 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |}))) (projT2 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |})) Hex) in equivocators_transition_item_project eqv_descriptors {| l := existT x l; input := input; destination := destination; output := output |} = Some (Some {| l := lx; input := VLSM.input {| l := existT x l; input := input; destination := destination; output := output |}; destination := equivocators_state_project IM eqv_descriptors (VLSM.destination {| l := existT x l; input := input; destination := destination; output := output |}); output := VLSM.output {| l := existT x l; input := input; destination := destination; output := output |} |}, eqv_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
x: index
l: label (equivocator_IM IM x)
input: option message
destination: state (composite_type (equivocator_IM IM))
output: option message
Hzero: eqv_descriptors x = Existing 0
Hdest_i: is_singleton_state (IM x) (VLSM.destination {| l := existT x l; input := input; destination := destination; output := output |} x)
s: composite_state (equivocator_IM IM)
Hv: equivocator_valid (IM x) l (s x, input)
Ht: (let (si', om') := equivocator_transition (IM x) l (s x, input) in (state_update (equivocator_IM IM) s x si', om')) = (destination, output)
Heqv_pr: transition (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) (s x, VLSM.input (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) = (VLSM.destination (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}), VLSM.output (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) → Hex : existing_equivocator_label (IM x) (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})), equivocator_vlsm_transition_item_project (IM x) (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}) (Existing 0) = Some (Some {| l := existing_equivocator_label_extract (IM x) (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) Hex; input := VLSM.input (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}); destination := equivocator_state_descriptor_project (VLSM.destination (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) (Existing 0); output := VLSM.output (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}) |}, Existing 0)

transition (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) (s x, VLSM.input (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) = (VLSM.destination (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}), VLSM.output (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}))
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
x: index
l: label (equivocator_IM IM x)
input: option message
destination: state (composite_type (equivocator_IM IM))
output: option message
Hzero: eqv_descriptors x = Existing 0
Hdest_i: is_singleton_state (IM x) (VLSM.destination {| l := existT x l; input := input; destination := destination; output := output |} x)
s: composite_state (equivocator_IM IM)
Hv: equivocator_valid (IM x) l (s x, input)
Ht: (let (si', om') := equivocator_transition (IM x) l (s x, input) in (state_update (equivocator_IM IM) s x si', om')) = (destination, output)
Heqv_pr: transition (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) (s x, VLSM.input (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) = (VLSM.destination (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}), VLSM.output (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) → Hex : existing_equivocator_label (IM x) (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})), equivocator_vlsm_transition_item_project (IM x) (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}) (Existing 0) = Some (Some {| l := existing_equivocator_label_extract (IM x) (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) Hex; input := VLSM.input (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}); destination := equivocator_state_descriptor_project (VLSM.destination (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) (Existing 0); output := VLSM.output (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}) |}, Existing 0)

equivocator_transition (IM x) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) l eq_refl) (s x, input) = (destination x, output)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
x: index
l: label (equivocator_IM IM x)
input: option message
destination: state (composite_type (equivocator_IM IM))
output: option message
Hzero: eqv_descriptors x = Existing 0
Hdest_i: is_singleton_state (IM x) (VLSM.destination {| l := existT x l; input := input; destination := destination; output := output |} x)
s: composite_state (equivocator_IM IM)
Hv: equivocator_valid (IM x) l (s x, input)
Ht: (let (si', om') := equivocator_transition (IM x) l (s x, input) in (state_update (equivocator_IM IM) s x si', om')) = (destination, output)
Heqv_pr: transition (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) (s x, VLSM.input (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) = (VLSM.destination (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}), VLSM.output (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) → Hex : existing_equivocator_label (IM x) (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})), equivocator_vlsm_transition_item_project (IM x) (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}) (Existing 0) = Some (Some {| l := existing_equivocator_label_extract (IM x) (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) Hex; input := VLSM.input (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}); destination := equivocator_state_descriptor_project (VLSM.destination (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) (Existing 0); output := VLSM.output (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}) |}, Existing 0)

equivocator_transition (IM x) (eq_rect x (λ y : index, EquivocatorLabel (IM y)) l x (eq_sym eq_refl)) (s x, input) = (destination x, output)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
x: index
l: label (equivocator_IM IM x)
input: option message
destination: state (composite_type (equivocator_IM IM))
output: option message
Hzero: eqv_descriptors x = Existing 0
Hdest_i: is_singleton_state (IM x) (VLSM.destination {| l := existT x l; input := input; destination := destination; output := output |} x)
s: composite_state (equivocator_IM IM)
Hv: equivocator_valid (IM x) l (s x, input)
Ht: (let (si', om') := equivocator_transition (IM x) l (s x, input) in (state_update (equivocator_IM IM) s x si', om')) = (destination, output)
Heqv_pr: transition (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) (s x, VLSM.input (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) = (VLSM.destination (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}), VLSM.output (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) → Hex : existing_equivocator_label (IM x) (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})), equivocator_vlsm_transition_item_project (IM x) (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}) (Existing 0) = Some (Some {| l := existing_equivocator_label_extract (IM x) (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) Hex; input := VLSM.input (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}); destination := equivocator_state_descriptor_project (VLSM.destination (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) (Existing 0); output := VLSM.output (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}) |}, Existing 0)

equivocator_transition (IM x) l (s x, input) = (destination x, output)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
x: index
output: option message
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM x)
Ht: (state_update (equivocator_IM IM) s x e, output) = (state_update (equivocator_IM IM) s x e, output)

(e, output) = (state_update (equivocator_IM IM) s x e x, output)
by state_update_simpl.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
x: index
l: label (equivocator_IM IM x)
input: option message
destination: state (composite_type (equivocator_IM IM))
output: option message
Hzero: eqv_descriptors x = Existing 0
Hdest_i: is_singleton_state (IM x) (VLSM.destination {| l := existT x l; input := input; destination := destination; output := output |} x)
s: composite_state (equivocator_IM IM)
Hv: equivocator_valid (IM x) l (s x, input)
Ht: (let (si', om') := equivocator_transition (IM x) l (s x, input) in (state_update (equivocator_IM IM) s x si', om')) = (destination, output)
Heqv_pr: Hex : existing_equivocator_label (IM x) (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})), equivocator_vlsm_transition_item_project (IM x) (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}) (Existing 0) = Some (Some {| l := existing_equivocator_label_extract (IM x) (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) Hex; input := VLSM.input (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}); destination := equivocator_state_descriptor_project (VLSM.destination (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) (Existing 0); output := VLSM.output (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}) |}, Existing 0)

Hex : existing_equivocator_label (IM (projT1 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |}))) (projT2 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |})), let lx := existT x (existing_equivocator_label_extract (IM (projT1 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |}))) (projT2 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |})) Hex) in equivocators_transition_item_project eqv_descriptors {| l := existT x l; input := input; destination := destination; output := output |} = Some (Some {| l := lx; input := VLSM.input {| l := existT x l; input := input; destination := destination; output := output |}; destination := equivocators_state_project IM eqv_descriptors (VLSM.destination {| l := existT x l; input := input; destination := destination; output := output |}); output := VLSM.output {| l := existT x l; input := input; destination := destination; output := output |} |}, eqv_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
x: index
l: label (equivocator_IM IM x)
input: option message
destination: state (composite_type (equivocator_IM IM))
output: option message
Hzero: eqv_descriptors x = Existing 0
Hdest_i: is_singleton_state (IM x) (VLSM.destination {| l := existT x l; input := input; destination := destination; output := output |} x)
s: composite_state (equivocator_IM IM)
Hv: equivocator_valid (IM x) l (s x, input)
Ht: (let (si', om') := equivocator_transition (IM x) l (s x, input) in (state_update (equivocator_IM IM) s x si', om')) = (destination, output)
Hex: existing_equivocator_label (IM x) (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}))
Heqv_pr: equivocator_vlsm_transition_item_project (IM x) (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}) (Existing 0) = Some (Some {| l := existing_equivocator_label_extract (IM x) (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) Hex; input := VLSM.input (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}); destination := equivocator_state_descriptor_project (VLSM.destination (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) (Existing 0); output := VLSM.output (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}) |}, Existing 0)

Hex : existing_equivocator_label (IM (projT1 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |}))) (projT2 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |})), let lx := existT x (existing_equivocator_label_extract (IM (projT1 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |}))) (projT2 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |})) Hex) in equivocators_transition_item_project eqv_descriptors {| l := existT x l; input := input; destination := destination; output := output |} = Some (Some {| l := lx; input := VLSM.input {| l := existT x l; input := input; destination := destination; output := output |}; destination := equivocators_state_project IM eqv_descriptors (VLSM.destination {| l := existT x l; input := input; destination := destination; output := output |}); output := VLSM.output {| l := existT x l; input := input; destination := destination; output := output |} |}, eqv_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
x: index
l: label (equivocator_IM IM x)
input: option message
destination: state (composite_type (equivocator_IM IM))
output: option message
Hzero: eqv_descriptors x = Existing 0
Hdest_i: is_singleton_state (IM x) (VLSM.destination {| l := existT x l; input := input; destination := destination; output := output |} x)
s: composite_state (equivocator_IM IM)
Hv: equivocator_valid (IM x) l (s x, input)
Ht: (let (si', om') := equivocator_transition (IM x) l (s x, input) in (state_update (equivocator_IM IM) s x si', om')) = (destination, output)
Hex: existing_equivocator_label (IM x) (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}))
Heqv_pr: equivocator_vlsm_transition_item_project (IM x) (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}) (Existing 0) = Some (Some {| l := existing_equivocator_label_extract (IM x) (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) Hex; input := VLSM.input (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}); destination := equivocator_state_descriptor_project (VLSM.destination (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) (Existing 0); output := VLSM.output (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}) |}, Existing 0)

let lx := existT x (existing_equivocator_label_extract (IM (projT1 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |}))) (projT2 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |})) Hex) in equivocators_transition_item_project eqv_descriptors {| l := existT x l; input := input; destination := destination; output := output |} = Some (Some {| l := lx; input := VLSM.input {| l := existT x l; input := input; destination := destination; output := output |}; destination := equivocators_state_project IM eqv_descriptors (VLSM.destination {| l := existT x l; input := input; destination := destination; output := output |}); output := VLSM.output {| l := existT x l; input := input; destination := destination; output := output |} |}, eqv_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
x: index
l: label (equivocator_IM IM x)
input: option message
destination: state (composite_type (equivocator_IM IM))
output: option message
Hzero: eqv_descriptors x = Existing 0
Hdest_i: is_singleton_state (IM x) (VLSM.destination {| l := existT x l; input := input; destination := destination; output := output |} x)
s: composite_state (equivocator_IM IM)
Hv: equivocator_valid (IM x) l (s x, input)
Ht: (let (si', om') := equivocator_transition (IM x) l (s x, input) in (state_update (equivocator_IM IM) s x si', om')) = (destination, output)
Hex: existing_equivocator_label (IM x) (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}))
Heqv_pr: equivocator_vlsm_transition_item_project (IM x) (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}) (Existing 0) = Some (Some {| l := existing_equivocator_label_extract (IM x) (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) Hex; input := VLSM.input (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}); destination := equivocator_state_descriptor_project (VLSM.destination (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |})) (Existing 0); output := VLSM.output (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}) |}, Existing 0)

match equivocator_vlsm_transition_item_project (IM (projT1 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |}))) (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}) (eqv_descriptors (projT1 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |}))) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |})) (VLSM.l item'); input := VLSM.input {| l := existT x l; input := input; destination := destination; output := output |}; destination := equivocators_state_project IM eqv_descriptors (VLSM.destination {| l := existT x l; input := input; destination := destination; output := output |}); output := VLSM.output {| l := existT x l; input := input; destination := destination; output := output |} |}, equivocator_descriptors_update IM eqv_descriptors (projT1 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |})) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM eqv_descriptors (projT1 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |})) deqv') | None => None end = Some (Some {| l := existT x (existing_equivocator_label_extract (IM (projT1 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |}))) (projT2 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |})) Hex); input := VLSM.input {| l := existT x l; input := input; destination := destination; output := output |}; destination := equivocators_state_project IM eqv_descriptors (VLSM.destination {| l := existT x l; input := input; destination := destination; output := output |}); output := VLSM.output {| l := existT x l; input := input; destination := destination; output := output |} |}, eqv_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
x: index
l: EquivocatorLabel (IM x)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hzero: eqv_descriptors x = Existing 0
Hdest_i: is_singleton_state (IM x) (destination x)
s: composite_state (equivocator_IM IM)
Hv: equivocator_valid (IM x) l (s x, input)
Ht: (let (si', om') := equivocator_transition (IM x) l (s x, input) in (state_update (equivocator_IM IM) s x si', om')) = (destination, output)
Hex: existing_equivocator_label (IM x) l
Heqv_pr: match equivocator_state_project (destination x) 0 with | Some sj => match l with | Spawn sn => if decide (0 = equivocator_state_last (destination x)) then Some (None, NewMachine sn) else Some (None, Existing 0) | ContinueWith i lx => if decide (i = 0) then Some (Some {| l := lx; input := input; destination := sj; output := output |}, Existing i) else Some (None, Existing 0) | ForkWith i lx => if decide (0 = equivocator_state_last (destination x)) then Some (Some {| l := lx; input := input; destination := sj; output := output |}, Existing i) else Some (None, Existing 0) end | None => None end = Some (Some {| l := existing_equivocator_label_extract (IM x) l Hex; input := input; destination := default (equivocator_state_zero (destination x)) (equivocator_state_project (destination x) 0); output := output |}, Existing 0)

match equivocator_vlsm_transition_item_project (IM x) (composite_transition_item_projection (equivocator_IM IM) {| l := existT x l; input := input; destination := destination; output := output |}) (eqv_descriptors x) with | Some (Some item', deqv') => Some (Some {| l := existT x (VLSM.l item'); input := input; destination := equivocators_state_project IM eqv_descriptors destination; output := output |}, equivocator_descriptors_update IM eqv_descriptors x deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM eqv_descriptors x deqv') | None => None end = Some (Some {| l := existT x (existing_equivocator_label_extract (IM x) l Hex); input := input; destination := equivocators_state_project IM eqv_descriptors destination; output := output |}, eqv_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
x: index
l: EquivocatorLabel (IM x)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hzero: eqv_descriptors x = Existing 0
Hdest_i: is_singleton_state (IM x) (destination x)
s: composite_state (equivocator_IM IM)
Hv: equivocator_valid (IM x) l (s x, input)
Ht: (let (si', om') := equivocator_transition (IM x) l (s x, input) in (state_update (equivocator_IM IM) s x si', om')) = (destination, output)
Hex: existing_equivocator_label (IM x) l
Heqv_pr: match equivocator_state_project (destination x) 0 with | Some sj => match l with | Spawn sn => if decide (0 = equivocator_state_last (destination x)) then Some (None, NewMachine sn) else Some (None, Existing 0) | ContinueWith i lx => if decide (i = 0) then Some (Some {| l := lx; input := input; destination := sj; output := output |}, Existing i) else Some (None, Existing 0) | ForkWith i lx => if decide (0 = equivocator_state_last (destination x)) then Some (Some {| l := lx; input := input; destination := sj; output := output |}, Existing i) else Some (None, Existing 0) end | None => None end = Some (Some {| l := existing_equivocator_label_extract (IM x) l Hex; input := input; destination := default (equivocator_state_zero (destination x)) (equivocator_state_project (destination x) 0); output := output |}, Existing 0)

match match eqv_descriptors x with | NewMachine _ => Some (None, eqv_descriptors x) | Existing j => match equivocator_state_project (destination x) j with | Some sj => match l with | Spawn sn => if decide (j = equivocator_state_last (destination x)) then Some (None, NewMachine sn) else Some (None, Existing j) | ContinueWith i lx => if decide (i = j) then Some (Some {| l := lx; input := input; destination := sj; output := output |}, Existing i) else Some (None, Existing j) | ForkWith i lx => if decide (j = equivocator_state_last (destination x)) then Some (Some {| l := lx; input := input; destination := sj; output := output |}, Existing i) else Some (None, Existing j) end | None => None end end with | Some (Some item', deqv') => Some (Some {| l := existT x (VLSM.l item'); input := input; destination := equivocators_state_project IM eqv_descriptors destination; output := output |}, equivocator_descriptors_update IM eqv_descriptors x deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM eqv_descriptors x deqv') | None => None end = Some (Some {| l := existT x (existing_equivocator_label_extract (IM x) l Hex); input := input; destination := equivocators_state_project IM eqv_descriptors destination; output := output |}, eqv_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
x: index
l: EquivocatorLabel (IM x)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hzero: eqv_descriptors x = Existing 0
Hdest_i: is_singleton_state (IM x) (destination x)
s: composite_state (equivocator_IM IM)
Hv: equivocator_valid (IM x) l (s x, input)
Ht: (let (si', om') := equivocator_transition (IM x) l (s x, input) in (state_update (equivocator_IM IM) s x si', om')) = (destination, output)
Hex: existing_equivocator_label (IM x) l
Heqv_pr: match equivocator_state_project (destination x) 0 with | Some sj => match l with | Spawn sn => if decide (0 = equivocator_state_last (destination x)) then Some (None, NewMachine sn) else Some (None, Existing 0) | ContinueWith i lx => if decide (i = 0) then Some (Some {| l := lx; input := input; destination := sj; output := output |}, Existing i) else Some (None, Existing 0) | ForkWith i lx => if decide (0 = equivocator_state_last (destination x)) then Some (Some {| l := lx; input := input; destination := sj; output := output |}, Existing i) else Some (None, Existing 0) end | None => None end = Some (Some {| l := existing_equivocator_label_extract (IM x) l Hex; input := input; destination := default (equivocator_state_zero (destination x)) (equivocator_state_project (destination x) 0); output := output |}, Existing 0)

equivocator_descriptors_update IM eqv_descriptors x (Existing 0) = eqv_descriptors
by state_update_simpl. Qed.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
item: composite_transition_item (equivocator_IM IM)
s: composite_state (equivocator_IM IM)
Hs: proper_existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)) (s (projT1 (l item)))
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)

equivocators : equivocator_descriptors IM, not_equivocating_equivocator_descriptors IM equivocators (destination item) ∧ ( equivocators' : equivocator_descriptors IM, let lx := existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs)) in let sx := equivocators_state_project IM equivocators (destination item) in proper_equivocator_descriptors IM equivocators' s ∧ equivocators_transition_item_project equivocators item = Some (Some {| l := lx; input := input item; destination := sx; output := output item |}, equivocators'))
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
item: composite_transition_item (equivocator_IM IM)
s: composite_state (equivocator_IM IM)
Hs: proper_existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)) (s (projT1 (l item)))
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)

equivocators : equivocator_descriptors IM, not_equivocating_equivocator_descriptors IM equivocators (destination item) ∧ ( equivocators' : equivocator_descriptors IM, let lx := existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs)) in let sx := equivocators_state_project IM equivocators (destination item) in proper_equivocator_descriptors IM equivocators' s ∧ equivocators_transition_item_project equivocators item = Some (Some {| l := lx; input := input item; destination := sx; output := output item |}, equivocators'))
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
item: composite_transition_item (equivocator_IM IM)
s: composite_state (equivocator_IM IM)
Hs: proper_existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)) (s (projT1 (l item)))
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Hproject: valid (l (composite_transition_item_projection (equivocator_IM IM) item)) (s (projT1 (l item)), input (composite_transition_item_projection (equivocator_IM IM) item)) → transition (l (composite_transition_item_projection (equivocator_IM IM) item)) (s (projT1 (l item)), input (composite_transition_item_projection (equivocator_IM IM) item)) = (destination (composite_transition_item_projection (equivocator_IM IM) item), output (composite_transition_item_projection (equivocator_IM IM) item)) → proper_equivocator_label (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (s (projT1 (l item))) ∧ ( dest_eqv : MachineDescriptor (IM (projT1 (l item))), existing_descriptor (IM (projT1 (l item))) dest_eqv (destination (composite_transition_item_projection (equivocator_IM IM) item)) ∧ equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) dest_eqv = Some (Some {| l := existing_equivocator_label_extract (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs); input := input (composite_transition_item_projection (equivocator_IM IM) item); destination := equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) dest_eqv; output := output (composite_transition_item_projection (equivocator_IM IM) item) |}, equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item))))

equivocators : equivocator_descriptors IM, not_equivocating_equivocator_descriptors IM equivocators (destination item) ∧ ( equivocators' : equivocator_descriptors IM, let lx := existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs)) in let sx := equivocators_state_project IM equivocators (destination item) in proper_equivocator_descriptors IM equivocators' s ∧ equivocators_transition_item_project equivocators item = Some (Some {| l := lx; input := input item; destination := sx; output := output item |}, equivocators'))
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
item: composite_transition_item (equivocator_IM IM)
s: composite_state (equivocator_IM IM)
Hs: proper_existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)) (s (projT1 (l item)))
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Hproject: transition (l (composite_transition_item_projection (equivocator_IM IM) item)) (s (projT1 (l item)), input (composite_transition_item_projection (equivocator_IM IM) item)) = (destination (composite_transition_item_projection (equivocator_IM IM) item), output (composite_transition_item_projection (equivocator_IM IM) item)) → proper_equivocator_label (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (s (projT1 (l item))) ∧ ( dest_eqv : MachineDescriptor (IM (projT1 (l item))), existing_descriptor (IM (projT1 (l item))) dest_eqv (destination (composite_transition_item_projection (equivocator_IM IM) item)) ∧ equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) dest_eqv = Some (Some {| l := existing_equivocator_label_extract (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs); input := input (composite_transition_item_projection (equivocator_IM IM) item); destination := equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) dest_eqv; output := output (composite_transition_item_projection (equivocator_IM IM) item) |}, equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item))))

equivocators : equivocator_descriptors IM, not_equivocating_equivocator_descriptors IM equivocators (destination item) ∧ ( equivocators' : equivocator_descriptors IM, let lx := existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs)) in let sx := equivocators_state_project IM equivocators (destination item) in proper_equivocator_descriptors IM equivocators' s ∧ equivocators_transition_item_project equivocators item = Some (Some {| l := lx; input := input item; destination := sx; output := output item |}, equivocators'))
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
item: composite_transition_item (equivocator_IM IM)
s: composite_state (equivocator_IM IM)
Hs: proper_existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)) (s (projT1 (l item)))
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Hproject: proper_equivocator_label (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (s (projT1 (l item))) ∧ ( dest_eqv : MachineDescriptor (IM (projT1 (l item))), existing_descriptor (IM (projT1 (l item))) dest_eqv (destination (composite_transition_item_projection (equivocator_IM IM) item)) ∧ equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) dest_eqv = Some (Some {| l := existing_equivocator_label_extract (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs); input := input (composite_transition_item_projection (equivocator_IM IM) item); destination := equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) dest_eqv; output := output (composite_transition_item_projection (equivocator_IM IM) item) |}, equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item))))

equivocators : equivocator_descriptors IM, not_equivocating_equivocator_descriptors IM equivocators (destination item) ∧ ( equivocators' : equivocator_descriptors IM, let lx := existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs)) in let sx := equivocators_state_project IM equivocators (destination item) in proper_equivocator_descriptors IM equivocators' s ∧ equivocators_transition_item_project equivocators item = Some (Some {| l := lx; input := input item; destination := sx; output := output item |}, equivocators'))
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
item: composite_transition_item (equivocator_IM IM)
s: composite_state (equivocator_IM IM)
Hs: proper_existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)) (s (projT1 (l item)))
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Heqv': proper_equivocator_label (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (s (projT1 (l item)))
eqv: MachineDescriptor (IM (projT1 (l item)))
Heqv: existing_descriptor (IM (projT1 (l item))) eqv (destination (composite_transition_item_projection (equivocator_IM IM) item))
Hproject: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) eqv = Some (Some {| l := existing_equivocator_label_extract (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs); input := input (composite_transition_item_projection (equivocator_IM IM) item); destination := equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) eqv; output := output (composite_transition_item_projection (equivocator_IM IM) item) |}, equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item)))

equivocators : equivocator_descriptors IM, not_equivocating_equivocator_descriptors IM equivocators (destination item) ∧ ( equivocators' : equivocator_descriptors IM, let lx := existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs)) in let sx := equivocators_state_project IM equivocators (destination item) in proper_equivocator_descriptors IM equivocators' s ∧ equivocators_transition_item_project equivocators item = Some (Some {| l := lx; input := input item; destination := sx; output := output item |}, equivocators'))
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
item: composite_transition_item (equivocator_IM IM)
s: composite_state (equivocator_IM IM)
Hs: proper_existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)) (s (projT1 (l item)))
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Heqv': proper_equivocator_label (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (s (projT1 (l item)))
eqv: MachineDescriptor (IM (projT1 (l item)))
Heqv: existing_descriptor (IM (projT1 (l item))) eqv (destination (composite_transition_item_projection (equivocator_IM IM) item))
Hproject: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) eqv = Some (Some {| l := existing_equivocator_label_extract (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs); input := input (composite_transition_item_projection (equivocator_IM IM) item); destination := equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) eqv; output := output (composite_transition_item_projection (equivocator_IM IM) item) |}, equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item)))

not_equivocating_equivocator_descriptors IM (equivocator_descriptors_update IM (zero_descriptor IM) (projT1 (l item)) eqv) (destination item) ∧ ( equivocators' : equivocator_descriptors IM, let lx := existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs)) in let sx := equivocators_state_project IM (equivocator_descriptors_update IM (zero_descriptor IM) (projT1 (l item)) eqv) (destination item) in proper_equivocator_descriptors IM equivocators' s ∧ equivocators_transition_item_project (equivocator_descriptors_update IM (zero_descriptor IM) (projT1 (l item)) eqv) item = Some (Some {| l := lx; input := input item; destination := sx; output := output item |}, equivocators'))
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
item: composite_transition_item (equivocator_IM IM)
s: composite_state (equivocator_IM IM)
Hs: proper_existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)) (s (projT1 (l item)))
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Heqv': proper_equivocator_label (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (s (projT1 (l item)))
eqv: MachineDescriptor (IM (projT1 (l item)))
Heqv: existing_descriptor (IM (projT1 (l item))) eqv (destination (composite_transition_item_projection (equivocator_IM IM) item))
Hproject: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) eqv = Some (Some {| l := existing_equivocator_label_extract (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs); input := input (composite_transition_item_projection (equivocator_IM IM) item); destination := equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) eqv; output := output (composite_transition_item_projection (equivocator_IM IM) item) |}, equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item)))

not_equivocating_equivocator_descriptors IM (equivocator_descriptors_update IM (zero_descriptor IM) (projT1 (l item)) eqv) (destination item)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
item: composite_transition_item (equivocator_IM IM)
s: composite_state (equivocator_IM IM)
Hs: proper_existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)) (s (projT1 (l item)))
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Heqv': proper_equivocator_label (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (s (projT1 (l item)))
eqv: MachineDescriptor (IM (projT1 (l item)))
Heqv: existing_descriptor (IM (projT1 (l item))) eqv (destination (composite_transition_item_projection (equivocator_IM IM) item))
Hproject: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) eqv = Some (Some {| l := existing_equivocator_label_extract (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs); input := input (composite_transition_item_projection (equivocator_IM IM) item); destination := equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) eqv; output := output (composite_transition_item_projection (equivocator_IM IM) item) |}, equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item)))
equivocators' : equivocator_descriptors IM, let lx := existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs)) in let sx := equivocators_state_project IM (equivocator_descriptors_update IM (zero_descriptor IM) (projT1 (l item)) eqv) (destination item) in proper_equivocator_descriptors IM equivocators' s ∧ equivocators_transition_item_project (equivocator_descriptors_update IM (zero_descriptor IM) (projT1 (l item)) eqv) item = Some (Some {| l := lx; input := input item; destination := sx; output := output item |}, equivocators')
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
item: composite_transition_item (equivocator_IM IM)
s: composite_state (equivocator_IM IM)
Hs: proper_existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)) (s (projT1 (l item)))
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Heqv': proper_equivocator_label (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (s (projT1 (l item)))
eqv: MachineDescriptor (IM (projT1 (l item)))
Heqv: existing_descriptor (IM (projT1 (l item))) eqv (destination (composite_transition_item_projection (equivocator_IM IM) item))
Hproject: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) eqv = Some (Some {| l := existing_equivocator_label_extract (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs); input := input (composite_transition_item_projection (equivocator_IM IM) item); destination := equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) eqv; output := output (composite_transition_item_projection (equivocator_IM IM) item) |}, equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item)))

not_equivocating_equivocator_descriptors IM (equivocator_descriptors_update IM (zero_descriptor IM) (projT1 (l item)) eqv) (destination item)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
item: composite_transition_item (equivocator_IM IM)
s: composite_state (equivocator_IM IM)
Hs: proper_existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)) (s (projT1 (l item)))
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Heqv': proper_equivocator_label (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (s (projT1 (l item)))
eqv: MachineDescriptor (IM (projT1 (l item)))
Heqv: existing_descriptor (IM (projT1 (l item))) eqv (destination (composite_transition_item_projection (equivocator_IM IM) item))
Hproject: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) eqv = Some (Some {| l := existing_equivocator_label_extract (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs); input := input (composite_transition_item_projection (equivocator_IM IM) item); destination := equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) eqv; output := output (composite_transition_item_projection (equivocator_IM IM) item) |}, equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item)))
i: index

existing_descriptor (IM i) (equivocator_descriptors_update IM (zero_descriptor IM) (projT1 (l item)) eqv i) (destination item i)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
item: composite_transition_item (equivocator_IM IM)
s: composite_state (equivocator_IM IM)
Hs: proper_existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)) (s (projT1 (l item)))
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Heqv': proper_equivocator_label (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (s (projT1 (l item)))
eqv: MachineDescriptor (IM (projT1 (l item)))
Heqv: existing_descriptor (IM (projT1 (l item))) eqv (destination (composite_transition_item_projection (equivocator_IM IM) item))
Hproject: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) eqv = Some (Some {| l := existing_equivocator_label_extract (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs); input := input (composite_transition_item_projection (equivocator_IM IM) item); destination := equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) eqv; output := output (composite_transition_item_projection (equivocator_IM IM) item) |}, equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item)))
i: index

existing_descriptor (IM i) match decide (i = projT1 (l item)) with | left e => eq_rect_r (λ i : index, MachineDescriptor (IM i)) eqv e | right _ => zero_descriptor IM i end (destination item i)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
item: composite_transition_item (equivocator_IM IM)
s: composite_state (equivocator_IM IM)
Hs: proper_existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)) (s (projT1 (l item)))
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Heqv': proper_equivocator_label (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (s (projT1 (l item)))
eqv: MachineDescriptor (IM (projT1 (l item)))
Heqv: existing_descriptor (IM (projT1 (l item))) eqv (destination (composite_transition_item_projection (equivocator_IM IM) item))
Hproject: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) eqv = Some (Some {| l := existing_equivocator_label_extract (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs); input := input (composite_transition_item_projection (equivocator_IM IM) item); destination := equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) eqv; output := output (composite_transition_item_projection (equivocator_IM IM) item) |}, equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item)))
i: index
e: i = projT1 (l item)

existing_descriptor (IM i) (eq_rect_r (λ i : index, MachineDescriptor (IM i)) eqv e) (destination item i)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
item: composite_transition_item (equivocator_IM IM)
s: composite_state (equivocator_IM IM)
Hs: proper_existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)) (s (projT1 (l item)))
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Heqv': proper_equivocator_label (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (s (projT1 (l item)))
eqv: MachineDescriptor (IM (projT1 (l item)))
Heqv: existing_descriptor (IM (projT1 (l item))) eqv (destination (composite_transition_item_projection (equivocator_IM IM) item))
Hproject: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) eqv = Some (Some {| l := existing_equivocator_label_extract (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs); input := input (composite_transition_item_projection (equivocator_IM IM) item); destination := equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) eqv; output := output (composite_transition_item_projection (equivocator_IM IM) item) |}, equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item)))
i: index
n: i ≠ projT1 (l item)
existing_descriptor (IM i) (zero_descriptor IM i) (destination item i)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
item: composite_transition_item (equivocator_IM IM)
s: composite_state (equivocator_IM IM)
Hs: proper_existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)) (s (projT1 (l item)))
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Heqv': proper_equivocator_label (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (s (projT1 (l item)))
eqv: MachineDescriptor (IM (projT1 (l item)))
Heqv: existing_descriptor (IM (projT1 (l item))) eqv (destination (composite_transition_item_projection (equivocator_IM IM) item))
Hproject: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) eqv = Some (Some {| l := existing_equivocator_label_extract (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs); input := input (composite_transition_item_projection (equivocator_IM IM) item); destination := equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) eqv; output := output (composite_transition_item_projection (equivocator_IM IM) item) |}, equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item)))
i: index
e: i = projT1 (l item)

existing_descriptor (IM i) (eq_rect_r (λ i : index, MachineDescriptor (IM i)) eqv e) (destination item i)
by subst; state_update_simpl.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
item: composite_transition_item (equivocator_IM IM)
s: composite_state (equivocator_IM IM)
Hs: proper_existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)) (s (projT1 (l item)))
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Heqv': proper_equivocator_label (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (s (projT1 (l item)))
eqv: MachineDescriptor (IM (projT1 (l item)))
Heqv: existing_descriptor (IM (projT1 (l item))) eqv (destination (composite_transition_item_projection (equivocator_IM IM) item))
Hproject: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) eqv = Some (Some {| l := existing_equivocator_label_extract (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs); input := input (composite_transition_item_projection (equivocator_IM IM) item); destination := equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) eqv; output := output (composite_transition_item_projection (equivocator_IM IM) item) |}, equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item)))
i: index
n: i ≠ projT1 (l item)

existing_descriptor (IM i) (zero_descriptor IM i) (destination item i)
by cbn; rewrite equivocator_state_project_zero.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
item: composite_transition_item (equivocator_IM IM)
s: composite_state (equivocator_IM IM)
Hs: proper_existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)) (s (projT1 (l item)))
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Heqv': proper_equivocator_label (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (s (projT1 (l item)))
eqv: MachineDescriptor (IM (projT1 (l item)))
Heqv: existing_descriptor (IM (projT1 (l item))) eqv (destination (composite_transition_item_projection (equivocator_IM IM) item))
Hproject: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) eqv = Some (Some {| l := existing_equivocator_label_extract (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs); input := input (composite_transition_item_projection (equivocator_IM IM) item); destination := equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) eqv; output := output (composite_transition_item_projection (equivocator_IM IM) item) |}, equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item)))

equivocators' : equivocator_descriptors IM, let lx := existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs)) in let sx := equivocators_state_project IM (equivocator_descriptors_update IM (zero_descriptor IM) (projT1 (l item)) eqv) (destination item) in proper_equivocator_descriptors IM equivocators' s ∧ equivocators_transition_item_project (equivocator_descriptors_update IM (zero_descriptor IM) (projT1 (l item)) eqv) item = Some (Some {| l := lx; input := input item; destination := sx; output := output item |}, equivocators')
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
item: composite_transition_item (equivocator_IM IM)
s: composite_state (equivocator_IM IM)
Hs: proper_existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)) (s (projT1 (l item)))
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Heqv': proper_equivocator_label (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (s (projT1 (l item)))
eqv: MachineDescriptor (IM (projT1 (l item)))
Heqv: existing_descriptor (IM (projT1 (l item))) eqv (destination (composite_transition_item_projection (equivocator_IM IM) item))
Hproject: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) eqv = Some (Some {| l := existing_equivocator_label_extract (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs); input := input (composite_transition_item_projection (equivocator_IM IM) item); destination := equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) eqv; output := output (composite_transition_item_projection (equivocator_IM IM) item) |}, equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item)))

let lx := existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs)) in let sx := equivocators_state_project IM (equivocator_descriptors_update IM (zero_descriptor IM) (projT1 (l item)) eqv) (destination item) in proper_equivocator_descriptors IM (equivocator_descriptors_update IM (zero_descriptor IM) (projT1 (l item)) (equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item)))) s ∧ equivocators_transition_item_project (equivocator_descriptors_update IM (zero_descriptor IM) (projT1 (l item)) eqv) item = Some (Some {| l := lx; input := input item; destination := sx; output := output item |}, equivocator_descriptors_update IM (zero_descriptor IM) (projT1 (l item)) (equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item))))
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
item: composite_transition_item (equivocator_IM IM)
s: composite_state (equivocator_IM IM)
Hs: proper_existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)) (s (projT1 (l item)))
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Heqv': proper_equivocator_label (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (s (projT1 (l item)))
eqv: MachineDescriptor (IM (projT1 (l item)))
Heqv: existing_descriptor (IM (projT1 (l item))) eqv (destination (composite_transition_item_projection (equivocator_IM IM) item))
Hproject: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) eqv = Some (Some {| l := existing_equivocator_label_extract (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs); input := input (composite_transition_item_projection (equivocator_IM IM) item); destination := equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) eqv; output := output (composite_transition_item_projection (equivocator_IM IM) item) |}, equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item)))

proper_equivocator_descriptors IM (equivocator_descriptors_update IM (zero_descriptor IM) (projT1 (l item)) (equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item)))) s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
item: composite_transition_item (equivocator_IM IM)
s: composite_state (equivocator_IM IM)
Hs: proper_existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)) (s (projT1 (l item)))
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Heqv': proper_equivocator_label (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (s (projT1 (l item)))
eqv: MachineDescriptor (IM (projT1 (l item)))
Heqv: existing_descriptor (IM (projT1 (l item))) eqv (destination (composite_transition_item_projection (equivocator_IM IM) item))
Hproject: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) eqv = Some (Some {| l := existing_equivocator_label_extract (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs); input := input (composite_transition_item_projection (equivocator_IM IM) item); destination := equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) eqv; output := output (composite_transition_item_projection (equivocator_IM IM) item) |}, equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item)))
equivocators_transition_item_project (equivocator_descriptors_update IM (zero_descriptor IM) (projT1 (l item)) eqv) item = Some (Some {| l := existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs)); input := input item; destination := equivocators_state_project IM (equivocator_descriptors_update IM (zero_descriptor IM) (projT1 (l item)) eqv) (destination item); output := output item |}, equivocator_descriptors_update IM (zero_descriptor IM) (projT1 (l item)) (equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item))))
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
item: composite_transition_item (equivocator_IM IM)
s: composite_state (equivocator_IM IM)
Hs: proper_existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)) (s (projT1 (l item)))
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Heqv': proper_equivocator_label (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (s (projT1 (l item)))
eqv: MachineDescriptor (IM (projT1 (l item)))
Heqv: existing_descriptor (IM (projT1 (l item))) eqv (destination (composite_transition_item_projection (equivocator_IM IM) item))
Hproject: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) eqv = Some (Some {| l := existing_equivocator_label_extract (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs); input := input (composite_transition_item_projection (equivocator_IM IM) item); destination := equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) eqv; output := output (composite_transition_item_projection (equivocator_IM IM) item) |}, equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item)))

proper_equivocator_descriptors IM (equivocator_descriptors_update IM (zero_descriptor IM) (projT1 (l item)) (equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item)))) s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
item: composite_transition_item (equivocator_IM IM)
s: composite_state (equivocator_IM IM)
Hs: proper_existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)) (s (projT1 (l item)))
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Heqv': proper_equivocator_label (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (s (projT1 (l item)))
eqv: MachineDescriptor (IM (projT1 (l item)))
Heqv: existing_descriptor (IM (projT1 (l item))) eqv (destination (composite_transition_item_projection (equivocator_IM IM) item))
Hproject: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) eqv = Some (Some {| l := existing_equivocator_label_extract (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs); input := input (composite_transition_item_projection (equivocator_IM IM) item); destination := equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) eqv; output := output (composite_transition_item_projection (equivocator_IM IM) item) |}, equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item)))
i: index

proper_descriptor (IM i) (equivocator_descriptors_update IM (zero_descriptor IM) (projT1 (l item)) (equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item))) i) (s i)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
item: composite_transition_item (equivocator_IM IM)
s: composite_state (equivocator_IM IM)
Hs: proper_existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)) (s (projT1 (l item)))
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Heqv': proper_equivocator_label (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (s (projT1 (l item)))
eqv: MachineDescriptor (IM (projT1 (l item)))
Heqv: existing_descriptor (IM (projT1 (l item))) eqv (destination (composite_transition_item_projection (equivocator_IM IM) item))
Hproject: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) eqv = Some (Some {| l := existing_equivocator_label_extract (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs); input := input (composite_transition_item_projection (equivocator_IM IM) item); destination := equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) eqv; output := output (composite_transition_item_projection (equivocator_IM IM) item) |}, equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item)))
i: index

proper_descriptor (IM i) match decide (i = projT1 (l item)) with | left e => eq_rect_r (λ i : index, MachineDescriptor (IM i)) (equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item))) e | right _ => zero_descriptor IM i end (s i)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
item: composite_transition_item (equivocator_IM IM)
s: composite_state (equivocator_IM IM)
Hs: proper_existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)) (s (projT1 (l item)))
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Heqv': proper_equivocator_label (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (s (projT1 (l item)))
eqv: MachineDescriptor (IM (projT1 (l item)))
Heqv: existing_descriptor (IM (projT1 (l item))) eqv (destination (composite_transition_item_projection (equivocator_IM IM) item))
Hproject: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) eqv = Some (Some {| l := existing_equivocator_label_extract (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs); input := input (composite_transition_item_projection (equivocator_IM IM) item); destination := equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) eqv; output := output (composite_transition_item_projection (equivocator_IM IM) item) |}, equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item)))
i: index
e: i = projT1 (l item)

proper_descriptor (IM i) (eq_rect_r (λ i : index, MachineDescriptor (IM i)) (equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item))) e) (s i)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
item: composite_transition_item (equivocator_IM IM)
s: composite_state (equivocator_IM IM)
Hs: proper_existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)) (s (projT1 (l item)))
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Heqv': proper_equivocator_label (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (s (projT1 (l item)))
eqv: MachineDescriptor (IM (projT1 (l item)))
Heqv: existing_descriptor (IM (projT1 (l item))) eqv (destination (composite_transition_item_projection (equivocator_IM IM) item))
Hproject: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) eqv = Some (Some {| l := existing_equivocator_label_extract (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs); input := input (composite_transition_item_projection (equivocator_IM IM) item); destination := equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) eqv; output := output (composite_transition_item_projection (equivocator_IM IM) item) |}, equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item)))
i: index
n: i ≠ projT1 (l item)
proper_descriptor (IM i) (zero_descriptor IM i) (s i)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
item: composite_transition_item (equivocator_IM IM)
s: composite_state (equivocator_IM IM)
Hs: proper_existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)) (s (projT1 (l item)))
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Heqv': proper_equivocator_label (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (s (projT1 (l item)))
eqv: MachineDescriptor (IM (projT1 (l item)))
Heqv: existing_descriptor (IM (projT1 (l item))) eqv (destination (composite_transition_item_projection (equivocator_IM IM) item))
Hproject: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) eqv = Some (Some {| l := existing_equivocator_label_extract (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs); input := input (composite_transition_item_projection (equivocator_IM IM) item); destination := equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) eqv; output := output (composite_transition_item_projection (equivocator_IM IM) item) |}, equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item)))
i: index
e: i = projT1 (l item)

proper_descriptor (IM i) (eq_rect_r (λ i : index, MachineDescriptor (IM i)) (equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item))) e) (s i)
by subst; state_update_simpl.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
item: composite_transition_item (equivocator_IM IM)
s: composite_state (equivocator_IM IM)
Hs: proper_existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)) (s (projT1 (l item)))
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Heqv': proper_equivocator_label (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (s (projT1 (l item)))
eqv: MachineDescriptor (IM (projT1 (l item)))
Heqv: existing_descriptor (IM (projT1 (l item))) eqv (destination (composite_transition_item_projection (equivocator_IM IM) item))
Hproject: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) eqv = Some (Some {| l := existing_equivocator_label_extract (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs); input := input (composite_transition_item_projection (equivocator_IM IM) item); destination := equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) eqv; output := output (composite_transition_item_projection (equivocator_IM IM) item) |}, equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item)))
i: index
n: i ≠ projT1 (l item)

proper_descriptor (IM i) (zero_descriptor IM i) (s i)
by cbn; rewrite equivocator_state_project_zero.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
item: composite_transition_item (equivocator_IM IM)
s: composite_state (equivocator_IM IM)
Hs: proper_existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)) (s (projT1 (l item)))
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Heqv': proper_equivocator_label (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (s (projT1 (l item)))
eqv: MachineDescriptor (IM (projT1 (l item)))
Heqv: existing_descriptor (IM (projT1 (l item))) eqv (destination (composite_transition_item_projection (equivocator_IM IM) item))
Hproject: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) eqv = Some (Some {| l := existing_equivocator_label_extract (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs); input := input (composite_transition_item_projection (equivocator_IM IM) item); destination := equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) eqv; output := output (composite_transition_item_projection (equivocator_IM IM) item) |}, equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item)))

equivocators_transition_item_project (equivocator_descriptors_update IM (zero_descriptor IM) (projT1 (l item)) eqv) item = Some (Some {| l := existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs)); input := input item; destination := equivocators_state_project IM (equivocator_descriptors_update IM (zero_descriptor IM) (projT1 (l item)) eqv) (destination item); output := output item |}, equivocator_descriptors_update IM (zero_descriptor IM) (projT1 (l item)) (equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item))))
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
item: composite_transition_item (equivocator_IM IM)
s: composite_state (equivocator_IM IM)
Hs: proper_existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)) (s (projT1 (l item)))
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Heqv': proper_equivocator_label (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (s (projT1 (l item)))
eqv: MachineDescriptor (IM (projT1 (l item)))
Heqv: existing_descriptor (IM (projT1 (l item))) eqv (destination (composite_transition_item_projection (equivocator_IM IM) item))
Hproject: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) eqv = Some (Some {| l := existing_equivocator_label_extract (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs); input := input (composite_transition_item_projection (equivocator_IM IM) item); destination := equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) eqv; output := output (composite_transition_item_projection (equivocator_IM IM) item) |}, equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item)))

match equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) (equivocator_descriptors_update IM (zero_descriptor IM) (projT1 (l item)) eqv (projT1 (l item))) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM (equivocator_descriptors_update IM (zero_descriptor IM) (projT1 (l item)) eqv) (destination item); output := output item |}, equivocator_descriptors_update IM (equivocator_descriptors_update IM (zero_descriptor IM) (projT1 (l item)) eqv) (projT1 (l item)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM (equivocator_descriptors_update IM (zero_descriptor IM) (projT1 (l item)) eqv) (projT1 (l item)) deqv') | None => None end = Some (Some {| l := existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs)); input := input item; destination := equivocators_state_project IM (equivocator_descriptors_update IM (zero_descriptor IM) (projT1 (l item)) eqv) (destination item); output := output item |}, equivocator_descriptors_update IM (zero_descriptor IM) (projT1 (l item)) (equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item))))
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
item: composite_transition_item (equivocator_IM IM)
s: composite_state (equivocator_IM IM)
Hs: proper_existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)) (s (projT1 (l item)))
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Heqv': proper_equivocator_label (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (s (projT1 (l item)))
eqv: MachineDescriptor (IM (projT1 (l item)))
Heqv: existing_descriptor (IM (projT1 (l item))) eqv (destination (composite_transition_item_projection (equivocator_IM IM) item))
Hproject: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) eqv = Some (Some {| l := existing_equivocator_label_extract (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs); input := input (composite_transition_item_projection (equivocator_IM IM) item); destination := equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) eqv; output := output (composite_transition_item_projection (equivocator_IM IM) item) |}, equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item)))

match equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) eqv with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM (equivocator_descriptors_update IM (zero_descriptor IM) (projT1 (l item)) eqv) (destination item); output := output item |}, equivocator_descriptors_update IM (equivocator_descriptors_update IM (zero_descriptor IM) (projT1 (l item)) eqv) (projT1 (l item)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM (equivocator_descriptors_update IM (zero_descriptor IM) (projT1 (l item)) eqv) (projT1 (l item)) deqv') | None => None end = Some (Some {| l := existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) (existing_equivocator_label_forget_proper (IM (projT1 (l item))) Hs)); input := input item; destination := equivocators_state_project IM (equivocator_descriptors_update IM (zero_descriptor IM) (projT1 (l item)) eqv) (destination item); output := output item |}, equivocator_descriptors_update IM (zero_descriptor IM) (projT1 (l item)) (equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item))))
by rewrite Hproject, equivocator_descriptors_update_twice. Qed.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
i:= projT1 (l item): index
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (destination item i)

(oitem : option (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), equivocators_transition_item_project eqv_descriptors item = Some (oitem, eqv_descriptors') ∧ match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)), existT i (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) Hex) = l itemx) ∧ input item = input itemx ∧ output item = output itemx ∧ equivocators_state_project IM eqv_descriptors (destination item) = destination itemx ∧ eqv_descriptors' i = equivocator_label_descriptor (projT2 (l item)) | None => True end ∧ ( s : composite_state (equivocator_IM IM), composite_valid (equivocator_IM IM) (l item) (s, input item) → composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item) → proper_descriptor (IM i) (eqv_descriptors' i) (s i) ∧ eqv_descriptors' = equivocator_descriptors_update IM eqv_descriptors i (eqv_descriptors' i) ∧ s = state_update (equivocator_IM IM) (destination item) i (s i) ∧ previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) (eqv_descriptors' i) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM eqv_descriptors' s → composite_valid IM (l itemx) (sx, input itemx) ∧ composite_transition IM (l itemx) (sx, input itemx) = (destination itemx, output itemx) | None => equivocators_state_project IM eqv_descriptors (destination item) = equivocators_state_project IM eqv_descriptors' s end)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
i:= projT1 (l item): index
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (destination item i)

(oitem : option (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), equivocators_transition_item_project eqv_descriptors item = Some (oitem, eqv_descriptors') ∧ match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)), existT i (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) Hex) = l itemx) ∧ input item = input itemx ∧ output item = output itemx ∧ equivocators_state_project IM eqv_descriptors (destination item) = destination itemx ∧ eqv_descriptors' i = equivocator_label_descriptor (projT2 (l item)) | None => True end ∧ ( s : composite_state (equivocator_IM IM), composite_valid (equivocator_IM IM) (l item) (s, input item) → composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item) → proper_descriptor (IM i) (eqv_descriptors' i) (s i) ∧ eqv_descriptors' = equivocator_descriptors_update IM eqv_descriptors i (eqv_descriptors' i) ∧ s = state_update (equivocator_IM IM) (destination item) i (s i) ∧ previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) (eqv_descriptors' i) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM eqv_descriptors' s → composite_valid IM (l itemx) (sx, input itemx) ∧ composite_transition IM (l itemx) (sx, input itemx) = (destination itemx, output itemx) | None => equivocators_state_project IM eqv_descriptors (destination item) = equivocators_state_project IM eqv_descriptors' s end)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
i:= projT1 (l item): index
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (destination item i)
oitemi: option transition_item
eqv_descriptorsi': MachineDescriptor (IM i)
Hoitemi: equivocator_vlsm_transition_item_project (IM i) (composite_transition_item_projection (equivocator_IM IM) item) (eqv_descriptors i) = Some (oitemi, eqv_descriptorsi')
Hitemx: match oitemi with | Some itemx => ( Hex : existing_equivocator_label (IM i) (l (composite_transition_item_projection (equivocator_IM IM) item)), l itemx = existing_equivocator_label_extract (IM i) (l (composite_transition_item_projection (equivocator_IM IM) item)) Hex) ∧ input (composite_transition_item_projection (equivocator_IM IM) item) = input itemx ∧ output (composite_transition_item_projection (equivocator_IM IM) item) = output itemx ∧ equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) (eqv_descriptors i) = destination itemx ∧ eqv_descriptorsi' = equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item)) | None => True end
Hchar: s : state (equivocator_vlsm (IM i)), valid (l (composite_transition_item_projection (equivocator_IM IM) item)) (s, input (composite_transition_item_projection (equivocator_IM IM) item)) → transition (l (composite_transition_item_projection (equivocator_IM IM) item)) (s, input (composite_transition_item_projection (equivocator_IM IM) item)) = (destination (composite_transition_item_projection (equivocator_IM IM) item), output (composite_transition_item_projection (equivocator_IM IM) item)) → proper_descriptor (IM i) eqv_descriptorsi' s ∧ previous_state_descriptor_prop (IM i) (eqv_descriptors i) s eqv_descriptorsi' ∧ match oitemi with | Some itemx => sx : state (IM i), sx = equivocator_state_descriptor_project s eqv_descriptorsi' → valid (l itemx) (sx, input itemx) ∧ transition (l itemx) ( sx, input itemx) = (destination itemx, output itemx) | None => equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) (eqv_descriptors i) = equivocator_state_descriptor_project s eqv_descriptorsi' end

(oitem : option (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), equivocators_transition_item_project eqv_descriptors item = Some (oitem, eqv_descriptors') ∧ match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)), existT i (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) Hex) = l itemx) ∧ input item = input itemx ∧ output item = output itemx ∧ equivocators_state_project IM eqv_descriptors (destination item) = destination itemx ∧ eqv_descriptors' i = equivocator_label_descriptor (projT2 (l item)) | None => True end ∧ ( s : composite_state (equivocator_IM IM), composite_valid (equivocator_IM IM) (l item) (s, input item) → composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item) → proper_descriptor (IM i) (eqv_descriptors' i) (s i) ∧ eqv_descriptors' = equivocator_descriptors_update IM eqv_descriptors i (eqv_descriptors' i) ∧ s = state_update (equivocator_IM IM) (destination item) i (s i) ∧ previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) (eqv_descriptors' i) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM eqv_descriptors' s → composite_valid IM (l itemx) (sx, input itemx) ∧ composite_transition IM (l itemx) (sx, input itemx) = (destination itemx, output itemx) | None => equivocators_state_project IM eqv_descriptors (destination item) = equivocators_state_project IM eqv_descriptors' s end)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
Hproper: proper_descriptor (IM (projT1 (l item))) (eqv_descriptors (projT1 (l item))) (destination item (projT1 (l item)))
oitemi: option transition_item
eqv_descriptorsi': MachineDescriptor (IM (projT1 (l item)))
Hoitemi: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) (eqv_descriptors (projT1 (l item))) = Some (oitemi, eqv_descriptorsi')
Hitemx: match oitemi with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)), l itemx = existing_equivocator_label_extract (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) Hex) ∧ input (composite_transition_item_projection (equivocator_IM IM) item) = input itemx ∧ output (composite_transition_item_projection (equivocator_IM IM) item) = output itemx ∧ equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) (eqv_descriptors (projT1 (l item))) = destination itemx ∧ eqv_descriptorsi' = equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item)) | None => True end
Hchar: s : state (equivocator_vlsm (IM (projT1 (l item)))), valid (l (composite_transition_item_projection (equivocator_IM IM) item)) (s, input (composite_transition_item_projection (equivocator_IM IM) item)) → transition (l (composite_transition_item_projection (equivocator_IM IM) item)) (s, input (composite_transition_item_projection (equivocator_IM IM) item)) = (destination (composite_transition_item_projection (equivocator_IM IM) item), output (composite_transition_item_projection (equivocator_IM IM) item)) → proper_descriptor (IM (projT1 (l item))) eqv_descriptorsi' s ∧ previous_state_descriptor_prop (IM (projT1 (l item))) (eqv_descriptors (projT1 (l item))) s eqv_descriptorsi' ∧ match oitemi with | Some itemx => sx : state (IM (projT1 (l item))), sx = equivocator_state_descriptor_project s eqv_descriptorsi' → valid (l itemx) (sx, input itemx) ∧ transition (l itemx) ( sx, input itemx) = (destination itemx, output itemx) | None => equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) (eqv_descriptors (projT1 (l item))) = equivocator_state_descriptor_project s eqv_descriptorsi' end

(oitem : option (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), equivocators_transition_item_project eqv_descriptors item = Some (oitem, eqv_descriptors') ∧ match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)), existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) Hex) = l itemx) ∧ input item = input itemx ∧ output item = output itemx ∧ equivocators_state_project IM eqv_descriptors (destination item) = destination itemx ∧ eqv_descriptors' (projT1 (l item)) = equivocator_label_descriptor (projT2 (l item)) | None => True end ∧ ( s : composite_state (equivocator_IM IM), composite_valid (equivocator_IM IM) (l item) (s, input item) → composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item) → proper_descriptor (IM (projT1 (l item))) (eqv_descriptors' (projT1 (l item))) (s (projT1 (l item))) ∧ eqv_descriptors' = equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) (eqv_descriptors' (projT1 (l item))) ∧ s = state_update (equivocator_IM IM) (destination item) (projT1 (l item)) (s (projT1 (l item))) ∧ previous_state_descriptor_prop (IM (projT1 (l item))) (eqv_descriptors (projT1 (l item))) (s (projT1 (l item))) (eqv_descriptors' (projT1 (l item))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM eqv_descriptors' s → composite_valid IM (l itemx) (sx, input itemx) ∧ composite_transition IM (l itemx) (sx, input itemx) = (destination itemx, output itemx) | None => equivocators_state_project IM eqv_descriptors (destination item) = equivocators_state_project IM eqv_descriptors' s end)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
Hproper: proper_descriptor (IM (projT1 (l item))) (eqv_descriptors (projT1 (l item))) (destination item (projT1 (l item)))
oitemi: option transition_item
eqv_descriptorsi': MachineDescriptor (IM (projT1 (l item)))
Hoitemi: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) (eqv_descriptors (projT1 (l item))) = Some (oitemi, eqv_descriptorsi')
Hitemx: match oitemi with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)), l itemx = existing_equivocator_label_extract (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) Hex) ∧ input (composite_transition_item_projection (equivocator_IM IM) item) = input itemx ∧ output (composite_transition_item_projection (equivocator_IM IM) item) = output itemx ∧ equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) (eqv_descriptors (projT1 (l item))) = destination itemx ∧ eqv_descriptorsi' = equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item)) | None => True end
Hchar: s : state (equivocator_vlsm (IM (projT1 (l item)))), valid (l (composite_transition_item_projection (equivocator_IM IM) item)) (s, input (composite_transition_item_projection (equivocator_IM IM) item)) → transition (l (composite_transition_item_projection (equivocator_IM IM) item)) (s, input (composite_transition_item_projection (equivocator_IM IM) item)) = (destination (composite_transition_item_projection (equivocator_IM IM) item), output (composite_transition_item_projection (equivocator_IM IM) item)) → proper_descriptor (IM (projT1 (l item))) eqv_descriptorsi' s ∧ previous_state_descriptor_prop (IM (projT1 (l item))) (eqv_descriptors (projT1 (l item))) s eqv_descriptorsi' ∧ match oitemi with | Some itemx => sx : state (IM (projT1 (l item))), sx = equivocator_state_descriptor_project s eqv_descriptorsi' → valid (l itemx) (sx, input itemx) ∧ transition (l itemx) ( sx, input itemx) = (destination itemx, output itemx) | None => equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) (eqv_descriptors (projT1 (l item))) = equivocator_state_descriptor_project s eqv_descriptorsi' end

(oitem : option (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) (eqv_descriptors (projT1 (l item))) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM eqv_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) deqv') | None => None end = Some (oitem, eqv_descriptors') ∧ match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)), existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) Hex) = l itemx) ∧ input item = input itemx ∧ output item = output itemx ∧ equivocators_state_project IM eqv_descriptors (destination item) = destination itemx ∧ eqv_descriptors' (projT1 (l item)) = equivocator_label_descriptor (projT2 (l item)) | None => True end ∧ ( s : composite_state (equivocator_IM IM), composite_valid (equivocator_IM IM) (l item) (s, input item) → composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item) → proper_descriptor (IM (projT1 (l item))) (eqv_descriptors' (projT1 (l item))) (s (projT1 (l item))) ∧ eqv_descriptors' = equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) (eqv_descriptors' (projT1 (l item))) ∧ s = state_update (equivocator_IM IM) (destination item) (projT1 (l item)) (s (projT1 (l item))) ∧ previous_state_descriptor_prop (IM (projT1 (l item))) (eqv_descriptors (projT1 (l item))) (s (projT1 (l item))) (eqv_descriptors' (projT1 (l item))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM eqv_descriptors' s → composite_valid IM (l itemx) (sx, input itemx) ∧ composite_transition IM (l itemx) (sx, input itemx) = (destination itemx, output itemx) | None => equivocators_state_project IM eqv_descriptors (destination item) = equivocators_state_project IM eqv_descriptors' s end)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
Hproper: proper_descriptor (IM (projT1 (l item))) (eqv_descriptors (projT1 (l item))) (destination item (projT1 (l item)))
oitemi: option transition_item
eqv_descriptorsi': MachineDescriptor (IM (projT1 (l item)))
Hoitemi: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) (eqv_descriptors (projT1 (l item))) = Some (oitemi, eqv_descriptorsi')
Hitemx: match oitemi with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)), l itemx = existing_equivocator_label_extract (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) Hex) ∧ input (composite_transition_item_projection (equivocator_IM IM) item) = input itemx ∧ output (composite_transition_item_projection (equivocator_IM IM) item) = output itemx ∧ equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) (eqv_descriptors (projT1 (l item))) = destination itemx ∧ eqv_descriptorsi' = equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item)) | None => True end
Hchar: s : state (equivocator_vlsm (IM (projT1 (l item)))), valid (l (composite_transition_item_projection (equivocator_IM IM) item)) (s, input (composite_transition_item_projection (equivocator_IM IM) item)) → transition (l (composite_transition_item_projection (equivocator_IM IM) item)) (s, input (composite_transition_item_projection (equivocator_IM IM) item)) = (destination (composite_transition_item_projection (equivocator_IM IM) item), output (composite_transition_item_projection (equivocator_IM IM) item)) → proper_descriptor (IM (projT1 (l item))) eqv_descriptorsi' s ∧ previous_state_descriptor_prop (IM (projT1 (l item))) (eqv_descriptors (projT1 (l item))) s eqv_descriptorsi' ∧ match oitemi with | Some itemx => sx : state (IM (projT1 (l item))), sx = equivocator_state_descriptor_project s eqv_descriptorsi' → valid (l itemx) (sx, input itemx) ∧ transition (l itemx) ( sx, input itemx) = (destination itemx, output itemx) | None => equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) (eqv_descriptors (projT1 (l item))) = equivocator_state_descriptor_project s eqv_descriptorsi' end

(oitem : option (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match oitemi with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM eqv_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) eqv_descriptorsi') | None => Some (None, equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) eqv_descriptorsi') end = Some (oitem, eqv_descriptors') ∧ match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)), existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) Hex) = l itemx) ∧ input item = input itemx ∧ output item = output itemx ∧ equivocators_state_project IM eqv_descriptors (destination item) = destination itemx ∧ eqv_descriptors' (projT1 (l item)) = equivocator_label_descriptor (projT2 (l item)) | None => True end ∧ ( s : composite_state (equivocator_IM IM), composite_valid (equivocator_IM IM) (l item) (s, input item) → composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item) → proper_descriptor (IM (projT1 (l item))) (eqv_descriptors' (projT1 (l item))) (s (projT1 (l item))) ∧ eqv_descriptors' = equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) (eqv_descriptors' (projT1 (l item))) ∧ s = state_update (equivocator_IM IM) (destination item) (projT1 (l item)) (s (projT1 (l item))) ∧ previous_state_descriptor_prop (IM (projT1 (l item))) (eqv_descriptors (projT1 (l item))) (s (projT1 (l item))) (eqv_descriptors' (projT1 (l item))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM eqv_descriptors' s → composite_valid IM (l itemx) (sx, input itemx) ∧ composite_transition IM (l itemx) (sx, input itemx) = (destination itemx, output itemx) | None => equivocators_state_project IM eqv_descriptors (destination item) = equivocators_state_project IM eqv_descriptors' s end)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
Hproper: proper_descriptor (IM (projT1 (l item))) (eqv_descriptors (projT1 (l item))) (destination item (projT1 (l item)))
oitemi: option transition_item
eqv_descriptorsi': MachineDescriptor (IM (projT1 (l item)))
Hitemx: match oitemi with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)), l itemx = existing_equivocator_label_extract (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) Hex) ∧ input (composite_transition_item_projection (equivocator_IM IM) item) = input itemx ∧ output (composite_transition_item_projection (equivocator_IM IM) item) = output itemx ∧ equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) (eqv_descriptors (projT1 (l item))) = destination itemx ∧ eqv_descriptorsi' = equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item)) | None => True end
Hchar: s : state (equivocator_vlsm (IM (projT1 (l item)))), valid (l (composite_transition_item_projection (equivocator_IM IM) item)) (s, input (composite_transition_item_projection (equivocator_IM IM) item)) → transition (l (composite_transition_item_projection (equivocator_IM IM) item)) (s, input (composite_transition_item_projection (equivocator_IM IM) item)) = (destination (composite_transition_item_projection (equivocator_IM IM) item), output (composite_transition_item_projection (equivocator_IM IM) item)) → proper_descriptor (IM (projT1 (l item))) eqv_descriptorsi' s ∧ previous_state_descriptor_prop (IM (projT1 (l item))) (eqv_descriptors (projT1 (l item))) s eqv_descriptorsi' ∧ match oitemi with | Some itemx => sx : state (IM (projT1 (l item))), sx = equivocator_state_descriptor_project s eqv_descriptorsi' → valid (l itemx) (sx, input itemx) ∧ transition (l itemx) ( sx, input itemx) = (destination itemx, output itemx) | None => equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) (eqv_descriptors (projT1 (l item))) = equivocator_state_descriptor_project s eqv_descriptorsi' end

(oitem : option (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match oitemi with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM eqv_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) eqv_descriptorsi') | None => Some (None, equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) eqv_descriptorsi') end = Some (oitem, eqv_descriptors') ∧ match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)), existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) Hex) = l itemx) ∧ input item = input itemx ∧ output item = output itemx ∧ equivocators_state_project IM eqv_descriptors (destination item) = destination itemx ∧ eqv_descriptors' (projT1 (l item)) = equivocator_label_descriptor (projT2 (l item)) | None => True end ∧ ( s : composite_state (equivocator_IM IM), composite_valid (equivocator_IM IM) (l item) (s, input item) → composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item) → proper_descriptor (IM (projT1 (l item))) (eqv_descriptors' (projT1 (l item))) (s (projT1 (l item))) ∧ eqv_descriptors' = equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) (eqv_descriptors' (projT1 (l item))) ∧ s = state_update (equivocator_IM IM) (destination item) (projT1 (l item)) (s (projT1 (l item))) ∧ previous_state_descriptor_prop (IM (projT1 (l item))) (eqv_descriptors (projT1 (l item))) (s (projT1 (l item))) (eqv_descriptors' (projT1 (l item))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM eqv_descriptors' s → composite_valid IM (l itemx) (sx, input itemx) ∧ composite_transition IM (l itemx) (sx, input itemx) = (destination itemx, output itemx) | None => equivocators_state_project IM eqv_descriptors (destination item) = equivocators_state_project IM eqv_descriptors' s end)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
l: label (composite_type (equivocator_IM IM))
input: option message
destination: state (composite_type (equivocator_IM IM))
output: option message
Hproper: proper_descriptor (IM (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |}))) (eqv_descriptors (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |}))) (VLSM.destination {| l := l; input := input; destination := destination; output := output |} (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |})))
oitemi: option transition_item
eqv_descriptorsi': MachineDescriptor (IM (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |})))
Hitemx: match oitemi with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |}))) (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := l; input := input; destination := destination; output := output |})), VLSM.l itemx = existing_equivocator_label_extract (IM (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |}))) (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := l; input := input; destination := destination; output := output |})) Hex) ∧ VLSM.input (composite_transition_item_projection (equivocator_IM IM) {| l := l; input := input; destination := destination; output := output |}) = VLSM.input itemx ∧ VLSM.output (composite_transition_item_projection (equivocator_IM IM) {| l := l; input := input; destination := destination; output := output |}) = VLSM.output itemx ∧ equivocator_state_descriptor_project (VLSM.destination (composite_transition_item_projection (equivocator_IM IM) {| l := l; input := input; destination := destination; output := output |})) (eqv_descriptors (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |}))) = VLSM.destination itemx ∧ eqv_descriptorsi' = equivocator_label_descriptor (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := l; input := input; destination := destination; output := output |})) | None => True end
Hchar: s : state (equivocator_vlsm (IM (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |})))), valid (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := l; input := input; destination := destination; output := output |})) (s, VLSM.input (composite_transition_item_projection (equivocator_IM IM) {| l := l; input := input; destination := destination; output := output |})) → transition (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := l; input := input; destination := destination; output := output |})) (s, VLSM.input (composite_transition_item_projection (equivocator_IM IM) {| l := l; input := input; destination := destination; output := output |})) = (VLSM.destination (composite_transition_item_projection (equivocator_IM IM) {| l := l; input := input; destination := destination; output := output |}), VLSM.output (composite_transition_item_projection (equivocator_IM IM) {| l := l; input := input; destination := destination; output := output |})) → proper_descriptor (IM (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |}))) eqv_descriptorsi' s ∧ previous_state_descriptor_prop (IM (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |}))) (eqv_descriptors (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |}))) s eqv_descriptorsi' ∧ match oitemi with | Some itemx => sx : state (IM (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |}))), sx = equivocator_state_descriptor_project s eqv_descriptorsi' → valid (VLSM.l itemx) (sx, VLSM.input itemx) ∧ transition (VLSM.l itemx) ( sx, VLSM.input itemx) = (VLSM.destination itemx, VLSM.output itemx) | None => equivocator_state_descriptor_project (VLSM.destination (composite_transition_item_projection (equivocator_IM IM) {| l := l; input := input; destination := destination; output := output |})) (eqv_descriptors (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |}))) = equivocator_state_descriptor_project s eqv_descriptorsi' end

(oitem : option (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match oitemi with | Some item' => Some (Some {| l := existT (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |})) (VLSM.l item'); input := VLSM.input {| l := l; input := input; destination := destination; output := output |}; destination := equivocators_state_project IM eqv_descriptors (VLSM.destination {| l := l; input := input; destination := destination; output := output |}); output := VLSM.output {| l := l; input := input; destination := destination; output := output |} |}, equivocator_descriptors_update IM eqv_descriptors (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |})) eqv_descriptorsi') | None => Some (None, equivocator_descriptors_update IM eqv_descriptors (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |})) eqv_descriptorsi') end = Some (oitem, eqv_descriptors') ∧ match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |}))) (projT2 (VLSM.l {| l := l; input := input; destination := destination; output := output |})), existT (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |})) (existing_equivocator_label_extract (IM (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |}))) (projT2 (VLSM.l {| l := l; input := input; destination := destination; output := output |})) Hex) = VLSM.l itemx) ∧ VLSM.input {| l := l; input := input; destination := destination; output := output |} = VLSM.input itemx ∧ VLSM.output {| l := l; input := input; destination := destination; output := output |} = VLSM.output itemx ∧ equivocators_state_project IM eqv_descriptors (VLSM.destination {| l := l; input := input; destination := destination; output := output |}) = VLSM.destination itemx ∧ eqv_descriptors' (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := input; destination := destination; output := output |})) | None => True end ∧ ( s : composite_state (equivocator_IM IM), composite_valid (equivocator_IM IM) (VLSM.l {| l := l; input := input; destination := destination; output := output |}) (s, VLSM.input {| l := l; input := input; destination := destination; output := output |}) → composite_transition (equivocator_IM IM) (VLSM.l {| l := l; input := input; destination := destination; output := output |}) (s, VLSM.input {| l := l; input := input; destination := destination; output := output |}) = (VLSM.destination {| l := l; input := input; destination := destination; output := output |}, VLSM.output {| l := l; input := input; destination := destination; output := output |}) → proper_descriptor (IM (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |}))) (eqv_descriptors' (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |}))) (s (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |}))) ∧ eqv_descriptors' = equivocator_descriptors_update IM eqv_descriptors (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |})) (eqv_descriptors' (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |}))) ∧ s = state_update (equivocator_IM IM) (VLSM.destination {| l := l; input := input; destination := destination; output := output |}) (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |})) (s (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |}))) ∧ previous_state_descriptor_prop (IM (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |}))) (eqv_descriptors (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |}))) (s (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |}))) (eqv_descriptors' (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |}))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM eqv_descriptors' s → composite_valid IM (VLSM.l itemx) (sx, VLSM.input itemx) ∧ composite_transition IM (VLSM.l itemx) (sx, VLSM.input itemx) = (VLSM.destination itemx, VLSM.output itemx) | None => equivocators_state_project IM eqv_descriptors (VLSM.destination {| l := l; input := input; destination := destination; output := output |}) = equivocators_state_project IM eqv_descriptors' s end)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
l: composite_label (equivocator_IM IM)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hproper: proper_descriptor (IM (projT1 l)) (eqv_descriptors (projT1 l)) (destination (projT1 l))
oitemi: option transition_item
eqv_descriptorsi': MachineDescriptor (IM (projT1 l))
Hitemx: match oitemi with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 l)) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) (projT2 l) eq_refl), VLSM.l itemx = existing_equivocator_label_extract (IM (projT1 l)) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) (projT2 l) eq_refl) Hex) ∧ input = VLSM.input itemx ∧ output = VLSM.output itemx ∧ equivocator_state_descriptor_project (destination (projT1 l)) (eqv_descriptors (projT1 l)) = VLSM.destination itemx ∧ eqv_descriptorsi' = equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) (projT2 l) eq_refl) | None => True end
Hchar: s : Equivocators.bounded_state_copies (IM (projT1 l)), equivocator_valid (IM (projT1 l)) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) (projT2 l) eq_refl) ( s, input) → equivocator_transition (IM (projT1 l)) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) (projT2 l) eq_refl) ( s, input) = (destination (projT1 l), output) → proper_descriptor (IM (projT1 l)) eqv_descriptorsi' s ∧ previous_state_descriptor_prop (IM (projT1 l)) (eqv_descriptors (projT1 l)) s eqv_descriptorsi' ∧ match oitemi with | Some itemx => sx : state (IM (projT1 l)), sx = equivocator_state_descriptor_project s eqv_descriptorsi' → valid (VLSM.l itemx) (sx, VLSM.input itemx) ∧ transition (VLSM.l itemx) ( sx, VLSM.input itemx) = (VLSM.destination itemx, VLSM.output itemx) | None => equivocator_state_descriptor_project (destination (projT1 l)) (eqv_descriptors (projT1 l)) = equivocator_state_descriptor_project s eqv_descriptorsi' end

(oitem : option (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match oitemi with | Some item' => Some (Some {| l := existT (projT1 l) (VLSM.l item'); input := input; destination := equivocators_state_project IM eqv_descriptors destination; output := output |}, equivocator_descriptors_update IM eqv_descriptors (projT1 l) eqv_descriptorsi') | None => Some (None, equivocator_descriptors_update IM eqv_descriptors (projT1 l) eqv_descriptorsi') end = Some (oitem, eqv_descriptors') ∧ match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM (projT1 l)) (projT2 l) Hex) = VLSM.l itemx) ∧ input = VLSM.input itemx ∧ output = VLSM.output itemx ∧ equivocators_state_project IM eqv_descriptors destination = VLSM.destination itemx ∧ eqv_descriptors' (projT1 l) = equivocator_label_descriptor (projT2 l) | None => True end ∧ ( s : composite_state (equivocator_IM IM), (let (i, li) := l in equivocator_valid (IM i) li (s i, input)) → (let (i, li) := l in let (si', om') := equivocator_transition (IM i) li (s i, input) in (state_update (equivocator_IM IM) s i si', om')) = (destination, output) → proper_descriptor (IM (projT1 l)) (eqv_descriptors' (projT1 l)) (s (projT1 l)) ∧ eqv_descriptors' = equivocator_descriptors_update IM eqv_descriptors (projT1 l) (eqv_descriptors' (projT1 l)) ∧ s = state_update (equivocator_IM IM) destination (projT1 l) (s (projT1 l)) ∧ previous_state_descriptor_prop (IM (projT1 l)) (eqv_descriptors (projT1 l)) (s (projT1 l)) (eqv_descriptors' (projT1 l)) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM eqv_descriptors' s → (let (i, li) := VLSM.l itemx in valid li (sx i, VLSM.input itemx)) ∧ (let (i, li) := VLSM.l itemx in let (si', om') := transition li (sx i, VLSM.input itemx) in (state_update IM sx i si', om')) = (VLSM.destination itemx, VLSM.output itemx) | None => equivocators_state_project IM eqv_descriptors destination = equivocators_state_project IM eqv_descriptors' s end)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: label (equivocator_IM IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hproper: proper_descriptor (IM (projT1 (existT i li))) (eqv_descriptors (projT1 (existT i li))) (destination (projT1 (existT i li)))
oitemi: option transition_item
eqv_descriptorsi': MachineDescriptor (IM (projT1 (existT i li)))
Hitemx: match oitemi with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (existT i li))) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) (projT2 (existT i li)) eq_refl), l itemx = existing_equivocator_label_extract (IM (projT1 (existT i li))) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) (projT2 (existT i li)) eq_refl) Hex) ∧ input = VLSM.input itemx ∧ output = VLSM.output itemx ∧ equivocator_state_descriptor_project (destination (projT1 (existT i li))) (eqv_descriptors (projT1 (existT i li))) = VLSM.destination itemx ∧ eqv_descriptorsi' = equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) (projT2 (existT i li)) eq_refl) | None => True end
Hchar: s : Equivocators.bounded_state_copies (IM (projT1 (existT i li))), equivocator_valid (IM (projT1 (existT i li))) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) (projT2 (existT i li)) eq_refl) (s, input) → equivocator_transition (IM (projT1 (existT i li))) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) (projT2 (existT i li)) eq_refl) (s, input) = (destination (projT1 (existT i li)), output) → proper_descriptor (IM (projT1 (existT i li))) eqv_descriptorsi' s ∧ previous_state_descriptor_prop (IM (projT1 (existT i li))) (eqv_descriptors (projT1 (existT i li))) s eqv_descriptorsi' ∧ match oitemi with | Some itemx => sx : state (IM (projT1 (existT i li))), sx = equivocator_state_descriptor_project s eqv_descriptorsi' → valid (l itemx) (sx, VLSM.input itemx) ∧ transition (l itemx) ( sx, VLSM.input itemx) = (VLSM.destination itemx, VLSM.output itemx) | None => equivocator_state_descriptor_project (destination (projT1 (existT i li))) (eqv_descriptors (projT1 (existT i li))) = equivocator_state_descriptor_project s eqv_descriptorsi' end

(oitem : option (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match oitemi with | Some item' => Some (Some {| l := existT (projT1 (existT i li)) (l item'); input := input; destination := equivocators_state_project IM eqv_descriptors destination; output := output |}, equivocator_descriptors_update IM eqv_descriptors (projT1 (existT i li)) eqv_descriptorsi') | None => Some (None, equivocator_descriptors_update IM eqv_descriptors (projT1 (existT i li)) eqv_descriptorsi') end = Some (oitem, eqv_descriptors') ∧ match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (existT i li))) (projT2 (existT i li)), existT (projT1 (existT i li)) (existing_equivocator_label_extract (IM (projT1 (existT i li))) (projT2 (existT i li)) Hex) = l itemx) ∧ input = VLSM.input itemx ∧ output = VLSM.output itemx ∧ equivocators_state_project IM eqv_descriptors destination = VLSM.destination itemx ∧ eqv_descriptors' (projT1 (existT i li)) = equivocator_label_descriptor (projT2 (existT i li)) | None => True end ∧ ( s : composite_state (equivocator_IM IM), equivocator_valid (IM i) li (s i, input) → (let (si', om') := equivocator_transition (IM i) li (s i, input) in (state_update (equivocator_IM IM) s i si', om')) = (destination, output) → proper_descriptor (IM (projT1 (existT i li))) (eqv_descriptors' (projT1 (existT i li))) (s (projT1 (existT i li))) ∧ eqv_descriptors' = equivocator_descriptors_update IM eqv_descriptors (projT1 (existT i li)) (eqv_descriptors' (projT1 (existT i li))) ∧ s = state_update (equivocator_IM IM) destination (projT1 (existT i li)) (s (projT1 (existT i li))) ∧ previous_state_descriptor_prop (IM (projT1 (existT i li))) (eqv_descriptors (projT1 (existT i li))) (s (projT1 (existT i li))) (eqv_descriptors' (projT1 (existT i li))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM eqv_descriptors' s → (let (i, li) := l itemx in valid li (sx i, VLSM.input itemx)) ∧ (let (i, li) := l itemx in let (si', om') := transition li (sx i, VLSM.input itemx) in (state_update IM sx i si', om')) = (VLSM.destination itemx, VLSM.output itemx) | None => equivocators_state_project IM eqv_descriptors destination = equivocators_state_project IM eqv_descriptors' s end)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (destination i)
oitemi: option transition_item
eqv_descriptorsi': MachineDescriptor (IM i)
Hitemx: match oitemi with | Some itemx => ( Hex : existing_equivocator_label (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl), l itemx = existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex) ∧ input = VLSM.input itemx ∧ output = VLSM.output itemx ∧ equivocator_state_descriptor_project (destination i) (eqv_descriptors i) = VLSM.destination itemx ∧ eqv_descriptorsi' = equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) | None => True end
Hchar: s : Equivocators.bounded_state_copies (IM i), equivocator_valid (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) (s, input) → equivocator_transition (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) (s, input) = (destination i, output) → proper_descriptor (IM i) eqv_descriptorsi' s ∧ previous_state_descriptor_prop (IM i) (eqv_descriptors i) s eqv_descriptorsi' ∧ match oitemi with | Some itemx => sx : state (IM i), sx = equivocator_state_descriptor_project s eqv_descriptorsi' → valid (l itemx) (sx, VLSM.input itemx) ∧ transition (l itemx) ( sx, VLSM.input itemx) = (VLSM.destination itemx, VLSM.output itemx) | None => equivocator_state_descriptor_project (destination i) (eqv_descriptors i) = equivocator_state_descriptor_project s eqv_descriptorsi' end

(oitem : option (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match oitemi with | Some item' => Some (Some {| l := existT i (l item'); input := input; destination := equivocators_state_project IM eqv_descriptors destination; output := output |}, equivocator_descriptors_update IM eqv_descriptors i eqv_descriptorsi') | None => Some (None, equivocator_descriptors_update IM eqv_descriptors i eqv_descriptorsi') end = Some (oitem, eqv_descriptors') ∧ match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM i) li, existT i (existing_equivocator_label_extract (IM i) li Hex) = l itemx) ∧ input = VLSM.input itemx ∧ output = VLSM.output itemx ∧ equivocators_state_project IM eqv_descriptors destination = VLSM.destination itemx ∧ eqv_descriptors' i = equivocator_label_descriptor li | None => True end ∧ ( s : composite_state (equivocator_IM IM), equivocator_valid (IM i) li (s i, input) → (let (si', om') := equivocator_transition (IM i) li (s i, input) in (state_update (equivocator_IM IM) s i si', om')) = (destination, output) → proper_descriptor (IM i) (eqv_descriptors' i) (s i) ∧ eqv_descriptors' = equivocator_descriptors_update IM eqv_descriptors i (eqv_descriptors' i) ∧ s = state_update (equivocator_IM IM) destination i (s i) ∧ previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) (eqv_descriptors' i) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM eqv_descriptors' s → (let (i, li) := l itemx in valid li (sx i, VLSM.input itemx)) ∧ (let (i, li) := l itemx in let (si', om') := transition li (sx i, VLSM.input itemx) in (state_update IM sx i si', om')) = (VLSM.destination itemx, VLSM.output itemx) | None => equivocators_state_project IM eqv_descriptors destination = equivocators_state_project IM eqv_descriptors' s end)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (state_update (equivocator_IM IM) s i e i)
itemi': transition_item
Hex: existing_equivocator_label (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)
Hli: l itemi' = existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex
Hproper': proper_descriptor (IM i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) (s i)
Hex_new: previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl))
Hchar: sx : state (IM i), sx = equivocator_state_descriptor_project (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) → valid (l itemi') (sx, input itemi') ∧ transition (l itemi') (sx, input itemi') = (destination itemi', output itemi')
Hdestinationi: equivocator_state_descriptor_project (state_update (equivocator_IM IM) s i e i) (eqv_descriptors i) = destination itemi'
Hv: equivocator_valid (IM i) li (s i, input itemi')
Ht': equivocator_transition (IM i) li (s i, input itemi') = (e, output itemi')

proper_descriptor (IM i) (equivocator_descriptors_update IM eqv_descriptors i (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) i) (s i) ∧ equivocator_descriptors_update IM eqv_descriptors i (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) = equivocator_descriptors_update IM eqv_descriptors i (equivocator_descriptors_update IM eqv_descriptors i (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) i) ∧ s = state_update (equivocator_IM IM) (state_update (equivocator_IM IM) s i e) i (s i) ∧ previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) (equivocator_descriptors_update IM eqv_descriptors i (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) i) ∧ ( sx : composite_state IM, sx = equivocators_state_project IM (equivocator_descriptors_update IM eqv_descriptors i (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl))) s → valid (existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex) (sx i, input itemi') ∧ (let (si', om') := transition (existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex) (sx i, input itemi') in (state_update IM sx i si', om')) = (equivocators_state_project IM eqv_descriptors (state_update (equivocator_IM IM) s i e), output itemi'))
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
input, output: option message
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (state_update (equivocator_IM IM) s i e i)
eqv_descriptorsi': MachineDescriptor (IM i)
Hitemx: True
Hproper': proper_descriptor (IM i) eqv_descriptorsi' (s i)
Hex_new: previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) eqv_descriptorsi'
Hchar: equivocator_state_descriptor_project e (eqv_descriptors i) = equivocator_state_descriptor_project (s i) eqv_descriptorsi'
Hv: equivocator_valid (IM i) li (s i, input)
Ht': equivocator_transition (IM i) li (s i, input) = (e, output)
proper_descriptor (IM i) (equivocator_descriptors_update IM eqv_descriptors i eqv_descriptorsi' i) (s i) ∧ equivocator_descriptors_update IM eqv_descriptors i eqv_descriptorsi' = equivocator_descriptors_update IM eqv_descriptors i (equivocator_descriptors_update IM eqv_descriptors i eqv_descriptorsi' i) ∧ s = state_update (equivocator_IM IM) (state_update (equivocator_IM IM) s i e) i (s i) ∧ previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) (equivocator_descriptors_update IM eqv_descriptors i eqv_descriptorsi' i) ∧ equivocators_state_project IM eqv_descriptors (state_update (equivocator_IM IM) s i e) = equivocators_state_project IM (equivocator_descriptors_update IM eqv_descriptors i eqv_descriptorsi') s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (state_update (equivocator_IM IM) s i e i)
itemi': transition_item
Hex: existing_equivocator_label (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)
Hli: l itemi' = existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex
Hproper': proper_descriptor (IM i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) (s i)
Hex_new: previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl))
Hchar: sx : state (IM i), sx = equivocator_state_descriptor_project (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) → valid (l itemi') (sx, input itemi') ∧ transition (l itemi') (sx, input itemi') = (destination itemi', output itemi')
Hdestinationi: equivocator_state_descriptor_project (state_update (equivocator_IM IM) s i e i) (eqv_descriptors i) = destination itemi'
Hv: equivocator_valid (IM i) li (s i, input itemi')
Ht': equivocator_transition (IM i) li (s i, input itemi') = (e, output itemi')

proper_descriptor (IM i) (equivocator_descriptors_update IM eqv_descriptors i (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) i) (s i) ∧ equivocator_descriptors_update IM eqv_descriptors i (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) = equivocator_descriptors_update IM eqv_descriptors i (equivocator_descriptors_update IM eqv_descriptors i (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) i) ∧ s = state_update (equivocator_IM IM) (state_update (equivocator_IM IM) s i e) i (s i) ∧ previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) (equivocator_descriptors_update IM eqv_descriptors i (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) i) ∧ ( sx : composite_state IM, sx = equivocators_state_project IM (equivocator_descriptors_update IM eqv_descriptors i (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl))) s → valid (existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex) (sx i, input itemi') ∧ (let (si', om') := transition (existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex) (sx i, input itemi') in (state_update IM sx i si', om')) = (equivocators_state_project IM eqv_descriptors (state_update (equivocator_IM IM) s i e), output itemi'))
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (state_update (equivocator_IM IM) s i e i)
itemi': transition_item
Hex: existing_equivocator_label (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)
Hli: l itemi' = existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex
Hproper': proper_descriptor (IM i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) (s i)
Hex_new: previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl))
Hchar: sx : state (IM i), sx = equivocator_state_descriptor_project (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) → valid (l itemi') (sx, input itemi') ∧ transition (l itemi') (sx, input itemi') = (destination itemi', output itemi')
Hdestinationi: equivocator_state_descriptor_project (state_update (equivocator_IM IM) s i e i) (eqv_descriptors i) = destination itemi'
Hv: equivocator_valid (IM i) li (s i, input itemi')
Ht': equivocator_transition (IM i) li (s i, input itemi') = (e, output itemi')

proper_descriptor (IM i) (equivocator_descriptors_update IM eqv_descriptors i (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) i) (s i)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (state_update (equivocator_IM IM) s i e i)
itemi': transition_item
Hex: existing_equivocator_label (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)
Hli: l itemi' = existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex
Hproper': proper_descriptor (IM i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) (s i)
Hex_new: previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl))
Hchar: sx : state (IM i), sx = equivocator_state_descriptor_project (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) → valid (l itemi') (sx, input itemi') ∧ transition (l itemi') (sx, input itemi') = (destination itemi', output itemi')
Hdestinationi: equivocator_state_descriptor_project (state_update (equivocator_IM IM) s i e i) (eqv_descriptors i) = destination itemi'
Hv: equivocator_valid (IM i) li (s i, input itemi')
Ht': equivocator_transition (IM i) li (s i, input itemi') = (e, output itemi')
equivocator_descriptors_update IM eqv_descriptors i (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) = equivocator_descriptors_update IM eqv_descriptors i (equivocator_descriptors_update IM eqv_descriptors i (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) i)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (state_update (equivocator_IM IM) s i e i)
itemi': transition_item
Hex: existing_equivocator_label (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)
Hli: l itemi' = existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex
Hproper': proper_descriptor (IM i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) (s i)
Hex_new: previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl))
Hchar: sx : state (IM i), sx = equivocator_state_descriptor_project (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) → valid (l itemi') (sx, input itemi') ∧ transition (l itemi') (sx, input itemi') = (destination itemi', output itemi')
Hdestinationi: equivocator_state_descriptor_project (state_update (equivocator_IM IM) s i e i) (eqv_descriptors i) = destination itemi'
Hv: equivocator_valid (IM i) li (s i, input itemi')
Ht': equivocator_transition (IM i) li (s i, input itemi') = (e, output itemi')
s = state_update (equivocator_IM IM) (state_update (equivocator_IM IM) s i e) i (s i)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (state_update (equivocator_IM IM) s i e i)
itemi': transition_item
Hex: existing_equivocator_label (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)
Hli: l itemi' = existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex
Hproper': proper_descriptor (IM i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) (s i)
Hex_new: previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl))
Hchar: sx : state (IM i), sx = equivocator_state_descriptor_project (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) → valid (l itemi') (sx, input itemi') ∧ transition (l itemi') (sx, input itemi') = (destination itemi', output itemi')
Hdestinationi: equivocator_state_descriptor_project (state_update (equivocator_IM IM) s i e i) (eqv_descriptors i) = destination itemi'
Hv: equivocator_valid (IM i) li (s i, input itemi')
Ht': equivocator_transition (IM i) li (s i, input itemi') = (e, output itemi')
previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) (equivocator_descriptors_update IM eqv_descriptors i (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) i)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (state_update (equivocator_IM IM) s i e i)
itemi': transition_item
Hex: existing_equivocator_label (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)
Hli: l itemi' = existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex
Hproper': proper_descriptor (IM i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) (s i)
Hex_new: previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl))
Hchar: sx : state (IM i), sx = equivocator_state_descriptor_project (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) → valid (l itemi') (sx, input itemi') ∧ transition (l itemi') (sx, input itemi') = (destination itemi', output itemi')
Hdestinationi: equivocator_state_descriptor_project (state_update (equivocator_IM IM) s i e i) (eqv_descriptors i) = destination itemi'
Hv: equivocator_valid (IM i) li (s i, input itemi')
Ht': equivocator_transition (IM i) li (s i, input itemi') = (e, output itemi')
sx: composite_state IM
Hsx: sx = equivocators_state_project IM (equivocator_descriptors_update IM eqv_descriptors i (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl))) s
valid (existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex) ( sx i, input itemi')
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (state_update (equivocator_IM IM) s i e i)
itemi': transition_item
Hex: existing_equivocator_label (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)
Hli: l itemi' = existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex
Hproper': proper_descriptor (IM i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) (s i)
Hex_new: previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl))
Hchar: sx : state (IM i), sx = equivocator_state_descriptor_project (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) → valid (l itemi') (sx, input itemi') ∧ transition (l itemi') (sx, input itemi') = (destination itemi', output itemi')
Hdestinationi: equivocator_state_descriptor_project (state_update (equivocator_IM IM) s i e i) (eqv_descriptors i) = destination itemi'
Hv: equivocator_valid (IM i) li (s i, input itemi')
Ht': equivocator_transition (IM i) li (s i, input itemi') = (e, output itemi')
sx: composite_state IM
Hsx: sx = equivocators_state_project IM (equivocator_descriptors_update IM eqv_descriptors i (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl))) s
(let (si', om') := transition (existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex) ( sx i, input itemi') in (state_update IM sx i si', om')) = (equivocators_state_project IM eqv_descriptors (state_update (equivocator_IM IM) s i e), output itemi')
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (state_update (equivocator_IM IM) s i e i)
itemi': transition_item
Hex: existing_equivocator_label (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)
Hli: l itemi' = existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex
Hproper': proper_descriptor (IM i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) (s i)
Hex_new: previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl))
Hchar: sx : state (IM i), sx = equivocator_state_descriptor_project (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) → valid (l itemi') (sx, input itemi') ∧ transition (l itemi') (sx, input itemi') = (destination itemi', output itemi')
Hdestinationi: equivocator_state_descriptor_project (state_update (equivocator_IM IM) s i e i) (eqv_descriptors i) = destination itemi'
Hv: equivocator_valid (IM i) li (s i, input itemi')
Ht': equivocator_transition (IM i) li (s i, input itemi') = (e, output itemi')

proper_descriptor (IM i) (equivocator_descriptors_update IM eqv_descriptors i (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) i) (s i)
by state_update_simpl.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (state_update (equivocator_IM IM) s i e i)
itemi': transition_item
Hex: existing_equivocator_label (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)
Hli: l itemi' = existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex
Hproper': proper_descriptor (IM i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) (s i)
Hex_new: previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl))
Hchar: sx : state (IM i), sx = equivocator_state_descriptor_project (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) → valid (l itemi') (sx, input itemi') ∧ transition (l itemi') (sx, input itemi') = (destination itemi', output itemi')
Hdestinationi: equivocator_state_descriptor_project (state_update (equivocator_IM IM) s i e i) (eqv_descriptors i) = destination itemi'
Hv: equivocator_valid (IM i) li (s i, input itemi')
Ht': equivocator_transition (IM i) li (s i, input itemi') = (e, output itemi')

equivocator_descriptors_update IM eqv_descriptors i (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) = equivocator_descriptors_update IM eqv_descriptors i (equivocator_descriptors_update IM eqv_descriptors i (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) i)
by state_update_simpl.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (state_update (equivocator_IM IM) s i e i)
itemi': transition_item
Hex: existing_equivocator_label (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)
Hli: l itemi' = existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex
Hproper': proper_descriptor (IM i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) (s i)
Hex_new: previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl))
Hchar: sx : state (IM i), sx = equivocator_state_descriptor_project (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) → valid (l itemi') (sx, input itemi') ∧ transition (l itemi') (sx, input itemi') = (destination itemi', output itemi')
Hdestinationi: equivocator_state_descriptor_project (state_update (equivocator_IM IM) s i e i) (eqv_descriptors i) = destination itemi'
Hv: equivocator_valid (IM i) li (s i, input itemi')
Ht': equivocator_transition (IM i) li (s i, input itemi') = (e, output itemi')

s = state_update (equivocator_IM IM) (state_update (equivocator_IM IM) s i e) i (s i)
by extensionality j; destruct (decide (i = j)); subst; state_update_simpl.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (state_update (equivocator_IM IM) s i e i)
itemi': transition_item
Hex: existing_equivocator_label (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)
Hli: l itemi' = existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex
Hproper': proper_descriptor (IM i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) (s i)
Hex_new: previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl))
Hchar: sx : state (IM i), sx = equivocator_state_descriptor_project (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) → valid (l itemi') (sx, input itemi') ∧ transition (l itemi') (sx, input itemi') = (destination itemi', output itemi')
Hdestinationi: equivocator_state_descriptor_project (state_update (equivocator_IM IM) s i e i) (eqv_descriptors i) = destination itemi'
Hv: equivocator_valid (IM i) li (s i, input itemi')
Ht': equivocator_transition (IM i) li (s i, input itemi') = (e, output itemi')

previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) (equivocator_descriptors_update IM eqv_descriptors i (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) i)
by state_update_simpl.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (state_update (equivocator_IM IM) s i e i)
itemi': transition_item
Hex: existing_equivocator_label (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)
Hli: l itemi' = existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex
Hproper': proper_descriptor (IM i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) (s i)
Hex_new: previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl))
Hchar: sx : state (IM i), sx = equivocator_state_descriptor_project (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) → valid (l itemi') (sx, input itemi') ∧ transition (l itemi') (sx, input itemi') = (destination itemi', output itemi')
Hdestinationi: equivocator_state_descriptor_project (state_update (equivocator_IM IM) s i e i) (eqv_descriptors i) = destination itemi'
Hv: equivocator_valid (IM i) li (s i, input itemi')
Ht': equivocator_transition (IM i) li (s i, input itemi') = (e, output itemi')
sx: composite_state IM
Hsx: sx = equivocators_state_project IM (equivocator_descriptors_update IM eqv_descriptors i (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl))) s

valid (existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex) (sx i, input itemi')
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (state_update (equivocator_IM IM) s i e i)
itemi': transition_item
Hex: existing_equivocator_label (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)
Hli: l itemi' = existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex
Hproper': proper_descriptor (IM i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) (s i)
Hex_new: previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl))
Hchar: sx : state (IM i), sx = equivocator_state_descriptor_project (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) → valid (l itemi') (sx, input itemi') ∧ transition (l itemi') (sx, input itemi') = (destination itemi', output itemi')
Hdestinationi: equivocator_state_descriptor_project (state_update (equivocator_IM IM) s i e i) (eqv_descriptors i) = destination itemi'
Hv: equivocator_valid (IM i) li (s i, input itemi')
Ht': equivocator_transition (IM i) li (s i, input itemi') = (e, output itemi')

valid (existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex) (equivocators_state_project IM (equivocator_descriptors_update IM eqv_descriptors i (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl))) s i, input itemi')
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (state_update (equivocator_IM IM) s i e i)
itemi': transition_item
Hex: existing_equivocator_label (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)
Hli: l itemi' = existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex
Hproper': proper_descriptor (IM i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) (s i)
Hex_new: previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl))
Hdestinationi: equivocator_state_descriptor_project (state_update (equivocator_IM IM) s i e i) (eqv_descriptors i) = destination itemi'
Hv: equivocator_valid (IM i) li (s i, input itemi')
Ht': equivocator_transition (IM i) li (s i, input itemi') = (e, output itemi')
Hvx: valid (l itemi') (equivocator_state_descriptor_project (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)), input itemi')
Htx: transition (l itemi') (equivocator_state_descriptor_project (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)), input itemi') = (destination itemi', output itemi')

valid (existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex) (equivocators_state_project IM (equivocator_descriptors_update IM eqv_descriptors i (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl))) s i, input itemi')
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (state_update (equivocator_IM IM) s i e i)
itemi': transition_item
Hex: existing_equivocator_label (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)
Hli: l itemi' = existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex
Hproper': proper_descriptor (IM i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) (s i)
Hex_new: previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl))
Hdestinationi: equivocator_state_descriptor_project (state_update (equivocator_IM IM) s i e i) (eqv_descriptors i) = destination itemi'
Hv: equivocator_valid (IM i) li (s i, input itemi')
Ht': equivocator_transition (IM i) li (s i, input itemi') = (e, output itemi')
Hvx: valid (l itemi') (equivocator_state_descriptor_project (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)), input itemi')
Htx: transition (l itemi') (equivocator_state_descriptor_project (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)), input itemi') = (destination itemi', output itemi')

valid (existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex) (equivocator_state_descriptor_project (s i) (equivocator_descriptors_update IM eqv_descriptors i (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) i), input itemi')
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (state_update (equivocator_IM IM) s i e i)
itemi': transition_item
Hex: existing_equivocator_label (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)
Hli: l itemi' = existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex
Hproper': proper_descriptor (IM i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) (s i)
Hex_new: previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl))
Hdestinationi: equivocator_state_descriptor_project (state_update (equivocator_IM IM) s i e i) (eqv_descriptors i) = destination itemi'
Hv: equivocator_valid (IM i) li (s i, input itemi')
Ht': equivocator_transition (IM i) li (s i, input itemi') = (e, output itemi')
Hvx: valid (existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex) (equivocator_state_descriptor_project (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)), input itemi')
Htx: transition (l itemi') (equivocator_state_descriptor_project (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)), input itemi') = (destination itemi', output itemi')

valid (existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex) (equivocator_state_descriptor_project (s i) (equivocator_descriptors_update IM eqv_descriptors i (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) i), input itemi')
by state_update_simpl.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (state_update (equivocator_IM IM) s i e i)
itemi': transition_item
Hex: existing_equivocator_label (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)
Hli: l itemi' = existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex
Hproper': proper_descriptor (IM i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) (s i)
Hex_new: previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl))
Hchar: sx : state (IM i), sx = equivocator_state_descriptor_project (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) → valid (l itemi') (sx, input itemi') ∧ transition (l itemi') (sx, input itemi') = (destination itemi', output itemi')
Hdestinationi: equivocator_state_descriptor_project (state_update (equivocator_IM IM) s i e i) (eqv_descriptors i) = destination itemi'
Hv: equivocator_valid (IM i) li (s i, input itemi')
Ht': equivocator_transition (IM i) li (s i, input itemi') = (e, output itemi')
sx: composite_state IM
Hsx: sx = equivocators_state_project IM (equivocator_descriptors_update IM eqv_descriptors i (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl))) s

(let (si', om') := transition (existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex) (sx i, input itemi') in (state_update IM sx i si', om')) = (equivocators_state_project IM eqv_descriptors (state_update (equivocator_IM IM) s i e), output itemi')
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (state_update (equivocator_IM IM) s i e i)
itemi': transition_item
Hex: existing_equivocator_label (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)
Hli: l itemi' = existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex
Hproper': proper_descriptor (IM i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) (s i)
Hex_new: previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl))
Hchar: sx : state (IM i), sx = equivocator_state_descriptor_project (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) → valid (l itemi') (sx, input itemi') ∧ transition (l itemi') (sx, input itemi') = (destination itemi', output itemi')
Hdestinationi: equivocator_state_descriptor_project (state_update (equivocator_IM IM) s i e i) (eqv_descriptors i) = destination itemi'
Hv: equivocator_valid (IM i) li (s i, input itemi')
Ht': equivocator_transition (IM i) li (s i, input itemi') = (e, output itemi')

(let (si', om') := transition (existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex) (equivocators_state_project IM (equivocator_descriptors_update IM eqv_descriptors i (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl))) s i, input itemi') in (state_update IM (equivocators_state_project IM (equivocator_descriptors_update IM eqv_descriptors i (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl))) s) i si', om')) = (equivocators_state_project IM eqv_descriptors (state_update (equivocator_IM IM) s i e), output itemi')
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (state_update (equivocator_IM IM) s i e i)
itemi': transition_item
Hex: existing_equivocator_label (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)
Hli: l itemi' = existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex
Hproper': proper_descriptor (IM i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) (s i)
Hex_new: previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl))
Hdestinationi: equivocator_state_descriptor_project (state_update (equivocator_IM IM) s i e i) (eqv_descriptors i) = destination itemi'
Hv: equivocator_valid (IM i) li (s i, input itemi')
Ht': equivocator_transition (IM i) li (s i, input itemi') = (e, output itemi')
Hvx: valid (l itemi') (equivocator_state_descriptor_project (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)), input itemi')
Htx: transition (l itemi') (equivocator_state_descriptor_project (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)), input itemi') = (destination itemi', output itemi')

(let (si', om') := transition (existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex) (equivocators_state_project IM (equivocator_descriptors_update IM eqv_descriptors i (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl))) s i, input itemi') in (state_update IM (equivocators_state_project IM (equivocator_descriptors_update IM eqv_descriptors i (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl))) s) i si', om')) = (equivocators_state_project IM eqv_descriptors (state_update (equivocator_IM IM) s i e), output itemi')
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (state_update (equivocator_IM IM) s i e i)
itemi': transition_item
Hex: existing_equivocator_label (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)
Hli: l itemi' = existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex
Hproper': proper_descriptor (IM i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) (s i)
Hex_new: previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl))
Hdestinationi: equivocator_state_descriptor_project (state_update (equivocator_IM IM) s i e i) (eqv_descriptors i) = destination itemi'
Hv: equivocator_valid (IM i) li (s i, input itemi')
Ht': equivocator_transition (IM i) li (s i, input itemi') = (e, output itemi')
Hvx: valid (l itemi') (equivocator_state_descriptor_project (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)), input itemi')
Htx: transition (l itemi') (equivocator_state_descriptor_project (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)), input itemi') = (destination itemi', output itemi')

(let (si', om') := transition (existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex) (equivocator_state_descriptor_project (s i) (equivocator_descriptors_update IM eqv_descriptors i (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) i), input itemi') in (state_update IM (λ eqv : index, equivocator_state_descriptor_project (s eqv) (equivocator_descriptors_update IM eqv_descriptors i (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) eqv)) i si', om')) = (λ eqv : index, equivocator_state_descriptor_project (state_update (equivocator_IM IM) s i e eqv) (eqv_descriptors eqv), output itemi')
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Hproper: proper_descriptor (IM i) (eqv_descriptors i) e
itemi': transition_item
Hex: existing_equivocator_label (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)
Hli: l itemi' = existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex
Hproper': proper_descriptor (IM i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) (s i)
Hex_new: previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl))
Hdestinationi: equivocator_state_descriptor_project e (eqv_descriptors i) = destination itemi'
Hv: equivocator_valid (IM i) li (s i, input itemi')
Ht': equivocator_transition (IM i) li (s i, input itemi') = (e, output itemi')
Hvx: valid (l itemi') (equivocator_state_descriptor_project (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)), input itemi')
Htx: transition (l itemi') (equivocator_state_descriptor_project (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)), input itemi') = (destination itemi', output itemi')

(let (si', om') := transition (existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex) (equivocator_state_descriptor_project (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)), input itemi') in (state_update IM (λ eqv : index, equivocator_state_descriptor_project (s eqv) (equivocator_descriptors_update IM eqv_descriptors i (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) eqv)) i si', om')) = (λ eqv : index, equivocator_state_descriptor_project (state_update (equivocator_IM IM) s i e eqv) (eqv_descriptors eqv), output itemi')
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Hproper: proper_descriptor (IM i) (eqv_descriptors i) e
itemi': transition_item
Hex: existing_equivocator_label (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)
Hli: l itemi' = existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex
Hproper': proper_descriptor (IM i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) (s i)
Hex_new: previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl))
Hdestinationi: equivocator_state_descriptor_project e (eqv_descriptors i) = destination itemi'
Hv: equivocator_valid (IM i) li (s i, input itemi')
Ht': equivocator_transition (IM i) li (s i, input itemi') = (e, output itemi')
Hvx: valid (l itemi') (equivocator_state_descriptor_project (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)), input itemi')
Htx: transition (l itemi') (equivocator_state_descriptor_project (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)), input itemi') = (destination itemi', output itemi')

(let (si', om') := transition (existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex) (equivocator_state_descriptor_project (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)), input itemi') in (state_update IM (λ eqv : index, equivocator_state_descriptor_project (s eqv) (equivocator_descriptors_update IM eqv_descriptors i (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) eqv)) i si', om')) = (λ eqv : index, equivocator_state_descriptor_project (state_update (equivocator_IM IM) s i e eqv) (eqv_descriptors eqv), output itemi')
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Hproper: proper_descriptor (IM i) (eqv_descriptors i) e
itemi': transition_item
Hex: existing_equivocator_label (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)
Hli: l itemi' = existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex
Hproper': proper_descriptor (IM i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) (s i)
Hex_new: previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl))
Hdestinationi: equivocator_state_descriptor_project e (eqv_descriptors i) = destination itemi'
Hv: equivocator_valid (IM i) li (s i, input itemi')
Ht': equivocator_transition (IM i) li (s i, input itemi') = (e, output itemi')
Hvx: valid (l itemi') (equivocator_state_descriptor_project (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)), input itemi')
Htx: transition (existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex) (equivocator_state_descriptor_project (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)), input itemi') = (destination itemi', output itemi')

(let (si', om') := transition (existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex) (equivocator_state_descriptor_project (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)), input itemi') in (state_update IM (λ eqv : index, equivocator_state_descriptor_project (s eqv) (equivocator_descriptors_update IM eqv_descriptors i (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) eqv)) i si', om')) = (λ eqv : index, equivocator_state_descriptor_project (state_update (equivocator_IM IM) s i e eqv) (eqv_descriptors eqv), output itemi')
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Hproper: proper_descriptor (IM i) (eqv_descriptors i) e
itemi': transition_item
Hex: existing_equivocator_label (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)
Hli: l itemi' = existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex
Hproper': proper_descriptor (IM i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) (s i)
Hex_new: previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl))
Hdestinationi: equivocator_state_descriptor_project e (eqv_descriptors i) = destination itemi'
Hv: equivocator_valid (IM i) li (s i, input itemi')
Ht': equivocator_transition (IM i) li (s i, input itemi') = (e, output itemi')
Hvx: valid (l itemi') (equivocator_state_descriptor_project (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)), input itemi')
Htx: transition (existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex) (equivocator_state_descriptor_project (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)), input itemi') = (destination itemi', output itemi')

(state_update IM (λ eqv : index, equivocator_state_descriptor_project (s eqv) (equivocator_descriptors_update IM eqv_descriptors i (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) eqv)) i (destination itemi'), output itemi') = (λ eqv : index, equivocator_state_descriptor_project (state_update (equivocator_IM IM) s i e eqv) (eqv_descriptors eqv), output itemi')
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Hproper: proper_descriptor (IM i) (eqv_descriptors i) e
itemi': transition_item
Hex: existing_equivocator_label (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)
Hli: l itemi' = existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex
Hproper': proper_descriptor (IM i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) (s i)
Hex_new: previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl))
Hdestinationi: equivocator_state_descriptor_project e (eqv_descriptors i) = destination itemi'
Hv: equivocator_valid (IM i) li (s i, input itemi')
Ht': equivocator_transition (IM i) li (s i, input itemi') = (e, output itemi')
Hvx: valid (l itemi') (equivocator_state_descriptor_project (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)), input itemi')
Htx: transition (existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex) (equivocator_state_descriptor_project (s i) (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)), input itemi') = (destination itemi', output itemi')

state_update IM (λ eqv : index, equivocator_state_descriptor_project (s eqv) (equivocator_descriptors_update IM eqv_descriptors i (equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)) eqv)) i (destination itemi') = (λ eqv : index, equivocator_state_descriptor_project (state_update (equivocator_IM IM) s i e eqv) (eqv_descriptors eqv))
by extensionality eqv; destruct (decide (i = eqv)); subst; state_update_simpl.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
input, output: option message
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (state_update (equivocator_IM IM) s i e i)
eqv_descriptorsi': MachineDescriptor (IM i)
Hitemx: True
Hproper': proper_descriptor (IM i) eqv_descriptorsi' (s i)
Hex_new: previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) eqv_descriptorsi'
Hchar: equivocator_state_descriptor_project e (eqv_descriptors i) = equivocator_state_descriptor_project (s i) eqv_descriptorsi'
Hv: equivocator_valid (IM i) li (s i, input)
Ht': equivocator_transition (IM i) li (s i, input) = (e, output)

proper_descriptor (IM i) (equivocator_descriptors_update IM eqv_descriptors i eqv_descriptorsi' i) (s i) ∧ equivocator_descriptors_update IM eqv_descriptors i eqv_descriptorsi' = equivocator_descriptors_update IM eqv_descriptors i (equivocator_descriptors_update IM eqv_descriptors i eqv_descriptorsi' i) ∧ s = state_update (equivocator_IM IM) (state_update (equivocator_IM IM) s i e) i (s i) ∧ previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) (equivocator_descriptors_update IM eqv_descriptors i eqv_descriptorsi' i) ∧ equivocators_state_project IM eqv_descriptors (state_update (equivocator_IM IM) s i e) = equivocators_state_project IM (equivocator_descriptors_update IM eqv_descriptors i eqv_descriptorsi') s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
input, output: option message
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (state_update (equivocator_IM IM) s i e i)
eqv_descriptorsi': MachineDescriptor (IM i)
Hitemx: True
Hproper': proper_descriptor (IM i) eqv_descriptorsi' (s i)
Hex_new: previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) eqv_descriptorsi'
Hchar: equivocator_state_descriptor_project e (eqv_descriptors i) = equivocator_state_descriptor_project (s i) eqv_descriptorsi'
Hv: equivocator_valid (IM i) li (s i, input)
Ht': equivocator_transition (IM i) li (s i, input) = (e, output)

proper_descriptor (IM i) (equivocator_descriptors_update IM eqv_descriptors i eqv_descriptorsi' i) (s i)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
input, output: option message
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (state_update (equivocator_IM IM) s i e i)
eqv_descriptorsi': MachineDescriptor (IM i)
Hitemx: True
Hproper': proper_descriptor (IM i) eqv_descriptorsi' (s i)
Hex_new: previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) eqv_descriptorsi'
Hchar: equivocator_state_descriptor_project e (eqv_descriptors i) = equivocator_state_descriptor_project (s i) eqv_descriptorsi'
Hv: equivocator_valid (IM i) li (s i, input)
Ht': equivocator_transition (IM i) li (s i, input) = (e, output)
equivocator_descriptors_update IM eqv_descriptors i eqv_descriptorsi' = equivocator_descriptors_update IM eqv_descriptors i (equivocator_descriptors_update IM eqv_descriptors i eqv_descriptorsi' i)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
input, output: option message
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (state_update (equivocator_IM IM) s i e i)
eqv_descriptorsi': MachineDescriptor (IM i)
Hitemx: True
Hproper': proper_descriptor (IM i) eqv_descriptorsi' (s i)
Hex_new: previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) eqv_descriptorsi'
Hchar: equivocator_state_descriptor_project e (eqv_descriptors i) = equivocator_state_descriptor_project (s i) eqv_descriptorsi'
Hv: equivocator_valid (IM i) li (s i, input)
Ht': equivocator_transition (IM i) li (s i, input) = (e, output)
s = state_update (equivocator_IM IM) (state_update (equivocator_IM IM) s i e) i (s i)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
input, output: option message
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (state_update (equivocator_IM IM) s i e i)
eqv_descriptorsi': MachineDescriptor (IM i)
Hitemx: True
Hproper': proper_descriptor (IM i) eqv_descriptorsi' (s i)
Hex_new: previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) eqv_descriptorsi'
Hchar: equivocator_state_descriptor_project e (eqv_descriptors i) = equivocator_state_descriptor_project (s i) eqv_descriptorsi'
Hv: equivocator_valid (IM i) li (s i, input)
Ht': equivocator_transition (IM i) li (s i, input) = (e, output)
previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) (equivocator_descriptors_update IM eqv_descriptors i eqv_descriptorsi' i)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
input, output: option message
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (state_update (equivocator_IM IM) s i e i)
eqv_descriptorsi': MachineDescriptor (IM i)
Hitemx: True
Hproper': proper_descriptor (IM i) eqv_descriptorsi' (s i)
Hex_new: previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) eqv_descriptorsi'
Hchar: equivocator_state_descriptor_project e (eqv_descriptors i) = equivocator_state_descriptor_project (s i) eqv_descriptorsi'
Hv: equivocator_valid (IM i) li (s i, input)
Ht': equivocator_transition (IM i) li (s i, input) = (e, output)
equivocators_state_project IM eqv_descriptors (state_update (equivocator_IM IM) s i e) = equivocators_state_project IM (equivocator_descriptors_update IM eqv_descriptors i eqv_descriptorsi') s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
input, output: option message
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (state_update (equivocator_IM IM) s i e i)
eqv_descriptorsi': MachineDescriptor (IM i)
Hitemx: True
Hproper': proper_descriptor (IM i) eqv_descriptorsi' (s i)
Hex_new: previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) eqv_descriptorsi'
Hchar: equivocator_state_descriptor_project e (eqv_descriptors i) = equivocator_state_descriptor_project (s i) eqv_descriptorsi'
Hv: equivocator_valid (IM i) li (s i, input)
Ht': equivocator_transition (IM i) li (s i, input) = (e, output)

proper_descriptor (IM i) (equivocator_descriptors_update IM eqv_descriptors i eqv_descriptorsi' i) (s i)
by state_update_simpl.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
input, output: option message
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (state_update (equivocator_IM IM) s i e i)
eqv_descriptorsi': MachineDescriptor (IM i)
Hitemx: True
Hproper': proper_descriptor (IM i) eqv_descriptorsi' (s i)
Hex_new: previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) eqv_descriptorsi'
Hchar: equivocator_state_descriptor_project e (eqv_descriptors i) = equivocator_state_descriptor_project (s i) eqv_descriptorsi'
Hv: equivocator_valid (IM i) li (s i, input)
Ht': equivocator_transition (IM i) li (s i, input) = (e, output)

equivocator_descriptors_update IM eqv_descriptors i eqv_descriptorsi' = equivocator_descriptors_update IM eqv_descriptors i (equivocator_descriptors_update IM eqv_descriptors i eqv_descriptorsi' i)
by state_update_simpl.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
input, output: option message
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (state_update (equivocator_IM IM) s i e i)
eqv_descriptorsi': MachineDescriptor (IM i)
Hitemx: True
Hproper': proper_descriptor (IM i) eqv_descriptorsi' (s i)
Hex_new: previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) eqv_descriptorsi'
Hchar: equivocator_state_descriptor_project e (eqv_descriptors i) = equivocator_state_descriptor_project (s i) eqv_descriptorsi'
Hv: equivocator_valid (IM i) li (s i, input)
Ht': equivocator_transition (IM i) li (s i, input) = (e, output)

s = state_update (equivocator_IM IM) (state_update (equivocator_IM IM) s i e) i (s i)
by extensionality j; destruct (decide (i = j)); subst; state_update_simpl.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
input, output: option message
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (state_update (equivocator_IM IM) s i e i)
eqv_descriptorsi': MachineDescriptor (IM i)
Hitemx: True
Hproper': proper_descriptor (IM i) eqv_descriptorsi' (s i)
Hex_new: previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) eqv_descriptorsi'
Hchar: equivocator_state_descriptor_project e (eqv_descriptors i) = equivocator_state_descriptor_project (s i) eqv_descriptorsi'
Hv: equivocator_valid (IM i) li (s i, input)
Ht': equivocator_transition (IM i) li (s i, input) = (e, output)

previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) (equivocator_descriptors_update IM eqv_descriptors i eqv_descriptorsi' i)
by state_update_simpl.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
input, output: option message
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (state_update (equivocator_IM IM) s i e i)
eqv_descriptorsi': MachineDescriptor (IM i)
Hitemx: True
Hproper': proper_descriptor (IM i) eqv_descriptorsi' (s i)
Hex_new: previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) eqv_descriptorsi'
Hchar: equivocator_state_descriptor_project e (eqv_descriptors i) = equivocator_state_descriptor_project (s i) eqv_descriptorsi'
Hv: equivocator_valid (IM i) li (s i, input)
Ht': equivocator_transition (IM i) li (s i, input) = (e, output)

equivocators_state_project IM eqv_descriptors (state_update (equivocator_IM IM) s i e) = equivocators_state_project IM (equivocator_descriptors_update IM eqv_descriptors i eqv_descriptorsi') s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
i: index
li: EquivocatorLabel (IM i)
input, output: option message
s: composite_state (equivocator_IM IM)
e: equivocator_state (IM i)
Hproper: proper_descriptor (IM i) (eqv_descriptors i) (state_update (equivocator_IM IM) s i e i)
eqv_descriptorsi': MachineDescriptor (IM i)
Hitemx: True
Hproper': proper_descriptor (IM i) eqv_descriptorsi' (s i)
Hex_new: previous_state_descriptor_prop (IM i) (eqv_descriptors i) (s i) eqv_descriptorsi'
Hchar: equivocator_state_descriptor_project e (eqv_descriptors i) = equivocator_state_descriptor_project (s i) eqv_descriptorsi'
Hv: equivocator_valid (IM i) li (s i, input)
Ht': equivocator_transition (IM i) li (s i, input) = (e, output)

(λ eqv : index, equivocator_state_descriptor_project (state_update (equivocator_IM IM) s i e eqv) (eqv_descriptors eqv)) = (λ eqv : index, equivocator_state_descriptor_project (s eqv) (equivocator_descriptors_update IM eqv_descriptors i eqv_descriptorsi' eqv))
by extensionality eqv; destruct (decide (i = eqv)); subst; state_update_simpl. Qed.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
Hproper: proper_equivocator_descriptors IM eqv_descriptors (destination item)

(oitem : option (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), equivocators_transition_item_project eqv_descriptors item = Some (oitem, eqv_descriptors') ∧ match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)), existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) Hex) = l itemx) ∧ input item = input itemx ∧ output item = output itemx ∧ equivocators_state_project IM eqv_descriptors (destination item) = destination itemx ∧ eqv_descriptors' (projT1 (l item)) = equivocator_label_descriptor (projT2 (l item)) | None => True end ∧ ( s : composite_state (equivocator_IM IM), composite_valid (equivocator_IM IM) (l item) (s, input item) → composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item) → proper_equivocator_descriptors IM eqv_descriptors' s ∧ eqv_descriptors' = equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) (eqv_descriptors' (projT1 (l item))) ∧ s = state_update (equivocator_IM IM) (destination item) (projT1 (l item)) (s (projT1 (l item))) ∧ previous_state_descriptor_prop (IM (projT1 (l item))) (eqv_descriptors (projT1 (l item))) (s (projT1 (l item))) (eqv_descriptors' (projT1 (l item))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM eqv_descriptors' s → composite_valid IM (l itemx) (sx, input itemx) ∧ composite_transition IM (l itemx) (sx, input itemx) = (destination itemx, output itemx) | None => equivocators_state_project IM eqv_descriptors (destination item) = equivocators_state_project IM eqv_descriptors' s end)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
Hproper: proper_equivocator_descriptors IM eqv_descriptors (destination item)

(oitem : option (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), equivocators_transition_item_project eqv_descriptors item = Some (oitem, eqv_descriptors') ∧ match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)), existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) Hex) = l itemx) ∧ input item = input itemx ∧ output item = output itemx ∧ equivocators_state_project IM eqv_descriptors (destination item) = destination itemx ∧ eqv_descriptors' (projT1 (l item)) = equivocator_label_descriptor (projT2 (l item)) | None => True end ∧ ( s : composite_state (equivocator_IM IM), composite_valid (equivocator_IM IM) (l item) (s, input item) → composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item) → proper_equivocator_descriptors IM eqv_descriptors' s ∧ eqv_descriptors' = equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) (eqv_descriptors' (projT1 (l item))) ∧ s = state_update (equivocator_IM IM) (destination item) (projT1 (l item)) (s (projT1 (l item))) ∧ previous_state_descriptor_prop (IM (projT1 (l item))) (eqv_descriptors (projT1 (l item))) (s (projT1 (l item))) (eqv_descriptors' (projT1 (l item))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM eqv_descriptors' s → composite_valid IM (l itemx) (sx, input itemx) ∧ composite_transition IM (l itemx) (sx, input itemx) = (destination itemx, output itemx) | None => equivocators_state_project IM eqv_descriptors (destination item) = equivocators_state_project IM eqv_descriptors' s end)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
Hproper: proper_equivocator_descriptors IM eqv_descriptors (destination item)
oitem: option (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
Hoitem: equivocators_transition_item_project eqv_descriptors item = Some (oitem, eqv_descriptors')
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)), existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) Hex) = l itemx) ∧ input item = input itemx ∧ output item = output itemx ∧ equivocators_state_project IM eqv_descriptors (destination item) = destination itemx ∧ eqv_descriptors' (projT1 (l item)) = equivocator_label_descriptor (projT2 (l item)) | None => True end
Hchar: s : composite_state (equivocator_IM IM), composite_valid (equivocator_IM IM) (l item) (s, input item) → composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item) → proper_descriptor (IM (projT1 (l item))) (eqv_descriptors' (projT1 (l item))) (s (projT1 (l item))) ∧ eqv_descriptors' = equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) (eqv_descriptors' (projT1 (l item))) ∧ s = state_update (equivocator_IM IM) (destination item) (projT1 (l item)) (s (projT1 (l item))) ∧ previous_state_descriptor_prop (IM (projT1 (l item))) (eqv_descriptors (projT1 (l item))) (s (projT1 (l item))) (eqv_descriptors' (projT1 (l item))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM eqv_descriptors' s → composite_valid IM (l itemx) (sx, input itemx) ∧ composite_transition IM (l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM eqv_descriptors (destination item) = equivocators_state_project IM eqv_descriptors' s end

(oitem : option (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), equivocators_transition_item_project eqv_descriptors item = Some (oitem, eqv_descriptors') ∧ match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)), existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) Hex) = l itemx) ∧ input item = input itemx ∧ output item = output itemx ∧ equivocators_state_project IM eqv_descriptors (destination item) = destination itemx ∧ eqv_descriptors' (projT1 (l item)) = equivocator_label_descriptor (projT2 (l item)) | None => True end ∧ ( s : composite_state (equivocator_IM IM), composite_valid (equivocator_IM IM) (l item) (s, input item) → composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item) → proper_equivocator_descriptors IM eqv_descriptors' s ∧ eqv_descriptors' = equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) (eqv_descriptors' (projT1 (l item))) ∧ s = state_update (equivocator_IM IM) (destination item) (projT1 (l item)) (s (projT1 (l item))) ∧ previous_state_descriptor_prop (IM (projT1 (l item))) (eqv_descriptors (projT1 (l item))) (s (projT1 (l item))) (eqv_descriptors' (projT1 (l item))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM eqv_descriptors' s → composite_valid IM (l itemx) (sx, input itemx) ∧ composite_transition IM (l itemx) (sx, input itemx) = (destination itemx, output itemx) | None => equivocators_state_project IM eqv_descriptors (destination item) = equivocators_state_project IM eqv_descriptors' s end)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
Hproper: proper_equivocator_descriptors IM eqv_descriptors (destination item)
oitem: option (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
Hoitem: equivocators_transition_item_project eqv_descriptors item = Some (oitem, eqv_descriptors')
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)), existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) Hex) = l itemx) ∧ input item = input itemx ∧ output item = output itemx ∧ equivocators_state_project IM eqv_descriptors (destination item) = destination itemx ∧ eqv_descriptors' (projT1 (l item)) = equivocator_label_descriptor (projT2 (l item)) | None => True end
Hchar: s : composite_state (equivocator_IM IM), composite_valid (equivocator_IM IM) (l item) (s, input item) → composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item) → proper_descriptor (IM (projT1 (l item))) (eqv_descriptors' (projT1 (l item))) (s (projT1 (l item))) ∧ eqv_descriptors' = equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) (eqv_descriptors' (projT1 (l item))) ∧ s = state_update (equivocator_IM IM) (destination item) (projT1 (l item)) (s (projT1 (l item))) ∧ previous_state_descriptor_prop (IM (projT1 (l item))) (eqv_descriptors (projT1 (l item))) (s (projT1 (l item))) (eqv_descriptors' (projT1 (l item))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM eqv_descriptors' s → composite_valid IM (l itemx) (sx, input itemx) ∧ composite_transition IM (l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM eqv_descriptors (destination item) = equivocators_state_project IM eqv_descriptors' s end

equivocators_transition_item_project eqv_descriptors item = Some (oitem, eqv_descriptors') ∧ match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)), existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) Hex) = l itemx) ∧ input item = input itemx ∧ output item = output itemx ∧ equivocators_state_project IM eqv_descriptors (destination item) = destination itemx ∧ eqv_descriptors' (projT1 (l item)) = equivocator_label_descriptor (projT2 (l item)) | None => True end ∧ ( s : composite_state (equivocator_IM IM), composite_valid (equivocator_IM IM) (l item) (s, input item) → composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item) → proper_equivocator_descriptors IM eqv_descriptors' s ∧ eqv_descriptors' = equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) (eqv_descriptors' (projT1 (l item))) ∧ s = state_update (equivocator_IM IM) (destination item) (projT1 (l item)) (s (projT1 (l item))) ∧ previous_state_descriptor_prop (IM (projT1 (l item))) (eqv_descriptors (projT1 (l item))) (s (projT1 (l item))) (eqv_descriptors' (projT1 (l item))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM eqv_descriptors' s → composite_valid IM (l itemx) (sx, input itemx) ∧ composite_transition IM (l itemx) (sx, input itemx) = (destination itemx, output itemx) | None => equivocators_state_project IM eqv_descriptors (destination item) = equivocators_state_project IM eqv_descriptors' s end)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
Hproper: proper_equivocator_descriptors IM eqv_descriptors (destination item)
oitem: option (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
Hoitem: equivocators_transition_item_project eqv_descriptors item = Some (oitem, eqv_descriptors')
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)), existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) Hex) = l itemx) ∧ input item = input itemx ∧ output item = output itemx ∧ equivocators_state_project IM eqv_descriptors (destination item) = destination itemx ∧ eqv_descriptors' (projT1 (l item)) = equivocator_label_descriptor (projT2 (l item)) | None => True end
Hchar: s : composite_state (equivocator_IM IM), composite_valid (equivocator_IM IM) (l item) (s, input item) → composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item) → proper_descriptor (IM (projT1 (l item))) (eqv_descriptors' (projT1 (l item))) (s (projT1 (l item))) ∧ eqv_descriptors' = equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) (eqv_descriptors' (projT1 (l item))) ∧ s = state_update (equivocator_IM IM) (destination item) (projT1 (l item)) (s (projT1 (l item))) ∧ previous_state_descriptor_prop (IM (projT1 (l item))) (eqv_descriptors (projT1 (l item))) (s (projT1 (l item))) (eqv_descriptors' (projT1 (l item))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM eqv_descriptors' s → composite_valid IM (l itemx) (sx, input itemx) ∧ composite_transition IM (l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM eqv_descriptors (destination item) = equivocators_state_project IM eqv_descriptors' s end

match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)), existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) Hex) = l itemx) ∧ input item = input itemx ∧ output item = output itemx ∧ equivocators_state_project IM eqv_descriptors (destination item) = destination itemx ∧ eqv_descriptors' (projT1 (l item)) = equivocator_label_descriptor (projT2 (l item)) | None => True end ∧ ( s : composite_state (equivocator_IM IM), composite_valid (equivocator_IM IM) (l item) (s, input item) → composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item) → proper_equivocator_descriptors IM eqv_descriptors' s ∧ eqv_descriptors' = equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) (eqv_descriptors' (projT1 (l item))) ∧ s = state_update (equivocator_IM IM) (destination item) (projT1 (l item)) (s (projT1 (l item))) ∧ previous_state_descriptor_prop (IM (projT1 (l item))) (eqv_descriptors (projT1 (l item))) (s (projT1 (l item))) (eqv_descriptors' (projT1 (l item))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM eqv_descriptors' s → composite_valid IM (l itemx) (sx, input itemx) ∧ composite_transition IM (l itemx) (sx, input itemx) = (destination itemx, output itemx) | None => equivocators_state_project IM eqv_descriptors (destination item) = equivocators_state_project IM eqv_descriptors' s end)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
Hproper: proper_equivocator_descriptors IM eqv_descriptors (destination item)
oitem: option (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
Hoitem: equivocators_transition_item_project eqv_descriptors item = Some (oitem, eqv_descriptors')
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)), existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) Hex) = l itemx) ∧ input item = input itemx ∧ output item = output itemx ∧ equivocators_state_project IM eqv_descriptors (destination item) = destination itemx ∧ eqv_descriptors' (projT1 (l item)) = equivocator_label_descriptor (projT2 (l item)) | None => True end
Hchar: s : composite_state (equivocator_IM IM), composite_valid (equivocator_IM IM) (l item) (s, input item) → composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item) → proper_descriptor (IM (projT1 (l item))) (eqv_descriptors' (projT1 (l item))) (s (projT1 (l item))) ∧ eqv_descriptors' = equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) (eqv_descriptors' (projT1 (l item))) ∧ s = state_update (equivocator_IM IM) (destination item) (projT1 (l item)) (s (projT1 (l item))) ∧ previous_state_descriptor_prop (IM (projT1 (l item))) (eqv_descriptors (projT1 (l item))) (s (projT1 (l item))) (eqv_descriptors' (projT1 (l item))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM eqv_descriptors' s → composite_valid IM (l itemx) (sx, input itemx) ∧ composite_transition IM (l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM eqv_descriptors (destination item) = equivocators_state_project IM eqv_descriptors' s end

s : composite_state (equivocator_IM IM), composite_valid (equivocator_IM IM) (l item) (s, input item) → composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item) → proper_equivocator_descriptors IM eqv_descriptors' s ∧ eqv_descriptors' = equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) (eqv_descriptors' (projT1 (l item))) ∧ s = state_update (equivocator_IM IM) (destination item) (projT1 (l item)) (s (projT1 (l item))) ∧ previous_state_descriptor_prop (IM (projT1 (l item))) (eqv_descriptors (projT1 (l item))) (s (projT1 (l item))) (eqv_descriptors' (projT1 (l item))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM eqv_descriptors' s → composite_valid IM (l itemx) (sx, input itemx) ∧ composite_transition IM (l itemx) (sx, input itemx) = (destination itemx, output itemx) | None => equivocators_state_project IM eqv_descriptors (destination item) = equivocators_state_project IM eqv_descriptors' s end
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
Hproper: proper_equivocator_descriptors IM eqv_descriptors (destination item)
oitem: option (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
Hoitem: equivocators_transition_item_project eqv_descriptors item = Some (oitem, eqv_descriptors')
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)), existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) Hex) = l itemx) ∧ input item = input itemx ∧ output item = output itemx ∧ equivocators_state_project IM eqv_descriptors (destination item) = destination itemx ∧ eqv_descriptors' (projT1 (l item)) = equivocator_label_descriptor (projT2 (l item)) | None => True end
Hchar: s : composite_state (equivocator_IM IM), composite_valid (equivocator_IM IM) (l item) (s, input item) → composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item) → proper_descriptor (IM (projT1 (l item))) (eqv_descriptors' (projT1 (l item))) (s (projT1 (l item))) ∧ eqv_descriptors' = equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) (eqv_descriptors' (projT1 (l item))) ∧ s = state_update (equivocator_IM IM) (destination item) (projT1 (l item)) (s (projT1 (l item))) ∧ previous_state_descriptor_prop (IM (projT1 (l item))) (eqv_descriptors (projT1 (l item))) (s (projT1 (l item))) (eqv_descriptors' (projT1 (l item))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM eqv_descriptors' s → composite_valid IM (l itemx) (sx, input itemx) ∧ composite_transition IM (l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM eqv_descriptors (destination item) = equivocators_state_project IM eqv_descriptors' s end
s: composite_state (equivocator_IM IM)
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)

proper_equivocator_descriptors IM eqv_descriptors' s ∧ eqv_descriptors' = equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) (eqv_descriptors' (projT1 (l item))) ∧ s = state_update (equivocator_IM IM) (destination item) (projT1 (l item)) (s (projT1 (l item))) ∧ previous_state_descriptor_prop (IM (projT1 (l item))) (eqv_descriptors (projT1 (l item))) (s (projT1 (l item))) (eqv_descriptors' (projT1 (l item))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM eqv_descriptors' s → composite_valid IM (l itemx) (sx, input itemx) ∧ composite_transition IM (l itemx) (sx, input itemx) = (destination itemx, output itemx) | None => equivocators_state_project IM eqv_descriptors (destination item) = equivocators_state_project IM eqv_descriptors' s end
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
Hproper: proper_equivocator_descriptors IM eqv_descriptors (destination item)
oitem: option (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
Hoitem: equivocators_transition_item_project eqv_descriptors item = Some (oitem, eqv_descriptors')
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)), existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) Hex) = l itemx) ∧ input item = input itemx ∧ output item = output itemx ∧ equivocators_state_project IM eqv_descriptors (destination item) = destination itemx ∧ eqv_descriptors' (projT1 (l item)) = equivocator_label_descriptor (projT2 (l item)) | None => True end
s: composite_state (equivocator_IM IM)
Hv: composite_valid (equivocator_IM IM) (l item) (s, input item)
Ht: composite_transition (equivocator_IM IM) (l item) (s, input item) = (destination item, output item)
Hproperi': proper_descriptor (IM (projT1 (l item))) (eqv_descriptors' (projT1 (l item))) (s (projT1 (l item)))
Heqv': eqv_descriptors' = equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) (eqv_descriptors' (projT1 (l item)))
Hs: s = state_update (equivocator_IM IM) (destination item) (projT1 (l item)) (s (projT1 (l item)))
Hex_new: previous_state_descriptor_prop (IM (projT1 (l item))) (eqv_descriptors (projT1 (l item))) (s (projT1 (l item))) (eqv_descriptors' (projT1 (l item)))
Hchar: match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM eqv_descriptors' s → composite_valid IM (l itemx) (sx, input itemx) ∧ composite_transition IM (l itemx) ( sx, input itemx) = (destination itemx, output itemx) | None => equivocators_state_project IM eqv_descriptors (destination item) = equivocators_state_project IM eqv_descriptors' s end

proper_equivocator_descriptors IM eqv_descriptors' s ∧ eqv_descriptors' = equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) (eqv_descriptors' (projT1 (l item))) ∧ s = state_update (equivocator_IM IM) (destination item) (projT1 (l item)) (s (projT1 (l item))) ∧ previous_state_descriptor_prop (IM (projT1 (l item))) (eqv_descriptors (projT1 (l item))) (s (projT1 (l item))) (eqv_descriptors' (projT1 (l item))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM eqv_descriptors' s → composite_valid IM (l itemx) (sx, input itemx) ∧ composite_transition IM (l itemx) (sx, input itemx) = (destination itemx, output itemx) | None => equivocators_state_project IM eqv_descriptors (destination item) = equivocators_state_project IM eqv_descriptors' s end
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
Hproper: proper_equivocator_descriptors IM eqv_descriptors (destination item)
oitem: option (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)), existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) Hex) = l itemx) ∧ input item = input itemx ∧ output item = output itemx ∧ equivocators_state_project IM eqv_descriptors (destination item) = destination itemx ∧ eqv_descriptors' (projT1 (l item)) = equivocator_label_descriptor (projT2 (l item)) | None => True end
s: composite_state (equivocator_IM IM)
Hproperi': proper_descriptor (IM (projT1 (l item))) (eqv_descriptors' (projT1 (l item))) (s (projT1 (l item)))
Heqv': eqv_descriptors' = equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) (eqv_descriptors' (projT1 (l item)))
Hs: s = state_update (equivocator_IM IM) (destination item) (projT1 (l item)) (s (projT1 (l item)))
Hex_new: previous_state_descriptor_prop (IM (projT1 (l item))) (eqv_descriptors (projT1 (l item))) (s (projT1 (l item))) (eqv_descriptors' (projT1 (l item)))
Hchar: match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM eqv_descriptors' s → composite_valid IM (l itemx) (sx, input itemx) ∧ composite_transition IM (l itemx) ( sx, input itemx) = (destination itemx, output itemx) | None => equivocators_state_project IM eqv_descriptors (destination item) = equivocators_state_project IM eqv_descriptors' s end

proper_equivocator_descriptors IM eqv_descriptors' s ∧ eqv_descriptors' = equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) (eqv_descriptors' (projT1 (l item))) ∧ s = state_update (equivocator_IM IM) (destination item) (projT1 (l item)) (s (projT1 (l item))) ∧ previous_state_descriptor_prop (IM (projT1 (l item))) (eqv_descriptors (projT1 (l item))) (s (projT1 (l item))) (eqv_descriptors' (projT1 (l item))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM eqv_descriptors' s → composite_valid IM (l itemx) (sx, input itemx) ∧ composite_transition IM (l itemx) (sx, input itemx) = (destination itemx, output itemx) | None => equivocators_state_project IM eqv_descriptors (destination item) = equivocators_state_project IM eqv_descriptors' s end
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
Hproper: proper_equivocator_descriptors IM eqv_descriptors (destination item)
oitem: option (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)), existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) Hex) = l itemx) ∧ input item = input itemx ∧ output item = output itemx ∧ equivocators_state_project IM eqv_descriptors (destination item) = destination itemx ∧ eqv_descriptors' (projT1 (l item)) = equivocator_label_descriptor (projT2 (l item)) | None => True end
s: composite_state (equivocator_IM IM)
Hproperi': proper_descriptor (IM (projT1 (l item))) (eqv_descriptors' (projT1 (l item))) (s (projT1 (l item)))
Heqv': eqv_descriptors' = equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) (eqv_descriptors' (projT1 (l item)))
Hs: s = state_update (equivocator_IM IM) (destination item) (projT1 (l item)) (s (projT1 (l item)))
Hex_new: previous_state_descriptor_prop (IM (projT1 (l item))) (eqv_descriptors (projT1 (l item))) (s (projT1 (l item))) (eqv_descriptors' (projT1 (l item)))

proper_equivocator_descriptors IM eqv_descriptors' s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
Hproper: proper_equivocator_descriptors IM eqv_descriptors (destination item)
oitem: option (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)), existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) Hex) = l itemx) ∧ input item = input itemx ∧ output item = output itemx ∧ equivocators_state_project IM eqv_descriptors (destination item) = destination itemx ∧ eqv_descriptors' (projT1 (l item)) = equivocator_label_descriptor (projT2 (l item)) | None => True end
s: composite_state (equivocator_IM IM)
Hproperi': proper_descriptor (IM (projT1 (l item))) (eqv_descriptors' (projT1 (l item))) (s (projT1 (l item)))
Heqv': eqv_descriptors' = equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) (eqv_descriptors' (projT1 (l item)))
Hs: s = state_update (equivocator_IM IM) (destination item) (projT1 (l item)) (s (projT1 (l item)))
Hex_new: previous_state_descriptor_prop (IM (projT1 (l item))) (eqv_descriptors (projT1 (l item))) (s (projT1 (l item))) (eqv_descriptors' (projT1 (l item)))
eqv: index

proper_descriptor (IM eqv) (eqv_descriptors' eqv) (s eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
Hproper: proper_equivocator_descriptors IM eqv_descriptors (destination item)
oitem: option (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)), existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) Hex) = l itemx) ∧ input item = input itemx ∧ output item = output itemx ∧ equivocators_state_project IM eqv_descriptors (destination item) = destination itemx ∧ eqv_descriptors' (projT1 (l item)) = equivocator_label_descriptor (projT2 (l item)) | None => True end
s: composite_state (equivocator_IM IM)
Hproperi': proper_descriptor (IM (projT1 (l item))) (eqv_descriptors' (projT1 (l item))) (s (projT1 (l item)))
Heqv': eqv_descriptors' = equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) (eqv_descriptors' (projT1 (l item)))
Hs: s = state_update (equivocator_IM IM) (destination item) (projT1 (l item)) (s (projT1 (l item)))
Hex_new: previous_state_descriptor_prop (IM (projT1 (l item))) (eqv_descriptors (projT1 (l item))) (s (projT1 (l item))) (eqv_descriptors' (projT1 (l item)))
eqv: index

proper_descriptor (IM eqv) (equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) (eqv_descriptors' (projT1 (l item))) eqv) (state_update (equivocator_IM IM) (destination item) (projT1 (l item)) (s (projT1 (l item))) eqv)
by destruct (decide (eqv = projT1 (l item))); subst; state_update_simpl. Qed.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors, eqv_descriptors': equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
itemx: composite_transition_item IM
Hpr_item: equivocators_transition_item_project eqv_descriptors item = Some (Some itemx, eqv_descriptors')

( Hex : existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)), existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) Hex) = l itemx) ∧ input item = input itemx ∧ output item = output itemx ∧ equivocators_state_project IM eqv_descriptors (destination item) = destination itemx
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors, eqv_descriptors': equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
itemx: composite_transition_item IM
Hpr_item: equivocators_transition_item_project eqv_descriptors item = Some (Some itemx, eqv_descriptors')

( Hex : existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)), existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) Hex) = l itemx) ∧ input item = input itemx ∧ output item = output itemx ∧ equivocators_state_project IM eqv_descriptors (destination item) = destination itemx
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors, eqv_descriptors': equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
itemx: composite_transition_item IM
Hpr_item: match equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) (eqv_descriptors (projT1 (l item))) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM eqv_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) deqv') | None => None end = Some (Some itemx, eqv_descriptors')

( Hex : existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)), existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) Hex) = l itemx) ∧ input item = input itemx ∧ output item = output itemx ∧ equivocators_state_project IM eqv_descriptors (destination item) = destination itemx
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors, eqv_descriptors': equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
itemx: composite_transition_item IM
itemi: transition_item
descriptori: MachineDescriptor (IM (projT1 (l item)))
Hpr_itemi: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) (eqv_descriptors (projT1 (l item))) = Some (Some itemi, descriptori)
Hpr_item: Some (Some {| l := existT (projT1 (l item)) (l itemi); input := input item; destination := equivocators_state_project IM eqv_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) descriptori) = Some (Some itemx, eqv_descriptors')

( Hex : existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)), existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) Hex) = l itemx) ∧ input item = input itemx ∧ output item = output itemx ∧ equivocators_state_project IM eqv_descriptors (destination item) = destination itemx
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors, eqv_descriptors': equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
itemx: composite_transition_item IM
itemi: transition_item
descriptori: MachineDescriptor (IM (projT1 (l item)))
Hpr_itemi: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) (eqv_descriptors (projT1 (l item))) = Some (Some itemi, descriptori)
Hpr_item: Some (Some {| l := existT (projT1 (l item)) (l itemi); input := input item; destination := equivocators_state_project IM eqv_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) descriptori) = Some (Some itemx, eqv_descriptors')
H2: {| l := existT (projT1 (l item)) (l itemi); input := input item; destination := equivocators_state_project IM eqv_descriptors (destination item); output := output item |} = itemx
H3: equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) descriptori = eqv_descriptors'

( Hex : existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)), existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) Hex) = l {| l := existT (projT1 (l item)) (l itemi); input := input item; destination := equivocators_state_project IM eqv_descriptors (destination item); output := output item |}) ∧ input item = input {| l := existT (projT1 (l item)) (l itemi); input := input item; destination := equivocators_state_project IM eqv_descriptors (destination item); output := output item |} ∧ output item = output {| l := existT (projT1 (l item)) (l itemi); input := input item; destination := equivocators_state_project IM eqv_descriptors (destination item); output := output item |} ∧ equivocators_state_project IM eqv_descriptors (destination item) = destination {| l := existT (projT1 (l item)) (l itemi); input := input item; destination := equivocators_state_project IM eqv_descriptors (destination item); output := output item |}
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
itemi: transition_item
descriptori: MachineDescriptor (IM (projT1 (l item)))
Hpr_itemi: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) (eqv_descriptors (projT1 (l item))) = Some (Some itemi, descriptori)
Hpr_item: Some (Some {| l := existT (projT1 (l item)) (l itemi); input := input item; destination := equivocators_state_project IM eqv_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) descriptori) = Some (Some {| l := existT (projT1 (l item)) (l itemi); input := input item; destination := equivocators_state_project IM eqv_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM eqv_descriptors (projT1 (l item)) descriptori)

( Hex : existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)), existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) Hex) = l {| l := existT (projT1 (l item)) (l itemi); input := input item; destination := equivocators_state_project IM eqv_descriptors (destination item); output := output item |}) ∧ input item = input {| l := existT (projT1 (l item)) (l itemi); input := input item; destination := equivocators_state_project IM eqv_descriptors (destination item); output := output item |} ∧ output item = output {| l := existT (projT1 (l item)) (l itemi); input := input item; destination := equivocators_state_project IM eqv_descriptors (destination item); output := output item |} ∧ equivocators_state_project IM eqv_descriptors (destination item) = destination {| l := existT (projT1 (l item)) (l itemi); input := input item; destination := equivocators_state_project IM eqv_descriptors (destination item); output := output item |}
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
itemi: transition_item
descriptori: MachineDescriptor (IM (projT1 (l item)))
Hpr_itemi: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) (eqv_descriptors (projT1 (l item))) = Some (Some itemi, descriptori)

( Hex : existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)), existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) Hex) = l {| l := existT (projT1 (l item)) (l itemi); input := input item; destination := equivocators_state_project IM eqv_descriptors (destination item); output := output item |}) ∧ input item = input {| l := existT (projT1 (l item)) (l itemi); input := input item; destination := equivocators_state_project IM eqv_descriptors (destination item); output := output item |} ∧ output item = output {| l := existT (projT1 (l item)) (l itemi); input := input item; destination := equivocators_state_project IM eqv_descriptors (destination item); output := output item |} ∧ equivocators_state_project IM eqv_descriptors (destination item) = destination {| l := existT (projT1 (l item)) (l itemi); input := input item; destination := equivocators_state_project IM eqv_descriptors (destination item); output := output item |}
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
itemi: transition_item
descriptori: MachineDescriptor (IM (projT1 (l item)))
Hpr_itemi: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) (eqv_descriptors (projT1 (l item))) = Some (Some itemi, descriptori)

( Hex : existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)), existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) Hex) = existT (projT1 (l item)) (l itemi)) ∧ input item = input item ∧ output item = output item ∧ equivocators_state_project IM eqv_descriptors (destination item) = equivocators_state_project IM eqv_descriptors (destination item)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
itemi: transition_item
descriptori: MachineDescriptor (IM (projT1 (l item)))
Hpr_itemi: equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) (eqv_descriptors (projT1 (l item))) = Some (Some itemi, descriptori)

Hex : existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)), existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) Hex) = existT (projT1 (l item)) (l itemi)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
itemi: transition_item
descriptori: MachineDescriptor (IM (projT1 (l item)))
Hex: existing_equivocator_label (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item))
Hl: l itemi = existing_equivocator_label_extract (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) Hex
H1: input (composite_transition_item_projection (equivocator_IM IM) item) = input itemi ∧ output (composite_transition_item_projection (equivocator_IM IM) item) = output itemi ∧ equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) (eqv_descriptors (projT1 (l item))) = destination itemi ∧ descriptori = equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item))

Hex : existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)), existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) Hex) = existT (projT1 (l item)) (l itemi)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
eqv_descriptors: equivocator_descriptors IM
item: composite_transition_item (equivocator_IM IM)
itemi: transition_item
descriptori: MachineDescriptor (IM (projT1 (l item)))
Hex: existing_equivocator_label (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item))
Hl: l itemi = existing_equivocator_label_extract (IM (projT1 (l item))) (l (composite_transition_item_projection (equivocator_IM IM) item)) Hex
H1: input (composite_transition_item_projection (equivocator_IM IM) item) = input itemi ∧ output (composite_transition_item_projection (equivocator_IM IM) item) = output itemi ∧ equivocator_state_descriptor_project (destination (composite_transition_item_projection (equivocator_IM IM) item)) (eqv_descriptors (projT1 (l item))) = destination itemi ∧ descriptori = equivocator_label_descriptor (l (composite_transition_item_projection (equivocator_IM IM) item))

existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) Hex) = existT (projT1 (l item)) (l itemi)
by f_equal. Qed. Definition equivocators_trace_project_folder (item : composite_transition_item (equivocator_IM IM)) (result : option (list (composite_transition_item IM) * equivocator_descriptors IM)) : option (list (composite_transition_item IM) * equivocator_descriptors IM) := match result with | None => None | Some (r, idescriptor) => match equivocators_transition_item_project idescriptor item with | None => None | Some (None, odescriptor) => Some (r, odescriptor) | Some (Some item', odescriptor) => Some (item' :: r, odescriptor) end end.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))

foldr equivocators_trace_project_folder None tr = None
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))

foldr equivocators_trace_project_folder None tr = None
by induction tr; cbn; rewrite ?IHtr. Qed.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
itrX: list (composite_transition_item IM)
ieqv_descriptors, eqv_descriptors: equivocator_descriptors IM
trX': list (composite_transition_item IM)

foldr equivocators_trace_project_folder (Some (itrX, ieqv_descriptors)) tr = Some (trX', eqv_descriptors) ↔ ( trX : list (composite_transition_item IM), foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) tr = Some (trX, eqv_descriptors) ∧ trX' = trX ++ itrX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
itrX: list (composite_transition_item IM)
ieqv_descriptors, eqv_descriptors: equivocator_descriptors IM
trX': list (composite_transition_item IM)

foldr equivocators_trace_project_folder (Some (itrX, ieqv_descriptors)) tr = Some (trX', eqv_descriptors) ↔ ( trX : list (composite_transition_item IM), foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) tr = Some (trX, eqv_descriptors) ∧ trX' = trX ++ itrX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
itrX: list (composite_transition_item IM)
ieqv_descriptors: equivocator_descriptors IM

(trX' : list (composite_transition_item IM)) (eqv_descriptors : equivocator_descriptors IM), foldr equivocators_trace_project_folder (Some (itrX, ieqv_descriptors)) tr = Some (trX', eqv_descriptors) ↔ ( trX : list (composite_transition_item IM), foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) tr = Some (trX, eqv_descriptors) ∧ trX' = trX ++ itrX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
itrX: list (composite_transition_item IM)
ieqv_descriptors: equivocator_descriptors IM
trX': list (composite_transition_item IM)
eqv_descriptors: equivocator_descriptors IM

foldr equivocators_trace_project_folder (Some (itrX, ieqv_descriptors)) [] = Some (trX', eqv_descriptors) ↔ ( trX : list (composite_transition_item IM), foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) [] = Some (trX, eqv_descriptors) ∧ trX' = trX ++ itrX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
a: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
itrX: list (composite_transition_item IM)
ieqv_descriptors: equivocator_descriptors IM
IHtr: (trX' : list (composite_transition_item IM)) (eqv_descriptors : equivocator_descriptors IM), foldr equivocators_trace_project_folder (Some (itrX, ieqv_descriptors)) tr = Some (trX', eqv_descriptors) ↔ ( trX : list (composite_transition_item IM), foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) tr = Some (trX, eqv_descriptors) ∧ trX' = trX ++ itrX)
trX': list (composite_transition_item IM)
eqv_descriptors: equivocator_descriptors IM
foldr equivocators_trace_project_folder (Some (itrX, ieqv_descriptors)) (a :: tr) = Some (trX', eqv_descriptors) ↔ ( trX : list (composite_transition_item IM), foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) (a :: tr) = Some (trX, eqv_descriptors) ∧ trX' = trX ++ itrX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
itrX: list (composite_transition_item IM)
ieqv_descriptors: equivocator_descriptors IM
trX': list (composite_transition_item IM)
eqv_descriptors: equivocator_descriptors IM

foldr equivocators_trace_project_folder (Some (itrX, ieqv_descriptors)) [] = Some (trX', eqv_descriptors) ↔ ( trX : list (composite_transition_item IM), foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) [] = Some (trX, eqv_descriptors) ∧ trX' = trX ++ itrX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
itrX: list (composite_transition_item IM)
ieqv_descriptors: equivocator_descriptors IM
trX': list (composite_transition_item IM)
eqv_descriptors: equivocator_descriptors IM

Some (itrX, ieqv_descriptors) = Some (trX', eqv_descriptors) ↔ ( trX : list (composite_transition_item IM), Some ([], ieqv_descriptors) = Some (trX, eqv_descriptors) ∧ trX' = trX ++ itrX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
itrX: list (composite_transition_item IM)
ieqv_descriptors: equivocator_descriptors IM
trX': list (composite_transition_item IM)
eqv_descriptors: equivocator_descriptors IM
Htr: Some (itrX, ieqv_descriptors) = Some (trX', eqv_descriptors)

trX : list (composite_transition_item IM), Some ([], ieqv_descriptors) = Some (trX, eqv_descriptors) ∧ trX' = trX ++ itrX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
itrX: list (composite_transition_item IM)
ieqv_descriptors: equivocator_descriptors IM
trX': list (composite_transition_item IM)
eqv_descriptors: equivocator_descriptors IM
Htr: trX : list (composite_transition_item IM), Some ([], ieqv_descriptors) = Some (trX, eqv_descriptors) ∧ trX' = trX ++ itrX
Some (itrX, ieqv_descriptors) = Some (trX', eqv_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
itrX: list (composite_transition_item IM)
ieqv_descriptors: equivocator_descriptors IM
trX': list (composite_transition_item IM)
eqv_descriptors: equivocator_descriptors IM
Htr: Some (itrX, ieqv_descriptors) = Some (trX', eqv_descriptors)

trX : list (composite_transition_item IM), Some ([], ieqv_descriptors) = Some (trX, eqv_descriptors) ∧ trX' = trX ++ itrX
by inversion Htr; subst; exists [].
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
itrX: list (composite_transition_item IM)
ieqv_descriptors: equivocator_descriptors IM
trX': list (composite_transition_item IM)
eqv_descriptors: equivocator_descriptors IM
Htr: trX : list (composite_transition_item IM), Some ([], ieqv_descriptors) = Some (trX, eqv_descriptors) ∧ trX' = trX ++ itrX

Some (itrX, ieqv_descriptors) = Some (trX', eqv_descriptors)
by destruct Htr as [trX [[= <-] ?]]; subst.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
a: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
itrX: list (composite_transition_item IM)
ieqv_descriptors: equivocator_descriptors IM
IHtr: (trX' : list (composite_transition_item IM)) (eqv_descriptors : equivocator_descriptors IM), foldr equivocators_trace_project_folder (Some (itrX, ieqv_descriptors)) tr = Some (trX', eqv_descriptors) ↔ ( trX : list (composite_transition_item IM), foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) tr = Some (trX, eqv_descriptors) ∧ trX' = trX ++ itrX)
trX': list (composite_transition_item IM)
eqv_descriptors: equivocator_descriptors IM

foldr equivocators_trace_project_folder (Some (itrX, ieqv_descriptors)) (a :: tr) = Some (trX', eqv_descriptors) ↔ ( trX : list (composite_transition_item IM), foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) (a :: tr) = Some (trX, eqv_descriptors) ∧ trX' = trX ++ itrX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
a: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
itrX: list (composite_transition_item IM)
ieqv_descriptors: equivocator_descriptors IM
IHtr: (trX' : list (composite_transition_item IM)) (eqv_descriptors : equivocator_descriptors IM), foldr equivocators_trace_project_folder (Some (itrX, ieqv_descriptors)) tr = Some (trX', eqv_descriptors) ↔ ( trX : list (composite_transition_item IM), foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) tr = Some (trX, eqv_descriptors) ∧ trX' = trX ++ itrX)
trX': list (composite_transition_item IM)
eqv_descriptors: equivocator_descriptors IM

equivocators_trace_project_folder a (foldr equivocators_trace_project_folder (Some (itrX, ieqv_descriptors)) tr) = Some (trX', eqv_descriptors) ↔ ( trX : list (composite_transition_item IM), equivocators_trace_project_folder a (foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) tr) = Some (trX, eqv_descriptors) ∧ trX' = trX ++ itrX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
a: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
itrX: list (composite_transition_item IM)
ieqv_descriptors: equivocator_descriptors IM
pr_itrX_tr: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqpr_itrX_tr: pr_itrX_tr = foldr equivocators_trace_project_folder (Some (itrX, ieqv_descriptors)) tr
IHtr: (trX' : list (composite_transition_item IM)) (eqv_descriptors : equivocator_descriptors IM), pr_itrX_tr = Some (trX', eqv_descriptors) ↔ ( trX : list (composite_transition_item IM), foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) tr = Some (trX, eqv_descriptors) ∧ trX' = trX ++ itrX)
trX': list (composite_transition_item IM)
eqv_descriptors: equivocator_descriptors IM

equivocators_trace_project_folder a pr_itrX_tr = Some (trX', eqv_descriptors) ↔ ( trX : list (composite_transition_item IM), equivocators_trace_project_folder a (foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) tr) = Some (trX, eqv_descriptors) ∧ trX' = trX ++ itrX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
a: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
itrX: list (composite_transition_item IM)
ieqv_descriptors: equivocator_descriptors IM
pr_itrX_tr: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqpr_itrX_tr: pr_itrX_tr = foldr equivocators_trace_project_folder (Some (itrX, ieqv_descriptors)) tr
pr_tr: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqpr_tr: pr_tr = foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) tr
IHtr: (trX' : list (composite_transition_item IM)) (eqv_descriptors : equivocator_descriptors IM), pr_itrX_tr = Some (trX', eqv_descriptors) ↔ ( trX : list (composite_transition_item IM), pr_tr = Some (trX, eqv_descriptors) ∧ trX' = trX ++ itrX)
trX': list (composite_transition_item IM)
eqv_descriptors: equivocator_descriptors IM

equivocators_trace_project_folder a pr_itrX_tr = Some (trX', eqv_descriptors) ↔ ( trX : list (composite_transition_item IM), equivocators_trace_project_folder a pr_tr = Some (trX, eqv_descriptors) ∧ trX' = trX ++ itrX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
a: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
itrX: list (composite_transition_item IM)
ieqv_descriptors: equivocator_descriptors IM
pr_itrX_tr: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqpr_itrX_tr: pr_itrX_tr = foldr equivocators_trace_project_folder (Some (itrX, ieqv_descriptors)) tr
pr_tr: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqpr_tr: pr_tr = foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) tr
IHtr: (trX' : list (composite_transition_item IM)) (eqv_descriptors : equivocator_descriptors IM), pr_itrX_tr = Some (trX', eqv_descriptors) ↔ ( trX : list (composite_transition_item IM), pr_tr = Some (trX, eqv_descriptors) ∧ trX' = trX ++ itrX)
trX': list (composite_transition_item IM)
eqv_descriptors: equivocator_descriptors IM

equivocators_trace_project_folder a pr_itrX_tr = Some (trX', eqv_descriptors) → trX : list (composite_transition_item IM), equivocators_trace_project_folder a pr_tr = Some (trX, eqv_descriptors) ∧ trX' = trX ++ itrX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
a: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
itrX: list (composite_transition_item IM)
ieqv_descriptors: equivocator_descriptors IM
pr_itrX_tr: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqpr_itrX_tr: pr_itrX_tr = foldr equivocators_trace_project_folder (Some (itrX, ieqv_descriptors)) tr
pr_tr: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqpr_tr: pr_tr = foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) tr
IHtr: (trX' : list (composite_transition_item IM)) (eqv_descriptors : equivocator_descriptors IM), pr_itrX_tr = Some (trX', eqv_descriptors) ↔ ( trX : list (composite_transition_item IM), pr_tr = Some (trX, eqv_descriptors) ∧ trX' = trX ++ itrX)
trX': list (composite_transition_item IM)
eqv_descriptors: equivocator_descriptors IM
( trX : list (composite_transition_item IM), equivocators_trace_project_folder a pr_tr = Some (trX, eqv_descriptors) ∧ trX' = trX ++ itrX) → equivocators_trace_project_folder a pr_itrX_tr = Some (trX', eqv_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
a: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
itrX: list (composite_transition_item IM)
ieqv_descriptors: equivocator_descriptors IM
pr_itrX_tr: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqpr_itrX_tr: pr_itrX_tr = foldr equivocators_trace_project_folder (Some (itrX, ieqv_descriptors)) tr
pr_tr: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqpr_tr: pr_tr = foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) tr
IHtr: (trX' : list (composite_transition_item IM)) (eqv_descriptors : equivocator_descriptors IM), pr_itrX_tr = Some (trX', eqv_descriptors) ↔ ( trX : list (composite_transition_item IM), pr_tr = Some (trX, eqv_descriptors) ∧ trX' = trX ++ itrX)
trX': list (composite_transition_item IM)
eqv_descriptors: equivocator_descriptors IM

equivocators_trace_project_folder a pr_itrX_tr = Some (trX', eqv_descriptors) → trX : list (composite_transition_item IM), equivocators_trace_project_folder a pr_tr = Some (trX, eqv_descriptors) ∧ trX' = trX ++ itrX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
a: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
itrX: list (composite_transition_item IM)
ieqv_descriptors: equivocator_descriptors IM
pr_itrX_tr: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqpr_itrX_tr: pr_itrX_tr = foldr equivocators_trace_project_folder (Some (itrX, ieqv_descriptors)) tr
pr_tr: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqpr_tr: pr_tr = foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) tr
IHtr: (trX' : list (composite_transition_item IM)) (eqv_descriptors : equivocator_descriptors IM), pr_itrX_tr = Some (trX', eqv_descriptors) ↔ ( trX : list (composite_transition_item IM), pr_tr = Some (trX, eqv_descriptors) ∧ trX' = trX ++ itrX)
trX': list (composite_transition_item IM)
eqv_descriptors: equivocator_descriptors IM
Htr: equivocators_trace_project_folder a pr_itrX_tr = Some (trX', eqv_descriptors)

trX : list (composite_transition_item IM), equivocators_trace_project_folder a pr_tr = Some (trX, eqv_descriptors) ∧ trX' = trX ++ itrX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
a: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
itrX: list (composite_transition_item IM)
ieqv_descriptors: equivocator_descriptors IM
tr1: list (composite_transition_item IM)
e1: equivocator_descriptors IM
Heqpr_itrX_tr: Some (tr1, e1) = foldr equivocators_trace_project_folder (Some (itrX, ieqv_descriptors)) tr
pr_tr: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqpr_tr: pr_tr = foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) tr
IHtr: (trX' : list (composite_transition_item IM)) (eqv_descriptors : equivocator_descriptors IM), Some (tr1, e1) = Some (trX', eqv_descriptors) ↔ ( trX : list (composite_transition_item IM), pr_tr = Some (trX, eqv_descriptors) ∧ trX' = trX ++ itrX)
trX': list (composite_transition_item IM)
eqv_descriptors: equivocator_descriptors IM
Htr: equivocators_trace_project_folder a (Some (tr1, e1)) = Some (trX', eqv_descriptors)

trX : list (composite_transition_item IM), equivocators_trace_project_folder a pr_tr = Some (trX, eqv_descriptors) ∧ trX' = trX ++ itrX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
a: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
itrX: list (composite_transition_item IM)
ieqv_descriptors: equivocator_descriptors IM
tr1: list (composite_transition_item IM)
e1: equivocator_descriptors IM
Heqpr_itrX_tr: Some (tr1, e1) = foldr equivocators_trace_project_folder (Some (itrX, ieqv_descriptors)) tr
pr_tr: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqpr_tr: pr_tr = foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) tr
IHtr: Some (tr1, e1) = Some (tr1, e1) ↔ ( trX : list (composite_transition_item IM), pr_tr = Some (trX, e1) ∧ tr1 = trX ++ itrX)
trX': list (composite_transition_item IM)
eqv_descriptors: equivocator_descriptors IM
Htr: equivocators_trace_project_folder a (Some (tr1, e1)) = Some (trX', eqv_descriptors)

trX : list (composite_transition_item IM), equivocators_trace_project_folder a pr_tr = Some (trX, eqv_descriptors) ∧ trX' = trX ++ itrX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
a: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
itrX: list (composite_transition_item IM)
ieqv_descriptors: equivocator_descriptors IM
tr1: list (composite_transition_item IM)
e1: equivocator_descriptors IM
Heqpr_itrX_tr: Some (tr1, e1) = foldr equivocators_trace_project_folder (Some (itrX, ieqv_descriptors)) tr
pr_tr: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqpr_tr: pr_tr = foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) tr
IHtr: Some (tr1, e1) = Some (tr1, e1) → trX : list (composite_transition_item IM), pr_tr = Some (trX, e1) ∧ tr1 = trX ++ itrX
trX': list (composite_transition_item IM)
eqv_descriptors: equivocator_descriptors IM
Htr: equivocators_trace_project_folder a (Some (tr1, e1)) = Some (trX', eqv_descriptors)

trX : list (composite_transition_item IM), equivocators_trace_project_folder a pr_tr = Some (trX, eqv_descriptors) ∧ trX' = trX ++ itrX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
a: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
itrX: list (composite_transition_item IM)
ieqv_descriptors: equivocator_descriptors IM
tr1: list (composite_transition_item IM)
e1: equivocator_descriptors IM
Heqpr_itrX_tr: Some (tr1, e1) = foldr equivocators_trace_project_folder (Some (itrX, ieqv_descriptors)) tr
pr_tr: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqpr_tr: pr_tr = foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) tr
IHtr: trX : list (composite_transition_item IM), pr_tr = Some (trX, e1) ∧ tr1 = trX ++ itrX
trX': list (composite_transition_item IM)
eqv_descriptors: equivocator_descriptors IM
Htr: equivocators_trace_project_folder a (Some (tr1, e1)) = Some (trX', eqv_descriptors)

trX : list (composite_transition_item IM), equivocators_trace_project_folder a pr_tr = Some (trX, eqv_descriptors) ∧ trX' = trX ++ itrX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
a: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
itrX: list (composite_transition_item IM)
ieqv_descriptors: equivocator_descriptors IM
tr1: list (composite_transition_item IM)
e1: equivocator_descriptors IM
Heqpr_itrX_tr: Some (tr1, e1) = foldr equivocators_trace_project_folder (Some (itrX, ieqv_descriptors)) tr
pr_tr: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqpr_tr: pr_tr = foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) tr
trX: list (composite_transition_item IM)
Hpr_tr: pr_tr = Some (trX, e1)
Htr1: tr1 = trX ++ itrX
trX': list (composite_transition_item IM)
eqv_descriptors: equivocator_descriptors IM
Htr: equivocators_trace_project_folder a (Some (tr1, e1)) = Some (trX', eqv_descriptors)

trX : list (composite_transition_item IM), equivocators_trace_project_folder a pr_tr = Some (trX, eqv_descriptors) ∧ trX' = trX ++ itrX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
a: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
itrX: list (composite_transition_item IM)
ieqv_descriptors: equivocator_descriptors IM
tr1: list (composite_transition_item IM)
e1: equivocator_descriptors IM
Heqpr_itrX_tr: Some (tr1, e1) = foldr equivocators_trace_project_folder (Some (itrX, ieqv_descriptors)) tr
pr_tr: option (list (composite_transition_item IM) * equivocator_descriptors IM)
trX: list (composite_transition_item IM)
Heqpr_tr: Some (trX, e1) = foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) tr
Hpr_tr: pr_tr = Some (trX, e1)
Htr1: tr1 = trX ++ itrX
trX': list (composite_transition_item IM)
eqv_descriptors: equivocator_descriptors IM
Htr: equivocators_trace_project_folder a (Some (tr1, e1)) = Some (trX', eqv_descriptors)

trX0 : list (composite_transition_item IM), equivocators_trace_project_folder a (Some (trX, e1)) = Some (trX0, eqv_descriptors) ∧ trX' = trX0 ++ itrX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
a: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
itrX: list (composite_transition_item IM)
ieqv_descriptors: equivocator_descriptors IM
tr1: list (composite_transition_item IM)
e1: equivocator_descriptors IM
trX: list (composite_transition_item IM)
Heqpr_itrX_tr: Some (trX ++ itrX, e1) = foldr equivocators_trace_project_folder (Some (itrX, ieqv_descriptors)) tr
pr_tr: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqpr_tr: Some (trX, e1) = foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) tr
Hpr_tr: pr_tr = Some (trX, e1)
Htr1: tr1 = trX ++ itrX
trX': list (composite_transition_item IM)
eqv_descriptors: equivocator_descriptors IM
Htr: equivocators_trace_project_folder a (Some (trX ++ itrX, e1)) = Some (trX', eqv_descriptors)

trX0 : list (composite_transition_item IM), equivocators_trace_project_folder a (Some (trX, e1)) = Some (trX0, eqv_descriptors) ∧ trX' = trX0 ++ itrX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
a: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
itrX: list (composite_transition_item IM)
ieqv_descriptors: equivocator_descriptors IM
tr1: list (composite_transition_item IM)
e1: equivocator_descriptors IM
trX: list (composite_transition_item IM)
Heqpr_itrX_tr: Some (trX ++ itrX, e1) = foldr equivocators_trace_project_folder (Some (itrX, ieqv_descriptors)) tr
pr_tr: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqpr_tr: Some (trX, e1) = foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) tr
Hpr_tr: pr_tr = Some (trX, e1)
Htr1: tr1 = trX ++ itrX
trX': list (composite_transition_item IM)
eqv_descriptors: equivocator_descriptors IM
Htr: match equivocators_transition_item_project e1 a with | Some (Some item', odescriptor) => Some (item' :: trX ++ itrX, odescriptor) | Some (None, odescriptor) => Some (trX ++ itrX, odescriptor) | None => None end = Some (trX', eqv_descriptors)

trX0 : list (composite_transition_item IM), equivocators_trace_project_folder a (Some (trX, e1)) = Some (trX0, eqv_descriptors) ∧ trX' = trX0 ++ itrX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
a: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
itrX: list (composite_transition_item IM)
ieqv_descriptors: equivocator_descriptors IM
tr1: list (composite_transition_item IM)
e1: equivocator_descriptors IM
trX: list (composite_transition_item IM)
Heqpr_itrX_tr: Some (trX ++ itrX, e1) = foldr equivocators_trace_project_folder (Some (itrX, ieqv_descriptors)) tr
pr_tr: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqpr_tr: Some (trX, e1) = foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) tr
Hpr_tr: pr_tr = Some (trX, e1)
Htr1: tr1 = trX ++ itrX
trX': list (composite_transition_item IM)
eqv_descriptors: equivocator_descriptors IM
Htr: match equivocators_transition_item_project e1 a with | Some (Some item', odescriptor) => Some (item' :: trX ++ itrX, odescriptor) | Some (None, odescriptor) => Some (trX ++ itrX, odescriptor) | None => None end = Some (trX', eqv_descriptors)

trX0 : list (composite_transition_item IM), match equivocators_transition_item_project e1 a with | Some (Some item', odescriptor) => Some (item' :: trX, odescriptor) | Some (None, odescriptor) => Some (trX, odescriptor) | None => None end = Some (trX0, eqv_descriptors) ∧ trX' = trX0 ++ itrX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
a: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
itrX: list (composite_transition_item IM)
ieqv_descriptors: equivocator_descriptors IM
tr1: list (composite_transition_item IM)
e1: equivocator_descriptors IM
trX: list (composite_transition_item IM)
Heqpr_itrX_tr: Some (trX ++ itrX, e1) = foldr equivocators_trace_project_folder (Some (itrX, ieqv_descriptors)) tr
pr_tr: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqpr_tr: Some (trX, e1) = foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) tr
Hpr_tr: pr_tr = Some (trX, e1)
Htr1: tr1 = trX ++ itrX
trX': list (composite_transition_item IM)
eqv_descriptors: equivocator_descriptors IM
oitem: option (composite_transition_item IM)
eqv_descriptors'': equivocator_descriptors IM
Ha: equivocators_transition_item_project e1 a = Some (oitem, eqv_descriptors'')
Htr: match oitem with | Some item' => Some (item' :: trX ++ itrX, eqv_descriptors'') | None => Some (trX ++ itrX, eqv_descriptors'') end = Some (trX', eqv_descriptors)

trX0 : list (composite_transition_item IM), match oitem with | Some item' => Some (item' :: trX, eqv_descriptors'') | None => Some (trX, eqv_descriptors'') end = Some (trX0, eqv_descriptors) ∧ trX' = trX0 ++ itrX
by destruct oitem; inversion Htr; eexists _.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
a: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
itrX: list (composite_transition_item IM)
ieqv_descriptors: equivocator_descriptors IM
pr_itrX_tr: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqpr_itrX_tr: pr_itrX_tr = foldr equivocators_trace_project_folder (Some (itrX, ieqv_descriptors)) tr
pr_tr: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqpr_tr: pr_tr = foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) tr
IHtr: (trX' : list (composite_transition_item IM)) (eqv_descriptors : equivocator_descriptors IM), pr_itrX_tr = Some (trX', eqv_descriptors) ↔ ( trX : list (composite_transition_item IM), pr_tr = Some (trX, eqv_descriptors) ∧ trX' = trX ++ itrX)
trX': list (composite_transition_item IM)
eqv_descriptors: equivocator_descriptors IM

( trX : list (composite_transition_item IM), equivocators_trace_project_folder a pr_tr = Some (trX, eqv_descriptors) ∧ trX' = trX ++ itrX) → equivocators_trace_project_folder a pr_itrX_tr = Some (trX', eqv_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
a: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
itrX: list (composite_transition_item IM)
ieqv_descriptors: equivocator_descriptors IM
pr_itrX_tr: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqpr_itrX_tr: pr_itrX_tr = foldr equivocators_trace_project_folder (Some (itrX, ieqv_descriptors)) tr
pr_tr: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqpr_tr: pr_tr = foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) tr
IHtr: (trX' : list (composite_transition_item IM)) (eqv_descriptors : equivocator_descriptors IM), pr_itrX_tr = Some (trX', eqv_descriptors) ↔ ( trX : list (composite_transition_item IM), pr_tr = Some (trX, eqv_descriptors) ∧ trX' = trX ++ itrX)
trX': list (composite_transition_item IM)
eqv_descriptors: equivocator_descriptors IM
trX: list (composite_transition_item IM)
Htr: equivocators_trace_project_folder a pr_tr = Some (trX, eqv_descriptors)
HtrX': trX' = trX ++ itrX

equivocators_trace_project_folder a pr_itrX_tr = Some (trX', eqv_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
a: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
itrX: list (composite_transition_item IM)
ieqv_descriptors: equivocator_descriptors IM
pr_itrX_tr: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqpr_itrX_tr: pr_itrX_tr = foldr equivocators_trace_project_folder (Some (itrX, ieqv_descriptors)) tr
pr_tr: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqpr_tr: pr_tr = foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) tr
IHtr: (trX' : list (composite_transition_item IM)) (eqv_descriptors : equivocator_descriptors IM), pr_itrX_tr = Some (trX', eqv_descriptors) ↔ ( trX : list (composite_transition_item IM), pr_tr = Some (trX, eqv_descriptors) ∧ trX' = trX ++ itrX)
eqv_descriptors: equivocator_descriptors IM
trX: list (composite_transition_item IM)
Htr: equivocators_trace_project_folder a pr_tr = Some (trX, eqv_descriptors)

equivocators_trace_project_folder a pr_itrX_tr = Some (trX ++ itrX, eqv_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
a: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
itrX: list (composite_transition_item IM)
ieqv_descriptors: equivocator_descriptors IM
pr_itrX_tr: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqpr_itrX_tr: pr_itrX_tr = foldr equivocators_trace_project_folder (Some (itrX, ieqv_descriptors)) tr
tr1: list (composite_transition_item IM)
e1: equivocator_descriptors IM
Heqpr_tr: Some (tr1, e1) = foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) tr
IHtr: (trX' : list (composite_transition_item IM)) (eqv_descriptors : equivocator_descriptors IM), pr_itrX_tr = Some (trX', eqv_descriptors) ↔ ( trX : list (composite_transition_item IM), Some (tr1, e1) = Some (trX, eqv_descriptors) ∧ trX' = trX ++ itrX)
eqv_descriptors: equivocator_descriptors IM
trX: list (composite_transition_item IM)
Htr: equivocators_trace_project_folder a (Some (tr1, e1)) = Some (trX, eqv_descriptors)

equivocators_trace_project_folder a pr_itrX_tr = Some (trX ++ itrX, eqv_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
a: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
itrX: list (composite_transition_item IM)
ieqv_descriptors: equivocator_descriptors IM
pr_itrX_tr: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqpr_itrX_tr: pr_itrX_tr = foldr equivocators_trace_project_folder (Some (itrX, ieqv_descriptors)) tr
tr1: list (composite_transition_item IM)
e1: equivocator_descriptors IM
Heqpr_tr: Some (tr1, e1) = foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) tr
IHtr: pr_itrX_tr = Some (tr1 ++ itrX, e1) ↔ ( trX : list (composite_transition_item IM), Some (tr1, e1) = Some (trX, e1) ∧ tr1 ++ itrX = trX ++ itrX)
eqv_descriptors: equivocator_descriptors IM
trX: list (composite_transition_item IM)
Htr: equivocators_trace_project_folder a (Some (tr1, e1)) = Some (trX, eqv_descriptors)

equivocators_trace_project_folder a pr_itrX_tr = Some (trX ++ itrX, eqv_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
a: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
itrX: list (composite_transition_item IM)
ieqv_descriptors: equivocator_descriptors IM
pr_itrX_tr: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqpr_itrX_tr: pr_itrX_tr = foldr equivocators_trace_project_folder (Some (itrX, ieqv_descriptors)) tr
tr1: list (composite_transition_item IM)
e1: equivocator_descriptors IM
Heqpr_tr: Some (tr1, e1) = foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) tr
IHtr: ( trX : list (composite_transition_item IM), Some (tr1, e1) = Some (trX, e1) ∧ tr1 ++ itrX = trX ++ itrX) → pr_itrX_tr = Some (tr1 ++ itrX, e1)
eqv_descriptors: equivocator_descriptors IM
trX: list (composite_transition_item IM)
Htr: equivocators_trace_project_folder a (Some (tr1, e1)) = Some (trX, eqv_descriptors)

equivocators_trace_project_folder a pr_itrX_tr = Some (trX ++ itrX, eqv_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
a: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
itrX: list (composite_transition_item IM)
ieqv_descriptors: equivocator_descriptors IM
pr_itrX_tr: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqpr_itrX_tr: pr_itrX_tr = foldr equivocators_trace_project_folder (Some (itrX, ieqv_descriptors)) tr
tr1: list (composite_transition_item IM)
e1: equivocator_descriptors IM
Heqpr_tr: Some (tr1, e1) = foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) tr
IHtr: ( trX : list (composite_transition_item IM), Some (tr1, e1) = Some (trX, e1) ∧ tr1 ++ itrX = trX ++ itrX) → pr_itrX_tr = Some (tr1 ++ itrX, e1)
eqv_descriptors: equivocator_descriptors IM
trX: list (composite_transition_item IM)
Htr: equivocators_trace_project_folder a (Some (tr1, e1)) = Some (trX, eqv_descriptors)

equivocators_trace_project_folder a (Some (tr1 ++ itrX, e1)) = Some (trX ++ itrX, eqv_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
a: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
itrX: list (composite_transition_item IM)
ieqv_descriptors: equivocator_descriptors IM
pr_itrX_tr: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqpr_itrX_tr: pr_itrX_tr = foldr equivocators_trace_project_folder (Some (itrX, ieqv_descriptors)) tr
tr1: list (composite_transition_item IM)
e1: equivocator_descriptors IM
Heqpr_tr: Some (tr1, e1) = foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) tr
IHtr: ( trX : list (composite_transition_item IM), Some (tr1, e1) = Some (trX, e1) ∧ tr1 ++ itrX = trX ++ itrX) → pr_itrX_tr = Some (tr1 ++ itrX, e1)
eqv_descriptors: equivocator_descriptors IM
trX: list (composite_transition_item IM)
Htr: match equivocators_transition_item_project e1 a with | Some (Some item', odescriptor) => Some (item' :: tr1, odescriptor) | Some (None, odescriptor) => Some (tr1, odescriptor) | None => None end = Some (trX, eqv_descriptors)

match equivocators_transition_item_project e1 a with | Some (Some item', odescriptor) => Some (item' :: tr1 ++ itrX, odescriptor) | Some (None, odescriptor) => Some (tr1 ++ itrX, odescriptor) | None => None end = Some (trX ++ itrX, eqv_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
a: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
itrX: list (composite_transition_item IM)
ieqv_descriptors: equivocator_descriptors IM
pr_itrX_tr: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqpr_itrX_tr: pr_itrX_tr = foldr equivocators_trace_project_folder (Some (itrX, ieqv_descriptors)) tr
tr1: list (composite_transition_item IM)
e1: equivocator_descriptors IM
Heqpr_tr: Some (tr1, e1) = foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) tr
IHtr: ( trX : list (composite_transition_item IM), Some (tr1, e1) = Some (trX, e1) ∧ tr1 ++ itrX = trX ++ itrX) → pr_itrX_tr = Some (tr1 ++ itrX, e1)
eqv_descriptors: equivocator_descriptors IM
trX: list (composite_transition_item IM)
oitem: option (composite_transition_item IM)
odescriptor: equivocator_descriptors IM
Ha: equivocators_transition_item_project e1 a = Some (oitem, odescriptor)
Htr: match oitem with | Some item' => Some (item' :: tr1, odescriptor) | None => Some (tr1, odescriptor) end = Some (trX, eqv_descriptors)

match oitem with | Some item' => Some (item' :: tr1 ++ itrX, odescriptor) | None => Some (tr1 ++ itrX, odescriptor) end = Some (trX ++ itrX, eqv_descriptors)
by destruct oitem as [item' |]; inversion Htr. Qed.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
itrX, trX: list (composite_transition_item IM)
ieqv_descriptors, eqv_descriptors: equivocator_descriptors IM
Htr: foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) tr = Some (trX, eqv_descriptors)

foldr equivocators_trace_project_folder (Some (itrX, ieqv_descriptors)) tr = Some (trX ++ itrX, eqv_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
itrX, trX: list (composite_transition_item IM)
ieqv_descriptors, eqv_descriptors: equivocator_descriptors IM
Htr: foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) tr = Some (trX, eqv_descriptors)

foldr equivocators_trace_project_folder (Some (itrX, ieqv_descriptors)) tr = Some (trX ++ itrX, eqv_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
itrX, trX: list (composite_transition_item IM)
ieqv_descriptors, eqv_descriptors: equivocator_descriptors IM
Htr: foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) tr = Some (trX, eqv_descriptors)

trX0 : list (composite_transition_item IM), foldr equivocators_trace_project_folder (Some ([], ieqv_descriptors)) tr = Some (trX0, eqv_descriptors) ∧ trX ++ itrX = trX0 ++ itrX
by exists trX. Qed.
The projection of an equivocators trace is obtained by traversing the trace from right to left guided by the descriptors produced by equivocators_transition_item_project and gathering all non-empty transition_items it produces.
Definition equivocators_trace_project
  (eqv_descriptors : equivocator_descriptors IM)
  (tr : list (composite_transition_item (equivocator_IM IM)))
  : option (list (composite_transition_item IM) * equivocator_descriptors IM)
  :=
  fold_right
    equivocators_trace_project_folder
    (Some ([], eqv_descriptors))
    tr.

message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
pre, suf: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors, eqv_descriptors: equivocator_descriptors IM
trX: list (composite_transition_item IM)

equivocators_trace_project eqv_descriptors (pre ++ suf) = Some (trX, ieqv_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' pre = Some (preX, ieqv_descriptors) ∧ trX = preX ++ sufX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
pre, suf: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors, eqv_descriptors: equivocator_descriptors IM
trX: list (composite_transition_item IM)

equivocators_trace_project eqv_descriptors (pre ++ suf) = Some (trX, ieqv_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' pre = Some (preX, ieqv_descriptors) ∧ trX = preX ++ sufX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
pre, suf: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors, eqv_descriptors: equivocator_descriptors IM
trX: list (composite_transition_item IM)

foldr equivocators_trace_project_folder (Some ([], eqv_descriptors)) (pre ++ suf) = Some (trX, ieqv_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), foldr equivocators_trace_project_folder (Some ([], eqv_descriptors)) suf = Some (sufX, eqv_descriptors') ∧ foldr equivocators_trace_project_folder (Some ([], eqv_descriptors')) pre = Some (preX, ieqv_descriptors) ∧ trX = preX ++ sufX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
pre, suf: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors, eqv_descriptors: equivocator_descriptors IM
trX: list (composite_transition_item IM)

foldr equivocators_trace_project_folder (foldr equivocators_trace_project_folder (Some ([], eqv_descriptors)) suf) pre = Some (trX, ieqv_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), foldr equivocators_trace_project_folder (Some ([], eqv_descriptors)) suf = Some (sufX, eqv_descriptors') ∧ foldr equivocators_trace_project_folder (Some ([], eqv_descriptors')) pre = Some (preX, ieqv_descriptors) ∧ trX = preX ++ sufX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
pre, suf: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors, eqv_descriptors: equivocator_descriptors IM
trX: list (composite_transition_item IM)

foldr equivocators_trace_project_folder (foldr equivocators_trace_project_folder (Some ([], eqv_descriptors)) suf) pre = Some (trX, ieqv_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), foldr equivocators_trace_project_folder (Some ([], eqv_descriptors)) suf = Some (sufX, eqv_descriptors') ∧ foldr equivocators_trace_project_folder (Some ([], eqv_descriptors')) pre = Some (preX, ieqv_descriptors) ∧ trX = preX ++ sufX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
pre, suf: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors, eqv_descriptors: equivocator_descriptors IM
trX: list (composite_transition_item IM)
r_sufX: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqr_sufX: r_sufX = foldr equivocators_trace_project_folder (Some ([], eqv_descriptors)) suf

foldr equivocators_trace_project_folder r_sufX pre = Some (trX, ieqv_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), r_sufX = Some (sufX, eqv_descriptors') ∧ foldr equivocators_trace_project_folder (Some ([], eqv_descriptors')) pre = Some (preX, ieqv_descriptors) ∧ trX = preX ++ sufX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
pre, suf: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors, eqv_descriptors: equivocator_descriptors IM
trX, sufX: list (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
Heqr_sufX: Some (sufX, eqv_descriptors') = foldr equivocators_trace_project_folder (Some ([], eqv_descriptors)) suf

foldr equivocators_trace_project_folder (Some (sufX, eqv_descriptors')) pre = Some (trX, ieqv_descriptors) ↔ ( (preX sufX0 : list (composite_transition_item IM)) (eqv_descriptors'0 : equivocator_descriptors IM), Some (sufX, eqv_descriptors') = Some (sufX0, eqv_descriptors'0) ∧ foldr equivocators_trace_project_folder (Some ([], eqv_descriptors'0)) pre = Some (preX, ieqv_descriptors) ∧ trX = preX ++ sufX0)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
pre, suf: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors, eqv_descriptors: equivocator_descriptors IM
trX, sufX: list (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
Heqr_sufX: Some (sufX, eqv_descriptors') = foldr equivocators_trace_project_folder (Some ([], eqv_descriptors)) suf

( trX0 : list (composite_transition_item IM), foldr equivocators_trace_project_folder (Some ([], eqv_descriptors')) pre = Some (trX0, ieqv_descriptors) ∧ trX = trX0 ++ sufX) ↔ ( (preX sufX0 : list (composite_transition_item IM)) (eqv_descriptors'0 : equivocator_descriptors IM), Some (sufX, eqv_descriptors') = Some (sufX0, eqv_descriptors'0) ∧ foldr equivocators_trace_project_folder (Some ([], eqv_descriptors'0)) pre = Some (preX, ieqv_descriptors) ∧ trX = preX ++ sufX0)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
pre, suf: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors, eqv_descriptors: equivocator_descriptors IM
trX, sufX: list (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
Heqr_sufX: Some (sufX, eqv_descriptors') = foldr equivocators_trace_project_folder (Some ([], eqv_descriptors)) suf

( trX0 : list (composite_transition_item IM), foldr equivocators_trace_project_folder (Some ([], eqv_descriptors')) pre = Some (trX0, ieqv_descriptors) ∧ trX = trX0 ++ sufX) → (preX sufX0 : list (composite_transition_item IM)) (eqv_descriptors'0 : equivocator_descriptors IM), Some (sufX, eqv_descriptors') = Some (sufX0, eqv_descriptors'0) ∧ foldr equivocators_trace_project_folder (Some ([], eqv_descriptors'0)) pre = Some (preX, ieqv_descriptors) ∧ trX = preX ++ sufX0
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
pre, suf: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors, eqv_descriptors: equivocator_descriptors IM
trX, sufX: list (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
Heqr_sufX: Some (sufX, eqv_descriptors') = foldr equivocators_trace_project_folder (Some ([], eqv_descriptors)) suf
( (preX sufX0 : list (composite_transition_item IM)) (eqv_descriptors'0 : equivocator_descriptors IM), Some (sufX, eqv_descriptors') = Some (sufX0, eqv_descriptors'0) ∧ foldr equivocators_trace_project_folder (Some ([], eqv_descriptors'0)) pre = Some (preX, ieqv_descriptors) ∧ trX = preX ++ sufX0) → trX0 : list (composite_transition_item IM), foldr equivocators_trace_project_folder (Some ([], eqv_descriptors')) pre = Some (trX0, ieqv_descriptors) ∧ trX = trX0 ++ sufX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
pre, suf: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors, eqv_descriptors: equivocator_descriptors IM
trX, sufX: list (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
Heqr_sufX: Some (sufX, eqv_descriptors') = foldr equivocators_trace_project_folder (Some ([], eqv_descriptors)) suf

( trX0 : list (composite_transition_item IM), foldr equivocators_trace_project_folder (Some ([], eqv_descriptors')) pre = Some (trX0, ieqv_descriptors) ∧ trX = trX0 ++ sufX) → (preX sufX0 : list (composite_transition_item IM)) (eqv_descriptors'0 : equivocator_descriptors IM), Some (sufX, eqv_descriptors') = Some (sufX0, eqv_descriptors'0) ∧ foldr equivocators_trace_project_folder (Some ([], eqv_descriptors'0)) pre = Some (preX, ieqv_descriptors) ∧ trX = preX ++ sufX0
by intros (preX & HpreX & HtrX); exists preX, sufX, eqv_descriptors'.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
pre, suf: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors, eqv_descriptors: equivocator_descriptors IM
trX, sufX: list (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
Heqr_sufX: Some (sufX, eqv_descriptors') = foldr equivocators_trace_project_folder (Some ([], eqv_descriptors)) suf

( (preX sufX0 : list (composite_transition_item IM)) (eqv_descriptors'0 : equivocator_descriptors IM), Some (sufX, eqv_descriptors') = Some (sufX0, eqv_descriptors'0) ∧ foldr equivocators_trace_project_folder (Some ([], eqv_descriptors'0)) pre = Some (preX, ieqv_descriptors) ∧ trX = preX ++ sufX0) → trX0 : list (composite_transition_item IM), foldr equivocators_trace_project_folder (Some ([], eqv_descriptors')) pre = Some (trX0, ieqv_descriptors) ∧ trX = trX0 ++ sufX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
pre, suf: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors, eqv_descriptors: equivocator_descriptors IM
trX, sufX: list (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
Heqr_sufX: Some (sufX, eqv_descriptors') = foldr equivocators_trace_project_folder (Some ([], eqv_descriptors)) suf
preX, _sufX: list (composite_transition_item IM)
_eqv_descriptors': equivocator_descriptors IM
Heq: Some (sufX, eqv_descriptors') = Some (_sufX, _eqv_descriptors')
Hpre: foldr equivocators_trace_project_folder (Some ([], _eqv_descriptors')) pre = Some (preX, ieqv_descriptors)
HtrX: trX = preX ++ _sufX

trX0 : list (composite_transition_item IM), foldr equivocators_trace_project_folder (Some ([], eqv_descriptors')) pre = Some (trX0, ieqv_descriptors) ∧ trX = trX0 ++ sufX
by exists preX; inversion Heq; subst. Qed.
For every transition_item of the projection of a trace over the composition of equivocators, there exists a corresponding item in the original trace which projects to it.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors, eqv_descriptors: equivocator_descriptors IM
preX, sufX: list (composite_transition_item IM)
itemX: composite_transition_item IM

equivocators_trace_project eqv_descriptors tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors, eqv_descriptors: equivocator_descriptors IM
preX, sufX: list (composite_transition_item IM)
itemX: composite_transition_item IM

equivocators_trace_project eqv_descriptors tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors, eqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM

sufX : list (composite_transition_item IM), equivocators_trace_project eqv_descriptors tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM

(eqv_descriptors : equivocator_descriptors IM) (sufX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
eqv_descriptors: equivocator_descriptors IM
sufX: list (composite_transition_item IM)

equivocators_trace_project eqv_descriptors [] = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ [] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
IHtr: (eqv_descriptors : equivocator_descriptors IM) (sufX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
sufX: list (composite_transition_item IM)
equivocators_trace_project eqv_descriptors (tr ++ [x]) = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
eqv_descriptors: equivocator_descriptors IM
sufX: list (composite_transition_item IM)

equivocators_trace_project eqv_descriptors [] = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ [] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
sufX: list (composite_transition_item IM)
Hnil: [] = preX ++ itemX :: sufX

(pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project ieqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ [] = pre ++ item :: suf
by destruct preX; inversion Hnil.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
IHtr: (eqv_descriptors : equivocator_descriptors IM) (sufX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
sufX: list (composite_transition_item IM)

equivocators_trace_project eqv_descriptors (tr ++ [x]) = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
IHtr: (eqv_descriptors : equivocator_descriptors IM) (sufX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
sufX: list (composite_transition_item IM)
Hsome: equivocators_trace_project eqv_descriptors (tr ++ [x]) = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors)

(pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
IHtr: (eqv_descriptors : equivocator_descriptors IM) (sufX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
sufX, trX', xX: list (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
Hpr_x: equivocators_trace_project eqv_descriptors [x] = Some (xX, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' tr = Some (trX', ieqv_descriptors)
Heq: preX ++ [itemX] ++ sufX = trX' ++ xX

(pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
IHtr: (eqv_descriptors : equivocator_descriptors IM) (sufX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
sufX, trX', xX: list (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
Hpr_x: match equivocators_transition_item_project eqv_descriptors x with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (xX, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' tr = Some (trX', ieqv_descriptors)
Heq: preX ++ [itemX] ++ sufX = trX' ++ xX

(pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
IHtr: (eqv_descriptors : equivocator_descriptors IM) (sufX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
sufX, trX', xX: list (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
ox: option (composite_transition_item IM)
descriptorx: equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (ox, descriptorx)
Hpr_x: match ox with | Some item' => Some ([item'], descriptorx) | None => Some ([], descriptorx) end = Some (xX, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' tr = Some (trX', ieqv_descriptors)
Heq: preX ++ [itemX] ++ sufX = trX' ++ xX

(pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
IHtr: (eqv_descriptors : equivocator_descriptors IM) (sufX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
sufX, trX': list (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
ox: option (composite_transition_item IM)
descriptorx: equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (ox, descriptorx)
Hpr_x: match ox with | Some item' => Some ([item'], descriptorx) | None => Some ([], descriptorx) end = Some ([], eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' tr = Some (trX', ieqv_descriptors)
Heq: preX ++ [itemX] ++ sufX = trX' ++ []

(pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
IHtr: (eqv_descriptors : equivocator_descriptors IM) (sufX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
sufX, trX': list (composite_transition_item IM)
xX: composite_transition_item IM
_empty: list (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
ox: option (composite_transition_item IM)
descriptorx: equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (ox, descriptorx)
Hpr_x: match ox with | Some item' => Some ([item'], descriptorx) | None => Some ([], descriptorx) end = Some (xX :: _empty, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' tr = Some (trX', ieqv_descriptors)
Heq: preX ++ [itemX] ++ sufX = trX' ++ xX :: _empty
(pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
IHtr: (eqv_descriptors : equivocator_descriptors IM) (sufX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
sufX, trX': list (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
ox: option (composite_transition_item IM)
descriptorx: equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (ox, descriptorx)
Hpr_x: match ox with | Some item' => Some ([item'], descriptorx) | None => Some ([], descriptorx) end = Some ([], eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' tr = Some (trX', ieqv_descriptors)
Heq: preX ++ [itemX] ++ sufX = trX' ++ []

(pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
IHtr: (eqv_descriptors : equivocator_descriptors IM) (sufX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
sufX, trX': list (composite_transition_item IM)
eqv_descriptors', descriptorx: equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (None, descriptorx)
Hpr_x: Some ([], descriptorx) = Some ([], eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' tr = Some (trX', ieqv_descriptors)
Heq: preX ++ [itemX] ++ sufX = trX' ++ []

(pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
IHtr: (eqv_descriptors : equivocator_descriptors IM) (sufX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
sufX, trX': list (composite_transition_item IM)
eqv_descriptors', descriptorx: equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (None, descriptorx)
Hpr_x: Some ([], descriptorx) = Some ([], eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' tr = Some (trX', ieqv_descriptors)
Heq: preX ++ [itemX] ++ sufX = trX' ++ []
H2: descriptorx = eqv_descriptors'

(pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
IHtr: (eqv_descriptors : equivocator_descriptors IM) (sufX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
sufX, trX': list (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
Hpr_x: Some ([], eqv_descriptors') = Some ([], eqv_descriptors')
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (None, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' tr = Some (trX', ieqv_descriptors)
Heq: preX ++ [itemX] ++ sufX = trX' ++ []

(pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
IHtr: (eqv_descriptors : equivocator_descriptors IM) (sufX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
sufX, trX': list (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (None, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' tr = Some (trX', ieqv_descriptors)
Heq: preX ++ [itemX] ++ sufX = trX' ++ []

(pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
IHtr: (eqv_descriptors : equivocator_descriptors IM) (sufX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
sufX, trX': list (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (None, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' tr = Some (trX', ieqv_descriptors)
Heq: preX ++ [itemX] ++ sufX = trX'

(pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
IHtr: (eqv_descriptors : equivocator_descriptors IM) (sufX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
sufX: list (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (None, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors)

(pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
sufX: list (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
IHtr: (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors' suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (None, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors)

(pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
sufX: list (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
pre, suf: list (composite_transition_item (equivocator_IM IM))
item: composite_transition_item (equivocator_IM IM)
item_descriptors, pre_descriptors: equivocator_descriptors IM
Hpr_suf: equivocators_trace_project eqv_descriptors' suf = Some (sufX, item_descriptors)
Hpr_item: equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors)
Hpr_pre: equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors)
Heqtr: tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (None, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors)

(pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
sufX: list (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
pre, suf: list (composite_transition_item (equivocator_IM IM))
item: composite_transition_item (equivocator_IM IM)
item_descriptors, pre_descriptors: equivocator_descriptors IM
Hpr_suf: equivocators_trace_project eqv_descriptors' suf = Some (sufX, item_descriptors)
Hpr_item: equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors)
Hpr_pre: equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors)
Heqtr: tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (None, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors)

equivocators_trace_project eqv_descriptors (suf ++ [x]) = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf ++ [x]
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
sufX: list (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
pre, suf: list (composite_transition_item (equivocator_IM IM))
item: composite_transition_item (equivocator_IM IM)
item_descriptors, pre_descriptors: equivocator_descriptors IM
Hpr_suf: equivocators_trace_project eqv_descriptors' suf = Some (sufX, item_descriptors)
Hpr_item: equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors)
Hpr_pre: equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors)
eqv_descriptors: equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (None, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' (pre ++ [item] ++ suf) = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors)

equivocators_trace_project eqv_descriptors (suf ++ [x]) = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ (pre ++ [item] ++ suf) ++ [x] = pre ++ [item] ++ suf ++ [x]
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
sufX: list (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
pre, suf: list (composite_transition_item (equivocator_IM IM))
item: composite_transition_item (equivocator_IM IM)
item_descriptors, pre_descriptors: equivocator_descriptors IM
Hpr_suf: equivocators_trace_project eqv_descriptors' suf = Some (sufX, item_descriptors)
Hpr_item: equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors)
Hpr_pre: equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors)
eqv_descriptors: equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (None, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' (pre ++ [item] ++ suf) = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors)

equivocators_trace_project eqv_descriptors (suf ++ [x]) = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ ((pre ++ [item]) ++ suf) ++ [x] = ((pre ++ [item]) ++ suf) ++ [x]
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
sufX: list (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
pre, suf: list (composite_transition_item (equivocator_IM IM))
item: composite_transition_item (equivocator_IM IM)
item_descriptors, pre_descriptors: equivocator_descriptors IM
Hpr_suf: equivocators_trace_project eqv_descriptors' suf = Some (sufX, item_descriptors)
Hpr_item: equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors)
Hpr_pre: equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors)
eqv_descriptors: equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (None, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' (pre ++ [item] ++ suf) = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors)

equivocators_trace_project eqv_descriptors (suf ++ [x]) = Some (sufX, item_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
sufX: list (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
pre, suf: list (composite_transition_item (equivocator_IM IM))
item: composite_transition_item (equivocator_IM IM)
item_descriptors, pre_descriptors: equivocator_descriptors IM
Hpr_suf: equivocators_trace_project eqv_descriptors' suf = Some (sufX, item_descriptors)
Hpr_item: equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors)
Hpr_pre: equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors)
eqv_descriptors: equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (None, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' (pre ++ [item] ++ suf) = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors)

(preX sufX0 : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors [x] = Some (sufX0, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' suf = Some (preX, item_descriptors) ∧ sufX = preX ++ sufX0
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
sufX: list (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
pre, suf: list (composite_transition_item (equivocator_IM IM))
item: composite_transition_item (equivocator_IM IM)
item_descriptors, pre_descriptors: equivocator_descriptors IM
Hpr_suf: equivocators_trace_project eqv_descriptors' suf = Some (sufX, item_descriptors)
Hpr_item: equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors)
Hpr_pre: equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors)
eqv_descriptors: equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (None, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' (pre ++ [item] ++ suf) = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors)

equivocators_trace_project eqv_descriptors [x] = Some ([], eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' suf = Some (sufX, item_descriptors) ∧ sufX = sufX ++ []
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
sufX: list (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
pre, suf: list (composite_transition_item (equivocator_IM IM))
item: composite_transition_item (equivocator_IM IM)
item_descriptors, pre_descriptors: equivocator_descriptors IM
Hpr_suf: equivocators_trace_project eqv_descriptors' suf = Some (sufX, item_descriptors)
Hpr_item: equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors)
Hpr_pre: equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors)
eqv_descriptors: equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (None, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' (pre ++ [item] ++ suf) = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors)

equivocators_trace_project eqv_descriptors [x] = Some ([], eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' suf = Some (sufX, item_descriptors) ∧ sufX = sufX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
sufX: list (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
pre, suf: list (composite_transition_item (equivocator_IM IM))
item: composite_transition_item (equivocator_IM IM)
item_descriptors, pre_descriptors: equivocator_descriptors IM
Hpr_suf: equivocators_trace_project eqv_descriptors' suf = Some (sufX, item_descriptors)
Hpr_item: equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors)
Hpr_pre: equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors)
eqv_descriptors: equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (None, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' (pre ++ [item] ++ suf) = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors)

equivocators_trace_project eqv_descriptors [x] = Some ([], eqv_descriptors')
by simpl; rewrite Hpr_x_item.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
IHtr: (eqv_descriptors : equivocator_descriptors IM) (sufX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
sufX, trX': list (composite_transition_item IM)
xX: composite_transition_item IM
_empty: list (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
ox: option (composite_transition_item IM)
descriptorx: equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (ox, descriptorx)
Hpr_x: match ox with | Some item' => Some ([item'], descriptorx) | None => Some ([], descriptorx) end = Some (xX :: _empty, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' tr = Some (trX', ieqv_descriptors)
Heq: preX ++ [itemX] ++ sufX = trX' ++ xX :: _empty

(pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
IHtr: (eqv_descriptors : equivocator_descriptors IM) (sufX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
sufX, trX': list (composite_transition_item IM)
xX: composite_transition_item IM
_empty: list (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
c: composite_transition_item IM
descriptorx: equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (Some c, descriptorx)
Hpr_x: Some ([c], descriptorx) = Some (xX :: _empty, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' tr = Some (trX', ieqv_descriptors)
Heq: preX ++ [itemX] ++ sufX = trX' ++ xX :: _empty

(pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
IHtr: (eqv_descriptors : equivocator_descriptors IM) (sufX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
sufX, trX': list (composite_transition_item IM)
xX: composite_transition_item IM
_empty: list (composite_transition_item IM)
eqv_descriptors': equivocator_descriptors IM
c: composite_transition_item IM
descriptorx: equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (Some c, descriptorx)
Hpr_x: Some ([c], descriptorx) = Some (xX :: _empty, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' tr = Some (trX', ieqv_descriptors)
Heq: preX ++ [itemX] ++ sufX = trX' ++ xX :: _empty
H2: c = xX
H3: [] = _empty
H4: descriptorx = eqv_descriptors'

(pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
IHtr: (eqv_descriptors : equivocator_descriptors IM) (sufX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
sufX, trX': list (composite_transition_item IM)
xX: composite_transition_item IM
eqv_descriptors': equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (Some xX, eqv_descriptors')
Hpr_x: Some ([xX], eqv_descriptors') = Some ([xX], eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' tr = Some (trX', ieqv_descriptors)
Heq: preX ++ [itemX] ++ sufX = trX' ++ [xX]

(pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
IHtr: (eqv_descriptors : equivocator_descriptors IM) (sufX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
sufX, trX': list (composite_transition_item IM)
xX: composite_transition_item IM
eqv_descriptors': equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (Some xX, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' tr = Some (trX', ieqv_descriptors)
Heq: preX ++ [itemX] ++ sufX = trX' ++ [xX]

(pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
IHtr: (eqv_descriptors : equivocator_descriptors IM) (sufX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
sufX, trX': list (composite_transition_item IM)
xX: composite_transition_item IM
eqv_descriptors': equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (Some xX, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' tr = Some (trX', ieqv_descriptors)
Heq: preX ++ [itemX] ++ [] = trX' ++ [xX]
Heq_sufX: sufX = []

(pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some ([], item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
IHtr: (eqv_descriptors : equivocator_descriptors IM) (sufX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
sufX, trX': list (composite_transition_item IM)
xX: composite_transition_item IM
eqv_descriptors': equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (Some xX, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' tr = Some (trX', ieqv_descriptors)
sufX': list (composite_transition_item IM)
_xX: composite_transition_item IM
Heq: preX ++ [itemX] ++ sufX' ++ [_xX] = trX' ++ [xX]
Heq_sufX: sufX = sufX' ++ [_xX]
(pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX' ++ [_xX], item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
IHtr: (eqv_descriptors : equivocator_descriptors IM) (sufX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
sufX, trX': list (composite_transition_item IM)
xX: composite_transition_item IM
eqv_descriptors': equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (Some xX, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' tr = Some (trX', ieqv_descriptors)
Heq: preX ++ [itemX] ++ [] = trX' ++ [xX]
Heq_sufX: sufX = []

(pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some ([], item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
IHtr: (eqv_descriptors : equivocator_descriptors IM) (sufX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
trX': list (composite_transition_item IM)
xX: composite_transition_item IM
eqv_descriptors': equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (Some xX, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' tr = Some (trX', ieqv_descriptors)
Heq: preX ++ [itemX] ++ [] = trX' ++ [xX]

(pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some ([], item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
IHtr: (eqv_descriptors : equivocator_descriptors IM) (sufX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
trX': list (composite_transition_item IM)
xX: composite_transition_item IM
eqv_descriptors': equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (Some xX, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' tr = Some (trX', ieqv_descriptors)
Heq: preX ++ [itemX] = trX' ++ [xX]

(pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some ([], item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
IHtr: (eqv_descriptors : equivocator_descriptors IM) (sufX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
trX': list (composite_transition_item IM)
xX: composite_transition_item IM
eqv_descriptors': equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (Some xX, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' tr = Some (trX', ieqv_descriptors)
Heq: preX = trX' ∧ itemX = xX

(pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some ([], item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
IHtr: (eqv_descriptors : equivocator_descriptors IM) (sufX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
trX': list (composite_transition_item IM)
xX: composite_transition_item IM
eqv_descriptors': equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (Some xX, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' tr = Some (trX', ieqv_descriptors)
H1: preX = trX'
H2: itemX = xX

(pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some ([], item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
trX': list (composite_transition_item IM)
xX: composite_transition_item IM
IHtr: (eqv_descriptors : equivocator_descriptors IM) (sufX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors tr = Some (trX' ++ [xX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some xX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (trX', ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
eqv_descriptors, eqv_descriptors': equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (Some xX, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' tr = Some (trX', ieqv_descriptors)

(pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some ([], item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some xX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (trX', ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
trX': list (composite_transition_item IM)
xX: composite_transition_item IM
IHtr: (eqv_descriptors : equivocator_descriptors IM) (sufX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors tr = Some (trX' ++ [xX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some xX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (trX', ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
eqv_descriptors, eqv_descriptors': equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (Some xX, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' tr = Some (trX', ieqv_descriptors)

equivocators_trace_project eqv_descriptors [] = Some ([], eqv_descriptors) ∧ equivocators_transition_item_project eqv_descriptors x = Some (Some xX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (trX', ieqv_descriptors) ∧ tr ++ [x] = tr ++ [x] ++ []
by rewrite app_nil_r.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
IHtr: (eqv_descriptors : equivocator_descriptors IM) (sufX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
sufX, trX': list (composite_transition_item IM)
xX: composite_transition_item IM
eqv_descriptors': equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (Some xX, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' tr = Some (trX', ieqv_descriptors)
sufX': list (composite_transition_item IM)
_xX: composite_transition_item IM
Heq: preX ++ [itemX] ++ sufX' ++ [_xX] = trX' ++ [xX]
Heq_sufX: sufX = sufX' ++ [_xX]

(pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX' ++ [_xX], item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
IHtr: (eqv_descriptors : equivocator_descriptors IM) (sufX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
trX': list (composite_transition_item IM)
xX: composite_transition_item IM
eqv_descriptors': equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (Some xX, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' tr = Some (trX', ieqv_descriptors)
sufX': list (composite_transition_item IM)
_xX: composite_transition_item IM
Heq: preX ++ [itemX] ++ sufX' ++ [_xX] = trX' ++ [xX]

(pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX' ++ [_xX], item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
IHtr: (eqv_descriptors : equivocator_descriptors IM) (sufX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
trX': list (composite_transition_item IM)
xX: composite_transition_item IM
eqv_descriptors': equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (Some xX, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' tr = Some (trX', ieqv_descriptors)
sufX': list (composite_transition_item IM)
_xX: composite_transition_item IM
Heq: ((preX ++ [itemX]) ++ sufX') ++ [_xX] = trX' ++ [xX]

(pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX' ++ [_xX], item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
IHtr: (eqv_descriptors : equivocator_descriptors IM) (sufX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
trX': list (composite_transition_item IM)
xX: composite_transition_item IM
eqv_descriptors': equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (Some xX, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' tr = Some (trX', ieqv_descriptors)
sufX': list (composite_transition_item IM)
_xX: composite_transition_item IM
Heq: (preX ++ [itemX]) ++ sufX' = trX' ∧ _xX = xX

(pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX' ++ [_xX], item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
IHtr: (eqv_descriptors : equivocator_descriptors IM) (sufX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
trX': list (composite_transition_item IM)
xX: composite_transition_item IM
eqv_descriptors': equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (Some xX, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' tr = Some (trX', ieqv_descriptors)
sufX': list (composite_transition_item IM)
_xX: composite_transition_item IM
Heq: preX ++ [itemX] ++ sufX' = trX' ∧ _xX = xX

(pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX' ++ [_xX], item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
IHtr: (eqv_descriptors : equivocator_descriptors IM) (sufX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
trX': list (composite_transition_item IM)
xX: composite_transition_item IM
eqv_descriptors': equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (Some xX, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' tr = Some (trX', ieqv_descriptors)
sufX': list (composite_transition_item IM)
_xX: composite_transition_item IM
H1: preX ++ [itemX] ++ sufX' = trX'
H2: _xX = xX

(pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX' ++ [_xX], item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
IHtr: (eqv_descriptors : equivocator_descriptors IM) (sufX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
xX: composite_transition_item IM
eqv_descriptors': equivocator_descriptors IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (Some xX, eqv_descriptors')
sufX': list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project eqv_descriptors' tr = Some (preX ++ [itemX] ++ sufX', ieqv_descriptors)

(pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX' ++ [xX], item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
eqv_descriptors': equivocator_descriptors IM
sufX': list (composite_transition_item IM)
IHtr: (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors' suf = Some (sufX', item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
xX: composite_transition_item IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (Some xX, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' tr = Some (preX ++ [itemX] ++ sufX', ieqv_descriptors)

(pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX' ++ [xX], item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
eqv_descriptors': equivocator_descriptors IM
sufX': list (composite_transition_item IM)
pre, suf: list (composite_transition_item (equivocator_IM IM))
item: composite_transition_item (equivocator_IM IM)
item_descriptors, pre_descriptors: equivocator_descriptors IM
Hpr_suf: equivocators_trace_project eqv_descriptors' suf = Some (sufX', item_descriptors)
Hpr_item: equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors)
Hpr_pre: equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors)
Heqtr: tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
xX: composite_transition_item IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (Some xX, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' tr = Some (preX ++ [itemX] ++ sufX', ieqv_descriptors)

(pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX' ++ [xX], item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
eqv_descriptors': equivocator_descriptors IM
sufX': list (composite_transition_item IM)
pre, suf: list (composite_transition_item (equivocator_IM IM))
item: composite_transition_item (equivocator_IM IM)
item_descriptors, pre_descriptors: equivocator_descriptors IM
Hpr_suf: equivocators_trace_project eqv_descriptors' suf = Some (sufX', item_descriptors)
Hpr_item: equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors)
Hpr_pre: equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors)
Heqtr: tr = pre ++ [item] ++ suf
eqv_descriptors: equivocator_descriptors IM
xX: composite_transition_item IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (Some xX, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' tr = Some (preX ++ [itemX] ++ sufX', ieqv_descriptors)

equivocators_trace_project eqv_descriptors (suf ++ [x]) = Some (sufX' ++ [xX], item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr ++ [x] = pre ++ [item] ++ suf ++ [x]
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
eqv_descriptors': equivocator_descriptors IM
sufX': list (composite_transition_item IM)
pre, suf: list (composite_transition_item (equivocator_IM IM))
item: composite_transition_item (equivocator_IM IM)
item_descriptors, pre_descriptors: equivocator_descriptors IM
Hpr_suf: equivocators_trace_project eqv_descriptors' suf = Some (sufX', item_descriptors)
Hpr_item: equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors)
Hpr_pre: equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors)
eqv_descriptors: equivocator_descriptors IM
xX: composite_transition_item IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (Some xX, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' (pre ++ [item] ++ suf) = Some (preX ++ [itemX] ++ sufX', ieqv_descriptors)

equivocators_trace_project eqv_descriptors (suf ++ [x]) = Some (sufX' ++ [xX], item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ (pre ++ [item] ++ suf) ++ [x] = pre ++ [item] ++ suf ++ [x]
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
eqv_descriptors': equivocator_descriptors IM
sufX': list (composite_transition_item IM)
pre, suf: list (composite_transition_item (equivocator_IM IM))
item: composite_transition_item (equivocator_IM IM)
item_descriptors, pre_descriptors: equivocator_descriptors IM
Hpr_suf: equivocators_trace_project eqv_descriptors' suf = Some (sufX', item_descriptors)
Hpr_item: equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors)
Hpr_pre: equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors)
eqv_descriptors: equivocator_descriptors IM
xX: composite_transition_item IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (Some xX, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' (pre ++ [item] ++ suf) = Some (preX ++ [itemX] ++ sufX', ieqv_descriptors)

equivocators_trace_project eqv_descriptors (suf ++ [x]) = Some (sufX' ++ [xX], item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ ((pre ++ [item]) ++ suf) ++ [x] = ((pre ++ [item]) ++ suf) ++ [x]
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
eqv_descriptors': equivocator_descriptors IM
sufX': list (composite_transition_item IM)
pre, suf: list (composite_transition_item (equivocator_IM IM))
item: composite_transition_item (equivocator_IM IM)
item_descriptors, pre_descriptors: equivocator_descriptors IM
Hpr_suf: equivocators_trace_project eqv_descriptors' suf = Some (sufX', item_descriptors)
Hpr_item: equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors)
Hpr_pre: equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors)
eqv_descriptors: equivocator_descriptors IM
xX: composite_transition_item IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (Some xX, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' (pre ++ [item] ++ suf) = Some (preX ++ [itemX] ++ sufX', ieqv_descriptors)

equivocators_trace_project eqv_descriptors (suf ++ [x]) = Some (sufX' ++ [xX], item_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
eqv_descriptors': equivocator_descriptors IM
sufX': list (composite_transition_item IM)
pre, suf: list (composite_transition_item (equivocator_IM IM))
item: composite_transition_item (equivocator_IM IM)
item_descriptors, pre_descriptors: equivocator_descriptors IM
Hpr_suf: equivocators_trace_project eqv_descriptors' suf = Some (sufX', item_descriptors)
Hpr_item: equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors)
Hpr_pre: equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors)
eqv_descriptors: equivocator_descriptors IM
xX: composite_transition_item IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (Some xX, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' (pre ++ [item] ++ suf) = Some (preX ++ [itemX] ++ sufX', ieqv_descriptors)

(preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors [x] = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' suf = Some (preX, item_descriptors) ∧ sufX' ++ [xX] = preX ++ sufX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
eqv_descriptors': equivocator_descriptors IM
sufX': list (composite_transition_item IM)
pre, suf: list (composite_transition_item (equivocator_IM IM))
item: composite_transition_item (equivocator_IM IM)
item_descriptors, pre_descriptors: equivocator_descriptors IM
Hpr_suf: equivocators_trace_project eqv_descriptors' suf = Some (sufX', item_descriptors)
Hpr_item: equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors)
Hpr_pre: equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors)
eqv_descriptors: equivocator_descriptors IM
xX: composite_transition_item IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (Some xX, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' (pre ++ [item] ++ suf) = Some (preX ++ [itemX] ++ sufX', ieqv_descriptors)

equivocators_trace_project eqv_descriptors [x] = Some ([xX], eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' suf = Some (sufX', item_descriptors) ∧ sufX' ++ [xX] = sufX' ++ [xX]
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
ieqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
eqv_descriptors': equivocator_descriptors IM
sufX': list (composite_transition_item IM)
pre, suf: list (composite_transition_item (equivocator_IM IM))
item: composite_transition_item (equivocator_IM IM)
item_descriptors, pre_descriptors: equivocator_descriptors IM
Hpr_suf: equivocators_trace_project eqv_descriptors' suf = Some (sufX', item_descriptors)
Hpr_item: equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors)
Hpr_pre: equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors)
eqv_descriptors: equivocator_descriptors IM
xX: composite_transition_item IM
Hpr_x_item: equivocators_transition_item_project eqv_descriptors x = Some (Some xX, eqv_descriptors')
Hpr_tr: equivocators_trace_project eqv_descriptors' (pre ++ [item] ++ suf) = Some (preX ++ [itemX] ++ sufX', ieqv_descriptors)

equivocators_trace_project eqv_descriptors [x] = Some ([xX], eqv_descriptors')
by simpl; rewrite Hpr_x_item. Qed.
A corollary of the above, reflecting a split in the projection to the original trace.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors, eqv_descriptors: equivocator_descriptors IM
preX, sufX: list (composite_transition_item IM)

equivocators_trace_project eqv_descriptors tr = Some (preX ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (eqv_descriptors' : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors, eqv_descriptors: equivocator_descriptors IM
preX, sufX: list (composite_transition_item IM)

equivocators_trace_project eqv_descriptors tr = Some (preX ++ sufX, ieqv_descriptors) → (pre suf : list (composite_transition_item (equivocator_IM IM))) (eqv_descriptors' : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors, eqv_descriptors: equivocator_descriptors IM
preX, sufX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project eqv_descriptors tr = Some (preX ++ sufX, ieqv_descriptors)

(pre suf : list (composite_transition_item (equivocator_IM IM))) (eqv_descriptors' : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors, eqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project eqv_descriptors tr = Some (preX ++ [], ieqv_descriptors)

(pre suf : list (composite_transition_item (equivocator_IM IM))) (eqv_descriptors' : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some ([], eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors, eqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
sufX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project eqv_descriptors tr = Some (preX ++ itemX :: sufX, ieqv_descriptors)
(pre suf : list (composite_transition_item (equivocator_IM IM))) (eqv_descriptors' : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (itemX :: sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors, eqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project eqv_descriptors tr = Some (preX ++ [], ieqv_descriptors)

(pre suf : list (composite_transition_item (equivocator_IM IM))) (eqv_descriptors' : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some ([], eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors, eqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project eqv_descriptors tr = Some (preX, ieqv_descriptors)

(pre suf : list (composite_transition_item (equivocator_IM IM))) (eqv_descriptors' : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some ([], eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors, eqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project eqv_descriptors tr = Some (preX, ieqv_descriptors)

equivocators_trace_project eqv_descriptors [] = Some ([], eqv_descriptors) ∧ equivocators_trace_project eqv_descriptors tr = Some (preX, ieqv_descriptors) ∧ tr = tr ++ []
by rewrite app_nil_r.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors, eqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
sufX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project eqv_descriptors tr = Some (preX ++ itemX :: sufX, ieqv_descriptors)

(pre suf : list (composite_transition_item (equivocator_IM IM))) (eqv_descriptors' : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (itemX :: sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors, eqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
sufX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project eqv_descriptors tr = Some (preX ++ [itemX] ++ sufX, ieqv_descriptors)

(pre suf : list (composite_transition_item (equivocator_IM IM))) (eqv_descriptors' : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (itemX :: sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors, eqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
sufX: list (composite_transition_item IM)
Hpr_tr: (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf

(pre suf : list (composite_transition_item (equivocator_IM IM))) (eqv_descriptors' : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (itemX :: sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors, eqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
sufX: list (composite_transition_item IM)
pre, suf: list (composite_transition_item (equivocator_IM IM))
item: composite_transition_item (equivocator_IM IM)
item_descriptors, pre_descriptors: equivocator_descriptors IM
Hpr_suf: equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors)
Hpr_item: equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors)
Hpr_pre: equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors)
Heqtr: tr = pre ++ [item] ++ suf

(pre suf : list (composite_transition_item (equivocator_IM IM))) (eqv_descriptors' : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (itemX :: sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
ieqv_descriptors, eqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
sufX: list (composite_transition_item IM)
pre, suf: list (composite_transition_item (equivocator_IM IM))
item: composite_transition_item (equivocator_IM IM)
item_descriptors, pre_descriptors: equivocator_descriptors IM
Hpr_suf: equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors)
Hpr_item: equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors)
Hpr_pre: equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors)
Heqtr: tr = pre ++ [item] ++ suf

equivocators_trace_project eqv_descriptors ([item] ++ suf) = Some (itemX :: sufX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ tr = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
ieqv_descriptors, eqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
sufX: list (composite_transition_item IM)
pre, suf: list (composite_transition_item (equivocator_IM IM))
item: composite_transition_item (equivocator_IM IM)
item_descriptors, pre_descriptors: equivocator_descriptors IM
Hpr_suf: equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors)
Hpr_item: equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors)
Hpr_pre: equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors)

equivocators_trace_project eqv_descriptors ([item] ++ suf) = Some (itemX :: sufX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors) ∧ pre ++ [item] ++ suf = pre ++ [item] ++ suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
ieqv_descriptors, eqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
sufX: list (composite_transition_item IM)
pre, suf: list (composite_transition_item (equivocator_IM IM))
item: composite_transition_item (equivocator_IM IM)
item_descriptors, pre_descriptors: equivocator_descriptors IM
Hpr_suf: equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors)
Hpr_item: equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors)
Hpr_pre: equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors)

equivocators_trace_project eqv_descriptors ([item] ++ suf) = Some (itemX :: sufX, pre_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
ieqv_descriptors, eqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
sufX: list (composite_transition_item IM)
pre, suf: list (composite_transition_item (equivocator_IM IM))
item: composite_transition_item (equivocator_IM IM)
item_descriptors, pre_descriptors: equivocator_descriptors IM
Hpr_suf: equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors)
Hpr_item: equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors)
Hpr_pre: equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors)

(preX sufX0 : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors suf = Some (sufX0, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' [item] = Some (preX, pre_descriptors) ∧ itemX :: sufX = preX ++ sufX0
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
ieqv_descriptors, eqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
sufX: list (composite_transition_item IM)
pre, suf: list (composite_transition_item (equivocator_IM IM))
item: composite_transition_item (equivocator_IM IM)
item_descriptors, pre_descriptors: equivocator_descriptors IM
Hpr_suf: equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors)
Hpr_item: equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors)
Hpr_pre: equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors)

equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_trace_project item_descriptors [item] = Some ([itemX], pre_descriptors) ∧ itemX :: sufX = [itemX] ++ sufX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
ieqv_descriptors, eqv_descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
itemX: composite_transition_item IM
sufX: list (composite_transition_item IM)
pre, suf: list (composite_transition_item (equivocator_IM IM))
item: composite_transition_item (equivocator_IM IM)
item_descriptors, pre_descriptors: equivocator_descriptors IM
Hpr_suf: equivocators_trace_project eqv_descriptors suf = Some (sufX, item_descriptors)
Hpr_item: equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors)
Hpr_pre: equivocators_trace_project pre_descriptors pre = Some (preX, ieqv_descriptors)

equivocators_trace_project item_descriptors [item] = Some ([itemX], pre_descriptors)
by simpl; rewrite Hpr_item. Qed.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors, idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
trX: list (composite_transition_item IM)
is, s: composite_state (equivocator_IM IM)
Htr: finite_constrained_trace_from_to (free_composite_vlsm (equivocator_IM IM)) is s tr
Hdescriptors: proper_equivocator_descriptors IM descriptors s
Hproject_tr: equivocators_trace_project descriptors tr = Some (trX, idescriptors)

set_union (equivocating_indices IM (enum index) is) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors, idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
trX: list (composite_transition_item IM)
is, s: composite_state (equivocator_IM IM)
Htr: finite_constrained_trace_from_to (free_composite_vlsm (equivocator_IM IM)) is s tr
Hdescriptors: proper_equivocator_descriptors IM descriptors s
Hproject_tr: equivocators_trace_project descriptors tr = Some (trX, idescriptors)

set_union (equivocating_indices IM (enum index) is) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors, idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
is, s: composite_state (equivocator_IM IM)
Htr: finite_constrained_trace_from_to (free_composite_vlsm (equivocator_IM IM)) is s tr
Hdescriptors: proper_equivocator_descriptors IM descriptors s

trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → set_union (equivocating_indices IM (enum index) is) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
is, s: composite_state (equivocator_IM IM)
Htr: finite_constrained_trace_from_to (free_composite_vlsm (equivocator_IM IM)) is s tr

descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors s → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → set_union (equivocating_indices IM (enum index) is) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
si, s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) si s tr
sf: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) l (s, iom) (sf, oom)
IHHtr: descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors s → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → set_union (equivocating_indices IM (enum index) si) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) descriptors)

descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors sf → trX : list (composite_transition_item IM), equivocators_trace_project descriptors (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}]) = Some (trX, idescriptors) → set_union (equivocating_indices IM (enum index) si) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) sf) (newmachine_descriptors_list IM (enum index) descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
si, s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) si s tr
sf: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) l (s, iom) (sf, oom)
IHHtr: descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors s → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → set_union (equivocating_indices IM (enum index) si) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) descriptors)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item

descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors sf → trX : list (composite_transition_item IM), equivocators_trace_project descriptors (tr ++ [x]) = Some (trX, idescriptors) → set_union (equivocating_indices IM (enum index) si) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) sf) (newmachine_descriptors_list IM (enum index) descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
si, s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) si s tr
sf: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) l (s, iom) (sf, oom)
IHHtr: descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors s → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → set_union (equivocating_indices IM (enum index) si) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) descriptors)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors sf
trX: list (composite_transition_item IM)
Hproject_tr: equivocators_trace_project descriptors (tr ++ [x]) = Some (trX, idescriptors)

set_union (equivocating_indices IM (enum index) si) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) sf) (newmachine_descriptors_list IM (enum index) descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
si, s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) si s tr
sf: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) l (s, iom) (sf, oom)
IHHtr: descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors s → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → set_union (equivocating_indices IM (enum index) si) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) descriptors)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors sf
trX: list (composite_transition_item IM)
Hproject_tr: (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), equivocators_trace_project descriptors [x] = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, idescriptors) ∧ trX = preX ++ sufX

set_union (equivocating_indices IM (enum index) si) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) sf) (newmachine_descriptors_list IM (enum index) descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
si, s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) si s tr
sf: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) l (s, iom) (sf, oom)
IHHtr: descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors s → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → set_union (equivocating_indices IM (enum index) si) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) descriptors)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors sf
trX, preX, sufX: list (composite_transition_item IM)
descriptors': equivocator_descriptors IM
Hproject_x: equivocators_trace_project descriptors [x] = Some (sufX, descriptors')
Hproject_tr: equivocators_trace_project descriptors' tr = Some (preX, idescriptors)

set_union (equivocating_indices IM (enum index) si) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) sf) (newmachine_descriptors_list IM (enum index) descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
si, s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) si s tr
sf: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) l (s, iom) (sf, oom)
IHHtr: descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors s → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → set_union (equivocating_indices IM (enum index) si) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) descriptors)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors sf
trX, preX, sufX: list (composite_transition_item IM)
descriptors': equivocator_descriptors IM
Hproject_x: match equivocators_transition_item_project descriptors x with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, descriptors')
Hproject_tr: equivocators_trace_project descriptors' tr = Some (preX, idescriptors)

set_union (equivocating_indices IM (enum index) si) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) sf) (newmachine_descriptors_list IM (enum index) descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
si, s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) si s tr
sf: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) l (s, iom) (sf, oom)
IHHtr: descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors s → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → set_union (equivocating_indices IM (enum index) si) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) descriptors)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors sf
trX, preX, sufX: list (composite_transition_item IM)
descriptors': equivocator_descriptors IM
oitemx: option (composite_transition_item IM)
_descriptors': equivocator_descriptors IM
Hpr_x: equivocators_transition_item_project descriptors x = Some (oitemx, _descriptors')
Hproject_x: match oitemx with | Some item' => Some ([item'], _descriptors') | None => Some ([], _descriptors') end = Some (sufX, descriptors')
Hproject_tr: equivocators_trace_project descriptors' tr = Some (preX, idescriptors)

set_union (equivocating_indices IM (enum index) si) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) sf) (newmachine_descriptors_list IM (enum index) descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
si, s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) si s tr
sf: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) l (s, iom) (sf, oom)
IHHtr: descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors s → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → set_union (equivocating_indices IM (enum index) si) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) descriptors)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors sf
trX, preX, sufX: list (composite_transition_item IM)
descriptors': equivocator_descriptors IM
oitemx: option (composite_transition_item IM)
Hproject_x: match oitemx with | Some item' => Some ([item'], descriptors') | None => Some ([], descriptors') end = Some (sufX, descriptors')
Hpr_x: equivocators_transition_item_project descriptors x = Some (oitemx, descriptors')
Hproject_tr: equivocators_trace_project descriptors' tr = Some (preX, idescriptors)

set_union (equivocating_indices IM (enum index) si) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) sf) (newmachine_descriptors_list IM (enum index) descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
si, s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) si s tr
sf: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) l (s, iom) (sf, oom)
IHHtr: descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors s → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → set_union (equivocating_indices IM (enum index) si) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) descriptors)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors sf
preX: list (composite_transition_item IM)
descriptors': equivocator_descriptors IM
oitemx: option (composite_transition_item IM)
Hpr_x: equivocators_transition_item_project descriptors x = Some (oitemx, descriptors')
Hproject_tr: equivocators_trace_project descriptors' tr = Some (preX, idescriptors)

set_union (equivocating_indices IM (enum index) si) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) sf) (newmachine_descriptors_list IM (enum index) descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
si, s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) si s tr
sf: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
Hv: valid l (s, iom)
Ht: transition l (s, iom) = (sf, oom)
IHHtr: descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors s → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → set_union (equivocating_indices IM (enum index) si) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) descriptors)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors sf
preX: list (composite_transition_item IM)
descriptors': equivocator_descriptors IM
oitemx: option (composite_transition_item IM)
Hpr_x: equivocators_transition_item_project descriptors x = Some (oitemx, descriptors')
Hproject_tr: equivocators_trace_project descriptors' tr = Some (preX, idescriptors)

set_union (equivocating_indices IM (enum index) si) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) sf) (newmachine_descriptors_list IM (enum index) descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
si, s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) si s tr
sf: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
Hv: valid l (s, iom)
Ht: transition l (s, iom) = (sf, oom)
IHHtr: descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors s → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → set_union (equivocating_indices IM (enum index) si) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) descriptors)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors sf
preX: list (composite_transition_item IM)
descriptors': equivocator_descriptors IM
oitemx: option (composite_transition_item IM)
Hpr_x: equivocators_transition_item_project descriptors x = Some (oitemx, descriptors')
Hproject_tr: equivocators_trace_project descriptors' tr = Some (preX, idescriptors)
Hx_preserves: set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) descriptors') ⊆ set_union (equivocating_indices IM (enum index) (destination x)) (newmachine_descriptors_list IM (enum index) descriptors)

set_union (equivocating_indices IM (enum index) si) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) sf) (newmachine_descriptors_list IM (enum index) descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
si, s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) si s tr
sf: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
Hv: valid l (s, iom)
Ht: transition l (s, iom) = (sf, oom)
IHHtr: descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors s → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → set_union (equivocating_indices IM (enum index) si) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) descriptors)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors sf
preX: list (composite_transition_item IM)
descriptors': equivocator_descriptors IM
oitemx: option (composite_transition_item IM)
Hpr_x: equivocators_transition_item_project descriptors x = Some (oitemx, descriptors')
Hproject_tr: equivocators_trace_project descriptors' tr = Some (preX, idescriptors)
Hx_preserves: set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) descriptors') ⊆ set_union (equivocating_indices IM (enum index) (destination x)) (newmachine_descriptors_list IM (enum index) descriptors)
Hpr_x_char: (oitem : option (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), equivocators_transition_item_project descriptors x = Some (oitem, eqv_descriptors') ∧ match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (VLSM.l x))) (projT2 (VLSM.l x)), existT (projT1 (VLSM.l x)) (existing_equivocator_label_extract (IM (projT1 (VLSM.l x))) (projT2 (VLSM.l x)) Hex) = VLSM.l itemx) ∧ input x = input itemx ∧ output x = output itemx ∧ equivocators_state_project IM descriptors (destination x) = destination itemx ∧ eqv_descriptors' (projT1 (VLSM.l x)) = equivocator_label_descriptor (projT2 (VLSM.l x)) | None => True end ∧ ( s : composite_state (equivocator_IM IM), composite_valid (equivocator_IM IM) (VLSM.l x) ( s, input x) → composite_transition (equivocator_IM IM) (VLSM.l x) ( s, input x) = (destination x, output x) → proper_equivocator_descriptors IM eqv_descriptors' s ∧ eqv_descriptors' = equivocator_descriptors_update IM descriptors (projT1 (VLSM.l x)) (eqv_descriptors' (projT1 (VLSM.l x))) ∧ s = state_update (equivocator_IM IM) (destination x) (projT1 (VLSM.l x)) (s (projT1 (VLSM.l x))) ∧ previous_state_descriptor_prop (IM (projT1 (VLSM.l x))) (descriptors (projT1 (VLSM.l x))) (s (projT1 (VLSM.l x))) (eqv_descriptors' (projT1 (VLSM.l x))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM eqv_descriptors' s → composite_valid IM (VLSM.l itemx) (sx, input itemx) ∧ composite_transition IM (VLSM.l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM descriptors (destination x) = equivocators_state_project IM eqv_descriptors' s end)

set_union (equivocating_indices IM (enum index) si) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) sf) (newmachine_descriptors_list IM (enum index) descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
si, s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) si s tr
sf: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
Hv: valid l (s, iom)
Ht: transition l (s, iom) = (sf, oom)
IHHtr: descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors s → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → set_union (equivocating_indices IM (enum index) si) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) descriptors)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors sf
preX: list (composite_transition_item IM)
descriptors': equivocator_descriptors IM
oitemx: option (composite_transition_item IM)
Hpr_x: equivocators_transition_item_project descriptors x = Some (oitemx, descriptors')
Hproject_tr: equivocators_trace_project descriptors' tr = Some (preX, idescriptors)
Hx_preserves: set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) descriptors') ⊆ set_union (equivocating_indices IM (enum index) (destination x)) (newmachine_descriptors_list IM (enum index) descriptors)
Hpr_x_char: (oitem : option (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), Some (oitemx, descriptors') = Some (oitem, eqv_descriptors') ∧ match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (VLSM.l x))) (projT2 (VLSM.l x)), existT (projT1 (VLSM.l x)) (existing_equivocator_label_extract (IM (projT1 (VLSM.l x))) (projT2 (VLSM.l x)) Hex) = VLSM.l itemx) ∧ input x = input itemx ∧ output x = output itemx ∧ equivocators_state_project IM descriptors (destination x) = destination itemx ∧ eqv_descriptors' (projT1 (VLSM.l x)) = equivocator_label_descriptor (projT2 (VLSM.l x)) | None => True end ∧ ( s : composite_state (equivocator_IM IM), composite_valid (equivocator_IM IM) (VLSM.l x) ( s, input x) → composite_transition (equivocator_IM IM) (VLSM.l x) ( s, input x) = (destination x, output x) → proper_equivocator_descriptors IM eqv_descriptors' s ∧ eqv_descriptors' = equivocator_descriptors_update IM descriptors (projT1 (VLSM.l x)) (eqv_descriptors' (projT1 (VLSM.l x))) ∧ s = state_update (equivocator_IM IM) (destination x) (projT1 (VLSM.l x)) (s (projT1 (VLSM.l x))) ∧ previous_state_descriptor_prop (IM (projT1 (VLSM.l x))) (descriptors (projT1 (VLSM.l x))) (s (projT1 (VLSM.l x))) (eqv_descriptors' (projT1 (VLSM.l x))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM eqv_descriptors' s → composite_valid IM (VLSM.l itemx) (sx, input itemx) ∧ composite_transition IM (VLSM.l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM descriptors (destination x) = equivocators_state_project IM eqv_descriptors' s end)

set_union (equivocating_indices IM (enum index) si) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) sf) (newmachine_descriptors_list IM (enum index) descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
si, s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) si s tr
sf: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
Hv: valid l (s, iom)
Ht: transition l (s, iom) = (sf, oom)
IHHtr: descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors s → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → set_union (equivocating_indices IM (enum index) si) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) descriptors)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors sf
preX: list (composite_transition_item IM)
descriptors': equivocator_descriptors IM
oitemx: option (composite_transition_item IM)
Hpr_x: equivocators_transition_item_project descriptors x = Some (oitemx, descriptors')
Hproject_tr: equivocators_trace_project descriptors' tr = Some (preX, idescriptors)
Hx_preserves: set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) descriptors') ⊆ set_union (equivocating_indices IM (enum index) (destination x)) (newmachine_descriptors_list IM (enum index) descriptors)
Hchar2: s : composite_state (equivocator_IM IM), composite_valid (equivocator_IM IM) (VLSM.l x) (s, input x) → composite_transition (equivocator_IM IM) (VLSM.l x) (s, input x) = (destination x, output x) → proper_equivocator_descriptors IM descriptors' s ∧ descriptors' = equivocator_descriptors_update IM descriptors (projT1 (VLSM.l x)) (descriptors' (projT1 (VLSM.l x))) ∧ s = state_update (equivocator_IM IM) (destination x) (projT1 (VLSM.l x)) (s (projT1 (VLSM.l x))) ∧ previous_state_descriptor_prop (IM (projT1 (VLSM.l x))) (descriptors (projT1 (VLSM.l x))) (s (projT1 (VLSM.l x))) (descriptors' (projT1 (VLSM.l x))) ∧ match oitemx with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM descriptors' s → composite_valid IM (VLSM.l itemx) (sx, input itemx) ∧ composite_transition IM (VLSM.l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM descriptors (destination x) = equivocators_state_project IM descriptors' s end

set_union (equivocating_indices IM (enum index) si) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) sf) (newmachine_descriptors_list IM (enum index) descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
si, s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) si s tr
sf: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
Hv: valid l (s, iom)
Ht: transition l (s, iom) = (sf, oom)
IHHtr: descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors s → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → set_union (equivocating_indices IM (enum index) si) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) descriptors)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors sf
preX: list (composite_transition_item IM)
descriptors': equivocator_descriptors IM
oitemx: option (composite_transition_item IM)
Hpr_x: equivocators_transition_item_project descriptors x = Some (oitemx, descriptors')
Hproject_tr: equivocators_trace_project descriptors' tr = Some (preX, idescriptors)
Hx_preserves: set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) descriptors') ⊆ set_union (equivocating_indices IM (enum index) (destination x)) (newmachine_descriptors_list IM (enum index) descriptors)
Hdescriptors': proper_equivocator_descriptors IM descriptors' s

set_union (equivocating_indices IM (enum index) si) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) sf) (newmachine_descriptors_list IM (enum index) descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
si, s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) si s tr
sf: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
Hv: valid l (s, iom)
Ht: transition l (s, iom) = (sf, oom)
descriptors': equivocator_descriptors IM
IHHtr: set_union (equivocating_indices IM (enum index) si) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) descriptors')
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors sf
preX: list (composite_transition_item IM)
oitemx: option (composite_transition_item IM)
Hpr_x: equivocators_transition_item_project descriptors x = Some (oitemx, descriptors')
Hproject_tr: equivocators_trace_project descriptors' tr = Some (preX, idescriptors)
Hx_preserves: set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) descriptors') ⊆ set_union (equivocating_indices IM (enum index) (destination x)) (newmachine_descriptors_list IM (enum index) descriptors)
Hdescriptors': proper_equivocator_descriptors IM descriptors' s

set_union (equivocating_indices IM (enum index) si) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) sf) (newmachine_descriptors_list IM (enum index) descriptors)
by etransitivity. Qed.
The state and descriptors obtained after applying equivocators_trace_project on a preloaded valid trace satisfy the previous_state_descriptor_property.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors, idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
trX: list (composite_transition_item IM)
is, s: composite_state (equivocator_IM IM)
Htr: finite_constrained_trace_from_to (free_composite_vlsm (equivocator_IM IM)) is s tr
Hdescriptors: proper_equivocator_descriptors IM descriptors s
Hproject_tr: equivocators_trace_project descriptors tr = Some (trX, idescriptors)

eqv : index, previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors, idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
trX: list (composite_transition_item IM)
is, s: composite_state (equivocator_IM IM)
Htr: finite_constrained_trace_from_to (free_composite_vlsm (equivocator_IM IM)) is s tr
Hdescriptors: proper_equivocator_descriptors IM descriptors s
Hproject_tr: equivocators_trace_project descriptors tr = Some (trX, idescriptors)

eqv : index, previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors, idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
is, s: composite_state (equivocator_IM IM)
Htr: finite_constrained_trace_from_to (free_composite_vlsm (equivocator_IM IM)) is s tr
Hdescriptors: proper_equivocator_descriptors IM descriptors s

trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
is, s: composite_state (equivocator_IM IM)
Htr: finite_constrained_trace_from_to (free_composite_vlsm (equivocator_IM IM)) is s tr

descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors s → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)

s : composite_state (equivocator_IM IM), finite_constrained_trace_from_to (free_composite_vlsm (equivocator_IM IM)) is s tr → descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors s → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
is, s: composite_state (equivocator_IM IM)
Htr: finite_constrained_trace_from_to (free_composite_vlsm (equivocator_IM IM)) is s []
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors s
trX: list (composite_transition_item IM)
Hproject_tr: equivocators_trace_project descriptors [] = Some (trX, idescriptors)
eqv: index

previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: s : composite_state (equivocator_IM IM), finite_constrained_trace_from_to (free_composite_vlsm (equivocator_IM IM)) is s tr → descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors s → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
s: composite_state (equivocator_IM IM)
Htr: finite_constrained_trace_from_to (free_composite_vlsm (equivocator_IM IM)) is s (tr ++ [x])
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors s
trX: list (composite_transition_item IM)
Hproject_tr: equivocators_trace_project descriptors (tr ++ [x]) = Some (trX, idescriptors)
eqv: index
previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
is, s: composite_state (equivocator_IM IM)
Htr: finite_constrained_trace_from_to (free_composite_vlsm (equivocator_IM IM)) is s []
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors s
trX: list (composite_transition_item IM)
Hproject_tr: equivocators_trace_project descriptors [] = Some (trX, idescriptors)
eqv: index

previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
by inversion Hproject_tr; subst; destruct (idescriptors eqv); simpl; [| lia].
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: s : composite_state (equivocator_IM IM), finite_constrained_trace_from_to (free_composite_vlsm (equivocator_IM IM)) is s tr → descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors s → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
s: composite_state (equivocator_IM IM)
Htr: finite_constrained_trace_from_to (free_composite_vlsm (equivocator_IM IM)) is s (tr ++ [x])
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors s
trX: list (composite_transition_item IM)
Hproject_tr: equivocators_trace_project descriptors (tr ++ [x]) = Some (trX, idescriptors)
eqv: index

previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: s : composite_state (equivocator_IM IM), finite_constrained_trace_from_to (free_composite_vlsm (equivocator_IM IM)) is s tr → descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors s → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
s: composite_state (equivocator_IM IM)
Htr: finite_constrained_trace_from_to (free_composite_vlsm (equivocator_IM IM)) is s (tr ++ [x])
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors s
trX: list (composite_transition_item IM)
Hproject_tr: equivocators_trace_project descriptors (tr ++ [x]) = Some (trX, idescriptors)
eqv: index
Heq_s: finite_trace_last is (tr ++ [x]) = s

previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: s : composite_state (equivocator_IM IM), finite_constrained_trace_from_to (free_composite_vlsm (equivocator_IM IM)) is s tr → descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors s → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
s: composite_state (equivocator_IM IM)
Htr: finite_constrained_trace_from_to (free_composite_vlsm (equivocator_IM IM)) is s (tr ++ [x])
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors s
trX: list (composite_transition_item IM)
Hproject_tr: equivocators_trace_project descriptors (tr ++ [x]) = Some (trX, idescriptors)
eqv: index
Heq_s: destination x = s

previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: s : composite_state (equivocator_IM IM), finite_constrained_trace_from_to (free_composite_vlsm (equivocator_IM IM)) is s tr → descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors s → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
Htr: finite_constrained_trace_from_to (free_composite_vlsm (equivocator_IM IM)) is (destination x) (tr ++ [x])
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors (destination x)
trX: list (composite_transition_item IM)
Hproject_tr: equivocators_trace_project descriptors (tr ++ [x]) = Some (trX, idescriptors)
eqv: index

previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: s : composite_state (equivocator_IM IM), finite_constrained_trace_from_to (free_composite_vlsm (equivocator_IM IM)) is s tr → descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors s → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr ∧ finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) (finite_trace_last is tr) (destination x) [x]
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors (destination x)
trX: list (composite_transition_item IM)
Hproject_tr: equivocators_trace_project descriptors (tr ++ [x]) = Some (trX, idescriptors)
eqv: index

previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: s : composite_state (equivocator_IM IM), finite_constrained_trace_from_to (free_composite_vlsm (equivocator_IM IM)) is s tr → descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors s → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr
Hx: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) (finite_trace_last is tr) (destination x) [x]
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors (destination x)
trX: list (composite_transition_item IM)
Hproject_tr: equivocators_trace_project descriptors (tr ++ [x]) = Some (trX, idescriptors)
eqv: index

previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: s : composite_state (equivocator_IM IM), finite_constrained_trace_from_to (free_composite_vlsm (equivocator_IM IM)) is s tr → descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors s → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr
Hx: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) (finite_trace_last is tr) (destination x) [x]
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors (destination x)
trX: list (composite_transition_item IM)
Hproject_tr: equivocators_trace_project descriptors (tr ++ [x]) = Some (trX, idescriptors)
eqv: index
His_tr: eqv : index, equivocator_state_n (is eqv) ≤ equivocator_state_n (finite_trace_last is tr eqv)

previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: s : composite_state (equivocator_IM IM), finite_constrained_trace_from_to (free_composite_vlsm (equivocator_IM IM)) is s tr → descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors s → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr
Hx: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) (finite_trace_last is tr) (destination x) [x]
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors (destination x)
trX: list (composite_transition_item IM)
Hproject_tr: equivocators_trace_project descriptors (tr ++ [x]) = Some (trX, idescriptors)
eqv: index
His_tr: eqv : index, equivocator_state_n (is eqv) ≤ equivocator_state_n (finite_trace_last is tr eqv)
Htr_x: eqv : index, equivocator_state_n (finite_trace_last is tr eqv) ≤ equivocator_state_n (destination x eqv)

previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors (finite_trace_last is tr) → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr
Hx: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) (finite_trace_last is tr) (destination x) [x]
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors (destination x)
trX: list (composite_transition_item IM)
Hproject_tr: equivocators_trace_project descriptors (tr ++ [x]) = Some (trX, idescriptors)
eqv: index
His_tr: eqv : index, equivocator_state_n (is eqv) ≤ equivocator_state_n (finite_trace_last is tr eqv)
Htr_x: eqv : index, equivocator_state_n (finite_trace_last is tr eqv) ≤ equivocator_state_n (destination x eqv)

previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors (finite_trace_last is tr) → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr
Hx: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) (finite_trace_last is tr) (destination x) [x]
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors (destination x)
trX: list (composite_transition_item IM)
Hproject_tr: equivocators_trace_project descriptors (tr ++ [x]) = Some (trX, idescriptors)
eqv: index
His_tr: eqv : index, equivocator_state_n (is eqv) ≤ equivocator_state_n (finite_trace_last is tr eqv)
Htr_x: eqv : index, equivocator_state_n (finite_trace_last is tr eqv) ≤ equivocator_state_n (destination x eqv)
Hproperx: proper_equivocator_descriptors IM descriptors (destination x) → (oitem : option (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), equivocators_transition_item_project descriptors x = Some (oitem, eqv_descriptors') ∧ match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l x))) (projT2 (l x)), existT (projT1 (l x)) (existing_equivocator_label_extract (IM (projT1 (l x))) (projT2 (l x)) Hex) = l itemx) ∧ input x = input itemx ∧ output x = output itemx ∧ equivocators_state_project IM descriptors (destination x) = destination itemx ∧ eqv_descriptors' (projT1 (l x)) = equivocator_label_descriptor (projT2 (l x)) | None => True end ∧ ( s : composite_state (equivocator_IM IM), composite_valid (equivocator_IM IM) (l x) (s, input x) → composite_transition (equivocator_IM IM) (l x) (s, input x) = (destination x, output x) → proper_equivocator_descriptors IM eqv_descriptors' s ∧ eqv_descriptors' = equivocator_descriptors_update IM descriptors (projT1 (l x)) (eqv_descriptors' (projT1 (l x))) ∧ s = state_update (equivocator_IM IM) (destination x) (projT1 (l x)) (s (projT1 (l x))) ∧ previous_state_descriptor_prop (IM (projT1 (l x))) (descriptors (projT1 (l x))) (s (projT1 (l x))) (eqv_descriptors' (projT1 (l x))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM eqv_descriptors' s → composite_valid IM (l itemx) (sx, input itemx) ∧ composite_transition IM (l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM descriptors (destination x) = equivocators_state_project IM eqv_descriptors' s end)

previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors (finite_trace_last is tr) → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr
Hx: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) (finite_trace_last is tr) (destination x) [x]
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors (destination x)
trX: list (composite_transition_item IM)
Hproject_tr: equivocators_trace_project descriptors (tr ++ [x]) = Some (trX, idescriptors)
eqv: index
His_tr: eqv : index, equivocator_state_n (is eqv) ≤ equivocator_state_n (finite_trace_last is tr eqv)
Htr_x: eqv : index, equivocator_state_n (finite_trace_last is tr eqv) ≤ equivocator_state_n (destination x eqv)
Hproperx: (oitem : option (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), equivocators_transition_item_project descriptors x = Some (oitem, eqv_descriptors') ∧ match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l x))) (projT2 (l x)), existT (projT1 (l x)) (existing_equivocator_label_extract (IM (projT1 (l x))) (projT2 (l x)) Hex) = l itemx) ∧ input x = input itemx ∧ output x = output itemx ∧ equivocators_state_project IM descriptors (destination x) = destination itemx ∧ eqv_descriptors' (projT1 (l x)) = equivocator_label_descriptor (projT2 (l x)) | None => True end ∧ ( s : composite_state (equivocator_IM IM), composite_valid (equivocator_IM IM) (l x) (s, input x) → composite_transition (equivocator_IM IM) (l x) (s, input x) = (destination x, output x) → proper_equivocator_descriptors IM eqv_descriptors' s ∧ eqv_descriptors' = equivocator_descriptors_update IM descriptors (projT1 (l x)) (eqv_descriptors' (projT1 (l x))) ∧ s = state_update (equivocator_IM IM) (destination x) (projT1 (l x)) (s (projT1 (l x))) ∧ previous_state_descriptor_prop (IM (projT1 (l x))) (descriptors (projT1 (l x))) (s (projT1 (l x))) (eqv_descriptors' (projT1 (l x))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM eqv_descriptors' s → composite_valid IM (l itemx) (sx, input itemx) ∧ composite_transition IM (l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM descriptors (destination x) = equivocators_state_project IM eqv_descriptors' s end)

previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors (finite_trace_last is tr) → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr
Hx: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) (finite_trace_last is tr) (destination x) [x]
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors (destination x)
trX: list (composite_transition_item IM)
Hproject_tr: equivocators_trace_project descriptors (tr ++ [x]) = Some (trX, idescriptors)
eqv: index
His_tr: eqv : index, equivocator_state_n (is eqv) ≤ equivocator_state_n (finite_trace_last is tr eqv)
Htr_x: eqv : index, equivocator_state_n (finite_trace_last is tr eqv) ≤ equivocator_state_n (destination x eqv)
oitem: option (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hprojectx: equivocators_transition_item_project descriptors x = Some (oitem, final_descriptors')
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l x))) (projT2 (l x)), existT (projT1 (l x)) (existing_equivocator_label_extract (IM (projT1 (l x))) (projT2 (l x)) Hex) = l itemx) ∧ input x = input itemx ∧ output x = output itemx ∧ equivocators_state_project IM descriptors (destination x) = destination itemx ∧ final_descriptors' (projT1 (l x)) = equivocator_label_descriptor (projT2 (l x)) | None => True end
Hproperx: s : composite_state (equivocator_IM IM), composite_valid (equivocator_IM IM) (l x) (s, input x) → composite_transition (equivocator_IM IM) (l x) (s, input x) = (destination x, output x) → proper_equivocator_descriptors IM final_descriptors' s ∧ final_descriptors' = equivocator_descriptors_update IM descriptors (projT1 (l x)) (final_descriptors' (projT1 (l x))) ∧ s = state_update (equivocator_IM IM) (destination x) (projT1 (l x)) (s (projT1 (l x))) ∧ previous_state_descriptor_prop (IM (projT1 (l x))) (descriptors (projT1 (l x))) (s (projT1 (l x))) (final_descriptors' (projT1 (l x))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' s → composite_valid IM (l itemx) (sx, input itemx) ∧ composite_transition IM (l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM descriptors (destination x) = equivocators_state_project IM final_descriptors' s end

previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors (finite_trace_last is tr) → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr
Hx: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) (finite_trace_last is tr) (destination x) [x]
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors (destination x)
trX: list (composite_transition_item IM)
Hproject_tr: equivocators_trace_project descriptors (tr ++ [x]) = Some (trX, idescriptors)
eqv: index
His_tr: eqv : index, equivocator_state_n (is eqv) ≤ equivocator_state_n (finite_trace_last is tr eqv)
Htr_x: eqv : index, equivocator_state_n (finite_trace_last is tr eqv) ≤ equivocator_state_n (destination x eqv)
oitem: option (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hprojectx: equivocators_transition_item_project descriptors x = Some (oitem, final_descriptors')
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l x))) (projT2 (l x)), existT (projT1 (l x)) (existing_equivocator_label_extract (IM (projT1 (l x))) (projT2 (l x)) Hex) = l itemx) ∧ input x = input itemx ∧ output x = output itemx ∧ equivocators_state_project IM descriptors (destination x) = destination itemx ∧ final_descriptors' (projT1 (l x)) = equivocator_label_descriptor (projT2 (l x)) | None => True end
Hproperx: composite_valid (equivocator_IM IM) (l x) (finite_trace_last is tr, input x) → composite_transition (equivocator_IM IM) (l x) (finite_trace_last is tr, input x) = (destination x, output x) → proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr) ∧ final_descriptors' = equivocator_descriptors_update IM descriptors (projT1 (l x)) (final_descriptors' (projT1 (l x))) ∧ finite_trace_last is tr = state_update (equivocator_IM IM) (destination x) (projT1 (l x)) (finite_trace_last is tr (projT1 (l x))) ∧ previous_state_descriptor_prop (IM (projT1 (l x))) (descriptors (projT1 (l x))) (finite_trace_last is tr (projT1 (l x))) (final_descriptors' (projT1 (l x))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → composite_valid IM (l itemx) ( sx, input itemx) ∧ composite_transition IM (l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM descriptors (destination x) = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end

previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors (finite_trace_last is tr) → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr
Hx: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) (finite_trace_last is tr) (destination x) [x]
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors (destination x)
trX: list (composite_transition_item IM)
Hproject_tr: (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), equivocators_trace_project descriptors [x] = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, idescriptors) ∧ trX = preX ++ sufX
eqv: index
His_tr: eqv : index, equivocator_state_n (is eqv) ≤ equivocator_state_n (finite_trace_last is tr eqv)
Htr_x: eqv : index, equivocator_state_n (finite_trace_last is tr eqv) ≤ equivocator_state_n (destination x eqv)
oitem: option (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hprojectx: equivocators_transition_item_project descriptors x = Some (oitem, final_descriptors')
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l x))) (projT2 (l x)), existT (projT1 (l x)) (existing_equivocator_label_extract (IM (projT1 (l x))) (projT2 (l x)) Hex) = l itemx) ∧ input x = input itemx ∧ output x = output itemx ∧ equivocators_state_project IM descriptors (destination x) = destination itemx ∧ final_descriptors' (projT1 (l x)) = equivocator_label_descriptor (projT2 (l x)) | None => True end
Hproperx: composite_valid (equivocator_IM IM) (l x) (finite_trace_last is tr, input x) → composite_transition (equivocator_IM IM) (l x) (finite_trace_last is tr, input x) = (destination x, output x) → proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr) ∧ final_descriptors' = equivocator_descriptors_update IM descriptors (projT1 (l x)) (final_descriptors' (projT1 (l x))) ∧ finite_trace_last is tr = state_update (equivocator_IM IM) (destination x) (projT1 (l x)) (finite_trace_last is tr (projT1 (l x))) ∧ previous_state_descriptor_prop (IM (projT1 (l x))) (descriptors (projT1 (l x))) (finite_trace_last is tr (projT1 (l x))) (final_descriptors' (projT1 (l x))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → composite_valid IM (l itemx) ( sx, input itemx) ∧ composite_transition IM (l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM descriptors (destination x) = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end

previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors (finite_trace_last is tr) → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr
Hx: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) (finite_trace_last is tr) (destination x) [x]
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors (destination x)
trX: list (composite_transition_item IM)
Hproject_tr: (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocators_transition_item_project descriptors x with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, idescriptors) ∧ trX = preX ++ sufX
eqv: index
His_tr: eqv : index, equivocator_state_n (is eqv) ≤ equivocator_state_n (finite_trace_last is tr eqv)
Htr_x: eqv : index, equivocator_state_n (finite_trace_last is tr eqv) ≤ equivocator_state_n (destination x eqv)
oitem: option (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hprojectx: equivocators_transition_item_project descriptors x = Some (oitem, final_descriptors')
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l x))) (projT2 (l x)), existT (projT1 (l x)) (existing_equivocator_label_extract (IM (projT1 (l x))) (projT2 (l x)) Hex) = l itemx) ∧ input x = input itemx ∧ output x = output itemx ∧ equivocators_state_project IM descriptors (destination x) = destination itemx ∧ final_descriptors' (projT1 (l x)) = equivocator_label_descriptor (projT2 (l x)) | None => True end
Hproperx: (let (i, li) := l x in equivocator_valid (IM i) li (finite_trace_last is tr i, input x)) → (let (i, li) := l x in let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, input x) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (destination x, output x) → proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr) ∧ final_descriptors' = equivocator_descriptors_update IM descriptors (projT1 (l x)) (final_descriptors' (projT1 (l x))) ∧ finite_trace_last is tr = state_update (equivocator_IM IM) (destination x) (projT1 (l x)) (finite_trace_last is tr (projT1 (l x))) ∧ previous_state_descriptor_prop (IM (projT1 (l x))) (descriptors (projT1 (l x))) (finite_trace_last is tr (projT1 (l x))) (final_descriptors' (projT1 (l x))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := l itemx in valid li (sx i, input itemx)) ∧ (let (i, li) := l itemx in let (si', om') := transition li (sx i, input itemx) in ( state_update IM sx i si', om')) = ( destination itemx, output itemx) | None => equivocators_state_project IM descriptors (destination x) = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end

previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors (finite_trace_last is tr) → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr
Hx: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) (finite_trace_last is tr) (destination x) [x]
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors (destination x)
trX: list (composite_transition_item IM)
oitem: option (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hproject_tr: (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, idescriptors) ∧ trX = preX ++ sufX
eqv: index
His_tr: eqv : index, equivocator_state_n (is eqv) ≤ equivocator_state_n (finite_trace_last is tr eqv)
Htr_x: eqv : index, equivocator_state_n (finite_trace_last is tr eqv) ≤ equivocator_state_n (destination x eqv)
Hprojectx: equivocators_transition_item_project descriptors x = Some (oitem, final_descriptors')
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l x))) (projT2 (l x)), existT (projT1 (l x)) (existing_equivocator_label_extract (IM (projT1 (l x))) (projT2 (l x)) Hex) = l itemx) ∧ input x = input itemx ∧ output x = output itemx ∧ equivocators_state_project IM descriptors (destination x) = destination itemx ∧ final_descriptors' (projT1 (l x)) = equivocator_label_descriptor (projT2 (l x)) | None => True end
Hproperx: (let (i, li) := l x in equivocator_valid (IM i) li (finite_trace_last is tr i, input x)) → (let (i, li) := l x in let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, input x) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (destination x, output x) → proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr) ∧ final_descriptors' = equivocator_descriptors_update IM descriptors (projT1 (l x)) (final_descriptors' (projT1 (l x))) ∧ finite_trace_last is tr = state_update (equivocator_IM IM) (destination x) (projT1 (l x)) (finite_trace_last is tr (projT1 (l x))) ∧ previous_state_descriptor_prop (IM (projT1 (l x))) (descriptors (projT1 (l x))) (finite_trace_last is tr (projT1 (l x))) (final_descriptors' (projT1 (l x))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := l itemx in valid li (sx i, input itemx)) ∧ (let (i, li) := l itemx in let (si', om') := transition li (sx i, input itemx) in ( state_update IM sx i si', om')) = ( destination itemx, output itemx) | None => equivocators_state_project IM descriptors (destination x) = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end

previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors (finite_trace_last is tr) → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr
Hx: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) (finite_trace_last is tr) (destination x) [x]
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors (destination x)
trX: list (composite_transition_item IM)
oitem: option (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hproject_tr: (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, idescriptors) ∧ trX = preX ++ sufX
eqv: index
His_tr: eqv : index, equivocator_state_n (is eqv) ≤ equivocator_state_n (finite_trace_last is tr eqv)
Htr_x: eqv : index, equivocator_state_n (finite_trace_last is tr eqv) ≤ equivocator_state_n (destination x eqv)
Hprojectx: equivocators_transition_item_project descriptors x = Some (oitem, final_descriptors')
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (VLSM.l x))) (projT2 (VLSM.l x)), existT (projT1 (VLSM.l x)) (existing_equivocator_label_extract (IM (projT1 (VLSM.l x))) (projT2 (VLSM.l x)) Hex) = VLSM.l itemx) ∧ input x = input itemx ∧ output x = output itemx ∧ equivocators_state_project IM descriptors (destination x) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l x)) = equivocator_label_descriptor (projT2 (VLSM.l x)) | None => True end
Hproperx: (let (i, li) := VLSM.l x in equivocator_valid (IM i) li (finite_trace_last is tr i, input x)) → (let (i, li) := VLSM.l x in let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, input x) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (destination x, output x) → proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr) ∧ final_descriptors' = equivocator_descriptors_update IM descriptors (projT1 (VLSM.l x)) (final_descriptors' (projT1 (VLSM.l x))) ∧ finite_trace_last is tr = state_update (equivocator_IM IM) (destination x) (projT1 (VLSM.l x)) (finite_trace_last is tr (projT1 (VLSM.l x))) ∧ previous_state_descriptor_prop (IM (projT1 (VLSM.l x))) (descriptors (projT1 (VLSM.l x))) (finite_trace_last is tr (projT1 (VLSM.l x))) (final_descriptors' (projT1 (VLSM.l x))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := VLSM.l itemx in valid li (sx i, input itemx)) ∧ (let (i, li) := VLSM.l itemx in let (si', om') := transition li (sx i, input itemx) in ( state_update IM sx i si', om')) = ( destination itemx, output itemx) | None => equivocators_state_project IM descriptors (destination x) = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
s, f: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
tl: list transition_item
s': state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
Htl: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) s (destination {| l := l; input := iom; destination := s; output := oom |}) []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) l (finite_trace_last is tr, iom) ( s, oom)
H1: s' = finite_trace_last is tr
H2: f = destination x
H4: {| l := l; input := iom; destination := s; output := oom |} = x
H5: tl = []

previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors (finite_trace_last is tr) → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
Hx: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) (finite_trace_last is tr) (destination {| l := l; input := iom; destination := s; output := oom |}) [{| l := l; input := iom; destination := s; output := oom |}]
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
trX: list (composite_transition_item IM)
oitem: option (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hproject_tr: (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, idescriptors) ∧ trX = preX ++ sufX
eqv: index
His_tr: eqv : index, equivocator_state_n (is eqv) ≤ equivocator_state_n (finite_trace_last is tr eqv)
Hproperx: (let (i, li) := VLSM.l {| l := l; input := iom; destination := s; output := oom |} in equivocator_valid (IM i) li (finite_trace_last is tr i, input {| l := l; input := iom; destination := s; output := oom |})) → (let (i, li) := VLSM.l {| l := l; input := iom; destination := s; output := oom |} in let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, input {| l := l; input := iom; destination := s; output := oom |}) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (destination {| l := l; input := iom; destination := s; output := oom |}, output {| l := l; input := iom; destination := s; output := oom |}) → proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr) ∧ final_descriptors' = equivocator_descriptors_update IM descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ finite_trace_last is tr = state_update (equivocator_IM IM) (destination {| l := l; input := iom; destination := s; output := oom |}) (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ previous_state_descriptor_prop (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := VLSM.l itemx in valid li (sx i, input itemx)) ∧ (let (i, li) := VLSM.l itemx in let (si', om') := transition li (sx i, input itemx) in ( state_update IM sx i si', om')) = ( destination itemx, output itemx) | None => equivocators_state_project IM descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l itemx) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input itemx ∧ output {| l := l; input := iom; destination := s; output := oom |} = output itemx ∧ equivocators_state_project IM descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) | None => True end
Hprojectx: equivocators_transition_item_project descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Htr_x: eqv : index, equivocator_state_n (finite_trace_last is tr eqv) ≤ equivocator_state_n (destination {| l := l; input := iom; destination := s; output := oom |} eqv)
Htl: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) s (destination {| l := l; input := iom; destination := s; output := oom |}) []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) l (finite_trace_last is tr, iom) ( s, oom)

previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors (finite_trace_last is tr) → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
trX: list (composite_transition_item IM)
oitem: option (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hproject_tr: (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, idescriptors) ∧ trX = preX ++ sufX
eqv: index
His_tr: eqv : index, equivocator_state_n (is eqv) ≤ equivocator_state_n (finite_trace_last is tr eqv)
Hproperx: (let (i, li) := VLSM.l {| l := l; input := iom; destination := s; output := oom |} in equivocator_valid (IM i) li (finite_trace_last is tr i, input {| l := l; input := iom; destination := s; output := oom |})) → (let (i, li) := VLSM.l {| l := l; input := iom; destination := s; output := oom |} in let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, input {| l := l; input := iom; destination := s; output := oom |}) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (destination {| l := l; input := iom; destination := s; output := oom |}, output {| l := l; input := iom; destination := s; output := oom |}) → proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr) ∧ final_descriptors' = equivocator_descriptors_update IM descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ finite_trace_last is tr = state_update (equivocator_IM IM) (destination {| l := l; input := iom; destination := s; output := oom |}) (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ previous_state_descriptor_prop (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := VLSM.l itemx in valid li (sx i, input itemx)) ∧ (let (i, li) := VLSM.l itemx in let (si', om') := transition li (sx i, input itemx) in ( state_update IM sx i si', om')) = ( destination itemx, output itemx) | None => equivocators_state_project IM descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l itemx) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input itemx ∧ output {| l := l; input := iom; destination := s; output := oom |} = output itemx ∧ equivocators_state_project IM descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) | None => True end
Hprojectx: equivocators_transition_item_project descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Htr_x: eqv : index, equivocator_state_n (finite_trace_last is tr eqv) ≤ equivocator_state_n (destination {| l := l; input := iom; destination := s; output := oom |} eqv)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) l (finite_trace_last is tr, iom) ( s, oom)

previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors (finite_trace_last is tr) → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
trX: list (composite_transition_item IM)
oitem: option (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hproject_tr: (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, idescriptors) ∧ trX = preX ++ sufX
eqv: index
His_tr: eqv : index, equivocator_state_n (is eqv) ≤ equivocator_state_n (finite_trace_last is tr eqv)
Hproperx: (let (i, li) := VLSM.l {| l := l; input := iom; destination := s; output := oom |} in equivocator_valid (IM i) li (finite_trace_last is tr i, input {| l := l; input := iom; destination := s; output := oom |})) → (let (i, li) := VLSM.l {| l := l; input := iom; destination := s; output := oom |} in let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, input {| l := l; input := iom; destination := s; output := oom |}) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (destination {| l := l; input := iom; destination := s; output := oom |}, output {| l := l; input := iom; destination := s; output := oom |}) → proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr) ∧ final_descriptors' = equivocator_descriptors_update IM descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ finite_trace_last is tr = state_update (equivocator_IM IM) (destination {| l := l; input := iom; destination := s; output := oom |}) (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ previous_state_descriptor_prop (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := VLSM.l itemx in valid li (sx i, input itemx)) ∧ (let (i, li) := VLSM.l itemx in let (si', om') := transition li (sx i, input itemx) in ( state_update IM sx i si', om')) = ( destination itemx, output itemx) | None => equivocators_state_project IM descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l itemx) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input itemx ∧ output {| l := l; input := iom; destination := s; output := oom |} = output itemx ∧ equivocators_state_project IM descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) | None => True end
Hprojectx: equivocators_transition_item_project descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Htr_x: eqv : index, equivocator_state_n (finite_trace_last is tr eqv) ≤ equivocator_state_n (destination {| l := l; input := iom; destination := s; output := oom |} eqv)
Hv: valid l (finite_trace_last is tr, iom)
Ht: transition l (finite_trace_last is tr, iom) = (s, oom)

previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors (finite_trace_last is tr) → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
trX: list (composite_transition_item IM)
oitem: option (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hproject_tr: (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, idescriptors) ∧ trX = preX ++ sufX
eqv: index
His_tr: eqv : index, equivocator_state_n (is eqv) ≤ equivocator_state_n (finite_trace_last is tr eqv)
Hproperx: proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr) ∧ final_descriptors' = equivocator_descriptors_update IM descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ finite_trace_last is tr = state_update (equivocator_IM IM) (destination {| l := l; input := iom; destination := s; output := oom |}) (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ previous_state_descriptor_prop (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := VLSM.l itemx in valid li (sx i, input itemx)) ∧ (let (i, li) := VLSM.l itemx in let (si', om') := transition li (sx i, input itemx) in (state_update IM sx i si', om')) = (destination itemx, output itemx) | None => equivocators_state_project IM descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l itemx) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input itemx ∧ output {| l := l; input := iom; destination := s; output := oom |} = output itemx ∧ equivocators_state_project IM descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) | None => True end
Hprojectx: equivocators_transition_item_project descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Htr_x: eqv : index, equivocator_state_n (finite_trace_last is tr eqv) ≤ equivocator_state_n (destination {| l := l; input := iom; destination := s; output := oom |} eqv)
Hv: valid l (finite_trace_last is tr, iom)
Ht: transition l (finite_trace_last is tr, iom) = (s, oom)

previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors (finite_trace_last is tr) → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
trX: list (composite_transition_item IM)
oitem: option (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hproject_tr: (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, idescriptors) ∧ trX = preX ++ sufX
eqv: index
His_tr: eqv : index, equivocator_state_n (is eqv) ≤ equivocator_state_n (finite_trace_last is tr eqv)
Hproperx: proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr) ∧ final_descriptors' = equivocator_descriptors_update IM descriptors (projT1 l) (final_descriptors' (projT1 l)) ∧ finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 l) (finite_trace_last is tr (projT1 l)) ∧ previous_state_descriptor_prop (IM (projT1 l)) (descriptors (projT1 l)) (finite_trace_last is tr (projT1 l)) (final_descriptors' (projT1 l)) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := VLSM.l itemx in valid li (sx i, input itemx)) ∧ (let (i, li) := VLSM.l itemx in let (si', om') := transition li (sx i, input itemx) in (state_update IM sx i si', om')) = (destination itemx, output itemx) | None => equivocators_state_project IM descriptors s = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l itemx) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input itemx ∧ output {| l := l; input := iom; destination := s; output := oom |} = output itemx ∧ equivocators_state_project IM descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) | None => True end
Hprojectx: equivocators_transition_item_project descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Htr_x: eqv : index, equivocator_state_n (finite_trace_last is tr eqv) ≤ equivocator_state_n (destination {| l := l; input := iom; destination := s; output := oom |} eqv)
Hv: valid l (finite_trace_last is tr, iom)
Ht: transition l (finite_trace_last is tr, iom) = (s, oom)

previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM descriptors (finite_trace_last is tr) → trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
trX: list (composite_transition_item IM)
oitem: option (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hproject_tr: (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, idescriptors) ∧ trX = preX ++ sufX
eqv: index
His_tr: eqv : index, equivocator_state_n (is eqv) ≤ equivocator_state_n (finite_trace_last is tr eqv)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM descriptors (projT1 l) (final_descriptors' (projT1 l))
Heq_ltr: finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 l) (finite_trace_last is tr (projT1 l))
Hex_new: previous_state_descriptor_prop (IM (projT1 l)) (descriptors (projT1 l)) (finite_trace_last is tr (projT1 l)) (final_descriptors' (projT1 l))
Hx: match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := VLSM.l itemx in valid li (sx i, input itemx)) ∧ (let (i, li) := VLSM.l itemx in let (si', om') := transition li (sx i, input itemx) in (state_update IM sx i si', om')) = (destination itemx, output itemx) | None => equivocators_state_project IM descriptors s = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l itemx) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input itemx ∧ output {| l := l; input := iom; destination := s; output := oom |} = output itemx ∧ equivocators_state_project IM descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) | None => True end
Hprojectx: equivocators_transition_item_project descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Htr_x: eqv : index, equivocator_state_n (finite_trace_last is tr eqv) ≤ equivocator_state_n (destination {| l := l; input := iom; destination := s; output := oom |} eqv)
Hv: valid l (finite_trace_last is tr, iom)
Ht: transition l (finite_trace_last is tr, iom) = (s, oom)

previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
final_descriptors': equivocator_descriptors IM
IHtr: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors' tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (final_descriptors' eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
trX: list (composite_transition_item IM)
oitem: option (composite_transition_item IM)
Hproject_tr: (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, idescriptors) ∧ trX = preX ++ sufX
eqv: index
His_tr: eqv : index, equivocator_state_n (is eqv) ≤ equivocator_state_n (finite_trace_last is tr eqv)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM descriptors (projT1 l) (final_descriptors' (projT1 l))
Heq_ltr: finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 l) (finite_trace_last is tr (projT1 l))
Hex_new: previous_state_descriptor_prop (IM (projT1 l)) (descriptors (projT1 l)) (finite_trace_last is tr (projT1 l)) (final_descriptors' (projT1 l))
Hx: match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := VLSM.l itemx in valid li (sx i, input itemx)) ∧ (let (i, li) := VLSM.l itemx in let (si', om') := transition li (sx i, input itemx) in (state_update IM sx i si', om')) = (destination itemx, output itemx) | None => equivocators_state_project IM descriptors s = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l itemx) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input itemx ∧ output {| l := l; input := iom; destination := s; output := oom |} = output itemx ∧ equivocators_state_project IM descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) | None => True end
Hprojectx: equivocators_transition_item_project descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Htr_x: eqv : index, equivocator_state_n (finite_trace_last is tr eqv) ≤ equivocator_state_n (destination {| l := l; input := iom; destination := s; output := oom |} eqv)
Hv: valid l (finite_trace_last is tr, iom)
Ht: transition l (finite_trace_last is tr, iom) = (s, oom)

previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
final_descriptors': equivocator_descriptors IM
IHtr: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors' tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (final_descriptors' eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
trX: list (composite_transition_item IM)
oitem: option (composite_transition_item IM)
Hproject_tr: (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, idescriptors) ∧ trX = preX ++ sufX
eqv: index
His_tr: eqv : index, equivocator_state_n (is eqv) ≤ equivocator_state_n (finite_trace_last is tr eqv)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM descriptors (projT1 l) (final_descriptors' (projT1 l))
Heq_ltr: finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 l) (finite_trace_last is tr (projT1 l))
Hex_new: previous_state_descriptor_prop (IM (projT1 l)) (descriptors (projT1 l)) (finite_trace_last is tr (projT1 l)) (final_descriptors' (projT1 l))
Hx: match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := VLSM.l itemx in valid li (sx i, input itemx)) ∧ (let (i, li) := VLSM.l itemx in let (si', om') := transition li (sx i, input itemx) in (state_update IM sx i si', om')) = (destination itemx, output itemx) | None => equivocators_state_project IM descriptors s = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l itemx) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input itemx ∧ output {| l := l; input := iom; destination := s; output := oom |} = output itemx ∧ equivocators_state_project IM descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) | None => True end
Hprojectx: equivocators_transition_item_project descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Htr_x: eqv : index, equivocator_state_n (finite_trace_last is tr eqv) ≤ equivocator_state_n (destination {| l := l; input := iom; destination := s; output := oom |} eqv)
Hv: valid l (finite_trace_last is tr, iom)
Ht: transition l (finite_trace_last is tr, iom) = (s, oom)

previous_state_descriptor_prop (IM eqv) (final_descriptors' eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
final_descriptors': equivocator_descriptors IM
IHtr: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors' tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (final_descriptors' eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
trX: list (composite_transition_item IM)
oitem: option (composite_transition_item IM)
Hproject_tr: (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, idescriptors) ∧ trX = preX ++ sufX
eqv: index
His_tr: eqv : index, equivocator_state_n (is eqv) ≤ equivocator_state_n (finite_trace_last is tr eqv)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM descriptors (projT1 l) (final_descriptors' (projT1 l))
Heq_ltr: finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 l) (finite_trace_last is tr (projT1 l))
Hex_new: previous_state_descriptor_prop (IM (projT1 l)) (descriptors (projT1 l)) (finite_trace_last is tr (projT1 l)) (final_descriptors' (projT1 l))
Hx: match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := VLSM.l itemx in valid li (sx i, input itemx)) ∧ (let (i, li) := VLSM.l itemx in let (si', om') := transition li (sx i, input itemx) in (state_update IM sx i si', om')) = (destination itemx, output itemx) | None => equivocators_state_project IM descriptors s = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l itemx) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input itemx ∧ output {| l := l; input := iom; destination := s; output := oom |} = output itemx ∧ equivocators_state_project IM descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) | None => True end
Hprojectx: equivocators_transition_item_project descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Htr_x: eqv : index, equivocator_state_n (finite_trace_last is tr eqv) ≤ equivocator_state_n (destination {| l := l; input := iom; destination := s; output := oom |} eqv)
Hv: valid l (finite_trace_last is tr, iom)
Ht: transition l (finite_trace_last is tr, iom) = (s, oom)
Hex_new': previous_state_descriptor_prop (IM eqv) (final_descriptors' eqv) (is eqv) (idescriptors eqv)
previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
final_descriptors': equivocator_descriptors IM
IHtr: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors' tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (final_descriptors' eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
trX: list (composite_transition_item IM)
oitem: option (composite_transition_item IM)
Hproject_tr: (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, idescriptors) ∧ trX = preX ++ sufX
eqv: index
His_tr: eqv : index, equivocator_state_n (is eqv) ≤ equivocator_state_n (finite_trace_last is tr eqv)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM descriptors (projT1 l) (final_descriptors' (projT1 l))
Heq_ltr: finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 l) (finite_trace_last is tr (projT1 l))
Hex_new: previous_state_descriptor_prop (IM (projT1 l)) (descriptors (projT1 l)) (finite_trace_last is tr (projT1 l)) (final_descriptors' (projT1 l))
Hx: match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := VLSM.l itemx in valid li (sx i, input itemx)) ∧ (let (i, li) := VLSM.l itemx in let (si', om') := transition li (sx i, input itemx) in (state_update IM sx i si', om')) = (destination itemx, output itemx) | None => equivocators_state_project IM descriptors s = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l itemx) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input itemx ∧ output {| l := l; input := iom; destination := s; output := oom |} = output itemx ∧ equivocators_state_project IM descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) | None => True end
Hprojectx: equivocators_transition_item_project descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Htr_x: eqv : index, equivocator_state_n (finite_trace_last is tr eqv) ≤ equivocator_state_n (destination {| l := l; input := iom; destination := s; output := oom |} eqv)
Hv: valid l (finite_trace_last is tr, iom)
Ht: transition l (finite_trace_last is tr, iom) = (s, oom)

previous_state_descriptor_prop (IM eqv) (final_descriptors' eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
final_descriptors': equivocator_descriptors IM
IHtr: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors' tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (final_descriptors' eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
trX: list (composite_transition_item IM)
oitem: option (composite_transition_item IM)
preX, sufX: list (composite_transition_item IM)
_final_descriptors': equivocator_descriptors IM
H_final_descriptors': match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (sufX, _final_descriptors')
Hproject_tr: equivocators_trace_project _final_descriptors' tr = Some (preX, idescriptors)
HtrX: trX = preX ++ sufX
eqv: index
His_tr: eqv : index, equivocator_state_n (is eqv) ≤ equivocator_state_n (finite_trace_last is tr eqv)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM descriptors (projT1 l) (final_descriptors' (projT1 l))
Heq_ltr: finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 l) (finite_trace_last is tr (projT1 l))
Hex_new: previous_state_descriptor_prop (IM (projT1 l)) (descriptors (projT1 l)) (finite_trace_last is tr (projT1 l)) (final_descriptors' (projT1 l))
Hx: match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := VLSM.l itemx in valid li (sx i, input itemx)) ∧ (let (i, li) := VLSM.l itemx in let (si', om') := transition li (sx i, input itemx) in (state_update IM sx i si', om')) = (destination itemx, output itemx) | None => equivocators_state_project IM descriptors s = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l itemx) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input itemx ∧ output {| l := l; input := iom; destination := s; output := oom |} = output itemx ∧ equivocators_state_project IM descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) | None => True end
Hprojectx: equivocators_transition_item_project descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Htr_x: eqv : index, equivocator_state_n (finite_trace_last is tr eqv) ≤ equivocator_state_n (destination {| l := l; input := iom; destination := s; output := oom |} eqv)
Hv: valid l (finite_trace_last is tr, iom)
Ht: transition l (finite_trace_last is tr, iom) = (s, oom)

previous_state_descriptor_prop (IM eqv) (final_descriptors' eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
final_descriptors': equivocator_descriptors IM
IHtr: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors' tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (final_descriptors' eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
trX: list (composite_transition_item IM)
oitem: option (composite_transition_item IM)
preX, sufX: list (composite_transition_item IM)
_final_descriptors': equivocator_descriptors IM
H_final_descriptors': match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (sufX, _final_descriptors')
Hproject_tr: equivocators_trace_project _final_descriptors' tr = Some (preX, idescriptors)
HtrX: trX = preX ++ sufX
eqv: index
His_tr: eqv : index, equivocator_state_n (is eqv) ≤ equivocator_state_n (finite_trace_last is tr eqv)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM descriptors (projT1 l) (final_descriptors' (projT1 l))
Heq_ltr: finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 l) (finite_trace_last is tr (projT1 l))
Hex_new: previous_state_descriptor_prop (IM (projT1 l)) (descriptors (projT1 l)) (finite_trace_last is tr (projT1 l)) (final_descriptors' (projT1 l))
Hx: match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := VLSM.l itemx in valid li (sx i, input itemx)) ∧ (let (i, li) := VLSM.l itemx in let (si', om') := transition li (sx i, input itemx) in (state_update IM sx i si', om')) = (destination itemx, output itemx) | None => equivocators_state_project IM descriptors s = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l itemx) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input itemx ∧ output {| l := l; input := iom; destination := s; output := oom |} = output itemx ∧ equivocators_state_project IM descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) | None => True end
Hprojectx: equivocators_transition_item_project descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Htr_x: eqv : index, equivocator_state_n (finite_trace_last is tr eqv) ≤ equivocator_state_n (destination {| l := l; input := iom; destination := s; output := oom |} eqv)
Hv: valid l (finite_trace_last is tr, iom)
Ht: transition l (finite_trace_last is tr, iom) = (s, oom)

equivocators_trace_project final_descriptors' tr = Some (preX, idescriptors)
by destruct oitem; inversion H_final_descriptors'; subst.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
final_descriptors': equivocator_descriptors IM
IHtr: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors' tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (final_descriptors' eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
trX: list (composite_transition_item IM)
oitem: option (composite_transition_item IM)
Hproject_tr: (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, idescriptors) ∧ trX = preX ++ sufX
eqv: index
His_tr: eqv : index, equivocator_state_n (is eqv) ≤ equivocator_state_n (finite_trace_last is tr eqv)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM descriptors (projT1 l) (final_descriptors' (projT1 l))
Heq_ltr: finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 l) (finite_trace_last is tr (projT1 l))
Hex_new: previous_state_descriptor_prop (IM (projT1 l)) (descriptors (projT1 l)) (finite_trace_last is tr (projT1 l)) (final_descriptors' (projT1 l))
Hx: match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := VLSM.l itemx in valid li (sx i, input itemx)) ∧ (let (i, li) := VLSM.l itemx in let (si', om') := transition li (sx i, input itemx) in (state_update IM sx i si', om')) = (destination itemx, output itemx) | None => equivocators_state_project IM descriptors s = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l itemx) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input itemx ∧ output {| l := l; input := iom; destination := s; output := oom |} = output itemx ∧ equivocators_state_project IM descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) | None => True end
Hprojectx: equivocators_transition_item_project descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Htr_x: eqv : index, equivocator_state_n (finite_trace_last is tr eqv) ≤ equivocator_state_n (destination {| l := l; input := iom; destination := s; output := oom |} eqv)
Hv: valid l (finite_trace_last is tr, iom)
Ht: transition l (finite_trace_last is tr, iom) = (s, oom)
Hex_new': previous_state_descriptor_prop (IM eqv) (final_descriptors' eqv) (is eqv) (idescriptors eqv)

previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
final_descriptors': equivocator_descriptors IM
IHtr: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors' tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (final_descriptors' eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM)))
iom, oom: option message
i: index
li: label (equivocator_IM IM i)
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors (destination {| l := existT i li; input := iom; destination := s; output := oom |})
trX: list (composite_transition_item IM)
oitem: option (composite_transition_item IM)
Hproject_tr: (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, idescriptors) ∧ trX = preX ++ sufX
eqv: index
His_tr: eqv : index, equivocator_state_n (is eqv) ≤ equivocator_state_n (finite_trace_last is tr eqv)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM descriptors (projT1 (existT i li)) (final_descriptors' (projT1 (existT i li)))
Heq_ltr: finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 (existT i li)) (finite_trace_last is tr (projT1 (existT i li)))
Hex_new: previous_state_descriptor_prop (IM (projT1 (existT i li))) (descriptors (projT1 (existT i li))) (finite_trace_last is tr (projT1 (existT i li))) (final_descriptors' (projT1 (existT i li)))
Hx: match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := l itemx in valid li (sx i, input itemx)) ∧ (let (i, li) := l itemx in let (si', om') := transition li (sx i, input itemx) in (state_update IM sx i si', om')) = (destination itemx, output itemx) | None => equivocators_state_project IM descriptors s = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l {| l := existT i li; input := iom; destination := s; output := oom |}))) (projT2 (l {| l := existT i li; input := iom; destination := s; output := oom |})), existT (projT1 (l {| l := existT i li; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM (projT1 (l {| l := existT i li; input := iom; destination := s; output := oom |}))) (projT2 (l {| l := existT i li; input := iom; destination := s; output := oom |})) Hex) = l itemx) ∧ input {| l := existT i li; input := iom; destination := s; output := oom |} = input itemx ∧ output {| l := existT i li; input := iom; destination := s; output := oom |} = output itemx ∧ equivocators_state_project IM descriptors (destination {| l := existT i li; input := iom; destination := s; output := oom |}) = destination itemx ∧ final_descriptors' (projT1 (l {| l := existT i li; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (l {| l := existT i li; input := iom; destination := s; output := oom |})) | None => True end
Hprojectx: equivocators_transition_item_project descriptors {| l := existT i li; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Htr_x: eqv : index, equivocator_state_n (finite_trace_last is tr eqv) ≤ equivocator_state_n (destination {| l := existT i li; input := iom; destination := s; output := oom |} eqv)
Hv: valid (existT i li) (finite_trace_last is tr, iom)
Ht: transition (existT i li) (finite_trace_last is tr, iom) = ( s, oom)
Hex_new': previous_state_descriptor_prop (IM eqv) (final_descriptors' eqv) (is eqv) (idescriptors eqv)

previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
final_descriptors': equivocator_descriptors IM
IHtr: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors' tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (final_descriptors' eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
i: index
li: EquivocatorLabel (IM i)
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors s
trX: list (composite_transition_item IM)
oitem: option (composite_transition_item IM)
Hproject_tr: (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, idescriptors) ∧ trX = preX ++ sufX
eqv: index
His_tr: eqv : index, equivocator_state_n (is eqv) ≤ equivocator_state_n (finite_trace_last is tr eqv)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM descriptors i (final_descriptors' i)
Heq_ltr: finite_trace_last is tr = state_update (equivocator_IM IM) s i (finite_trace_last is tr i)
Hex_new: previous_state_descriptor_prop (IM i) (descriptors i) (finite_trace_last is tr i) (final_descriptors' i)
Hx: match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := l itemx in valid li (sx i, input itemx)) ∧ (let (i, li) := l itemx in let (si', om') := transition li (sx i, input itemx) in (state_update IM sx i si', om')) = (destination itemx, output itemx) | None => equivocators_state_project IM descriptors s = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM i) li, existT i (existing_equivocator_label_extract (IM i) li Hex) = l itemx) ∧ iom = input itemx ∧ oom = output itemx ∧ equivocators_state_project IM descriptors s = destination itemx ∧ final_descriptors' i = equivocator_label_descriptor li | None => True end
Hprojectx: equivocators_transition_item_project descriptors {| l := existT i li; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Htr_x: eqv : index, equivocator_state_n (finite_trace_last is tr eqv) ≤ equivocator_state_n (s eqv)
Hv: equivocator_valid (IM i) li (finite_trace_last is tr i, iom)
Ht: (let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)
Hex_new': previous_state_descriptor_prop (IM eqv) (final_descriptors' eqv) (is eqv) (idescriptors eqv)

previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
final_descriptors': equivocator_descriptors IM
IHtr: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors' tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (final_descriptors' eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
i: index
li: EquivocatorLabel (IM i)
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors s
trX: list (composite_transition_item IM)
oitem: option (composite_transition_item IM)
Hproject_tr: (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, idescriptors) ∧ trX = preX ++ sufX
eqv: index
His_tr: eqv : index, equivocator_state_n (is eqv) ≤ equivocator_state_n (finite_trace_last is tr eqv)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM descriptors i (final_descriptors' i)
Heq_ltr: finite_trace_last is tr = state_update (equivocator_IM IM) s i (finite_trace_last is tr i)
Hex_new: previous_state_descriptor_prop (IM i) (descriptors i) (finite_trace_last is tr i) (final_descriptors' i)
Hx: match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := l itemx in valid li (sx i, input itemx)) ∧ (let (i, li) := l itemx in let (si', om') := transition li (sx i, input itemx) in (state_update IM sx i si', om')) = (destination itemx, output itemx) | None => equivocators_state_project IM descriptors s = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM i) li, existT i (existing_equivocator_label_extract (IM i) li Hex) = l itemx) ∧ iom = input itemx ∧ oom = output itemx ∧ equivocators_state_project IM descriptors s = destination itemx ∧ final_descriptors' i = equivocator_label_descriptor li | None => True end
Hprojectx: equivocators_transition_item_project descriptors {| l := existT i li; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Htr_x: eqv : index, equivocator_state_n (finite_trace_last is tr eqv) ≤ equivocator_state_n (s eqv)
Hv: equivocator_valid (IM i) li (finite_trace_last is tr i, iom)
Ht: (let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)
Hex_new': previous_state_descriptor_prop (IM eqv) (final_descriptors' eqv) (is eqv) (idescriptors eqv)
e: i = eqv

previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
final_descriptors': equivocator_descriptors IM
IHtr: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors' tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (final_descriptors' eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
i: index
li: EquivocatorLabel (IM i)
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors s
trX: list (composite_transition_item IM)
oitem: option (composite_transition_item IM)
Hproject_tr: (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, idescriptors) ∧ trX = preX ++ sufX
eqv: index
His_tr: eqv : index, equivocator_state_n (is eqv) ≤ equivocator_state_n (finite_trace_last is tr eqv)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM descriptors i (final_descriptors' i)
Heq_ltr: finite_trace_last is tr = state_update (equivocator_IM IM) s i (finite_trace_last is tr i)
Hex_new: previous_state_descriptor_prop (IM i) (descriptors i) (finite_trace_last is tr i) (final_descriptors' i)
Hx: match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := l itemx in valid li (sx i, input itemx)) ∧ (let (i, li) := l itemx in let (si', om') := transition li (sx i, input itemx) in (state_update IM sx i si', om')) = (destination itemx, output itemx) | None => equivocators_state_project IM descriptors s = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM i) li, existT i (existing_equivocator_label_extract (IM i) li Hex) = l itemx) ∧ iom = input itemx ∧ oom = output itemx ∧ equivocators_state_project IM descriptors s = destination itemx ∧ final_descriptors' i = equivocator_label_descriptor li | None => True end
Hprojectx: equivocators_transition_item_project descriptors {| l := existT i li; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Htr_x: eqv : index, equivocator_state_n (finite_trace_last is tr eqv) ≤ equivocator_state_n (s eqv)
Hv: equivocator_valid (IM i) li (finite_trace_last is tr i, iom)
Ht: (let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)
Hex_new': previous_state_descriptor_prop (IM eqv) (final_descriptors' eqv) (is eqv) (idescriptors eqv)
n: i ≠ eqv
previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
final_descriptors': equivocator_descriptors IM
IHtr: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors' tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (final_descriptors' eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
i: index
li: EquivocatorLabel (IM i)
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors s
trX: list (composite_transition_item IM)
oitem: option (composite_transition_item IM)
Hproject_tr: (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, idescriptors) ∧ trX = preX ++ sufX
eqv: index
His_tr: eqv : index, equivocator_state_n (is eqv) ≤ equivocator_state_n (finite_trace_last is tr eqv)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM descriptors i (final_descriptors' i)
Heq_ltr: finite_trace_last is tr = state_update (equivocator_IM IM) s i (finite_trace_last is tr i)
Hex_new: previous_state_descriptor_prop (IM i) (descriptors i) (finite_trace_last is tr i) (final_descriptors' i)
Hx: match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := l itemx in valid li (sx i, input itemx)) ∧ (let (i, li) := l itemx in let (si', om') := transition li (sx i, input itemx) in (state_update IM sx i si', om')) = (destination itemx, output itemx) | None => equivocators_state_project IM descriptors s = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM i) li, existT i (existing_equivocator_label_extract (IM i) li Hex) = l itemx) ∧ iom = input itemx ∧ oom = output itemx ∧ equivocators_state_project IM descriptors s = destination itemx ∧ final_descriptors' i = equivocator_label_descriptor li | None => True end
Hprojectx: equivocators_transition_item_project descriptors {| l := existT i li; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Htr_x: eqv : index, equivocator_state_n (finite_trace_last is tr eqv) ≤ equivocator_state_n (s eqv)
Hv: equivocator_valid (IM i) li (finite_trace_last is tr i, iom)
Ht: (let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)
Hex_new': previous_state_descriptor_prop (IM eqv) (final_descriptors' eqv) (is eqv) (idescriptors eqv)
e: i = eqv

previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
final_descriptors': equivocator_descriptors IM
IHtr: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors' tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (final_descriptors' eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
eqv: index
li: EquivocatorLabel (IM eqv)
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors s
trX: list (composite_transition_item IM)
oitem: option (composite_transition_item IM)
Hproject_tr: (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, idescriptors) ∧ trX = preX ++ sufX
His_tr: eqv : index, equivocator_state_n (is eqv) ≤ equivocator_state_n (finite_trace_last is tr eqv)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Hex_new: previous_state_descriptor_prop (IM eqv) (descriptors eqv) (finite_trace_last is tr eqv) (final_descriptors' eqv)
Heq_ltr: finite_trace_last is tr = state_update (equivocator_IM IM) s eqv (finite_trace_last is tr eqv)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM descriptors eqv (final_descriptors' eqv)
Hx: match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := l itemx in valid li (sx i, input itemx)) ∧ (let (i, li) := l itemx in let (si', om') := transition li (sx i, input itemx) in (state_update IM sx i si', om')) = (destination itemx, output itemx) | None => equivocators_state_project IM descriptors s = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hprojectx: equivocators_transition_item_project descriptors {| l := existT eqv li; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM eqv) li, existT eqv (existing_equivocator_label_extract (IM eqv) li Hex) = l itemx) ∧ iom = input itemx ∧ oom = output itemx ∧ equivocators_state_project IM descriptors s = destination itemx ∧ final_descriptors' eqv = equivocator_label_descriptor li | None => True end
Htr_x: eqv : index, equivocator_state_n (finite_trace_last is tr eqv) ≤ equivocator_state_n (s eqv)
Ht: (let (si', om') := equivocator_transition (IM eqv) li (finite_trace_last is tr eqv, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) eqv si', om')) = (s, oom)
Hv: equivocator_valid (IM eqv) li (finite_trace_last is tr eqv, iom)
Hex_new': previous_state_descriptor_prop (IM eqv) (final_descriptors' eqv) (is eqv) (idescriptors eqv)

previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
final_descriptors': equivocator_descriptors IM
IHtr: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors' tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (final_descriptors' eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
eqv: index
li: EquivocatorLabel (IM eqv)
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors s
trX: list (composite_transition_item IM)
oitem: option (composite_transition_item IM)
Hproject_tr: (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, idescriptors) ∧ trX = preX ++ sufX
His_tr: equivocator_state_n (is eqv) ≤ equivocator_state_n (finite_trace_last is tr eqv)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Hex_new: previous_state_descriptor_prop (IM eqv) (descriptors eqv) (finite_trace_last is tr eqv) (final_descriptors' eqv)
Heq_ltr: finite_trace_last is tr = state_update (equivocator_IM IM) s eqv (finite_trace_last is tr eqv)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM descriptors eqv (final_descriptors' eqv)
Hx: match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := l itemx in valid li (sx i, input itemx)) ∧ (let (i, li) := l itemx in let (si', om') := transition li (sx i, input itemx) in (state_update IM sx i si', om')) = (destination itemx, output itemx) | None => equivocators_state_project IM descriptors s = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hprojectx: equivocators_transition_item_project descriptors {| l := existT eqv li; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM eqv) li, existT eqv (existing_equivocator_label_extract (IM eqv) li Hex) = l itemx) ∧ iom = input itemx ∧ oom = output itemx ∧ equivocators_state_project IM descriptors s = destination itemx ∧ final_descriptors' eqv = equivocator_label_descriptor li | None => True end
Htr_x: eqv : index, equivocator_state_n (finite_trace_last is tr eqv) ≤ equivocator_state_n (s eqv)
Ht: (let (si', om') := equivocator_transition (IM eqv) li (finite_trace_last is tr eqv, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) eqv si', om')) = (s, oom)
Hv: equivocator_valid (IM eqv) li (finite_trace_last is tr eqv, iom)
Hex_new': previous_state_descriptor_prop (IM eqv) (final_descriptors' eqv) (is eqv) (idescriptors eqv)

previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
final_descriptors': equivocator_descriptors IM
IHtr: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors' tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (final_descriptors' eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
eqv: index
li: EquivocatorLabel (IM eqv)
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors s
trX: list (composite_transition_item IM)
oitem: option (composite_transition_item IM)
Hproject_tr: (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, idescriptors) ∧ trX = preX ++ sufX
His_tr: equivocator_state_n (is eqv) ≤ equivocator_state_n (finite_trace_last is tr eqv)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Hex_new: previous_state_descriptor_prop (IM eqv) (descriptors eqv) (finite_trace_last is tr eqv) (final_descriptors' eqv)
Heq_ltr: finite_trace_last is tr = state_update (equivocator_IM IM) s eqv (finite_trace_last is tr eqv)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM descriptors eqv (final_descriptors' eqv)
Hx: match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := l itemx in valid li (sx i, input itemx)) ∧ (let (i, li) := l itemx in let (si', om') := transition li (sx i, input itemx) in (state_update IM sx i si', om')) = (destination itemx, output itemx) | None => equivocators_state_project IM descriptors s = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hprojectx: equivocators_transition_item_project descriptors {| l := existT eqv li; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM eqv) li, existT eqv (existing_equivocator_label_extract (IM eqv) li Hex) = l itemx) ∧ iom = input itemx ∧ oom = output itemx ∧ equivocators_state_project IM descriptors s = destination itemx ∧ final_descriptors' eqv = equivocator_label_descriptor li | None => True end
Htr_x: equivocator_state_n (finite_trace_last is tr eqv) ≤ equivocator_state_n (s eqv)
Ht: (let (si', om') := equivocator_transition (IM eqv) li (finite_trace_last is tr eqv, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) eqv si', om')) = (s, oom)
Hv: equivocator_valid (IM eqv) li (finite_trace_last is tr eqv, iom)
Hex_new': previous_state_descriptor_prop (IM eqv) (final_descriptors' eqv) (is eqv) (idescriptors eqv)

previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
final_descriptors': equivocator_descriptors IM
IHtr: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors' tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (final_descriptors' eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
eqv: index
li: EquivocatorLabel (IM eqv)
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors s
trX: list (composite_transition_item IM)
oitem: option (composite_transition_item IM)
Hproject_tr: (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, idescriptors) ∧ trX = preX ++ sufX
His_tr: equivocator_state_n (is eqv) ≤ equivocator_state_n (finite_trace_last is tr eqv)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
n: nat
Hvin_desc_eqv: descriptors eqv = Existing n
Hex_new: previous_state_descriptor_prop (IM eqv) (Existing n) (finite_trace_last is tr eqv) (final_descriptors' eqv)
Heq_ltr: finite_trace_last is tr = state_update (equivocator_IM IM) s eqv (finite_trace_last is tr eqv)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM descriptors eqv (final_descriptors' eqv)
Hx: match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := l itemx in valid li (sx i, input itemx)) ∧ (let (i, li) := l itemx in let (si', om') := transition li (sx i, input itemx) in (state_update IM sx i si', om')) = (destination itemx, output itemx) | None => equivocators_state_project IM descriptors s = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hprojectx: equivocators_transition_item_project descriptors {| l := existT eqv li; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM eqv) li, existT eqv (existing_equivocator_label_extract (IM eqv) li Hex) = l itemx) ∧ iom = input itemx ∧ oom = output itemx ∧ equivocators_state_project IM descriptors s = destination itemx ∧ final_descriptors' eqv = equivocator_label_descriptor li | None => True end
Htr_x: equivocator_state_n (finite_trace_last is tr eqv) ≤ equivocator_state_n (s eqv)
Ht: (let (si', om') := equivocator_transition (IM eqv) li (finite_trace_last is tr eqv, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) eqv si', om')) = (s, oom)
Hv: equivocator_valid (IM eqv) li (finite_trace_last is tr eqv, iom)
Hex_new': previous_state_descriptor_prop (IM eqv) (final_descriptors' eqv) (is eqv) (idescriptors eqv)

previous_state_descriptor_prop (IM eqv) (Existing n) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
final_descriptors': equivocator_descriptors IM
IHtr: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors' tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (final_descriptors' eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
eqv: index
li: EquivocatorLabel (IM eqv)
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors s
trX: list (composite_transition_item IM)
oitem: option (composite_transition_item IM)
Hproject_tr: (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, idescriptors) ∧ trX = preX ++ sufX
His_tr: equivocator_state_n (is eqv) ≤ equivocator_state_n (finite_trace_last is tr eqv)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
n: nat
Hvin_desc_eqv: descriptors eqv = Existing n
s0: state (IM eqv)
Hfin_desc_eqv': final_descriptors' eqv = NewMachine s0
Hex_new: previous_state_descriptor_prop (IM eqv) (Existing n) (finite_trace_last is tr eqv) (NewMachine s0)
Heq_ltr: finite_trace_last is tr = state_update (equivocator_IM IM) s eqv (finite_trace_last is tr eqv)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM descriptors eqv (NewMachine s0)
Hx: match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := l itemx in valid li (sx i, input itemx)) ∧ (let (i, li) := l itemx in let (si', om') := transition li (sx i, input itemx) in (state_update IM sx i si', om')) = (destination itemx, output itemx) | None => equivocators_state_project IM descriptors s = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hprojectx: equivocators_transition_item_project descriptors {| l := existT eqv li; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM eqv) li, existT eqv (existing_equivocator_label_extract (IM eqv) li Hex) = l itemx) ∧ iom = input itemx ∧ oom = output itemx ∧ equivocators_state_project IM descriptors s = destination itemx ∧ NewMachine s0 = equivocator_label_descriptor li | None => True end
Htr_x: equivocator_state_n (finite_trace_last is tr eqv) ≤ equivocator_state_n (s eqv)
Ht: (let (si', om') := equivocator_transition (IM eqv) li (finite_trace_last is tr eqv, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) eqv si', om')) = (s, oom)
Hv: equivocator_valid (IM eqv) li (finite_trace_last is tr eqv, iom)
Hex_new': previous_state_descriptor_prop (IM eqv) (NewMachine s0) (is eqv) (idescriptors eqv)

previous_state_descriptor_prop (IM eqv) (Existing n) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
final_descriptors': equivocator_descriptors IM
IHtr: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors' tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (final_descriptors' eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
eqv: index
li: EquivocatorLabel (IM eqv)
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors s
trX: list (composite_transition_item IM)
oitem: option (composite_transition_item IM)
Hproject_tr: (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, idescriptors) ∧ trX = preX ++ sufX
His_tr: equivocator_state_n (is eqv) ≤ equivocator_state_n (finite_trace_last is tr eqv)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
n: nat
Hvin_desc_eqv: descriptors eqv = Existing n
n0: nat
Hfin_desc_eqv': final_descriptors' eqv = Existing n0
Hex_new: previous_state_descriptor_prop (IM eqv) (Existing n) (finite_trace_last is tr eqv) (Existing n0)
Heq_ltr: finite_trace_last is tr = state_update (equivocator_IM IM) s eqv (finite_trace_last is tr eqv)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM descriptors eqv (Existing n0)
Hx: match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := l itemx in valid li (sx i, input itemx)) ∧ (let (i, li) := l itemx in let (si', om') := transition li (sx i, input itemx) in (state_update IM sx i si', om')) = (destination itemx, output itemx) | None => equivocators_state_project IM descriptors s = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hprojectx: equivocators_transition_item_project descriptors {| l := existT eqv li; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM eqv) li, existT eqv (existing_equivocator_label_extract (IM eqv) li Hex) = l itemx) ∧ iom = input itemx ∧ oom = output itemx ∧ equivocators_state_project IM descriptors s = destination itemx ∧ Existing n0 = equivocator_label_descriptor li | None => True end
Htr_x: equivocator_state_n (finite_trace_last is tr eqv) ≤ equivocator_state_n (s eqv)
Ht: (let (si', om') := equivocator_transition (IM eqv) li (finite_trace_last is tr eqv, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) eqv si', om')) = (s, oom)
Hv: equivocator_valid (IM eqv) li (finite_trace_last is tr eqv, iom)
Hex_new': previous_state_descriptor_prop (IM eqv) (Existing n0) (is eqv) (idescriptors eqv)
previous_state_descriptor_prop (IM eqv) (Existing n) (is eqv) (idescriptors eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
final_descriptors': equivocator_descriptors IM
IHtr: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors' tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (final_descriptors' eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
eqv: index
li: EquivocatorLabel (IM eqv)
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors s
trX: list (composite_transition_item IM)
oitem: option (composite_transition_item IM)
Hproject_tr: (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, idescriptors) ∧ trX = preX ++ sufX
His_tr: equivocator_state_n (is eqv) ≤ equivocator_state_n (finite_trace_last is tr eqv)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
n: nat
Hvin_desc_eqv: descriptors eqv = Existing n
s0: state (IM eqv)
Hfin_desc_eqv': final_descriptors' eqv = NewMachine s0
Hex_new: previous_state_descriptor_prop (IM eqv) (Existing n) (finite_trace_last is tr eqv) (NewMachine s0)
Heq_ltr: finite_trace_last is tr = state_update (equivocator_IM IM) s eqv (finite_trace_last is tr eqv)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM descriptors eqv (NewMachine s0)
Hx: match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := l itemx in valid li (sx i, input itemx)) ∧ (let (i, li) := l itemx in let (si', om') := transition li (sx i, input itemx) in (state_update IM sx i si', om')) = (destination itemx, output itemx) | None => equivocators_state_project IM descriptors s = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hprojectx: equivocators_transition_item_project descriptors {| l := existT eqv li; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM eqv) li, existT eqv (existing_equivocator_label_extract (IM eqv) li Hex) = l itemx) ∧ iom = input itemx ∧ oom = output itemx ∧ equivocators_state_project IM descriptors s = destination itemx ∧ NewMachine s0 = equivocator_label_descriptor li | None => True end
Htr_x: equivocator_state_n (finite_trace_last is tr eqv) ≤ equivocator_state_n (s eqv)
Ht: (let (si', om') := equivocator_transition (IM eqv) li (finite_trace_last is tr eqv, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) eqv si', om')) = (s, oom)
Hv: equivocator_valid (IM eqv) li (finite_trace_last is tr eqv, iom)
Hex_new': previous_state_descriptor_prop (IM eqv) (NewMachine s0) (is eqv) (idescriptors eqv)

previous_state_descriptor_prop (IM eqv) (Existing n) (is eqv) (idescriptors eqv)
by simpl in Hex_new, Hex_new'; rewrite Hex_new'; simpl; lia.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
final_descriptors': equivocator_descriptors IM
IHtr: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors' tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (final_descriptors' eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
eqv: index
li: EquivocatorLabel (IM eqv)
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors s
trX: list (composite_transition_item IM)
oitem: option (composite_transition_item IM)
Hproject_tr: (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, idescriptors) ∧ trX = preX ++ sufX
His_tr: equivocator_state_n (is eqv) ≤ equivocator_state_n (finite_trace_last is tr eqv)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
n: nat
Hvin_desc_eqv: descriptors eqv = Existing n
n0: nat
Hfin_desc_eqv': final_descriptors' eqv = Existing n0
Hex_new: previous_state_descriptor_prop (IM eqv) (Existing n) (finite_trace_last is tr eqv) (Existing n0)
Heq_ltr: finite_trace_last is tr = state_update (equivocator_IM IM) s eqv (finite_trace_last is tr eqv)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM descriptors eqv (Existing n0)
Hx: match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := l itemx in valid li (sx i, input itemx)) ∧ (let (i, li) := l itemx in let (si', om') := transition li (sx i, input itemx) in (state_update IM sx i si', om')) = (destination itemx, output itemx) | None => equivocators_state_project IM descriptors s = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hprojectx: equivocators_transition_item_project descriptors {| l := existT eqv li; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM eqv) li, existT eqv (existing_equivocator_label_extract (IM eqv) li Hex) = l itemx) ∧ iom = input itemx ∧ oom = output itemx ∧ equivocators_state_project IM descriptors s = destination itemx ∧ Existing n0 = equivocator_label_descriptor li | None => True end
Htr_x: equivocator_state_n (finite_trace_last is tr eqv) ≤ equivocator_state_n (s eqv)
Ht: (let (si', om') := equivocator_transition (IM eqv) li (finite_trace_last is tr eqv, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) eqv si', om')) = (s, oom)
Hv: equivocator_valid (IM eqv) li (finite_trace_last is tr eqv, iom)
Hex_new': previous_state_descriptor_prop (IM eqv) (Existing n0) (is eqv) (idescriptors eqv)

previous_state_descriptor_prop (IM eqv) (Existing n) (is eqv) (idescriptors eqv)
by destruct (idescriptors eqv); simpl in *; lia.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
final_descriptors': equivocator_descriptors IM
IHtr: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors' tr = Some (trX, idescriptors) → eqv : index, previous_state_descriptor_prop (IM eqv) (final_descriptors' eqv) (is eqv) (idescriptors eqv)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
i: index
li: EquivocatorLabel (IM i)
descriptors: equivocator_descriptors IM
Hdescriptors: proper_equivocator_descriptors IM descriptors s
trX: list (composite_transition_item IM)
oitem: option (composite_transition_item IM)
Hproject_tr: (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, idescriptors) ∧ trX = preX ++ sufX
eqv: index
His_tr: eqv : index, equivocator_state_n (is eqv) ≤ equivocator_state_n (finite_trace_last is tr eqv)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM descriptors i (final_descriptors' i)
Heq_ltr: finite_trace_last is tr = state_update (equivocator_IM IM) s i (finite_trace_last is tr i)
Hex_new: previous_state_descriptor_prop (IM i) (descriptors i) (finite_trace_last is tr i) (final_descriptors' i)
Hx: match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := l itemx in valid li (sx i, input itemx)) ∧ (let (i, li) := l itemx in let (si', om') := transition li (sx i, input itemx) in (state_update IM sx i si', om')) = (destination itemx, output itemx) | None => equivocators_state_project IM descriptors s = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM i) li, existT i (existing_equivocator_label_extract (IM i) li Hex) = l itemx) ∧ iom = input itemx ∧ oom = output itemx ∧ equivocators_state_project IM descriptors s = destination itemx ∧ final_descriptors' i = equivocator_label_descriptor li | None => True end
Hprojectx: equivocators_transition_item_project descriptors {| l := existT i li; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Htr_x: eqv : index, equivocator_state_n (finite_trace_last is tr eqv) ≤ equivocator_state_n (s eqv)
Hv: equivocator_valid (IM i) li (finite_trace_last is tr i, iom)
Ht: (let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)
Hex_new': previous_state_descriptor_prop (IM eqv) (final_descriptors' eqv) (is eqv) (idescriptors eqv)
n: i ≠ eqv

previous_state_descriptor_prop (IM eqv) (descriptors eqv) (is eqv) (idescriptors eqv)
by rewrite Heq_final_descriptors' in Hex_new'; state_update_simpl. Qed.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors, idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
trX: list (composite_transition_item IM)
is, s: composite_state (equivocator_IM IM)
Htr: finite_constrained_trace_from_to (free_composite_vlsm (equivocator_IM IM)) is s tr
Hdescriptors: not_equivocating_equivocator_descriptors IM descriptors s
Hproject_tr: equivocators_trace_project descriptors tr = Some (trX, idescriptors)

set_union (equivocating_indices IM (enum index) is) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ equivocating_indices IM (enum index) s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors, idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
trX: list (composite_transition_item IM)
is, s: composite_state (equivocator_IM IM)
Htr: finite_constrained_trace_from_to (free_composite_vlsm (equivocator_IM IM)) is s tr
Hdescriptors: not_equivocating_equivocator_descriptors IM descriptors s
Hproject_tr: equivocators_trace_project descriptors tr = Some (trX, idescriptors)

set_union (equivocating_indices IM (enum index) is) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ equivocating_indices IM (enum index) s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors, idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
trX: list (composite_transition_item IM)
is, s: composite_state (equivocator_IM IM)
Htr: finite_constrained_trace_from_to (free_composite_vlsm (equivocator_IM IM)) is s tr
Hdescriptors: not_equivocating_equivocator_descriptors IM descriptors s
Hproject_tr: equivocators_trace_project descriptors tr = Some (trX, idescriptors)
Hproper: proper_equivocator_descriptors IM descriptors s

set_union (equivocating_indices IM (enum index) is) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ equivocating_indices IM (enum index) s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors, idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
trX: list (composite_transition_item IM)
is, s: composite_state (equivocator_IM IM)
Htr: finite_constrained_trace_from_to (free_composite_vlsm (equivocator_IM IM)) is s tr
Hdescriptors: not_equivocating_equivocator_descriptors IM descriptors s
Hproject_tr: equivocators_trace_project descriptors tr = Some (trX, idescriptors)
Hproper: proper_equivocator_descriptors IM descriptors s
Hincl: set_union (equivocating_indices IM (enum index) is) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) descriptors)

set_union (equivocating_indices IM (enum index) is) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ equivocating_indices IM (enum index) s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors, idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
trX: list (composite_transition_item IM)
is, s: composite_state (equivocator_IM IM)
Htr: finite_constrained_trace_from_to (free_composite_vlsm (equivocator_IM IM)) is s tr
Hdescriptors: not_equivocating_equivocator_descriptors IM descriptors s
Hproject_tr: equivocators_trace_project descriptors tr = Some (trX, idescriptors)
Hproper: proper_equivocator_descriptors IM descriptors s
Hincl: set_union (equivocating_indices IM (enum index) is) (newmachine_descriptors_list IM (enum index) idescriptors) ⊆ set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) descriptors)
eqv: index
Heqv: eqv ∈ set_union (equivocating_indices IM (enum index) is) (newmachine_descriptors_list IM (enum index) idescriptors)

eqv ∈ equivocating_indices IM (enum index) s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors, idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
trX: list (composite_transition_item IM)
is, s: composite_state (equivocator_IM IM)
Htr: finite_constrained_trace_from_to (free_composite_vlsm (equivocator_IM IM)) is s tr
Hdescriptors: not_equivocating_equivocator_descriptors IM descriptors s
Hproject_tr: equivocators_trace_project descriptors tr = Some (trX, idescriptors)
Hproper: proper_equivocator_descriptors IM descriptors s
eqv: index
Hincl: eqv ∈ set_union (equivocating_indices IM (enum index) s) (newmachine_descriptors_list IM (enum index) descriptors)
Heqv: eqv ∈ set_union (equivocating_indices IM (enum index) is) (newmachine_descriptors_list IM (enum index) idescriptors)

eqv ∈ equivocating_indices IM (enum index) s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors, idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
trX: list (composite_transition_item IM)
is, s: composite_state (equivocator_IM IM)
Htr: finite_constrained_trace_from_to (free_composite_vlsm (equivocator_IM IM)) is s tr
Hdescriptors: not_equivocating_equivocator_descriptors IM descriptors s
Hproject_tr: equivocators_trace_project descriptors tr = Some (trX, idescriptors)
Hproper: proper_equivocator_descriptors IM descriptors s
eqv: index
Hincl: eqv ∈ equivocating_indices IM (enum index) s ∨ eqv ∈ newmachine_descriptors_list IM (enum index) descriptors
Heqv: eqv ∈ set_union (equivocating_indices IM (enum index) is) (newmachine_descriptors_list IM (enum index) idescriptors)

eqv ∈ equivocating_indices IM (enum index) s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors, idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
trX: list (composite_transition_item IM)
is, s: composite_state (equivocator_IM IM)
Htr: finite_constrained_trace_from_to (free_composite_vlsm (equivocator_IM IM)) is s tr
Hdescriptors: not_equivocating_equivocator_descriptors IM descriptors s
Hproject_tr: equivocators_trace_project descriptors tr = Some (trX, idescriptors)
Hproper: proper_equivocator_descriptors IM descriptors s
eqv: index
Hincl: eqv ∈ equivocating_indices IM (enum index) s ∨ eqv ∈ newmachine_descriptors_list IM (enum index) descriptors

eqv ∈ equivocating_indices IM (enum index) s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors, idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
trX: list (composite_transition_item IM)
is, s: composite_state (equivocator_IM IM)
Htr: finite_constrained_trace_from_to (free_composite_vlsm (equivocator_IM IM)) is s tr
Hdescriptors: not_equivocating_equivocator_descriptors IM descriptors s
Hproject_tr: equivocators_trace_project descriptors tr = Some (trX, idescriptors)
Hproper: proper_equivocator_descriptors IM descriptors s
eqv: index
Heqv: eqv ∈ newmachine_descriptors_list IM (enum index) descriptors

eqv ∈ equivocating_indices IM (enum index) s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors, idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
trX: list (composite_transition_item IM)
is, s: composite_state (equivocator_IM IM)
Htr: finite_constrained_trace_from_to (free_composite_vlsm (equivocator_IM IM)) is s tr
eqv: index
Hdescriptors: existing_descriptor (IM eqv) (descriptors eqv) (s eqv)
Hproject_tr: equivocators_trace_project descriptors tr = Some (trX, idescriptors)
Hproper: proper_equivocator_descriptors IM descriptors s
Heqv: eqv ∈ newmachine_descriptors_list IM (enum index) descriptors

eqv ∈ equivocating_indices IM (enum index) s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors, idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
trX: list (composite_transition_item IM)
is, s: composite_state (equivocator_IM IM)
Htr: finite_constrained_trace_from_to (free_composite_vlsm (equivocator_IM IM)) is s tr
eqv: index
Hdescriptors: existing_descriptor (IM eqv) (descriptors eqv) (s eqv)
Hproject_tr: equivocators_trace_project descriptors tr = Some (trX, idescriptors)
Hproper: proper_equivocator_descriptors IM descriptors s
Heqv: is_newmachine_descriptor (IM eqv) (descriptors eqv) ∧ eqv ∈ enum index

eqv ∈ equivocating_indices IM (enum index) s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
descriptors, idescriptors: equivocator_descriptors IM
tr: list (composite_transition_item (equivocator_IM IM))
trX: list (composite_transition_item IM)
is, s: composite_state (equivocator_IM IM)
Htr: finite_constrained_trace_from_to (free_composite_vlsm (equivocator_IM IM)) is s tr
eqv: index
Hdescriptors: existing_descriptor (IM eqv) (descriptors eqv) (s eqv)
Hproject_tr: equivocators_trace_project descriptors tr = Some (trX, idescriptors)
Hproper: proper_equivocator_descriptors IM descriptors s
Heqv: is_newmachine_descriptor (IM eqv) (descriptors eqv)
Hin: eqv ∈ enum index

eqv ∈ equivocating_indices IM (enum index) s
by destruct (descriptors eqv). Qed.
We can project a trace over the composition of equivocators in two ways: (1) first project on a equivocator component, then project the equivocator to the original component (2) first projects to the composition of original components, then project to one of them
The result below says that the two ways lead to the same result.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
final_descriptors, initial_descriptors: equivocator_descriptors IM
eqv_initial: MachineDescriptor (IM i)
tr: list (composite_transition_item (equivocator_IM IM))
trX: list (composite_transition_item IM)
trXi: list transition_item
eqv_final:= final_descriptors i: MachineDescriptor (IM i)
Hproject_tr: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)
Hproject_tri: equivocator_vlsm_trace_project (IM i) (finite_trace_projection_list (equivocator_IM IM) i tr) eqv_final = Some (trXi, eqv_initial)

initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX = trXi
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
final_descriptors, initial_descriptors: equivocator_descriptors IM
eqv_initial: MachineDescriptor (IM i)
tr: list (composite_transition_item (equivocator_IM IM))
trX: list (composite_transition_item IM)
trXi: list transition_item
eqv_final:= final_descriptors i: MachineDescriptor (IM i)
Hproject_tr: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)
Hproject_tri: equivocator_vlsm_trace_project (IM i) (finite_trace_projection_list (equivocator_IM IM) i tr) eqv_final = Some (trXi, eqv_initial)

initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX = trXi
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
final_descriptors, initial_descriptors: equivocator_descriptors IM
eqv_initial: MachineDescriptor (IM i)
tr: list (composite_transition_item (equivocator_IM IM))
trX: list (composite_transition_item IM)
eqv_final:= final_descriptors i: MachineDescriptor (IM i)
Hproject_tr: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)

trXi : list transition_item, equivocator_vlsm_trace_project (IM i) (finite_trace_projection_list (equivocator_IM IM) i tr) eqv_final = Some (trXi, eqv_initial) → initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX = trXi
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
final_descriptors, initial_descriptors: equivocator_descriptors IM
eqv_initial: MachineDescriptor (IM i)
tr: list (composite_transition_item (equivocator_IM IM))
eqv_final:= final_descriptors i: MachineDescriptor (IM i)

trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) → trXi : list transition_item, equivocator_vlsm_trace_project (IM i) (finite_trace_projection_list (equivocator_IM IM) i tr) eqv_final = Some (trXi, eqv_initial) → initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX = trXi
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
initial_descriptors: equivocator_descriptors IM
eqv_initial: MachineDescriptor (IM i)
tr: list (composite_transition_item (equivocator_IM IM))

(final_descriptors : equivocator_descriptors IM) (eqv_final := final_descriptors i) (trX : list (composite_transition_item IM)), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) → trXi : list transition_item, equivocator_vlsm_trace_project (IM i) (finite_trace_projection_list (equivocator_IM IM) i tr) eqv_final = Some (trXi, eqv_initial) → initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX = trXi
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
initial_descriptors: equivocator_descriptors IM
eqv_initial: MachineDescriptor (IM i)
final_descriptors: equivocator_descriptors IM
eqv_final:= final_descriptors i: MachineDescriptor (IM i)
trX: list (composite_transition_item IM)
Hproject_tr: equivocators_trace_project final_descriptors [] = Some (trX, initial_descriptors)
trXi: list transition_item
Hproject_tri: equivocator_vlsm_trace_project (IM i) (finite_trace_projection_list (equivocator_IM IM) i []) eqv_final = Some (trXi, eqv_initial)

initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX = trXi
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
initial_descriptors: equivocator_descriptors IM
eqv_initial: MachineDescriptor (IM i)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
IHtr: (final_descriptors : equivocator_descriptors IM) (eqv_final := final_descriptors i) (trX : list (composite_transition_item IM)), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) → trXi : list transition_item, equivocator_vlsm_trace_project (IM i) (finite_trace_projection_list (equivocator_IM IM) i tr) eqv_final = Some (trXi, eqv_initial) → initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX = trXi
final_descriptors: equivocator_descriptors IM
eqv_final:= final_descriptors i: MachineDescriptor (IM i)
trX: list (composite_transition_item IM)
Hproject_tr: equivocators_trace_project final_descriptors (tr ++ [x]) = Some (trX, initial_descriptors)
trXi: list transition_item
Hproject_tri: equivocator_vlsm_trace_project (IM i) (finite_trace_projection_list (equivocator_IM IM) i (tr ++ [x])) eqv_final = Some (trXi, eqv_initial)
initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX = trXi
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
initial_descriptors: equivocator_descriptors IM
eqv_initial: MachineDescriptor (IM i)
final_descriptors: equivocator_descriptors IM
eqv_final:= final_descriptors i: MachineDescriptor (IM i)
trX: list (composite_transition_item IM)
Hproject_tr: equivocators_trace_project final_descriptors [] = Some (trX, initial_descriptors)
trXi: list transition_item
Hproject_tri: equivocator_vlsm_trace_project (IM i) (finite_trace_projection_list (equivocator_IM IM) i []) eqv_final = Some (trXi, eqv_initial)

initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX = trXi
by inversion Hproject_tr; inversion Hproject_tri; subst.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
initial_descriptors: equivocator_descriptors IM
eqv_initial: MachineDescriptor (IM i)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
IHtr: (final_descriptors : equivocator_descriptors IM) (eqv_final := final_descriptors i) (trX : list (composite_transition_item IM)), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) → trXi : list transition_item, equivocator_vlsm_trace_project (IM i) (finite_trace_projection_list (equivocator_IM IM) i tr) eqv_final = Some (trXi, eqv_initial) → initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX = trXi
final_descriptors: equivocator_descriptors IM
eqv_final:= final_descriptors i: MachineDescriptor (IM i)
trX: list (composite_transition_item IM)
Hproject_tr: equivocators_trace_project final_descriptors (tr ++ [x]) = Some (trX, initial_descriptors)
trXi: list transition_item
Hproject_tri: equivocator_vlsm_trace_project (IM i) (finite_trace_projection_list (equivocator_IM IM) i (tr ++ [x])) eqv_final = Some (trXi, eqv_initial)

initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX = trXi
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
initial_descriptors: equivocator_descriptors IM
eqv_initial: MachineDescriptor (IM i)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
IHtr: (final_descriptors : equivocator_descriptors IM) (eqv_final := final_descriptors i) (trX : list (composite_transition_item IM)), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) → trXi : list transition_item, equivocator_vlsm_trace_project (IM i) (finite_trace_projection_list (equivocator_IM IM) i tr) eqv_final = Some (trXi, eqv_initial) → initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX = trXi
final_descriptors: equivocator_descriptors IM
eqv_final:= final_descriptors i: MachineDescriptor (IM i)
trX: list (composite_transition_item IM)
Hproject_tr: foldr equivocators_trace_project_folder (Some ([], final_descriptors)) (tr ++ [x]) = Some (trX, initial_descriptors)
trXi: list transition_item
Hproject_tri: equivocator_vlsm_trace_project (IM i) (finite_trace_projection_list (equivocator_IM IM) i (tr ++ [x])) eqv_final = Some (trXi, eqv_initial)

initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX = trXi
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
initial_descriptors: equivocator_descriptors IM
eqv_initial: MachineDescriptor (IM i)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
IHtr: (final_descriptors : equivocator_descriptors IM) (eqv_final := final_descriptors i) (trX : list (composite_transition_item IM)), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) → trXi : list transition_item, equivocator_vlsm_trace_project (IM i) (finite_trace_projection_list (equivocator_IM IM) i tr) eqv_final = Some (trXi, eqv_initial) → initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX = trXi
final_descriptors: equivocator_descriptors IM
eqv_final:= final_descriptors i: MachineDescriptor (IM i)
trX: list (composite_transition_item IM)
Hproject_tr: foldr equivocators_trace_project_folder (foldr equivocators_trace_project_folder (Some ([], final_descriptors)) [x]) tr = Some (trX, initial_descriptors)
trXi: list transition_item
Hproject_tri: equivocator_vlsm_trace_project (IM i) (finite_trace_projection_list (equivocator_IM IM) i (tr ++ [x])) eqv_final = Some (trXi, eqv_initial)

initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX = trXi
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
initial_descriptors: equivocator_descriptors IM
eqv_initial: MachineDescriptor (IM i)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
IHtr: (final_descriptors : equivocator_descriptors IM) (eqv_final := final_descriptors i) (trX : list (composite_transition_item IM)), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) → trXi : list transition_item, equivocator_vlsm_trace_project (IM i) (finite_trace_projection_list (equivocator_IM IM) i tr) eqv_final = Some (trXi, eqv_initial) → initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX = trXi
final_descriptors: equivocator_descriptors IM
eqv_final:= final_descriptors i: MachineDescriptor (IM i)
trX, projectx: list (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hproject_x: foldr equivocators_trace_project_folder (Some ([], final_descriptors)) [x] = Some (projectx, final_descriptors')
Hproject_tr: foldr equivocators_trace_project_folder (Some (projectx, final_descriptors')) tr = Some (trX, initial_descriptors)
trXi: list transition_item
Hproject_tri: equivocator_vlsm_trace_project (IM i) (finite_trace_projection_list (equivocator_IM IM) i (tr ++ [x])) eqv_final = Some (trXi, eqv_initial)

initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX = trXi
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
initial_descriptors: equivocator_descriptors IM
eqv_initial: MachineDescriptor (IM i)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
IHtr: (final_descriptors : equivocator_descriptors IM) (eqv_final := final_descriptors i) (trX : list (composite_transition_item IM)), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) → trXi : list transition_item, equivocator_vlsm_trace_project (IM i) (finite_trace_projection_list (equivocator_IM IM) i tr) eqv_final = Some (trXi, eqv_initial) → initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX = trXi
final_descriptors: equivocator_descriptors IM
eqv_final:= final_descriptors i: MachineDescriptor (IM i)
trX, projectx: list (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hproject_x: foldr equivocators_trace_project_folder (Some ([], final_descriptors)) [x] = Some (projectx, final_descriptors')
Hproject_tr: trX0 : list (composite_transition_item IM), foldr equivocators_trace_project_folder (Some ([], final_descriptors')) tr = Some (trX0, initial_descriptors) ∧ trX = trX0 ++ projectx
trXi: list transition_item
Hproject_tri: equivocator_vlsm_trace_project (IM i) (finite_trace_projection_list (equivocator_IM IM) i (tr ++ [x])) eqv_final = Some (trXi, eqv_initial)

initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX = trXi
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
initial_descriptors: equivocator_descriptors IM
eqv_initial: MachineDescriptor (IM i)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
IHtr: (final_descriptors : equivocator_descriptors IM) (eqv_final := final_descriptors i) (trX : list (composite_transition_item IM)), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) → trXi : list transition_item, equivocator_vlsm_trace_project (IM i) (finite_trace_projection_list (equivocator_IM IM) i tr) eqv_final = Some (trXi, eqv_initial) → initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX = trXi
final_descriptors: equivocator_descriptors IM
eqv_final:= final_descriptors i: MachineDescriptor (IM i)
trX, projectx: list (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hproject_x: foldr equivocators_trace_project_folder (Some ([], final_descriptors)) [x] = Some (projectx, final_descriptors')
trX0: list (composite_transition_item IM)
HtrX0: foldr equivocators_trace_project_folder (Some ([], final_descriptors')) tr = Some (trX0, initial_descriptors)
HtrX: trX = trX0 ++ projectx
trXi: list transition_item
Hproject_tri: equivocator_vlsm_trace_project (IM i) (finite_trace_projection_list (equivocator_IM IM) i (tr ++ [x])) eqv_final = Some (trXi, eqv_initial)

initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX = trXi
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
initial_descriptors: equivocator_descriptors IM
eqv_initial: MachineDescriptor (IM i)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors': equivocator_descriptors IM
trX0: list (composite_transition_item IM)
IHtr: trXi : list transition_item, equivocator_vlsm_trace_project (IM i) (finite_trace_projection_list (equivocator_IM IM) i tr) (final_descriptors' i) = Some (trXi, eqv_initial) → initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX0 = trXi
final_descriptors: equivocator_descriptors IM
eqv_final:= final_descriptors i: MachineDescriptor (IM i)
trX, projectx: list (composite_transition_item IM)
Hproject_x: foldr equivocators_trace_project_folder (Some ([], final_descriptors)) [x] = Some (projectx, final_descriptors')
HtrX0: foldr equivocators_trace_project_folder (Some ([], final_descriptors')) tr = Some (trX0, initial_descriptors)
HtrX: trX = trX0 ++ projectx
trXi: list transition_item
Hproject_tri: equivocator_vlsm_trace_project (IM i) (finite_trace_projection_list (equivocator_IM IM) i (tr ++ [x])) eqv_final = Some (trXi, eqv_initial)

initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX = trXi
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
initial_descriptors: equivocator_descriptors IM
eqv_initial: MachineDescriptor (IM i)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors': equivocator_descriptors IM
trX0: list (composite_transition_item IM)
IHtr: trXi : list transition_item, equivocator_vlsm_trace_project (IM i) (finite_trace_projection_list (equivocator_IM IM) i tr) (final_descriptors' i) = Some (trXi, eqv_initial) → initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX0 = trXi
final_descriptors: equivocator_descriptors IM
eqv_final:= final_descriptors i: MachineDescriptor (IM i)
trX, projectx: list (composite_transition_item IM)
Hproject_x: foldr equivocators_trace_project_folder (Some ([], final_descriptors)) [x] = Some (projectx, final_descriptors')
HtrX0: foldr equivocators_trace_project_folder (Some ([], final_descriptors')) tr = Some (trX0, initial_descriptors)
HtrX: trX = trX0 ++ projectx
trXi: list transition_item
Hproject_tri: equivocator_vlsm_trace_project (IM i) (pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (equivocator_IM IM i) (composite_project_label (equivocator_IM IM) i) (λ s : state (composite_type (equivocator_IM IM)), s i) (tr ++ [x])) eqv_final = Some (trXi, eqv_initial)

initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX = trXi
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
initial_descriptors: equivocator_descriptors IM
eqv_initial: MachineDescriptor (IM i)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors': equivocator_descriptors IM
trX0: list (composite_transition_item IM)
IHtr: trXi : list transition_item, equivocator_vlsm_trace_project (IM i) (finite_trace_projection_list (equivocator_IM IM) i tr) (final_descriptors' i) = Some (trXi, eqv_initial) → initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX0 = trXi
final_descriptors: equivocator_descriptors IM
eqv_final:= final_descriptors i: MachineDescriptor (IM i)
trX, projectx: list (composite_transition_item IM)
Hproject_x: foldr equivocators_trace_project_folder (Some ([], final_descriptors)) [x] = Some (projectx, final_descriptors')
HtrX0: foldr equivocators_trace_project_folder (Some ([], final_descriptors')) tr = Some (trX0, initial_descriptors)
HtrX: trX = trX0 ++ projectx
trXi: list transition_item
Hproject_tri: equivocator_vlsm_trace_project (IM i) (pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (equivocator_IM IM i) (composite_project_label (equivocator_IM IM) i) (λ s : state (composite_type (equivocator_IM IM)), s i) tr ++ pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (equivocator_IM IM i) (composite_project_label (equivocator_IM IM) i) (λ s : state (composite_type (equivocator_IM IM)), s i) [x]) eqv_final = Some (trXi, eqv_initial)

initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX = trXi
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
initial_descriptors: equivocator_descriptors IM
eqv_initial: MachineDescriptor (IM i)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors': equivocator_descriptors IM
trX0: list (composite_transition_item IM)
IHtr: trXi : list transition_item, equivocator_vlsm_trace_project (IM i) (finite_trace_projection_list (equivocator_IM IM) i tr) (final_descriptors' i) = Some (trXi, eqv_initial) → initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX0 = trXi
final_descriptors: equivocator_descriptors IM
eqv_final:= final_descriptors i: MachineDescriptor (IM i)
trX, projectx: list (composite_transition_item IM)
Hproject_x: foldr equivocators_trace_project_folder (Some ([], final_descriptors)) [x] = Some (projectx, final_descriptors')
HtrX0: foldr equivocators_trace_project_folder (Some ([], final_descriptors')) tr = Some (trX0, initial_descriptors)
HtrX: trX = trX0 ++ projectx
trXi: list transition_item
Hproject_tri: (dmiddle : MachineDescriptor (IM i)) (prefix suffix : list transition_item) (_ : equivocator_vlsm_trace_project (IM i) (pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (equivocator_IM IM i) (composite_project_label (equivocator_IM IM) i) (λ s : state (composite_type (equivocator_IM IM)), s i) tr) dmiddle = Some (prefix, eqv_initial)) (_ : equivocator_vlsm_trace_project (IM i) (pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (equivocator_IM IM i) (composite_project_label (equivocator_IM IM) i) (λ s : state (composite_type (equivocator_IM IM)), s i) [x]) eqv_final = Some (suffix, dmiddle)), trXi = prefix ++ suffix

initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX = trXi
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
initial_descriptors: equivocator_descriptors IM
eqv_initial: MachineDescriptor (IM i)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors': equivocator_descriptors IM
trX0: list (composite_transition_item IM)
IHtr: trXi : list transition_item, equivocator_vlsm_trace_project (IM i) (finite_trace_projection_list (equivocator_IM IM) i tr) (final_descriptors' i) = Some (trXi, eqv_initial) → initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX0 = trXi
final_descriptors: equivocator_descriptors IM
eqv_final:= final_descriptors i: MachineDescriptor (IM i)
trX, projectx: list (composite_transition_item IM)
Hproject_x: foldr equivocators_trace_project_folder (Some ([], final_descriptors)) [x] = Some (projectx, final_descriptors')
HtrX0: foldr equivocators_trace_project_folder (Some ([], final_descriptors')) tr = Some (trX0, initial_descriptors)
HtrX: trX = trX0 ++ projectx
trXi: list transition_item
eqv_final': MachineDescriptor (IM i)
trXi', project_xi: list transition_item
HtrXi': equivocator_vlsm_trace_project (IM i) (pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (equivocator_IM IM i) (composite_project_label (equivocator_IM IM) i) (λ s : state (composite_type (equivocator_IM IM)), s i) tr) eqv_final' = Some (trXi', eqv_initial)
Hproject_xi: equivocator_vlsm_trace_project (IM i) (pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (equivocator_IM IM i) (composite_project_label (equivocator_IM IM) i) (λ s : state (composite_type (equivocator_IM IM)), s i) [x]) eqv_final = Some (project_xi, eqv_final')
HeqtrXi: trXi = trXi' ++ project_xi

initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX = trXi
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
initial_descriptors: equivocator_descriptors IM
eqv_initial: MachineDescriptor (IM i)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors': equivocator_descriptors IM
trX0: list (composite_transition_item IM)
IHtr: trXi : list transition_item, equivocator_vlsm_trace_project (IM i) (finite_trace_projection_list (equivocator_IM IM) i tr) (final_descriptors' i) = Some (trXi, eqv_initial) → initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX0 = trXi
final_descriptors: equivocator_descriptors IM
eqv_final:= final_descriptors i: MachineDescriptor (IM i)
trX, projectx: list (composite_transition_item IM)
Hproject_x: foldr equivocators_trace_project_folder (Some ([], final_descriptors)) [x] = Some (projectx, final_descriptors')
HtrX0: foldr equivocators_trace_project_folder (Some ([], final_descriptors')) tr = Some (trX0, initial_descriptors)
HtrX: trX = trX0 ++ projectx
trXi: list transition_item
eqv_final': MachineDescriptor (IM i)
trXi', project_xi: list transition_item
HtrXi': equivocator_vlsm_trace_project (IM i) (pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (equivocator_IM IM i) (composite_project_label (equivocator_IM IM) i) (λ s : state (composite_type (equivocator_IM IM)), s i) tr) eqv_final' = Some (trXi', eqv_initial)
Hproject_xi: equivocator_vlsm_trace_project (IM i) (pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (equivocator_IM IM i) (composite_project_label (equivocator_IM IM) i) (λ s : state (composite_type (equivocator_IM IM)), s i) [x]) eqv_final = Some (project_xi, eqv_final')
HeqtrXi: trXi = trXi' ++ project_xi

final_descriptors' i = eqv_final' ∧ finite_trace_projection_list IM i projectx = project_xi
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
initial_descriptors: equivocator_descriptors IM
eqv_initial: MachineDescriptor (IM i)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors': equivocator_descriptors IM
trX0: list (composite_transition_item IM)
IHtr: trXi : list transition_item, equivocator_vlsm_trace_project (IM i) (finite_trace_projection_list (equivocator_IM IM) i tr) (final_descriptors' i) = Some (trXi, eqv_initial) → initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX0 = trXi
final_descriptors: equivocator_descriptors IM
eqv_final:= final_descriptors i: MachineDescriptor (IM i)
trX, projectx: list (composite_transition_item IM)
Hproject_x: foldr equivocators_trace_project_folder (Some ([], final_descriptors)) [x] = Some (projectx, final_descriptors')
HtrX0: foldr equivocators_trace_project_folder (Some ([], final_descriptors')) tr = Some (trX0, initial_descriptors)
HtrX: trX = trX0 ++ projectx
trXi: list transition_item
eqv_final': MachineDescriptor (IM i)
trXi', project_xi: list transition_item
HtrXi': equivocator_vlsm_trace_project (IM i) (pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (equivocator_IM IM i) (composite_project_label (equivocator_IM IM) i) (λ s : state (composite_type (equivocator_IM IM)), s i) tr) eqv_final' = Some (trXi', eqv_initial)
Hproject_xi: equivocator_vlsm_trace_project (IM i) (pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (equivocator_IM IM i) (composite_project_label (equivocator_IM IM) i) (λ s : state (composite_type (equivocator_IM IM)), s i) [x]) eqv_final = Some (project_xi, eqv_final')
HeqtrXi: trXi = trXi' ++ project_xi
Hfinal'i: final_descriptors' i = eqv_final' ∧ finite_trace_projection_list IM i projectx = project_xi
initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX = trXi
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
initial_descriptors: equivocator_descriptors IM
eqv_initial: MachineDescriptor (IM i)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors': equivocator_descriptors IM
trX0: list (composite_transition_item IM)
IHtr: trXi : list transition_item, equivocator_vlsm_trace_project (IM i) (finite_trace_projection_list (equivocator_IM IM) i tr) (final_descriptors' i) = Some (trXi, eqv_initial) → initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX0 = trXi
final_descriptors: equivocator_descriptors IM
eqv_final:= final_descriptors i: MachineDescriptor (IM i)
trX, projectx: list (composite_transition_item IM)
Hproject_x: foldr equivocators_trace_project_folder (Some ([], final_descriptors)) [x] = Some (projectx, final_descriptors')
HtrX0: foldr equivocators_trace_project_folder (Some ([], final_descriptors')) tr = Some (trX0, initial_descriptors)
HtrX: trX = trX0 ++ projectx
trXi: list transition_item
eqv_final': MachineDescriptor (IM i)
trXi', project_xi: list transition_item
HtrXi': equivocator_vlsm_trace_project (IM i) (pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (equivocator_IM IM i) (composite_project_label (equivocator_IM IM) i) (λ s : state (composite_type (equivocator_IM IM)), s i) tr) eqv_final' = Some (trXi', eqv_initial)
Hproject_xi: equivocator_vlsm_trace_project (IM i) (pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (equivocator_IM IM i) (composite_project_label (equivocator_IM IM) i) (λ s : state (composite_type (equivocator_IM IM)), s i) [x]) eqv_final = Some (project_xi, eqv_final')
HeqtrXi: trXi = trXi' ++ project_xi

final_descriptors' i = eqv_final' ∧ finite_trace_projection_list IM i projectx = project_xi
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
i: index
x: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
eqv_final:= final_descriptors i: MachineDescriptor (IM i)
projectx: list (composite_transition_item IM)
Hproject_x: foldr equivocators_trace_project_folder (Some ([], final_descriptors)) [x] = Some (projectx, final_descriptors')
eqv_final': MachineDescriptor (IM i)
project_xi: list transition_item
Hproject_xi: equivocator_vlsm_trace_project (IM i) (pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (equivocator_IM IM i) (composite_project_label (equivocator_IM IM) i) (λ s : state (composite_type (equivocator_IM IM)), s i) [x]) eqv_final = Some (project_xi, eqv_final')

final_descriptors' i = eqv_final' ∧ finite_trace_projection_list IM i projectx = project_xi
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
i: index
x: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
eqv_final:= final_descriptors i: MachineDescriptor (IM i)
projectx: list (composite_transition_item IM)
Hproject_x: match equivocators_transition_item_project final_descriptors x with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (projectx, final_descriptors')
eqv_final': MachineDescriptor (IM i)
project_xi: list transition_item
Hproject_xi: equivocator_vlsm_trace_project (IM i) match pre_VLSM_projection_transition_item_project (composite_type (equivocator_IM IM)) (equivocator_type (IM i)) (composite_project_label (equivocator_IM IM) i) (λ s : composite_state (equivocator_IM IM), s i) x with | Some y => [y] | None => [] end eqv_final = Some (project_xi, eqv_final')

final_descriptors' i = eqv_final' ∧ finite_trace_projection_list IM i projectx = project_xi
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
i: index
x: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
eqv_final:= final_descriptors i: MachineDescriptor (IM i)
projectx: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
Hpr_item_x: equivocators_transition_item_project final_descriptors x = Some (ox, final')
Hproject_x: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (projectx, final_descriptors')
eqv_final': MachineDescriptor (IM i)
project_xi: list transition_item
Hproject_xi: equivocator_vlsm_trace_project (IM i) match pre_VLSM_projection_transition_item_project (composite_type (equivocator_IM IM)) (equivocator_type (IM i)) (composite_project_label (equivocator_IM IM) i) (λ s : composite_state (equivocator_IM IM), s i) x with | Some y => [y] | None => [] end eqv_final = Some (project_xi, eqv_final')

final_descriptors' i = eqv_final' ∧ finite_trace_projection_list IM i projectx = project_xi
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
i: index
x: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
eqv_final:= final_descriptors i: MachineDescriptor (IM i)
projectx: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
Hpr_item_x: match equivocator_vlsm_transition_item_project (IM (projT1 (l x))) (composite_transition_item_projection (equivocator_IM IM) x) (final_descriptors (projT1 (l x))) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l x)) (l item'); input := input x; destination := equivocators_state_project IM final_descriptors (destination x); output := output x |}, equivocator_descriptors_update IM final_descriptors (projT1 (l x)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l x)) deqv') | None => None end = Some (ox, final')
Hproject_x: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (projectx, final_descriptors')
eqv_final': MachineDescriptor (IM i)
project_xi: list transition_item
Hproject_xi: equivocator_vlsm_trace_project (IM i) match pre_VLSM_projection_transition_item_project (composite_type (equivocator_IM IM)) (equivocator_type (IM i)) (composite_project_label (equivocator_IM IM) i) (λ s : composite_state (equivocator_IM IM), s i) x with | Some y => [y] | None => [] end eqv_final = Some (project_xi, eqv_final')

final_descriptors' i = eqv_final' ∧ finite_trace_projection_list IM i projectx = project_xi
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
i: index
x: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
eqv_final:= final_descriptors i: MachineDescriptor (IM i)
projectx: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
Hpr_item_x: match equivocator_vlsm_transition_item_project (IM (projT1 (l x))) (composite_transition_item_projection (equivocator_IM IM) x) (final_descriptors (projT1 (l x))) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l x)) (l item'); input := input x; destination := equivocators_state_project IM final_descriptors (destination x); output := output x |}, equivocator_descriptors_update IM final_descriptors (projT1 (l x)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l x)) deqv') | None => None end = Some (ox, final')
Hproject_x: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (projectx, final_descriptors')
eqv_final': MachineDescriptor (IM i)
project_xi: list transition_item
Hproject_xi: equivocator_vlsm_trace_project (IM i) match pre_VLSM_projection_transition_item_project (composite_type (equivocator_IM IM)) (equivocator_type (IM i)) (composite_project_label (equivocator_IM IM) i) (λ s : composite_state (equivocator_IM IM), s i) x with | Some y => [y] | None => [] end eqv_final = Some (project_xi, eqv_final')
e: i = projT1 (l x)

final_descriptors' i = eqv_final' ∧ finite_trace_projection_list IM i projectx = project_xi
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
i: index
x: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
eqv_final:= final_descriptors i: MachineDescriptor (IM i)
projectx: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
Hpr_item_x: match equivocator_vlsm_transition_item_project (IM (projT1 (l x))) (composite_transition_item_projection (equivocator_IM IM) x) (final_descriptors (projT1 (l x))) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l x)) (l item'); input := input x; destination := equivocators_state_project IM final_descriptors (destination x); output := output x |}, equivocator_descriptors_update IM final_descriptors (projT1 (l x)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l x)) deqv') | None => None end = Some (ox, final')
Hproject_x: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (projectx, final_descriptors')
eqv_final': MachineDescriptor (IM i)
project_xi: list transition_item
Hproject_xi: equivocator_vlsm_trace_project (IM i) match pre_VLSM_projection_transition_item_project (composite_type (equivocator_IM IM)) (equivocator_type (IM i)) (composite_project_label (equivocator_IM IM) i) (λ s : composite_state (equivocator_IM IM), s i) x with | Some y => [y] | None => [] end eqv_final = Some (project_xi, eqv_final')
n: i ≠ projT1 (l x)
final_descriptors' i = eqv_final' ∧ finite_trace_projection_list IM i projectx = project_xi
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
i: index
x: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
eqv_final:= final_descriptors i: MachineDescriptor (IM i)
projectx: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
Hpr_item_x: match equivocator_vlsm_transition_item_project (IM (projT1 (l x))) (composite_transition_item_projection (equivocator_IM IM) x) (final_descriptors (projT1 (l x))) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l x)) (l item'); input := input x; destination := equivocators_state_project IM final_descriptors (destination x); output := output x |}, equivocator_descriptors_update IM final_descriptors (projT1 (l x)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l x)) deqv') | None => None end = Some (ox, final')
Hproject_x: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (projectx, final_descriptors')
eqv_final': MachineDescriptor (IM i)
project_xi: list transition_item
Hproject_xi: equivocator_vlsm_trace_project (IM i) match pre_VLSM_projection_transition_item_project (composite_type (equivocator_IM IM)) (equivocator_type (IM i)) (composite_project_label (equivocator_IM IM) i) (λ s : composite_state (equivocator_IM IM), s i) x with | Some y => [y] | None => [] end eqv_final = Some (project_xi, eqv_final')
e: i = projT1 (l x)

final_descriptors' i = eqv_final' ∧ finite_trace_projection_list IM i projectx = project_xi
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
x: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
eqv_final:= final_descriptors (projT1 (l x)): MachineDescriptor (IM (projT1 (l x)))
projectx: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
Hpr_item_x: match equivocator_vlsm_transition_item_project (IM (projT1 (l x))) (composite_transition_item_projection (equivocator_IM IM) x) (final_descriptors (projT1 (l x))) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l x)) (l item'); input := input x; destination := equivocators_state_project IM final_descriptors (destination x); output := output x |}, equivocator_descriptors_update IM final_descriptors (projT1 (l x)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l x)) deqv') | None => None end = Some (ox, final')
Hproject_x: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (projectx, final_descriptors')
project_xi: list transition_item
eqv_final': MachineDescriptor (IM (projT1 (l x)))
Hproject_xi: equivocator_vlsm_trace_project (IM (projT1 (l x))) match pre_VLSM_projection_transition_item_project (composite_type (equivocator_IM IM)) (equivocator_type (IM (projT1 (l x)))) (composite_project_label (equivocator_IM IM) (projT1 (l x))) (λ s : composite_state (equivocator_IM IM), s (projT1 (l x))) x with | Some y => [y] | None => [] end eqv_final = Some (project_xi, eqv_final')

final_descriptors' (projT1 (l x)) = eqv_final' ∧ finite_trace_projection_list IM (projT1 (l x)) projectx = project_xi
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
x: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
eqv_final:= final_descriptors (projT1 (l x)): MachineDescriptor (IM (projT1 (l x)))
projectx: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
Hpr_item_x: match equivocator_vlsm_transition_item_project (IM (projT1 (l x))) (composite_transition_item_projection (equivocator_IM IM) x) (final_descriptors (projT1 (l x))) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l x)) (l item'); input := input x; destination := equivocators_state_project IM final_descriptors (destination x); output := output x |}, equivocator_descriptors_update IM final_descriptors (projT1 (l x)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l x)) deqv') | None => None end = Some (ox, final')
Hproject_x: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (projectx, final_descriptors')
project_xi: list transition_item
eqv_final': MachineDescriptor (IM (projT1 (l x)))
Hproject_xi: equivocator_vlsm_trace_project (IM (projT1 (l x))) [composite_transition_item_projection (equivocator_IM IM) x] eqv_final = Some (project_xi, eqv_final')

final_descriptors' (projT1 (l x)) = eqv_final' ∧ finite_trace_projection_list IM (projT1 (l x)) projectx = project_xi
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
x: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
eqv_final:= final_descriptors (projT1 (l x)): MachineDescriptor (IM (projT1 (l x)))
projectx: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
Hpr_item_x: match equivocator_vlsm_transition_item_project (IM (projT1 (l x))) (composite_transition_item_projection (equivocator_IM IM) x) (final_descriptors (projT1 (l x))) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l x)) (l item'); input := input x; destination := equivocators_state_project IM final_descriptors (destination x); output := output x |}, equivocator_descriptors_update IM final_descriptors (projT1 (l x)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l x)) deqv') | None => None end = Some (ox, final')
Hproject_x: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (projectx, final_descriptors')
project_xi: list transition_item
eqv_final': MachineDescriptor (IM (projT1 (l x)))
Hproject_xi: match equivocator_vlsm_transition_item_project (IM (projT1 (l x))) (composite_transition_item_projection (equivocator_IM IM) x) eqv_final with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (project_xi, eqv_final')

final_descriptors' (projT1 (l x)) = eqv_final' ∧ finite_trace_projection_list IM (projT1 (l x)) projectx = project_xi
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
x: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
projectx: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
Hpr_item_x: match equivocator_vlsm_transition_item_project (IM (projT1 (l x))) (composite_transition_item_projection (equivocator_IM IM) x) (final_descriptors (projT1 (l x))) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l x)) (l item'); input := input x; destination := equivocators_state_project IM final_descriptors (destination x); output := output x |}, equivocator_descriptors_update IM final_descriptors (projT1 (l x)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l x)) deqv') | None => None end = Some (ox, final')
Hproject_x: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (projectx, final_descriptors')
project_xi: list transition_item
eqv_final': MachineDescriptor (IM (projT1 (l x)))
Hproject_xi: match equivocator_vlsm_transition_item_project (IM (projT1 (l x))) (composite_transition_item_projection (equivocator_IM IM) x) (final_descriptors (projT1 (l x))) with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (project_xi, eqv_final')

final_descriptors' (projT1 (l x)) = eqv_final' ∧ finite_trace_projection_list IM (projT1 (l x)) projectx = project_xi
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
x: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
projectx: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l x)))
Heqpr_item_x: equivocator_vlsm_transition_item_project (IM (projT1 (l x))) (composite_transition_item_projection (equivocator_IM IM) x) (final_descriptors (projT1 (l x))) = Some (oitem', descriptor')
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l x)) (l item'); input := input x; destination := equivocators_state_project IM final_descriptors (destination x); output := output x |}, equivocator_descriptors_update IM final_descriptors (projT1 (l x)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l x)) descriptor') end = Some (ox, final')
Hproject_x: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (projectx, final_descriptors')
project_xi: list transition_item
eqv_final': MachineDescriptor (IM (projT1 (l x)))
Hproject_xi: match oitem' with | Some item' => Some ([item'], descriptor') | None => Some ([], descriptor') end = Some (project_xi, eqv_final')

final_descriptors' (projT1 (l x)) = eqv_final' ∧ finite_trace_projection_list IM (projT1 (l x)) projectx = project_xi
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
x: composite_transition_item (equivocator_IM IM)
final_descriptors: equivocator_descriptors IM
item': transition_item
eqv_final': MachineDescriptor (IM (projT1 (l x)))
Heqpr_item_x: equivocator_vlsm_transition_item_project (IM (projT1 (l x))) (composite_transition_item_projection (equivocator_IM IM) x) (final_descriptors (projT1 (l x))) = Some (Some item', eqv_final')

eqv_final' = eqv_final' ∧ finite_trace_projection_list IM (projT1 (l x)) [{| l := existT (projT1 (l x)) (l item'); input := input x; destination := equivocators_state_project IM final_descriptors (destination x); output := output x |}] = [item']
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
x: composite_transition_item (equivocator_IM IM)
final_descriptors: equivocator_descriptors IM
item': transition_item
eqv_final': MachineDescriptor (IM (projT1 (l x)))
Heqpr_item_x: equivocator_vlsm_transition_item_project (IM (projT1 (l x))) (composite_transition_item_projection (equivocator_IM IM) x) (final_descriptors (projT1 (l x))) = Some (Some item', eqv_final')

finite_trace_projection_list IM (projT1 (l x)) [{| l := existT (projT1 (l x)) (l item'); input := input x; destination := equivocators_state_project IM final_descriptors (destination x); output := output x |}] = [item']
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
x: composite_transition_item (equivocator_IM IM)
final_descriptors: equivocator_descriptors IM
item': transition_item
eqv_final': MachineDescriptor (IM (projT1 (l x)))
Heqpr_item_x: equivocator_vlsm_transition_item_project (IM (projT1 (l x))) (composite_transition_item_projection (equivocator_IM IM) x) (final_descriptors (projT1 (l x))) = Some (Some item', eqv_final')

match pre_VLSM_projection_transition_item_project (composite_type IM) (IM (projT1 (l x))) (composite_project_label IM (projT1 (l x))) (λ s : composite_state IM, s (projT1 (l x))) {| l := existT (projT1 (l x)) (l item'); input := input x; destination := equivocators_state_project IM final_descriptors (destination x); output := output x |} with | Some y => [y] | None => [] end = [item']
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
l: label (composite_type (equivocator_IM IM))
input: option message
destination: state (composite_type (equivocator_IM IM))
output: option message
final_descriptors: equivocator_descriptors IM
item': transition_item
eqv_final': MachineDescriptor (IM (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |})))
Heqpr_item_x: equivocator_vlsm_transition_item_project (IM (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |}))) (composite_transition_item_projection (equivocator_IM IM) {| l := l; input := input; destination := destination; output := output |}) (final_descriptors (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |}))) = Some (Some item', eqv_final')

match pre_VLSM_projection_transition_item_project (composite_type IM) (IM (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |}))) (composite_project_label IM (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |}))) (λ s : composite_state IM, s (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |}))) {| l := existT (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |})) (VLSM.l item'); input := VLSM.input {| l := l; input := input; destination := destination; output := output |}; destination := equivocators_state_project IM final_descriptors (VLSM.destination {| l := l; input := input; destination := destination; output := output |}); output := VLSM.output {| l := l; input := input; destination := destination; output := output |} |} with | Some y => [y] | None => [] end = [item']
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
l: composite_label (equivocator_IM IM)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
final_descriptors: equivocator_descriptors IM
item': transition_item
eqv_final': MachineDescriptor (IM (projT1 l))
Heqpr_item_x: equivocator_vlsm_transition_item_project (IM (projT1 l)) (composite_transition_item_projection (equivocator_IM IM) {| l := l; input := input; destination := destination; output := output |}) (final_descriptors (projT1 l)) = Some (Some item', eqv_final')

match pre_VLSM_projection_transition_item_project (composite_type IM) (IM (projT1 l)) (composite_project_label IM (projT1 l)) (λ s : composite_state IM, s (projT1 l)) {| l := existT (projT1 l) (VLSM.l item'); input := input; destination := equivocators_state_project IM final_descriptors destination; output := output |} with | Some y => [y] | None => [] end = [item']
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
i: index
li: label (equivocator_IM IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
final_descriptors: equivocator_descriptors IM
item': transition_item
eqv_final': MachineDescriptor (IM (projT1 (existT i li)))
Heqpr_item_x: equivocator_vlsm_transition_item_project (IM (projT1 (existT i li))) (composite_transition_item_projection (equivocator_IM IM) {| l := existT i li; input := input; destination := destination; output := output |}) (final_descriptors (projT1 (existT i li))) = Some (Some item', eqv_final')

match pre_VLSM_projection_transition_item_project (composite_type IM) (IM (projT1 (existT i li))) (composite_project_label IM (projT1 (existT i li))) (λ s : composite_state IM, s (projT1 (existT i li))) {| l := existT (projT1 (existT i li)) (l item'); input := input; destination := equivocators_state_project IM final_descriptors destination; output := output |} with | Some y => [y] | None => [] end = [item']
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
final_descriptors: equivocator_descriptors IM
item': transition_item
eqv_final': MachineDescriptor (IM i)
Heqpr_item_x: equivocator_vlsm_transition_item_project (IM i) (composite_transition_item_projection (equivocator_IM IM) {| l := existT i li; input := input; destination := destination; output := output |}) (final_descriptors i) = Some (Some item', eqv_final')

match pre_VLSM_projection_transition_item_project (composite_type IM) (IM i) (composite_project_label IM i) (λ s : composite_state IM, s i) {| l := existT i (l item'); input := input; destination := equivocators_state_project IM final_descriptors destination; output := output |} with | Some y => [y] | None => [] end = [item']
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
final_descriptors: equivocator_descriptors IM
item': transition_item
eqv_final': MachineDescriptor (IM i)
Heqpr_item_x: equivocator_vlsm_transition_item_project (IM i) (composite_transition_item_projection (equivocator_IM IM) {| l := existT i li; input := input; destination := destination; output := output |}) (final_descriptors i) = Some (Some item', eqv_final')

match match match decide (i = projT1 (l {| l := existT i (l item'); input := input; destination := equivocators_state_project IM final_descriptors destination; output := output |})) with | left e => Some (eq_rect_r (λ n : index, label (IM n)) (projT2 (l {| l := existT i (l item'); input := input; destination := equivocators_state_project IM final_descriptors destination; output := output |})) e) | right _ => None end with | Some lY => Some {| l := lY; input := VLSM.input {| l := existT i (l item'); input := input; destination := equivocators_state_project IM final_descriptors destination; output := output |}; destination := VLSM.destination {| l := existT i (l item'); input := input; destination := equivocators_state_project IM final_descriptors destination; output := output |} i; output := VLSM.output {| l := existT i (l item'); input := input; destination := equivocators_state_project IM final_descriptors destination; output := output |} |} | None => None end with | Some y => [y] | None => [] end = [item']
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
final_descriptors: equivocator_descriptors IM
item': transition_item
eqv_final': MachineDescriptor (IM i)
Heqpr_item_x: equivocator_vlsm_transition_item_project (IM i) (composite_transition_item_projection (equivocator_IM IM) {| l := existT i li; input := input; destination := destination; output := output |}) (final_descriptors i) = Some (Some item', eqv_final')

match match match decide (i = i) with | left e => Some (eq_rect_r (λ n : index, label (IM n)) (l item') e) | right _ => None end with | Some lY => Some {| l := lY; input := input; destination := equivocators_state_project IM final_descriptors destination i; output := output |} | None => None end with | Some y => [y] | None => [] end = [item']
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
final_descriptors: equivocator_descriptors IM
item': transition_item
eqv_final': MachineDescriptor (IM i)
Heqpr_item_x: equivocator_vlsm_transition_item_project (IM i) (composite_transition_item_projection (equivocator_IM IM) {| l := existT i li; input := input; destination := destination; output := output |}) (final_descriptors i) = Some (Some item', eqv_final')
e: i = i

[{| l := eq_rect_r (λ n : index, label (IM n)) (l item') e; input := input; destination := equivocators_state_project IM final_descriptors destination i; output := output |}] = [item']
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
final_descriptors: equivocator_descriptors IM
item': transition_item
eqv_final': MachineDescriptor (IM i)
Heqpr_item_x: equivocator_vlsm_transition_item_project (IM i) (composite_transition_item_projection (equivocator_IM IM) {| l := existT i li; input := input; destination := destination; output := output |}) (final_descriptors i) = Some (Some item', eqv_final')
e: i = i

{| l := eq_rect_r (λ n : index, label (IM n)) (l item') e; input := input; destination := equivocators_state_project IM final_descriptors destination i; output := output |} = item'
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
final_descriptors: equivocator_descriptors IM
item': transition_item
eqv_final': MachineDescriptor (IM i)
Heqpr_item_x: equivocator_vlsm_transition_item_project (IM i) (composite_transition_item_projection (equivocator_IM IM) {| l := existT i li; input := input; destination := destination; output := output |}) (final_descriptors i) = Some (Some item', eqv_final')
e: i = i

{| l := eq_rect_r (λ n : index, label (IM n)) (l item') eq_refl; input := input; destination := equivocators_state_project IM final_descriptors destination i; output := output |} = item'
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
final_descriptors: equivocator_descriptors IM
item': transition_item
eqv_final': MachineDescriptor (IM i)
Heqpr_item_x: equivocator_vlsm_transition_item_project (IM i) (composite_transition_item_projection (equivocator_IM IM) {| l := existT i li; input := input; destination := destination; output := output |}) (final_descriptors i) = Some (Some item', eqv_final')

{| l := eq_rect_r (λ n : index, label (IM n)) (l item') eq_refl; input := input; destination := equivocators_state_project IM final_descriptors destination i; output := output |} = item'
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
final_descriptors: equivocator_descriptors IM
l: label (IM i)
input0: option message
destination0: state (IM i)
output0: option message
eqv_final': MachineDescriptor (IM i)
Heqpr_item_x: equivocator_vlsm_transition_item_project (IM i) (composite_transition_item_projection (equivocator_IM IM) {| l := existT i li; input := input; destination := destination; output := output |}) (final_descriptors i) = Some (Some {| l := l; input := input0; destination := destination0; output := output0 |}, eqv_final')

{| l := eq_rect_r (λ n : index, label (IM n)) (VLSM.l {| l := l; input := input0; destination := destination0; output := output0 |}) eq_refl; input := input; destination := equivocators_state_project IM final_descriptors destination i; output := output |} = {| l := l; input := input0; destination := destination0; output := output0 |}
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
final_descriptors: equivocator_descriptors IM
l: label (IM i)
input0: option message
destination0: state (IM i)
output0: option message
eqv_final': MachineDescriptor (IM i)
Heqpr_item_x: ( Hex : existing_equivocator_label (IM i) (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT i li; input := input; destination := destination; output := output |})), VLSM.l {| l := l; input := input0; destination := destination0; output := output0 |} = existing_equivocator_label_extract (IM i) (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT i li; input := input; destination := destination; output := output |})) Hex) ∧ VLSM.input (composite_transition_item_projection (equivocator_IM IM) {| l := existT i li; input := input; destination := destination; output := output |}) = VLSM.input {| l := l; input := input0; destination := destination0; output := output0 |} ∧ VLSM.output (composite_transition_item_projection (equivocator_IM IM) {| l := existT i li; input := input; destination := destination; output := output |}) = VLSM.output {| l := l; input := input0; destination := destination0; output := output0 |} ∧ equivocator_state_descriptor_project (VLSM.destination (composite_transition_item_projection (equivocator_IM IM) {| l := existT i li; input := input; destination := destination; output := output |})) (final_descriptors i) = VLSM.destination {| l := l; input := input0; destination := destination0; output := output0 |} ∧ eqv_final' = equivocator_label_descriptor (VLSM.l (composite_transition_item_projection (equivocator_IM IM) {| l := existT i li; input := input; destination := destination; output := output |}))

{| l := eq_rect_r (λ n : index, label (IM n)) (VLSM.l {| l := l; input := input0; destination := destination0; output := output0 |}) eq_refl; input := input; destination := equivocators_state_project IM final_descriptors destination i; output := output |} = {| l := l; input := input0; destination := destination0; output := output0 |}
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
final_descriptors: equivocator_descriptors IM
l: label (IM i)
input0: option message
destination0: state (IM i)
output0: option message
eqv_final': MachineDescriptor (IM i)
Heqpr_item_x: ( Hex : existing_equivocator_label (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl), l = existing_equivocator_label_extract (IM i) (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl) Hex) ∧ input = input0 ∧ output = output0 ∧ equivocator_state_descriptor_project (destination i) (final_descriptors i) = destination0 ∧ eqv_final' = equivocator_label_descriptor (eq_rect_r (λ n : index, EquivocatorLabel (IM n)) li eq_refl)

{| l := eq_rect_r (λ n : index, label (IM n)) l eq_refl; input := input; destination := equivocators_state_project IM final_descriptors destination i; output := output |} = {| l := l; input := input0; destination := destination0; output := output0 |}
by destruct Heqpr_item_x as [Hl [-> [-> [<- _]]]].
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
i: index
x: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
eqv_final:= final_descriptors i: MachineDescriptor (IM i)
projectx: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
Hpr_item_x: match equivocator_vlsm_transition_item_project (IM (projT1 (l x))) (composite_transition_item_projection (equivocator_IM IM) x) (final_descriptors (projT1 (l x))) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l x)) (l item'); input := input x; destination := equivocators_state_project IM final_descriptors (destination x); output := output x |}, equivocator_descriptors_update IM final_descriptors (projT1 (l x)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l x)) deqv') | None => None end = Some (ox, final')
Hproject_x: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (projectx, final_descriptors')
eqv_final': MachineDescriptor (IM i)
project_xi: list transition_item
Hproject_xi: equivocator_vlsm_trace_project (IM i) match pre_VLSM_projection_transition_item_project (composite_type (equivocator_IM IM)) (equivocator_type (IM i)) (composite_project_label (equivocator_IM IM) i) (λ s : composite_state (equivocator_IM IM), s i) x with | Some y => [y] | None => [] end eqv_final = Some (project_xi, eqv_final')
n: i ≠ projT1 (l x)

final_descriptors' i = eqv_final' ∧ finite_trace_projection_list IM i projectx = project_xi
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
i: index
x: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
eqv_final:= final_descriptors i: MachineDescriptor (IM i)
projectx: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
Hpr_item_x: match equivocator_vlsm_transition_item_project (IM (projT1 (l x))) (composite_transition_item_projection (equivocator_IM IM) x) (final_descriptors (projT1 (l x))) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l x)) (l item'); input := input x; destination := equivocators_state_project IM final_descriptors (destination x); output := output x |}, equivocator_descriptors_update IM final_descriptors (projT1 (l x)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l x)) deqv') | None => None end = Some (ox, final')
Hproject_x: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (projectx, final_descriptors')
eqv_final': MachineDescriptor (IM i)
project_xi: list transition_item
Hproject_xi: equivocator_vlsm_trace_project (IM i) [] eqv_final = Some (project_xi, eqv_final')
n: i ≠ projT1 (l x)

final_descriptors' i = eqv_final' ∧ finite_trace_projection_list IM i projectx = project_xi
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
i: index
x: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
eqv_final:= final_descriptors i: MachineDescriptor (IM i)
projectx: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
Hpr_item_x: match equivocator_vlsm_transition_item_project (IM (projT1 (l x))) (composite_transition_item_projection (equivocator_IM IM) x) (final_descriptors (projT1 (l x))) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l x)) (l item'); input := input x; destination := equivocators_state_project IM final_descriptors (destination x); output := output x |}, equivocator_descriptors_update IM final_descriptors (projT1 (l x)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l x)) deqv') | None => None end = Some (ox, final')
Hproject_x: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (projectx, final_descriptors')
eqv_final': MachineDescriptor (IM i)
project_xi: list transition_item
Hproject_xi: Some ([], eqv_final) = Some (project_xi, eqv_final')
n: i ≠ projT1 (l x)

final_descriptors' i = eqv_final' ∧ finite_trace_projection_list IM i projectx = project_xi
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
i: index
x: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
projectx: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
Hpr_item_x: match equivocator_vlsm_transition_item_project (IM (projT1 (l x))) (composite_transition_item_projection (equivocator_IM IM) x) (final_descriptors (projT1 (l x))) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l x)) (l item'); input := input x; destination := equivocators_state_project IM final_descriptors (destination x); output := output x |}, equivocator_descriptors_update IM final_descriptors (projT1 (l x)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l x)) deqv') | None => None end = Some (ox, final')
Hproject_x: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (projectx, final_descriptors')
eqv_final': MachineDescriptor (IM i)
project_xi: list transition_item
Hproject_xi: Some ([], final_descriptors i) = Some (project_xi, eqv_final')
n: i ≠ projT1 (l x)

final_descriptors' i = eqv_final' ∧ finite_trace_projection_list IM i projectx = project_xi
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
i: index
x: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
projectx: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
Hpr_item_x: match equivocator_vlsm_transition_item_project (IM (projT1 (l x))) (composite_transition_item_projection (equivocator_IM IM) x) (final_descriptors (projT1 (l x))) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l x)) (l item'); input := input x; destination := equivocators_state_project IM final_descriptors (destination x); output := output x |}, equivocator_descriptors_update IM final_descriptors (projT1 (l x)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l x)) deqv') | None => None end = Some (ox, final')
Hproject_x: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (projectx, final_descriptors')
eqv_final': MachineDescriptor (IM i)
project_xi: list transition_item
Hproject_xi: Some ([], final_descriptors i) = Some (project_xi, eqv_final')
n: i ≠ projT1 (l x)
H0: [] = project_xi
H1: final_descriptors i = eqv_final'

final_descriptors' i = final_descriptors i ∧ finite_trace_projection_list IM i projectx = []
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
i: index
x: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
projectx: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
Hpr_item_x: match equivocator_vlsm_transition_item_project (IM (projT1 (l x))) (composite_transition_item_projection (equivocator_IM IM) x) (final_descriptors (projT1 (l x))) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l x)) (l item'); input := input x; destination := equivocators_state_project IM final_descriptors (destination x); output := output x |}, equivocator_descriptors_update IM final_descriptors (projT1 (l x)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l x)) deqv') | None => None end = Some (ox, final')
Hproject_x: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (projectx, final_descriptors')
Hproject_xi: Some ([], final_descriptors i) = Some ([], final_descriptors i)
n: i ≠ projT1 (l x)

final_descriptors' i = final_descriptors i ∧ finite_trace_projection_list IM i projectx = []
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
i: index
x: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
projectx: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
Hpr_item_x: match equivocator_vlsm_transition_item_project (IM (projT1 (l x))) (composite_transition_item_projection (equivocator_IM IM) x) (final_descriptors (projT1 (l x))) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l x)) (l item'); input := input x; destination := equivocators_state_project IM final_descriptors (destination x); output := output x |}, equivocator_descriptors_update IM final_descriptors (projT1 (l x)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l x)) deqv') | None => None end = Some (ox, final')
Hproject_x: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (projectx, final_descriptors')
n: i ≠ projT1 (l x)

final_descriptors' i = final_descriptors i ∧ finite_trace_projection_list IM i projectx = []
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
i: index
x: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
projectx: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l x)))
Heqpr_item_x: equivocator_vlsm_transition_item_project (IM (projT1 (l x))) (composite_transition_item_projection (equivocator_IM IM) x) (final_descriptors (projT1 (l x))) = Some (oitem', descriptor')
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l x)) (l item'); input := input x; destination := equivocators_state_project IM final_descriptors (destination x); output := output x |}, equivocator_descriptors_update IM final_descriptors (projT1 (l x)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l x)) descriptor') end = Some (ox, final')
Hproject_x: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (projectx, final_descriptors')
n: i ≠ projT1 (l x)

final_descriptors' i = final_descriptors i ∧ finite_trace_projection_list IM i projectx = []
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
i: index
x: composite_transition_item (equivocator_IM IM)
final_descriptors: equivocator_descriptors IM
item': transition_item
descriptor': MachineDescriptor (IM (projT1 (l x)))
Heqpr_item_x: equivocator_vlsm_transition_item_project (IM (projT1 (l x))) (composite_transition_item_projection (equivocator_IM IM) x) (final_descriptors (projT1 (l x))) = Some (Some item', descriptor')
n: i ≠ projT1 (l x)

final_descriptors i = final_descriptors i ∧ finite_trace_projection_list IM i [{| l := existT (projT1 (l x)) (l item'); input := input x; destination := equivocators_state_project IM final_descriptors (destination x); output := output x |}] = []
by simpl; rewrite (composite_transition_item_projection_neq IM i).
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
initial_descriptors: equivocator_descriptors IM
eqv_initial: MachineDescriptor (IM i)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors': equivocator_descriptors IM
trX0: list (composite_transition_item IM)
IHtr: trXi : list transition_item, equivocator_vlsm_trace_project (IM i) (finite_trace_projection_list (equivocator_IM IM) i tr) (final_descriptors' i) = Some (trXi, eqv_initial) → initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX0 = trXi
final_descriptors: equivocator_descriptors IM
eqv_final:= final_descriptors i: MachineDescriptor (IM i)
trX, projectx: list (composite_transition_item IM)
Hproject_x: foldr equivocators_trace_project_folder (Some ([], final_descriptors)) [x] = Some (projectx, final_descriptors')
HtrX0: foldr equivocators_trace_project_folder (Some ([], final_descriptors')) tr = Some (trX0, initial_descriptors)
HtrX: trX = trX0 ++ projectx
trXi: list transition_item
eqv_final': MachineDescriptor (IM i)
trXi', project_xi: list transition_item
HtrXi': equivocator_vlsm_trace_project (IM i) (pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (equivocator_IM IM i) (composite_project_label (equivocator_IM IM) i) (λ s : state (composite_type (equivocator_IM IM)), s i) tr) eqv_final' = Some (trXi', eqv_initial)
Hproject_xi: equivocator_vlsm_trace_project (IM i) (pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (equivocator_IM IM i) (composite_project_label (equivocator_IM IM) i) (λ s : state (composite_type (equivocator_IM IM)), s i) [x]) eqv_final = Some (project_xi, eqv_final')
HeqtrXi: trXi = trXi' ++ project_xi
Hfinal'i: final_descriptors' i = eqv_final' ∧ finite_trace_projection_list IM i projectx = project_xi

initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX = trXi
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
initial_descriptors: equivocator_descriptors IM
eqv_initial: MachineDescriptor (IM i)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors': equivocator_descriptors IM
trX0: list (composite_transition_item IM)
IHtr: trXi : list transition_item, equivocator_vlsm_trace_project (IM i) (finite_trace_projection_list (equivocator_IM IM) i tr) (final_descriptors' i) = Some (trXi, eqv_initial) → initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX0 = trXi
final_descriptors: equivocator_descriptors IM
eqv_final:= final_descriptors i: MachineDescriptor (IM i)
trX, projectx: list (composite_transition_item IM)
Hproject_x: foldr equivocators_trace_project_folder (Some ([], final_descriptors)) [x] = Some (projectx, final_descriptors')
HtrX0: foldr equivocators_trace_project_folder (Some ([], final_descriptors')) tr = Some (trX0, initial_descriptors)
HtrX: trX = trX0 ++ projectx
trXi: list transition_item
eqv_final': MachineDescriptor (IM i)
trXi', project_xi: list transition_item
HtrXi': equivocator_vlsm_trace_project (IM i) (pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (equivocator_IM IM i) (composite_project_label (equivocator_IM IM) i) (λ s : state (composite_type (equivocator_IM IM)), s i) tr) eqv_final' = Some (trXi', eqv_initial)
Hproject_xi: equivocator_vlsm_trace_project (IM i) (pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (equivocator_IM IM i) (composite_project_label (equivocator_IM IM) i) (λ s : state (composite_type (equivocator_IM IM)), s i) [x]) eqv_final = Some (project_xi, eqv_final')
HeqtrXi: trXi = trXi' ++ project_xi
Hfinal'i: final_descriptors' i = eqv_final'
Hpr_xi: finite_trace_projection_list IM i projectx = project_xi

initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX = trXi
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
initial_descriptors: equivocator_descriptors IM
eqv_initial: MachineDescriptor (IM i)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors': equivocator_descriptors IM
trX0: list (composite_transition_item IM)
IHtr: trXi : list transition_item, equivocator_vlsm_trace_project (IM i) (finite_trace_projection_list (equivocator_IM IM) i tr) (final_descriptors' i) = Some (trXi, eqv_initial) → initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX0 = trXi
final_descriptors: equivocator_descriptors IM
eqv_final:= final_descriptors i: MachineDescriptor (IM i)
trX, projectx: list (composite_transition_item IM)
Hproject_x: foldr equivocators_trace_project_folder (Some ([], final_descriptors)) [x] = Some (projectx, final_descriptors')
HtrX0: foldr equivocators_trace_project_folder (Some ([], final_descriptors')) tr = Some (trX0, initial_descriptors)
HtrX: trX = trX0 ++ projectx
trXi: list transition_item
eqv_final': MachineDescriptor (IM i)
trXi', project_xi: list transition_item
HtrXi': equivocator_vlsm_trace_project (IM i) (pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (equivocator_IM IM i) (composite_project_label (equivocator_IM IM) i) (λ s : state (composite_type (equivocator_IM IM)), s i) tr) (final_descriptors' i) = Some (trXi', eqv_initial)
Hproject_xi: equivocator_vlsm_trace_project (IM i) (pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (equivocator_IM IM i) (composite_project_label (equivocator_IM IM) i) (λ s : state (composite_type (equivocator_IM IM)), s i) [x]) eqv_final = Some (project_xi, eqv_final')
HeqtrXi: trXi = trXi' ++ project_xi
Hfinal'i: final_descriptors' i = eqv_final'
Hpr_xi: finite_trace_projection_list IM i projectx = project_xi

initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX = trXi
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
initial_descriptors: equivocator_descriptors IM
eqv_initial: MachineDescriptor (IM i)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors': equivocator_descriptors IM
trX0: list (composite_transition_item IM)
trXi': list transition_item
IHtr: initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX0 = trXi'
final_descriptors: equivocator_descriptors IM
eqv_final:= final_descriptors i: MachineDescriptor (IM i)
trX, projectx: list (composite_transition_item IM)
Hproject_x: foldr equivocators_trace_project_folder (Some ([], final_descriptors)) [x] = Some (projectx, final_descriptors')
HtrX0: foldr equivocators_trace_project_folder (Some ([], final_descriptors')) tr = Some (trX0, initial_descriptors)
HtrX: trX = trX0 ++ projectx
trXi: list transition_item
eqv_final': MachineDescriptor (IM i)
project_xi: list transition_item
HtrXi': equivocator_vlsm_trace_project (IM i) (pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (equivocator_IM IM i) (composite_project_label (equivocator_IM IM) i) (λ s : state (composite_type (equivocator_IM IM)), s i) tr) (final_descriptors' i) = Some (trXi', eqv_initial)
Hproject_xi: equivocator_vlsm_trace_project (IM i) (pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (equivocator_IM IM i) (composite_project_label (equivocator_IM IM) i) (λ s : state (composite_type (equivocator_IM IM)), s i) [x]) eqv_final = Some (project_xi, eqv_final')
HeqtrXi: trXi = trXi' ++ project_xi
Hfinal'i: final_descriptors' i = eqv_final'
Hpr_xi: finite_trace_projection_list IM i projectx = project_xi

initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX = trXi
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
initial_descriptors: equivocator_descriptors IM
eqv_initial: MachineDescriptor (IM i)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors': equivocator_descriptors IM
trX0: list (composite_transition_item IM)
trXi': list transition_item
Heqv_initial: initial_descriptors i = eqv_initial
Hpr_trXi': finite_trace_projection_list IM i trX0 = trXi'
final_descriptors: equivocator_descriptors IM
eqv_final:= final_descriptors i: MachineDescriptor (IM i)
trX, projectx: list (composite_transition_item IM)
Hproject_x: foldr equivocators_trace_project_folder (Some ([], final_descriptors)) [x] = Some (projectx, final_descriptors')
HtrX0: foldr equivocators_trace_project_folder (Some ([], final_descriptors')) tr = Some (trX0, initial_descriptors)
HtrX: trX = trX0 ++ projectx
trXi: list transition_item
eqv_final': MachineDescriptor (IM i)
project_xi: list transition_item
HtrXi': equivocator_vlsm_trace_project (IM i) (pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (equivocator_IM IM i) (composite_project_label (equivocator_IM IM) i) (λ s : state (composite_type (equivocator_IM IM)), s i) tr) (final_descriptors' i) = Some (trXi', eqv_initial)
Hproject_xi: equivocator_vlsm_trace_project (IM i) (pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (equivocator_IM IM i) (composite_project_label (equivocator_IM IM) i) (λ s : state (composite_type (equivocator_IM IM)), s i) [x]) eqv_final = Some (project_xi, eqv_final')
HeqtrXi: trXi = trXi' ++ project_xi
Hfinal'i: final_descriptors' i = eqv_final'
Hpr_xi: finite_trace_projection_list IM i projectx = project_xi

initial_descriptors i = eqv_initial ∧ finite_trace_projection_list IM i trX = trXi
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
initial_descriptors: equivocator_descriptors IM
eqv_initial: MachineDescriptor (IM i)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors': equivocator_descriptors IM
trX0: list (composite_transition_item IM)
trXi': list transition_item
Heqv_initial: initial_descriptors i = eqv_initial
Hpr_trXi': finite_trace_projection_list IM i trX0 = trXi'
final_descriptors: equivocator_descriptors IM
eqv_final:= final_descriptors i: MachineDescriptor (IM i)
trX, projectx: list (composite_transition_item IM)
Hproject_x: foldr equivocators_trace_project_folder (Some ([], final_descriptors)) [x] = Some (projectx, final_descriptors')
HtrX0: foldr equivocators_trace_project_folder (Some ([], final_descriptors')) tr = Some (trX0, initial_descriptors)
HtrX: trX = trX0 ++ projectx
trXi: list transition_item
eqv_final': MachineDescriptor (IM i)
project_xi: list transition_item
HtrXi': equivocator_vlsm_trace_project (IM i) (pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (equivocator_IM IM i) (composite_project_label (equivocator_IM IM) i) (λ s : state (composite_type (equivocator_IM IM)), s i) tr) (final_descriptors' i) = Some (trXi', eqv_initial)
Hproject_xi: equivocator_vlsm_trace_project (IM i) (pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (equivocator_IM IM i) (composite_project_label (equivocator_IM IM) i) (λ s : state (composite_type (equivocator_IM IM)), s i) [x]) eqv_final = Some (project_xi, eqv_final')
HeqtrXi: trXi = trXi' ++ project_xi
Hfinal'i: final_descriptors' i = eqv_final'
Hpr_xi: finite_trace_projection_list IM i projectx = project_xi

finite_trace_projection_list IM i trX = trXi
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
initial_descriptors: equivocator_descriptors IM
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors': equivocator_descriptors IM
trX0: list (composite_transition_item IM)
final_descriptors: equivocator_descriptors IM
eqv_final:= final_descriptors i: MachineDescriptor (IM i)
projectx: list (composite_transition_item IM)
Hproject_x: foldr equivocators_trace_project_folder (Some ([], final_descriptors)) [x] = Some (projectx, final_descriptors')
HtrX0: foldr equivocators_trace_project_folder (Some ([], final_descriptors')) tr = Some (trX0, initial_descriptors)
HtrXi': equivocator_vlsm_trace_project (IM i) (pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (equivocator_IM IM i) (composite_project_label (equivocator_IM IM) i) (λ s : state (composite_type (equivocator_IM IM)), s i) tr) (final_descriptors' i) = Some (finite_trace_projection_list IM i trX0, initial_descriptors i)
Hproject_xi: equivocator_vlsm_trace_project (IM i) (pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (equivocator_IM IM i) (composite_project_label (equivocator_IM IM) i) (λ s : state (composite_type (equivocator_IM IM)), s i) [x]) eqv_final = Some (finite_trace_projection_list IM i projectx, final_descriptors' i)

finite_trace_projection_list IM i (trX0 ++ projectx) = finite_trace_projection_list IM i trX0 ++ finite_trace_projection_list IM i projectx
by apply omap_app. Qed.
A generalization of equivocators_transition_item_project_preserves_zero_descriptors to full (valid) traces.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from FreeE is tr
descriptors, idescriptors: equivocator_descriptors IM
trX: list (composite_transition_item IM)
HtrX: equivocators_trace_project descriptors tr = Some (trX, idescriptors)

i : index, descriptors i = Existing 0 → idescriptors i = Existing 0
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from FreeE is tr
descriptors, idescriptors: equivocator_descriptors IM
trX: list (composite_transition_item IM)
HtrX: equivocators_trace_project descriptors tr = Some (trX, idescriptors)

i : index, descriptors i = Existing 0 → idescriptors i = Existing 0
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from FreeE is tr
descriptors, idescriptors: equivocator_descriptors IM

trX : list (composite_transition_item IM), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → i : index, descriptors i = Existing 0 → idescriptors i = Existing 0
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from FreeE is tr
idescriptors: equivocator_descriptors IM

(descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → i : index, descriptors i = Existing 0 → idescriptors i = Existing 0
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: state (preloaded_with_all_messages_vlsm FreeE)
tr: list transition_item
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s tr
sf: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
Hx: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last s tr, iom) ( sf, oom)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
idescriptors: equivocator_descriptors IM
IHHtr: (descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → i : index, descriptors i = Existing 0 → idescriptors i = Existing 0

(descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), equivocators_trace_project descriptors (tr ++ [x]) = Some (trX, idescriptors) → i : index, descriptors i = Existing 0 → idescriptors i = Existing 0
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: state (preloaded_with_all_messages_vlsm FreeE)
tr: list transition_item
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s tr
sf: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
Hx: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last s tr, iom) ( sf, oom)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
idescriptors: equivocator_descriptors IM
IHHtr: (descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → i : index, descriptors i = Existing 0 → idescriptors i = Existing 0
descriptors: equivocator_descriptors IM
trX: list (composite_transition_item IM)
HtrX: equivocators_trace_project descriptors (tr ++ [x]) = Some (trX, idescriptors)
i: index
Hi: descriptors i = Existing 0

idescriptors i = Existing 0
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: state (preloaded_with_all_messages_vlsm FreeE)
tr: list transition_item
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s tr
sf: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
Hx: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last s tr, iom) ( sf, oom)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
idescriptors: equivocator_descriptors IM
IHHtr: (descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → i : index, descriptors i = Existing 0 → idescriptors i = Existing 0
descriptors: equivocator_descriptors IM
trX, preX, sufX: list (composite_transition_item IM)
descriptors': equivocator_descriptors IM
Hproject_x: equivocators_trace_project descriptors [x] = Some (sufX, descriptors')
Hproject_tr: equivocators_trace_project descriptors' tr = Some (preX, idescriptors)
i: index
Hi: descriptors i = Existing 0

idescriptors i = Existing 0
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: state (preloaded_with_all_messages_vlsm FreeE)
tr: list transition_item
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s tr
sf: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
Hx: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last s tr, iom) ( sf, oom)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
idescriptors: equivocator_descriptors IM
IHHtr: (descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → i : index, descriptors i = Existing 0 → idescriptors i = Existing 0
descriptors: equivocator_descriptors IM
trX, preX, sufX: list (composite_transition_item IM)
descriptors': equivocator_descriptors IM
Hproject_x: match equivocators_transition_item_project descriptors x with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, descriptors')
Hproject_tr: equivocators_trace_project descriptors' tr = Some (preX, idescriptors)
i: index
Hi: descriptors i = Existing 0

idescriptors i = Existing 0
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: state (preloaded_with_all_messages_vlsm FreeE)
tr: list transition_item
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s tr
sf: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
Hx: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last s tr, iom) ( sf, oom)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
idescriptors: equivocator_descriptors IM
IHHtr: (descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → i : index, descriptors i = Existing 0 → idescriptors i = Existing 0
descriptors: equivocator_descriptors IM
trX, preX, sufX: list (composite_transition_item IM)
descriptors': equivocator_descriptors IM
oitemx: option (composite_transition_item IM)
_descriptors': equivocator_descriptors IM
Hpr_x: equivocators_transition_item_project descriptors x = Some (oitemx, _descriptors')
Hproject_x: match oitemx with | Some item' => Some ([item'], _descriptors') | None => Some ([], _descriptors') end = Some (sufX, descriptors')
Hproject_tr: equivocators_trace_project descriptors' tr = Some (preX, idescriptors)
i: index
Hi: descriptors i = Existing 0

idescriptors i = Existing 0
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: state (preloaded_with_all_messages_vlsm FreeE)
tr: list transition_item
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s tr
sf: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
Hx: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last s tr, iom) ( sf, oom)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
idescriptors: equivocator_descriptors IM
IHHtr: (descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → i : index, descriptors i = Existing 0 → idescriptors i = Existing 0
descriptors: equivocator_descriptors IM
trX, preX, sufX: list (composite_transition_item IM)
descriptors': equivocator_descriptors IM
oitemx: option (composite_transition_item IM)
Hproject_x: match oitemx with | Some item' => Some ([item'], descriptors') | None => Some ([], descriptors') end = Some (sufX, descriptors')
Hpr_x: equivocators_transition_item_project descriptors x = Some (oitemx, descriptors')
Hproject_tr: equivocators_trace_project descriptors' tr = Some (preX, idescriptors)
i: index
Hi: descriptors i = Existing 0

idescriptors i = Existing 0
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: state (preloaded_with_all_messages_vlsm FreeE)
tr: list transition_item
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s tr
sf: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
Hx: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last s tr, iom) ( sf, oom)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
idescriptors: equivocator_descriptors IM
IHHtr: (descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → i : index, descriptors i = Existing 0 → idescriptors i = Existing 0
descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
descriptors': equivocator_descriptors IM
oitemx: option (composite_transition_item IM)
Hpr_x: equivocators_transition_item_project descriptors x = Some (oitemx, descriptors')
Hproject_tr: equivocators_trace_project descriptors' tr = Some (preX, idescriptors)
i: index
Hi: descriptors i = Existing 0

idescriptors i = Existing 0
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: state (preloaded_with_all_messages_vlsm FreeE)
tr: list transition_item
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s tr
sf: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
Hv: valid l (finite_trace_last s tr, iom)
Ht: transition l (finite_trace_last s tr, iom) = (sf, oom)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
idescriptors: equivocator_descriptors IM
IHHtr: (descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → i : index, descriptors i = Existing 0 → idescriptors i = Existing 0
descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
descriptors': equivocator_descriptors IM
oitemx: option (composite_transition_item IM)
Hpr_x: equivocators_transition_item_project descriptors x = Some (oitemx, descriptors')
Hproject_tr: equivocators_trace_project descriptors' tr = Some (preX, idescriptors)
i: index
Hi: descriptors i = Existing 0

idescriptors i = Existing 0
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: state (preloaded_with_all_messages_vlsm FreeE)
tr: list transition_item
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s tr
sf: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
Hv: valid l (finite_trace_last s tr, iom)
Ht: transition l (finite_trace_last s tr, iom) = (sf, oom)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
idescriptors: equivocator_descriptors IM
IHHtr: (descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), equivocators_trace_project descriptors tr = Some (trX, idescriptors) → i : index, descriptors i = Existing 0 → idescriptors i = Existing 0
descriptors: equivocator_descriptors IM
preX: list (composite_transition_item IM)
descriptors': equivocator_descriptors IM
oitemx: option (composite_transition_item IM)
Hpr_x: equivocators_transition_item_project descriptors x = Some (oitemx, descriptors')
Hproject_tr: equivocators_trace_project descriptors' tr = Some (preX, idescriptors)
i: index
Hi: descriptors i = Existing 0

descriptors' i = Existing 0
by eapply equivocators_transition_item_project_preserves_zero_descriptors with (item := x); [| apply Hv | |]. Qed.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_state:= finite_trace_last is tr: state (composite_type (equivocator_IM IM))
Hproper: proper_equivocator_descriptors IM final_descriptors final_state
Htr: finite_constrained_trace_from FreeE is tr

(trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_state:= finite_trace_last is tr: state (composite_type (equivocator_IM IM))
Hproper: proper_equivocator_descriptors IM final_descriptors final_state
Htr: finite_constrained_trace_from FreeE is tr

(trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))

is : composite_state (equivocator_IM IM), let final_state := finite_trace_last is tr in finite_constrained_trace_from FreeE is tr → final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors final_state → (trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
IHtr: is : composite_state (equivocator_IM IM), let final_state := finite_trace_last is tr in finite_constrained_trace_from FreeE is tr → final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors final_state → (trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
is: composite_state (equivocator_IM IM)
final_state:= finite_trace_last is (tr ++ [x]): state (composite_type (equivocator_IM IM))
Htr: finite_constrained_trace_from FreeE is (tr ++ [x])
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors final_state

(trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project final_descriptors (tr ++ [x]) = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is (tr ++ [x])) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
IHtr: is : composite_state (equivocator_IM IM), let final_state := finite_trace_last is tr in finite_constrained_trace_from FreeE is tr → final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors final_state → (trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
is: composite_state (equivocator_IM IM)
final_state:= finite_trace_last is (tr ++ [x]): state (composite_type (equivocator_IM IM))
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr ∧ finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) [x]
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors final_state

(trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project final_descriptors (tr ++ [x]) = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is (tr ++ [x])) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
IHtr: is : composite_state (equivocator_IM IM), let final_state := finite_trace_last is tr in finite_constrained_trace_from FreeE is tr → final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors final_state → (trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
is: composite_state (equivocator_IM IM)
final_state:= finite_trace_last is (tr ++ [x]): state (composite_type (equivocator_IM IM))
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hx: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) [x]
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors final_state

(trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project final_descriptors (tr ++ [x]) = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is (tr ++ [x])) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) → (trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
final_state:= finite_trace_last is (tr ++ [x]): state (composite_type (equivocator_IM IM))
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hx: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) [x]
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors final_state

(trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project final_descriptors (tr ++ [x]) = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is (tr ++ [x])) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) → (trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
final_state:= finite_trace_last is (tr ++ [x]): state (composite_type (equivocator_IM IM))
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hx: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) [x]
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors final_state
Hproperx: proper_equivocator_descriptors IM final_descriptors (destination x) → (oitem : option (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), equivocators_transition_item_project final_descriptors x = Some (oitem, eqv_descriptors') ∧ match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l x))) (projT2 (l x)), existT (projT1 (l x)) (existing_equivocator_label_extract (IM (projT1 (l x))) (projT2 (l x)) Hex) = l itemx) ∧ input x = input itemx ∧ output x = output itemx ∧ equivocators_state_project IM final_descriptors (destination x) = destination itemx ∧ eqv_descriptors' (projT1 (l x)) = equivocator_label_descriptor (projT2 (l x)) | None => True end ∧ ( s : composite_state (equivocator_IM IM), composite_valid (equivocator_IM IM) (l x) (s, input x) → composite_transition (equivocator_IM IM) (l x) (s, input x) = (destination x, output x) → proper_equivocator_descriptors IM eqv_descriptors' s ∧ eqv_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 (l x)) (eqv_descriptors' (projT1 (l x))) ∧ s = state_update (equivocator_IM IM) (destination x) (projT1 (l x)) (s (projT1 (l x))) ∧ previous_state_descriptor_prop (IM (projT1 (l x))) (final_descriptors (projT1 (l x))) (s (projT1 (l x))) (eqv_descriptors' (projT1 (l x))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM eqv_descriptors' s → composite_valid IM (l itemx) (sx, input itemx) ∧ composite_transition IM (l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM final_descriptors (destination x) = equivocators_state_project IM eqv_descriptors' s end)

(trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project final_descriptors (tr ++ [x]) = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is (tr ++ [x])) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) → (trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
final_state:= finite_trace_last is (tr ++ [x]): state (composite_type (equivocator_IM IM))
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hx: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) [x]
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last is (tr ++ [x]))
Hproperx: proper_equivocator_descriptors IM final_descriptors (destination x) → (oitem : option (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), equivocators_transition_item_project final_descriptors x = Some (oitem, eqv_descriptors') ∧ match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l x))) (projT2 (l x)), existT (projT1 (l x)) (existing_equivocator_label_extract (IM (projT1 (l x))) (projT2 (l x)) Hex) = l itemx) ∧ input x = input itemx ∧ output x = output itemx ∧ equivocators_state_project IM final_descriptors (destination x) = destination itemx ∧ eqv_descriptors' (projT1 (l x)) = equivocator_label_descriptor (projT2 (l x)) | None => True end ∧ ( s : composite_state (equivocator_IM IM), composite_valid (equivocator_IM IM) (l x) (s, input x) → composite_transition (equivocator_IM IM) (l x) (s, input x) = (destination x, output x) → proper_equivocator_descriptors IM eqv_descriptors' s ∧ eqv_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 (l x)) (eqv_descriptors' (projT1 (l x))) ∧ s = state_update (equivocator_IM IM) (destination x) (projT1 (l x)) (s (projT1 (l x))) ∧ previous_state_descriptor_prop (IM (projT1 (l x))) (final_descriptors (projT1 (l x))) (s (projT1 (l x))) (eqv_descriptors' (projT1 (l x))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM eqv_descriptors' s → composite_valid IM (l itemx) (sx, input itemx) ∧ composite_transition IM (l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM final_descriptors (destination x) = equivocators_state_project IM eqv_descriptors' s end)

(trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project final_descriptors (tr ++ [x]) = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is (tr ++ [x])) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) → (trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
final_state:= finite_trace_last is (tr ++ [x]): state (composite_type (equivocator_IM IM))
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hx: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) [x]
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (destination x)
Hproperx: proper_equivocator_descriptors IM final_descriptors (destination x) → (oitem : option (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), equivocators_transition_item_project final_descriptors x = Some (oitem, eqv_descriptors') ∧ match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l x))) (projT2 (l x)), existT (projT1 (l x)) (existing_equivocator_label_extract (IM (projT1 (l x))) (projT2 (l x)) Hex) = l itemx) ∧ input x = input itemx ∧ output x = output itemx ∧ equivocators_state_project IM final_descriptors (destination x) = destination itemx ∧ eqv_descriptors' (projT1 (l x)) = equivocator_label_descriptor (projT2 (l x)) | None => True end ∧ ( s : composite_state (equivocator_IM IM), composite_valid (equivocator_IM IM) (l x) (s, input x) → composite_transition (equivocator_IM IM) (l x) (s, input x) = (destination x, output x) → proper_equivocator_descriptors IM eqv_descriptors' s ∧ eqv_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 (l x)) (eqv_descriptors' (projT1 (l x))) ∧ s = state_update (equivocator_IM IM) (destination x) (projT1 (l x)) (s (projT1 (l x))) ∧ previous_state_descriptor_prop (IM (projT1 (l x))) (final_descriptors (projT1 (l x))) (s (projT1 (l x))) (eqv_descriptors' (projT1 (l x))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM eqv_descriptors' s → composite_valid IM (l itemx) (sx, input itemx) ∧ composite_transition IM (l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM final_descriptors (destination x) = equivocators_state_project IM eqv_descriptors' s end)

(trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project final_descriptors (tr ++ [x]) = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is (tr ++ [x])) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) → (trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
final_state:= finite_trace_last is (tr ++ [x]): state (composite_type (equivocator_IM IM))
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hx: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) [x]
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (destination x)
Hproperx: (oitem : option (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), equivocators_transition_item_project final_descriptors x = Some (oitem, eqv_descriptors') ∧ match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l x))) (projT2 (l x)), existT (projT1 (l x)) (existing_equivocator_label_extract (IM (projT1 (l x))) (projT2 (l x)) Hex) = l itemx) ∧ input x = input itemx ∧ output x = output itemx ∧ equivocators_state_project IM final_descriptors (destination x) = destination itemx ∧ eqv_descriptors' (projT1 (l x)) = equivocator_label_descriptor (projT2 (l x)) | None => True end ∧ ( s : composite_state (equivocator_IM IM), composite_valid (equivocator_IM IM) (l x) (s, input x) → composite_transition (equivocator_IM IM) (l x) (s, input x) = (destination x, output x) → proper_equivocator_descriptors IM eqv_descriptors' s ∧ eqv_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 (l x)) (eqv_descriptors' (projT1 (l x))) ∧ s = state_update (equivocator_IM IM) (destination x) (projT1 (l x)) (s (projT1 (l x))) ∧ previous_state_descriptor_prop (IM (projT1 (l x))) (final_descriptors (projT1 (l x))) (s (projT1 (l x))) (eqv_descriptors' (projT1 (l x))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM eqv_descriptors' s → composite_valid IM (l itemx) (sx, input itemx) ∧ composite_transition IM (l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM final_descriptors (destination x) = equivocators_state_project IM eqv_descriptors' s end)

(trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project final_descriptors (tr ++ [x]) = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is (tr ++ [x])) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) → (trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
final_state:= finite_trace_last is (tr ++ [x]): state (composite_type (equivocator_IM IM))
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hx: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) [x]
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (destination x)
oitem: option (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hprojectx: equivocators_transition_item_project final_descriptors x = Some (oitem, final_descriptors')
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l x))) (projT2 (l x)), existT (projT1 (l x)) (existing_equivocator_label_extract (IM (projT1 (l x))) (projT2 (l x)) Hex) = l itemx) ∧ input x = input itemx ∧ output x = output itemx ∧ equivocators_state_project IM final_descriptors (destination x) = destination itemx ∧ final_descriptors' (projT1 (l x)) = equivocator_label_descriptor (projT2 (l x)) | None => True end
Hproperx: s : composite_state (equivocator_IM IM), composite_valid (equivocator_IM IM) (l x) (s, input x) → composite_transition (equivocator_IM IM) (l x) (s, input x) = (destination x, output x) → proper_equivocator_descriptors IM final_descriptors' s ∧ final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 (l x)) (final_descriptors' (projT1 (l x))) ∧ s = state_update (equivocator_IM IM) (destination x) (projT1 (l x)) (s (projT1 (l x))) ∧ previous_state_descriptor_prop (IM (projT1 (l x))) (final_descriptors (projT1 (l x))) (s (projT1 (l x))) (final_descriptors' (projT1 (l x))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' s → composite_valid IM (l itemx) (sx, input itemx) ∧ composite_transition IM (l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM final_descriptors (destination x) = equivocators_state_project IM final_descriptors' s end

(trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project final_descriptors (tr ++ [x]) = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is (tr ++ [x])) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) → (trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
final_state:= finite_trace_last is (tr ++ [x]): state (composite_type (equivocator_IM IM))
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hx: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) [x]
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (destination x)
oitem: option (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hprojectx: equivocators_transition_item_project final_descriptors x = Some (oitem, final_descriptors')
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l x))) (projT2 (l x)), existT (projT1 (l x)) (existing_equivocator_label_extract (IM (projT1 (l x))) (projT2 (l x)) Hex) = l itemx) ∧ input x = input itemx ∧ output x = output itemx ∧ equivocators_state_project IM final_descriptors (destination x) = destination itemx ∧ final_descriptors' (projT1 (l x)) = equivocator_label_descriptor (projT2 (l x)) | None => True end
Hproperx: composite_valid (equivocator_IM IM) (l x) (finite_trace_last is tr, input x) → composite_transition (equivocator_IM IM) (l x) (finite_trace_last is tr, input x) = (destination x, output x) → proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr) ∧ final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 (l x)) (final_descriptors' (projT1 (l x))) ∧ finite_trace_last is tr = state_update (equivocator_IM IM) (destination x) (projT1 (l x)) (finite_trace_last is tr (projT1 (l x))) ∧ previous_state_descriptor_prop (IM (projT1 (l x))) (final_descriptors (projT1 (l x))) (finite_trace_last is tr (projT1 (l x))) (final_descriptors' (projT1 (l x))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → composite_valid IM (l itemx) ( sx, input itemx) ∧ composite_transition IM (l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM final_descriptors (destination x) = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end

(trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project final_descriptors (tr ++ [x]) = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is (tr ++ [x])) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) → (trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
final_state:= finite_trace_last is (tr ++ [x]): state (composite_type (equivocator_IM IM))
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hx: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) [x]
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (destination x)
oitem: option (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hprojectx: equivocators_transition_item_project final_descriptors x = Some (oitem, final_descriptors')
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l x))) (projT2 (l x)), existT (projT1 (l x)) (existing_equivocator_label_extract (IM (projT1 (l x))) (projT2 (l x)) Hex) = l itemx) ∧ input x = input itemx ∧ output x = output itemx ∧ equivocators_state_project IM final_descriptors (destination x) = destination itemx ∧ final_descriptors' (projT1 (l x)) = equivocator_label_descriptor (projT2 (l x)) | None => True end
Hproperx: composite_valid (equivocator_IM IM) (l x) (finite_trace_last is tr, input x) → composite_transition (equivocator_IM IM) (l x) (finite_trace_last is tr, input x) = (destination x, output x) → proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr) ∧ final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 (l x)) (final_descriptors' (projT1 (l x))) ∧ finite_trace_last is tr = state_update (equivocator_IM IM) (destination x) (projT1 (l x)) (finite_trace_last is tr (projT1 (l x))) ∧ previous_state_descriptor_prop (IM (projT1 (l x))) (final_descriptors (projT1 (l x))) (finite_trace_last is tr (projT1 (l x))) (final_descriptors' (projT1 (l x))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → composite_valid IM (l itemx) ( sx, input itemx) ∧ composite_transition IM (l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM final_descriptors (destination x) = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end

(trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), foldr equivocators_trace_project_folder (Some ([], final_descriptors)) (tr ++ [x]) = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is (tr ++ [x])) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) → (trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
final_state:= finite_trace_last is (tr ++ [x]): state (composite_type (equivocator_IM IM))
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hx: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) [x]
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (destination x)
oitem: option (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hprojectx: equivocators_transition_item_project final_descriptors x = Some (oitem, final_descriptors')
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l x))) (projT2 (l x)), existT (projT1 (l x)) (existing_equivocator_label_extract (IM (projT1 (l x))) (projT2 (l x)) Hex) = l itemx) ∧ input x = input itemx ∧ output x = output itemx ∧ equivocators_state_project IM final_descriptors (destination x) = destination itemx ∧ final_descriptors' (projT1 (l x)) = equivocator_label_descriptor (projT2 (l x)) | None => True end
Hproperx: composite_valid (equivocator_IM IM) (l x) (finite_trace_last is tr, input x) → composite_transition (equivocator_IM IM) (l x) (finite_trace_last is tr, input x) = (destination x, output x) → proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr) ∧ final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 (l x)) (final_descriptors' (projT1 (l x))) ∧ finite_trace_last is tr = state_update (equivocator_IM IM) (destination x) (projT1 (l x)) (finite_trace_last is tr (projT1 (l x))) ∧ previous_state_descriptor_prop (IM (projT1 (l x))) (final_descriptors (projT1 (l x))) (finite_trace_last is tr (projT1 (l x))) (final_descriptors' (projT1 (l x))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → composite_valid IM (l itemx) ( sx, input itemx) ∧ composite_transition IM (l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM final_descriptors (destination x) = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end

(trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), foldr equivocators_trace_project_folder (foldr equivocators_trace_project_folder (Some ([], final_descriptors)) [x]) tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is (tr ++ [x])) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) → (trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
final_state:= finite_trace_last is (tr ++ [x]): state (composite_type (equivocator_IM IM))
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hx: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) [x]
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (destination x)
oitem: option (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hprojectx: equivocators_transition_item_project final_descriptors x = Some (oitem, final_descriptors')
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l x))) (projT2 (l x)), existT (projT1 (l x)) (existing_equivocator_label_extract (IM (projT1 (l x))) (projT2 (l x)) Hex) = l itemx) ∧ input x = input itemx ∧ output x = output itemx ∧ equivocators_state_project IM final_descriptors (destination x) = destination itemx ∧ final_descriptors' (projT1 (l x)) = equivocator_label_descriptor (projT2 (l x)) | None => True end
Hproperx: composite_valid (equivocator_IM IM) (l x) (finite_trace_last is tr, input x) → composite_transition (equivocator_IM IM) (l x) (finite_trace_last is tr, input x) = (destination x, output x) → proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr) ∧ final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 (l x)) (final_descriptors' (projT1 (l x))) ∧ finite_trace_last is tr = state_update (equivocator_IM IM) (destination x) (projT1 (l x)) (finite_trace_last is tr (projT1 (l x))) ∧ previous_state_descriptor_prop (IM (projT1 (l x))) (final_descriptors (projT1 (l x))) (finite_trace_last is tr (projT1 (l x))) (final_descriptors' (projT1 (l x))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → composite_valid IM (l itemx) ( sx, input itemx) ∧ composite_transition IM (l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM final_descriptors (destination x) = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
foldx: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqfoldx: foldx = foldr equivocators_trace_project_folder (Some ([], final_descriptors)) [x]

(trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), foldr equivocators_trace_project_folder foldx tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is (tr ++ [x])) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) → (trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
final_state:= finite_trace_last is (tr ++ [x]): state (composite_type (equivocator_IM IM))
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hx: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) [x]
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (destination x)
oitem: option (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hprojectx: equivocators_transition_item_project final_descriptors x = Some (oitem, final_descriptors')
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l x))) (projT2 (l x)), existT (projT1 (l x)) (existing_equivocator_label_extract (IM (projT1 (l x))) (projT2 (l x)) Hex) = l itemx) ∧ input x = input itemx ∧ output x = output itemx ∧ equivocators_state_project IM final_descriptors (destination x) = destination itemx ∧ final_descriptors' (projT1 (l x)) = equivocator_label_descriptor (projT2 (l x)) | None => True end
Hproperx: composite_valid (equivocator_IM IM) (l x) (finite_trace_last is tr, input x) → composite_transition (equivocator_IM IM) (l x) (finite_trace_last is tr, input x) = (destination x, output x) → proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr) ∧ final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 (l x)) (final_descriptors' (projT1 (l x))) ∧ finite_trace_last is tr = state_update (equivocator_IM IM) (destination x) (projT1 (l x)) (finite_trace_last is tr (projT1 (l x))) ∧ previous_state_descriptor_prop (IM (projT1 (l x))) (final_descriptors (projT1 (l x))) (finite_trace_last is tr (projT1 (l x))) (final_descriptors' (projT1 (l x))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → composite_valid IM (l itemx) ( sx, input itemx) ∧ composite_transition IM (l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM final_descriptors (destination x) = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
foldx: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqfoldx: foldx = match equivocators_transition_item_project final_descriptors x with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end

(trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), foldr equivocators_trace_project_folder foldx tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is (tr ++ [x])) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) → (trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
final_state:= finite_trace_last is (tr ++ [x]): state (composite_type (equivocator_IM IM))
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hx: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) [x]
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (destination x)
oitem: option (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hprojectx: equivocators_transition_item_project final_descriptors x = Some (oitem, final_descriptors')
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l x))) (projT2 (l x)), existT (projT1 (l x)) (existing_equivocator_label_extract (IM (projT1 (l x))) (projT2 (l x)) Hex) = l itemx) ∧ input x = input itemx ∧ output x = output itemx ∧ equivocators_state_project IM final_descriptors (destination x) = destination itemx ∧ final_descriptors' (projT1 (l x)) = equivocator_label_descriptor (projT2 (l x)) | None => True end
Hproperx: composite_valid (equivocator_IM IM) (l x) (finite_trace_last is tr, input x) → composite_transition (equivocator_IM IM) (l x) (finite_trace_last is tr, input x) = (destination x, output x) → proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr) ∧ final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 (l x)) (final_descriptors' (projT1 (l x))) ∧ finite_trace_last is tr = state_update (equivocator_IM IM) (destination x) (projT1 (l x)) (finite_trace_last is tr (projT1 (l x))) ∧ previous_state_descriptor_prop (IM (projT1 (l x))) (final_descriptors (projT1 (l x))) (finite_trace_last is tr (projT1 (l x))) (final_descriptors' (projT1 (l x))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → composite_valid IM (l itemx) ( sx, input itemx) ∧ composite_transition IM (l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM final_descriptors (destination x) = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
foldx: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqfoldx: foldx = match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end

(trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), foldr equivocators_trace_project_folder foldx tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is (tr ++ [x])) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) → (trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
final_state:= finite_trace_last is (tr ++ [x]): state (composite_type (equivocator_IM IM))
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hx: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) [x]
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (destination x)
oitem: option (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hprojectx: equivocators_transition_item_project final_descriptors x = Some (oitem, final_descriptors')
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (VLSM.l x))) (projT2 (VLSM.l x)), existT (projT1 (VLSM.l x)) (existing_equivocator_label_extract (IM (projT1 (VLSM.l x))) (projT2 (VLSM.l x)) Hex) = VLSM.l itemx) ∧ input x = input itemx ∧ output x = output itemx ∧ equivocators_state_project IM final_descriptors (destination x) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l x)) = equivocator_label_descriptor (projT2 (VLSM.l x)) | None => True end
Hproperx: composite_valid (equivocator_IM IM) (VLSM.l x) (finite_trace_last is tr, input x) → composite_transition (equivocator_IM IM) (VLSM.l x) (finite_trace_last is tr, input x) = (destination x, output x) → proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr) ∧ final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 (VLSM.l x)) (final_descriptors' (projT1 (VLSM.l x))) ∧ finite_trace_last is tr = state_update (equivocator_IM IM) (destination x) (projT1 (VLSM.l x)) (finite_trace_last is tr (projT1 (VLSM.l x))) ∧ previous_state_descriptor_prop (IM (projT1 (VLSM.l x))) (final_descriptors (projT1 (VLSM.l x))) (finite_trace_last is tr (projT1 (VLSM.l x))) (final_descriptors' (projT1 (VLSM.l x))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → composite_valid IM (VLSM.l itemx) ( sx, input itemx) ∧ composite_transition IM (VLSM.l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM final_descriptors (destination x) = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
foldx: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqfoldx: foldx = match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end
s: state (preloaded_with_all_messages_vlsm FreeE)
tl: list transition_item
s': state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)
H1: s' = finite_trace_last is tr
H3: {| l := l; input := iom; destination := s; output := oom |} = x
H4: tl = []

(trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), foldr equivocators_trace_project_folder foldx tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}])) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) → (trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
final_state:= finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (equivocator_IM IM))
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hx: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) [{| l := l; input := iom; destination := s; output := oom |}]
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
oitem: option (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hproperx: composite_valid (equivocator_IM IM) (VLSM.l {| l := l; input := iom; destination := s; output := oom |}) (finite_trace_last is tr, input {| l := l; input := iom; destination := s; output := oom |}) → composite_transition (equivocator_IM IM) (VLSM.l {| l := l; input := iom; destination := s; output := oom |}) (finite_trace_last is tr, input {| l := l; input := iom; destination := s; output := oom |}) = (destination {| l := l; input := iom; destination := s; output := oom |}, output {| l := l; input := iom; destination := s; output := oom |}) → proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr) ∧ final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ finite_trace_last is tr = state_update (equivocator_IM IM) (destination {| l := l; input := iom; destination := s; output := oom |}) (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ previous_state_descriptor_prop (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → composite_valid IM (VLSM.l itemx) ( sx, input itemx) ∧ composite_transition IM (VLSM.l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l itemx) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input itemx ∧ output {| l := l; input := iom; destination := s; output := oom |} = output itemx ∧ equivocators_state_project IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) | None => True end
Hprojectx: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
foldx: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqfoldx: foldx = match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)

(trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), foldr equivocators_trace_project_folder foldx tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}])) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) → (trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
final_state:= finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (equivocator_IM IM))
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
oitem: option (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hproperx: composite_valid (equivocator_IM IM) (VLSM.l {| l := l; input := iom; destination := s; output := oom |}) (finite_trace_last is tr, input {| l := l; input := iom; destination := s; output := oom |}) → composite_transition (equivocator_IM IM) (VLSM.l {| l := l; input := iom; destination := s; output := oom |}) (finite_trace_last is tr, input {| l := l; input := iom; destination := s; output := oom |}) = (destination {| l := l; input := iom; destination := s; output := oom |}, output {| l := l; input := iom; destination := s; output := oom |}) → proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr) ∧ final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ finite_trace_last is tr = state_update (equivocator_IM IM) (destination {| l := l; input := iom; destination := s; output := oom |}) (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ previous_state_descriptor_prop (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → composite_valid IM (VLSM.l itemx) ( sx, input itemx) ∧ composite_transition IM (VLSM.l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l itemx) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input itemx ∧ output {| l := l; input := iom; destination := s; output := oom |} = output itemx ∧ equivocators_state_project IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) | None => True end
Hprojectx: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
foldx: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqfoldx: foldx = match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)

(trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), foldr equivocators_trace_project_folder foldx tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}])) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) → (trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
final_state:= finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (equivocator_IM IM))
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
oitem: option (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hproperx: composite_valid (equivocator_IM IM) (VLSM.l {| l := l; input := iom; destination := s; output := oom |}) (finite_trace_last is tr, input {| l := l; input := iom; destination := s; output := oom |}) → composite_transition (equivocator_IM IM) (VLSM.l {| l := l; input := iom; destination := s; output := oom |}) (finite_trace_last is tr, input {| l := l; input := iom; destination := s; output := oom |}) = (destination {| l := l; input := iom; destination := s; output := oom |}, output {| l := l; input := iom; destination := s; output := oom |}) → proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr) ∧ final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ finite_trace_last is tr = state_update (equivocator_IM IM) (destination {| l := l; input := iom; destination := s; output := oom |}) (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ previous_state_descriptor_prop (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → composite_valid IM (VLSM.l itemx) ( sx, input itemx) ∧ composite_transition IM (VLSM.l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l itemx) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input itemx ∧ output {| l := l; input := iom; destination := s; output := oom |} = output itemx ∧ equivocators_state_project IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) | None => True end
Hprojectx: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
foldx: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqfoldx: foldx = match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Hv: valid l (finite_trace_last is tr, iom)
Ht: transition l (finite_trace_last is tr, iom) = (s, oom)

(trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), foldr equivocators_trace_project_folder foldx tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}])) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) → (trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
final_state:= finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (equivocator_IM IM))
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
oitem: option (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hproperx: proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr) ∧ final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ finite_trace_last is tr = state_update (equivocator_IM IM) (destination {| l := l; input := iom; destination := s; output := oom |}) (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ previous_state_descriptor_prop (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → composite_valid IM (VLSM.l itemx) (sx, input itemx) ∧ composite_transition IM (VLSM.l itemx) (sx, input itemx) = (destination itemx, output itemx) | None => equivocators_state_project IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l itemx) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input itemx ∧ output {| l := l; input := iom; destination := s; output := oom |} = output itemx ∧ equivocators_state_project IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) | None => True end
Hprojectx: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
foldx: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqfoldx: foldx = match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Hv: valid l (finite_trace_last is tr, iom)
Ht: transition l (finite_trace_last is tr, iom) = (s, oom)

(trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), foldr equivocators_trace_project_folder foldx tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}])) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
IHtr: final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) → (trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
final_state:= finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (equivocator_IM IM))
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
oitem: option (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Heq_ltr: finite_trace_last is tr = state_update (equivocator_IM IM) (destination {| l := l; input := iom; destination := s; output := oom |}) (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hex_new: previous_state_descriptor_prop (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hx: match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → composite_valid IM (VLSM.l itemx) ( sx, input itemx) ∧ composite_transition IM (VLSM.l itemx) ( sx, input itemx) = (destination itemx, output itemx) | None => equivocators_state_project IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l itemx) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input itemx ∧ output {| l := l; input := iom; destination := s; output := oom |} = output itemx ∧ equivocators_state_project IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) | None => True end
Hprojectx: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
foldx: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqfoldx: foldx = match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Hv: valid l (finite_trace_last is tr, iom)
Ht: transition l (finite_trace_last is tr, iom) = (s, oom)

(trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), foldr equivocators_trace_project_folder foldx tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}])) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
final_descriptors': equivocator_descriptors IM
IHtr: (trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project final_descriptors' tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors' (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
final_state:= finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (equivocator_IM IM))
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
oitem: option (composite_transition_item IM)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Heq_ltr: finite_trace_last is tr = state_update (equivocator_IM IM) (destination {| l := l; input := iom; destination := s; output := oom |}) (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hex_new: previous_state_descriptor_prop (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hx: match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → composite_valid IM (VLSM.l itemx) ( sx, input itemx) ∧ composite_transition IM (VLSM.l itemx) ( sx, input itemx) = (destination itemx, output itemx) | None => equivocators_state_project IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l itemx) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input itemx ∧ output {| l := l; input := iom; destination := s; output := oom |} = output itemx ∧ equivocators_state_project IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) | None => True end
Hprojectx: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
foldx: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqfoldx: foldx = match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Hv: valid l (finite_trace_last is tr, iom)
Ht: transition l (finite_trace_last is tr, iom) = (s, oom)

(trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), foldr equivocators_trace_project_folder foldx tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}])) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
final_descriptors': equivocator_descriptors IM
trX': list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project final_descriptors' tr = Some (trX', initial_descriptors)
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
Hlst: equivocators_state_project IM final_descriptors' (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX'
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
final_state:= finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (equivocator_IM IM))
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
oitem: option (composite_transition_item IM)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Heq_ltr: finite_trace_last is tr = state_update (equivocator_IM IM) (destination {| l := l; input := iom; destination := s; output := oom |}) (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hex_new: previous_state_descriptor_prop (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hx: match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → composite_valid IM (VLSM.l itemx) ( sx, input itemx) ∧ composite_transition IM (VLSM.l itemx) ( sx, input itemx) = (destination itemx, output itemx) | None => equivocators_state_project IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l itemx) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input itemx ∧ output {| l := l; input := iom; destination := s; output := oom |} = output itemx ∧ equivocators_state_project IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) | None => True end
Hprojectx: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
foldx: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqfoldx: foldx = match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Hv: valid l (finite_trace_last is tr, iom)
Ht: transition l (finite_trace_last is tr, iom) = (s, oom)

(trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), foldr equivocators_trace_project_folder foldx tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}])) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
final_descriptors': equivocator_descriptors IM
trX': list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project final_descriptors' tr = Some (trX', initial_descriptors)
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
Hlst: equivocators_state_project IM final_descriptors' (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX'
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
final_state:= finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (equivocator_IM IM))
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
item: composite_transition_item IM
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Heq_ltr: finite_trace_last is tr = state_update (equivocator_IM IM) (destination {| l := l; input := iom; destination := s; output := oom |}) (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hex_new: previous_state_descriptor_prop (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hx: sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → composite_valid IM (VLSM.l item) (sx, input item) ∧ composite_transition IM (VLSM.l item) ( sx, input item) = (destination item, output item)
Hitemx: ( Hex : existing_equivocator_label (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l item) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input item ∧ output {| l := l; input := iom; destination := s; output := oom |} = output item ∧ equivocators_state_project IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination item ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))
Hprojectx: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (Some item, final_descriptors')
foldx: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqfoldx: foldx = Some ([item], final_descriptors')
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Hv: valid l (finite_trace_last is tr, iom)
Ht: transition l (finite_trace_last is tr, iom) = (s, oom)

(trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), foldr equivocators_trace_project_folder foldx tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}])) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
final_descriptors': equivocator_descriptors IM
trX': list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project final_descriptors' tr = Some (trX', initial_descriptors)
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
Hlst: equivocators_state_project IM final_descriptors' (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX'
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
final_state:= finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (equivocator_IM IM))
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Heq_ltr: finite_trace_last is tr = state_update (equivocator_IM IM) (destination {| l := l; input := iom; destination := s; output := oom |}) (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hex_new: previous_state_descriptor_prop (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hx: equivocators_state_project IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = equivocators_state_project IM final_descriptors' (finite_trace_last is tr)
Hitemx: True
Hprojectx: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (None, final_descriptors')
foldx: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqfoldx: foldx = Some ([], final_descriptors')
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Hv: valid l (finite_trace_last is tr, iom)
Ht: transition l (finite_trace_last is tr, iom) = (s, oom)
(trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), foldr equivocators_trace_project_folder foldx tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}])) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
final_descriptors': equivocator_descriptors IM
trX': list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project final_descriptors' tr = Some (trX', initial_descriptors)
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
Hlst: equivocators_state_project IM final_descriptors' (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX'
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
final_state:= finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (equivocator_IM IM))
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
item: composite_transition_item IM
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Heq_ltr: finite_trace_last is tr = state_update (equivocator_IM IM) (destination {| l := l; input := iom; destination := s; output := oom |}) (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hex_new: previous_state_descriptor_prop (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hx: sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → composite_valid IM (VLSM.l item) (sx, input item) ∧ composite_transition IM (VLSM.l item) ( sx, input item) = (destination item, output item)
Hitemx: ( Hex : existing_equivocator_label (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l item) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input item ∧ output {| l := l; input := iom; destination := s; output := oom |} = output item ∧ equivocators_state_project IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination item ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))
Hprojectx: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (Some item, final_descriptors')
foldx: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqfoldx: foldx = Some ([item], final_descriptors')
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Hv: valid l (finite_trace_last is tr, iom)
Ht: transition l (finite_trace_last is tr, iom) = (s, oom)

(trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), foldr equivocators_trace_project_folder foldx tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}])) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
final_descriptors': equivocator_descriptors IM
trX': list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project final_descriptors' tr = Some (trX', initial_descriptors)
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
Hlst: equivocators_state_project IM final_descriptors' (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX'
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
final_state:= finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (equivocator_IM IM))
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
item: composite_transition_item IM
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Heq_ltr: finite_trace_last is tr = state_update (equivocator_IM IM) (destination {| l := l; input := iom; destination := s; output := oom |}) (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hex_new: previous_state_descriptor_prop (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hx: sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → composite_valid IM (VLSM.l item) (sx, input item) ∧ composite_transition IM (VLSM.l item) ( sx, input item) = (destination item, output item)
Hitemx: ( Hex : existing_equivocator_label (IM (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM (projT1 l)) (projT2 l) Hex) = VLSM.l item) ∧ iom = input item ∧ oom = output item ∧ equivocators_state_project IM final_descriptors s = destination item ∧ final_descriptors' (projT1 l) = equivocator_label_descriptor (projT2 l)
Hprojectx: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (Some item, final_descriptors')
foldx: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqfoldx: foldx = Some ([item], final_descriptors')
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Hv: valid l (finite_trace_last is tr, iom)
Ht: transition l (finite_trace_last is tr, iom) = (s, oom)

(trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), foldr equivocators_trace_project_folder foldx tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}])) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
final_descriptors': equivocator_descriptors IM
trX': list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project final_descriptors' tr = Some (trX', initial_descriptors)
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
Hlst: equivocators_state_project IM final_descriptors' (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX'
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
final_state:= finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (equivocator_IM IM))
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
item: composite_transition_item IM
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Heq_ltr: finite_trace_last is tr = state_update (equivocator_IM IM) (destination {| l := l; input := iom; destination := s; output := oom |}) (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hex_new: previous_state_descriptor_prop (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hx: sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → composite_valid IM (VLSM.l item) (sx, input item) ∧ composite_transition IM (VLSM.l item) ( sx, input item) = (destination item, output item)
Hl: Hex : existing_equivocator_label (IM (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM (projT1 l)) (projT2 l) Hex) = VLSM.l item
Hinput: iom = input item
Houtput: oom = output item
Hdestination: equivocators_state_project IM final_descriptors s = destination item
Hprojectx: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (Some item, final_descriptors')
foldx: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqfoldx: foldx = Some ([item], final_descriptors')
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Hv: valid l (finite_trace_last is tr, iom)
Ht: transition l (finite_trace_last is tr, iom) = (s, oom)

(trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), foldr equivocators_trace_project_folder foldx tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}])) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
final_descriptors': equivocator_descriptors IM
trX': list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project final_descriptors' tr = Some (trX', initial_descriptors)
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
Hlst: equivocators_state_project IM final_descriptors' (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX'
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
final_state:= finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (equivocator_IM IM))
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
item: composite_transition_item IM
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Heq_ltr: finite_trace_last is tr = state_update (equivocator_IM IM) (destination {| l := l; input := iom; destination := s; output := oom |}) (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hex_new: previous_state_descriptor_prop (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hx: composite_valid IM (VLSM.l item) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr), input item) ∧ composite_transition IM (VLSM.l item) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr), input item) = (destination item, output item)
Hl: Hex : existing_equivocator_label (IM (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM (projT1 l)) (projT2 l) Hex) = VLSM.l item
Hinput: iom = input item
Houtput: oom = output item
Hdestination: equivocators_state_project IM final_descriptors s = destination item
Hprojectx: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (Some item, final_descriptors')
foldx: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqfoldx: foldx = Some ([item], final_descriptors')
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Hv: valid l (finite_trace_last is tr, iom)
Ht: transition l (finite_trace_last is tr, iom) = (s, oom)

(trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), foldr equivocators_trace_project_folder foldx tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}])) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
final_descriptors': equivocator_descriptors IM
trX': list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project final_descriptors' tr = Some (trX', initial_descriptors)
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
Hlst: equivocators_state_project IM final_descriptors' (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX'
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
final_state:= finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (equivocator_IM IM))
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
item: composite_transition_item IM
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Heq_ltr: finite_trace_last is tr = state_update (equivocator_IM IM) (destination {| l := l; input := iom; destination := s; output := oom |}) (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hex_new: previous_state_descriptor_prop (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hvx: composite_valid IM (VLSM.l item) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr), input item)
Htx: composite_transition IM (VLSM.l item) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr), input item) = (destination item, output item)
Hl: Hex : existing_equivocator_label (IM (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM (projT1 l)) (projT2 l) Hex) = VLSM.l item
Hinput: iom = input item
Houtput: oom = output item
Hdestination: equivocators_state_project IM final_descriptors s = destination item
Hprojectx: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (Some item, final_descriptors')
foldx: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqfoldx: foldx = Some ([item], final_descriptors')
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Hv: valid l (finite_trace_last is tr, iom)
Ht: transition l (finite_trace_last is tr, iom) = (s, oom)

(trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), foldr equivocators_trace_project_folder foldx tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}])) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
final_descriptors': equivocator_descriptors IM
trX': list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project final_descriptors' tr = Some (trX', initial_descriptors)
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
Hlst: equivocators_state_project IM final_descriptors' (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX'
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
final_state:= finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (equivocator_IM IM))
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
item: composite_transition_item IM
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Heq_ltr: finite_trace_last is tr = state_update (equivocator_IM IM) (destination {| l := l; input := iom; destination := s; output := oom |}) (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hex_new: previous_state_descriptor_prop (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hvx: composite_valid IM (VLSM.l item) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr), input item)
Htx: composite_transition IM (VLSM.l item) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr), input item) = (destination item, output item)
Hl: Hex : existing_equivocator_label (IM (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM (projT1 l)) (projT2 l) Hex) = VLSM.l item
Hinput: iom = input item
Houtput: oom = output item
Hdestination: equivocators_state_project IM final_descriptors s = destination item
Hprojectx: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (Some item, final_descriptors')
foldx: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqfoldx: foldx = Some ([item], final_descriptors')
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Hv: valid l (finite_trace_last is tr, iom)
Ht: transition l (finite_trace_last is tr, iom) = (s, oom)

foldr equivocators_trace_project_folder foldx tr = Some (trX' ++ [item], initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}])) = finite_trace_last (equivocators_state_project IM initial_descriptors is) (trX' ++ [item])
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
final_descriptors': equivocator_descriptors IM
trX': list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project final_descriptors' tr = Some (trX', initial_descriptors)
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
Hlst: equivocators_state_project IM final_descriptors' (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX'
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
final_state:= finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (equivocator_IM IM))
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
item: composite_transition_item IM
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Heq_ltr: finite_trace_last is tr = state_update (equivocator_IM IM) (destination {| l := l; input := iom; destination := s; output := oom |}) (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hex_new: previous_state_descriptor_prop (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hvx: composite_valid IM (VLSM.l item) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr), input item)
Htx: composite_transition IM (VLSM.l item) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr), input item) = (destination item, output item)
Hl: Hex : existing_equivocator_label (IM (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM (projT1 l)) (projT2 l) Hex) = VLSM.l item
Hinput: iom = input item
Houtput: oom = output item
Hdestination: equivocators_state_project IM final_descriptors s = destination item
Hprojectx: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (Some item, final_descriptors')
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Hv: valid l (finite_trace_last is tr, iom)
Ht: transition l (finite_trace_last is tr, iom) = (s, oom)

foldr equivocators_trace_project_folder (Some ([item], final_descriptors')) tr = Some (trX' ++ [item], initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}])) = finite_trace_last (equivocators_state_project IM initial_descriptors is) (trX' ++ [item])
by erewrite equivocators_trace_project_folder_additive, !finite_trace_last_is_last.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
final_descriptors': equivocator_descriptors IM
trX': list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project final_descriptors' tr = Some (trX', initial_descriptors)
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
Hlst: equivocators_state_project IM final_descriptors' (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX'
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
final_state:= finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (equivocator_IM IM))
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Heq_ltr: finite_trace_last is tr = state_update (equivocator_IM IM) (destination {| l := l; input := iom; destination := s; output := oom |}) (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hex_new: previous_state_descriptor_prop (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hx: equivocators_state_project IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = equivocators_state_project IM final_descriptors' (finite_trace_last is tr)
Hitemx: True
Hprojectx: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (None, final_descriptors')
foldx: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqfoldx: foldx = Some ([], final_descriptors')
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Hv: valid l (finite_trace_last is tr, iom)
Ht: transition l (finite_trace_last is tr, iom) = (s, oom)

(trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), foldr equivocators_trace_project_folder foldx tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}])) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
final_descriptors': equivocator_descriptors IM
trX': list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project final_descriptors' tr = Some (trX', initial_descriptors)
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
Hlst: equivocators_state_project IM final_descriptors' (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX'
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
final_state:= finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (equivocator_IM IM))
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Heq_ltr: finite_trace_last is tr = state_update (equivocator_IM IM) (destination {| l := l; input := iom; destination := s; output := oom |}) (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hex_new: previous_state_descriptor_prop (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hx: equivocators_state_project IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = equivocators_state_project IM final_descriptors' (finite_trace_last is tr)
Hitemx: True
Hprojectx: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (None, final_descriptors')
foldx: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqfoldx: foldx = Some ([], final_descriptors')
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Hv: valid l (finite_trace_last is tr, iom)
Ht: transition l (finite_trace_last is tr, iom) = (s, oom)

foldr equivocators_trace_project_folder foldx tr = Some (trX', initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM final_descriptors (finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}])) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX'
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
tr: list (composite_transition_item (equivocator_IM IM))
is: composite_state (equivocator_IM IM)
final_descriptors': equivocator_descriptors IM
trX': list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project final_descriptors' tr = Some (trX', initial_descriptors)
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
Hlst: equivocators_state_project IM final_descriptors' (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX'
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
final_state:= finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (equivocator_IM IM))
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Heq_ltr: finite_trace_last is tr = state_update (equivocator_IM IM) (destination {| l := l; input := iom; destination := s; output := oom |}) (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hex_new: previous_state_descriptor_prop (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hx: equivocators_state_project IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = equivocators_state_project IM final_descriptors' (finite_trace_last is tr)
Hitemx: True
Hprojectx: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (None, final_descriptors')
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Hv: valid l (finite_trace_last is tr, iom)
Ht: transition l (finite_trace_last is tr, iom) = (s, oom)

equivocators_state_project IM final_descriptors (finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}])) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX'
by rewrite finite_trace_last_is_last; congruence. Qed.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from FreeE is tr

trX : list (composite_transition_item IM), equivocators_trace_project (zero_descriptor IM) tr = Some (trX, zero_descriptor IM)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from FreeE is tr

trX : list (composite_transition_item IM), equivocators_trace_project (zero_descriptor IM) tr = Some (trX, zero_descriptor IM)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from FreeE is tr
Hproject: let final_state := finite_trace_last is tr in proper_equivocator_descriptors IM (zero_descriptor IM) final_state → finite_constrained_trace_from FreeE is tr → (trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project (zero_descriptor IM) tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM (zero_descriptor IM) (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX

trX : list (composite_transition_item IM), equivocators_trace_project (zero_descriptor IM) tr = Some (trX, zero_descriptor IM)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from FreeE is tr
Hproject: proper_equivocator_descriptors IM (zero_descriptor IM) (finite_trace_last is tr) → finite_constrained_trace_from FreeE is tr → (trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project (zero_descriptor IM) tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM (zero_descriptor IM) (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX

trX : list (composite_transition_item IM), equivocators_trace_project (zero_descriptor IM) tr = Some (trX, zero_descriptor IM)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from FreeE is tr
Hproject: finite_constrained_trace_from FreeE is tr → (trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project (zero_descriptor IM) tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM (zero_descriptor IM) (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX

trX : list (composite_transition_item IM), equivocators_trace_project (zero_descriptor IM) tr = Some (trX, zero_descriptor IM)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from FreeE is tr
Hproject: (trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project (zero_descriptor IM) tr = Some (trX, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_state_project IM (zero_descriptor IM) (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX

trX : list (composite_transition_item IM), equivocators_trace_project (zero_descriptor IM) tr = Some (trX, zero_descriptor IM)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from FreeE is tr
trX: list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Hproject: equivocators_trace_project (zero_descriptor IM) tr = Some (trX, initial_descriptors)

trX : list (composite_transition_item IM), equivocators_trace_project (zero_descriptor IM) tr = Some (trX, zero_descriptor IM)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from FreeE is tr
trX: list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Hproject: equivocators_trace_project (zero_descriptor IM) tr = Some (trX, initial_descriptors)

equivocators_trace_project (zero_descriptor IM) tr = Some (trX, zero_descriptor IM)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from FreeE is tr
trX: list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Hproject: equivocators_trace_project (zero_descriptor IM) tr = Some (trX, initial_descriptors)

zero_descriptor IM = initial_descriptors
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from FreeE is tr
trX: list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Hproject: equivocators_trace_project (zero_descriptor IM) tr = Some (trX, initial_descriptors)

x : index, zero_descriptor IM x = initial_descriptors x
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from FreeE is tr
trX: list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Hproject: equivocators_trace_project (zero_descriptor IM) tr = Some (trX, initial_descriptors)
i: index

zero_descriptor IM i = initial_descriptors i
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from FreeE is tr
trX: list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Hproject: equivocators_trace_project (zero_descriptor IM) tr = Some (trX, initial_descriptors)
i: index

initial_descriptors i = zero_descriptor IM i
by apply (equivocators_trace_project_preserves_zero_descriptors _ _ Htr _ _ _ Hproject). Qed.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_state:= finite_trace_last is tr: state (composite_type (equivocator_IM IM))
Htr: finite_constrained_trace FreeE is tr
trX: list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Hproject: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)
Hproper: proper_equivocator_descriptors IM initial_descriptors is

proper_equivocator_descriptors IM final_descriptors final_state
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_state:= finite_trace_last is tr: state (composite_type (equivocator_IM IM))
Htr: finite_constrained_trace FreeE is tr
trX: list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Hproject: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)
Hproper: proper_equivocator_descriptors IM initial_descriptors is

proper_equivocator_descriptors IM final_descriptors final_state
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_state:= finite_trace_last is tr: state (composite_type (equivocator_IM IM))
Htr: finite_constrained_trace FreeE is tr
trX: list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is

equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) → proper_equivocator_descriptors IM final_descriptors final_state
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_state:= finite_trace_last is tr: state (composite_type (equivocator_IM IM))
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is

trX : list (composite_transition_item IM), finite_constrained_trace FreeE is tr → final_descriptors : equivocator_descriptors IM, equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) → proper_equivocator_descriptors IM final_descriptors final_state
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_state:= finite_trace_last is (tr ++ [x]): state (composite_type (equivocator_IM IM))
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
IHtr: (final_state := finite_trace_last is tr) (trX : list (composite_transition_item IM)), finite_constrained_trace FreeE is tr → final_descriptors : equivocator_descriptors IM, equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) → proper_equivocator_descriptors IM final_descriptors final_state
trX: list (composite_transition_item IM)
Htr: finite_constrained_trace FreeE is (tr ++ [x])
final_descriptors: equivocator_descriptors IM
Hproject: equivocators_trace_project final_descriptors (tr ++ [x]) = Some (trX, initial_descriptors)

proper_equivocator_descriptors IM final_descriptors final_state
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_state:= finite_trace_last is (tr ++ [x]): state (composite_type (equivocator_IM IM))
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
IHtr: (final_state := finite_trace_last is tr) (trX : list (composite_transition_item IM)), finite_constrained_trace FreeE is tr → final_descriptors : equivocator_descriptors IM, equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) → proper_equivocator_descriptors IM final_descriptors final_state
trX: list (composite_transition_item IM)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is (tr ++ [x])
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
Hproject: equivocators_trace_project final_descriptors (tr ++ [x]) = Some (trX, initial_descriptors)

proper_equivocator_descriptors IM final_descriptors final_state
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_state:= finite_trace_last is (tr ++ [x]): state (composite_type (equivocator_IM IM))
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
IHtr: (final_state := finite_trace_last is tr) (trX : list (composite_transition_item IM)), finite_constrained_trace FreeE is tr → final_descriptors : equivocator_descriptors IM, equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) → proper_equivocator_descriptors IM final_descriptors final_state
trX: list (composite_transition_item IM)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr ∧ finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) [x]
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
Hproject: equivocators_trace_project final_descriptors (tr ++ [x]) = Some (trX, initial_descriptors)

proper_equivocator_descriptors IM final_descriptors final_state
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_state:= finite_trace_last is (tr ++ [x]): state (composite_type (equivocator_IM IM))
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
IHtr: (final_state := finite_trace_last is tr) (trX : list (composite_transition_item IM)), finite_constrained_trace FreeE is tr → final_descriptors : equivocator_descriptors IM, equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) → proper_equivocator_descriptors IM final_descriptors final_state
trX: list (composite_transition_item IM)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hx: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) [x]
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
Hproject: equivocators_trace_project final_descriptors (tr ++ [x]) = Some (trX, initial_descriptors)

proper_equivocator_descriptors IM final_descriptors final_state
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_state:= finite_trace_last is (tr ++ [x]): state (composite_type (equivocator_IM IM))
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
IHtr: (final_state := finite_trace_last is tr) (trX : list (composite_transition_item IM)), finite_constrained_trace FreeE is tr → final_descriptors : equivocator_descriptors IM, equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) → proper_equivocator_descriptors IM final_descriptors final_state
trX: list (composite_transition_item IM)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hx: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) [x]
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
Hproject: foldr equivocators_trace_project_folder (Some ([], final_descriptors)) (tr ++ [x]) = Some (trX, initial_descriptors)

proper_equivocator_descriptors IM final_descriptors final_state
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_state:= finite_trace_last is (tr ++ [x]): state (composite_type (equivocator_IM IM))
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
IHtr: (final_state := finite_trace_last is tr) (trX : list (composite_transition_item IM)), finite_constrained_trace FreeE is tr → final_descriptors : equivocator_descriptors IM, equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) → proper_equivocator_descriptors IM final_descriptors final_state
trX: list (composite_transition_item IM)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hx: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) [x]
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
Hproject: foldr equivocators_trace_project_folder (foldr equivocators_trace_project_folder (Some ([], final_descriptors)) [x]) tr = Some (trX, initial_descriptors)

proper_equivocator_descriptors IM final_descriptors final_state
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_state:= finite_trace_last is (tr ++ [x]): state (composite_type (equivocator_IM IM))
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
IHtr: (final_state := finite_trace_last is tr) (trX : list (composite_transition_item IM)), finite_constrained_trace FreeE is tr → final_descriptors : equivocator_descriptors IM, equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) → proper_equivocator_descriptors IM final_descriptors final_state
trX: list (composite_transition_item IM)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hx: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) [x]
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
project_x: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqproject_x: project_x = foldr equivocators_trace_project_folder (Some ([], final_descriptors)) [x]
Hproject: foldr equivocators_trace_project_folder project_x tr = Some (trX, initial_descriptors)

proper_equivocator_descriptors IM final_descriptors final_state
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_state:= finite_trace_last is (tr ++ [x]): state (composite_type (equivocator_IM IM))
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
IHtr: (final_state := finite_trace_last is tr) (trX : list (composite_transition_item IM)), finite_constrained_trace FreeE is tr → final_descriptors : equivocator_descriptors IM, equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) → proper_equivocator_descriptors IM final_descriptors final_state
trX: list (composite_transition_item IM)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hx: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) [x]
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
project_x: option (list (composite_transition_item IM) * equivocator_descriptors IM)
Heqproject_x: project_x = match equivocators_transition_item_project final_descriptors x with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end
Hproject: foldr equivocators_trace_project_folder project_x tr = Some (trX, initial_descriptors)

proper_equivocator_descriptors IM final_descriptors final_state
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_state:= finite_trace_last is (tr ++ [x]): state (composite_type (equivocator_IM IM))
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
IHtr: (final_state := finite_trace_last is tr) (trX : list (composite_transition_item IM)), finite_constrained_trace FreeE is tr → final_descriptors : equivocator_descriptors IM, equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) → proper_equivocator_descriptors IM final_descriptors final_state
trX: list (composite_transition_item IM)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hx: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) [x]
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
x': list (composite_transition_item IM)
x_descriptors: equivocator_descriptors IM
Heqproject_x: Some (x', x_descriptors) = match equivocators_transition_item_project final_descriptors x with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end
Hproject: foldr equivocators_trace_project_folder (Some (x', x_descriptors)) tr = Some (trX, initial_descriptors)

proper_equivocator_descriptors IM final_descriptors final_state
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_state:= finite_trace_last is (tr ++ [x]): state (composite_type (equivocator_IM IM))
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
IHtr: (final_state := finite_trace_last is tr) (trX : list (composite_transition_item IM)), finite_constrained_trace FreeE is tr → final_descriptors : equivocator_descriptors IM, equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) → proper_equivocator_descriptors IM final_descriptors final_state
trX: list (composite_transition_item IM)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hx: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) [x]
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
x': list (composite_transition_item IM)
x_descriptors: equivocator_descriptors IM
oitem': option (composite_transition_item IM)
ditem': equivocator_descriptors IM
Hproject_x: equivocators_transition_item_project final_descriptors x = Some (oitem', ditem')
Heqproject_x: Some (x', x_descriptors) = match oitem' with | Some item' => Some ([item'], ditem') | None => Some ([], ditem') end
Hproject: foldr equivocators_trace_project_folder (Some (x', x_descriptors)) tr = Some (trX, initial_descriptors)

proper_equivocator_descriptors IM final_descriptors final_state
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_state:= finite_trace_last is (tr ++ [x]): state (composite_type (equivocator_IM IM))
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
IHtr: (final_state := finite_trace_last is tr) (trX : list (composite_transition_item IM)), finite_constrained_trace FreeE is tr → final_descriptors : equivocator_descriptors IM, equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) → proper_equivocator_descriptors IM final_descriptors final_state
trX: list (composite_transition_item IM)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hx: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) [x]
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
x': list (composite_transition_item IM)
x_descriptors: equivocator_descriptors IM
oitem': option (composite_transition_item IM)
ditem': equivocator_descriptors IM
Hproject_x: equivocators_transition_item_project final_descriptors x = Some (oitem', ditem')
Heqproject_x: Some (x', x_descriptors) = match oitem' with | Some item' => Some ([item'], ditem') | None => Some ([], ditem') end
Hproject: trX0 : list (composite_transition_item IM), foldr equivocators_trace_project_folder (Some ([], x_descriptors)) tr = Some (trX0, initial_descriptors) ∧ trX = trX0 ++ x'

proper_equivocator_descriptors IM final_descriptors final_state
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_state:= finite_trace_last is (tr ++ [x]): state (composite_type (equivocator_IM IM))
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
IHtr: (final_state := finite_trace_last is tr) (trX : list (composite_transition_item IM)), finite_constrained_trace FreeE is tr → final_descriptors : equivocator_descriptors IM, equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) → proper_equivocator_descriptors IM final_descriptors final_state
trX: list (composite_transition_item IM)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hx: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) [x]
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
x': list (composite_transition_item IM)
x_descriptors: equivocator_descriptors IM
oitem': option (composite_transition_item IM)
ditem': equivocator_descriptors IM
Hproject_x: equivocators_transition_item_project final_descriptors x = Some (oitem', ditem')
Heqproject_x: Some (x', x_descriptors) = match oitem' with | Some item' => Some ([item'], ditem') | None => Some ([], ditem') end
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], x_descriptors)) tr = Some (trX', initial_descriptors)
HeqtrX: trX = trX' ++ x'

proper_equivocator_descriptors IM final_descriptors final_state
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_state:= finite_trace_last is (tr ++ [x]): state (composite_type (equivocator_IM IM))
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
x_descriptors: equivocator_descriptors IM
IHtr: proper_equivocator_descriptors IM x_descriptors (finite_trace_last is tr)
trX: list (composite_transition_item IM)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hx: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) [x]
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
x': list (composite_transition_item IM)
oitem': option (composite_transition_item IM)
ditem': equivocator_descriptors IM
Hproject_x: equivocators_transition_item_project final_descriptors x = Some (oitem', ditem')
Heqproject_x: Some (x', x_descriptors) = match oitem' with | Some item' => Some ([item'], ditem') | None => Some ([], ditem') end
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], x_descriptors)) tr = Some (trX', initial_descriptors)
HeqtrX: trX = trX' ++ x'

proper_equivocator_descriptors IM final_descriptors final_state
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_state:= finite_trace_last is (tr ++ [x]): state (composite_type (equivocator_IM IM))
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
x_descriptors: equivocator_descriptors IM
IHtr: proper_equivocator_descriptors IM x_descriptors (finite_trace_last is tr)
trX: list (composite_transition_item IM)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hx: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) [x]
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
x': list (composite_transition_item IM)
oitem': option (composite_transition_item IM)
ditem': equivocator_descriptors IM
Hproject_x: equivocators_transition_item_project final_descriptors x = Some (oitem', ditem')
Heqproject_x: Some (x', x_descriptors) = match oitem' with | Some item' => Some ([item'], ditem') | None => Some ([], ditem') end
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], x_descriptors)) tr = Some (trX', initial_descriptors)
HeqtrX: trX = trX' ++ x'
s: state (preloaded_with_all_messages_vlsm FreeE)
tl: list transition_item
s': state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)
H1: s' = finite_trace_last is tr
H3: {| l := l; input := iom; destination := s; output := oom |} = x
H4: tl = []

proper_equivocator_descriptors IM final_descriptors final_state
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
final_state:= finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (equivocator_IM IM))
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
x_descriptors: equivocator_descriptors IM
IHtr: proper_equivocator_descriptors IM x_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hx: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) [{| l := l; input := iom; destination := s; output := oom |}]
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
x': list (composite_transition_item IM)
oitem': option (composite_transition_item IM)
ditem': equivocator_descriptors IM
Hproject_x: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem', ditem')
Heqproject_x: Some (x', x_descriptors) = match oitem' with | Some item' => Some ([item'], ditem') | None => Some ([], ditem') end
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], x_descriptors)) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)

proper_equivocator_descriptors IM final_descriptors final_state
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
final_state:= finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (equivocator_IM IM))
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
x_descriptors: equivocator_descriptors IM
IHtr: proper_equivocator_descriptors IM x_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
x': list (composite_transition_item IM)
oitem': option (composite_transition_item IM)
ditem': equivocator_descriptors IM
Hproject_x: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem', ditem')
Heqproject_x: Some (x', x_descriptors) = match oitem' with | Some item' => Some ([item'], ditem') | None => Some ([], ditem') end
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], x_descriptors)) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)

proper_equivocator_descriptors IM final_descriptors final_state
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
final_state:= finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (equivocator_IM IM))
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
x_descriptors: equivocator_descriptors IM
IHtr: proper_equivocator_descriptors IM x_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
x': list (composite_transition_item IM)
oitem': option (composite_transition_item IM)
ditem': equivocator_descriptors IM
Hproject_x: match equivocator_vlsm_transition_item_project (IM (projT1 l)) (composite_transition_item_projection (equivocator_IM IM) {| l := l; input := iom; destination := s; output := oom |}) (final_descriptors (projT1 l)) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 l) (VLSM.l item'); input := iom; destination := equivocators_state_project IM final_descriptors s; output := oom |}, equivocator_descriptors_update IM final_descriptors (projT1 l) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 l) deqv') | None => None end = Some (oitem', ditem')
Heqproject_x: Some (x', x_descriptors) = match oitem' with | Some item' => Some ([item'], ditem') | None => Some ([], ditem') end
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], x_descriptors)) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)

proper_equivocator_descriptors IM final_descriptors final_state
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
final_state:= finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (equivocator_IM IM))
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
x_descriptors: equivocator_descriptors IM
IHtr: proper_equivocator_descriptors IM x_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
x': list (composite_transition_item IM)
oitem': option (composite_transition_item IM)
ditem': equivocator_descriptors IM
Hproject_x: match equivocator_vlsm_transition_item_project (IM (projT1 l)) (composite_transition_item_projection_from_eq (equivocator_IM IM) {| l := l; input := iom; destination := s; output := oom |} (projT1 l) eq_refl) (final_descriptors (projT1 l)) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 l) (VLSM.l item'); input := iom; destination := equivocators_state_project IM final_descriptors s; output := oom |}, equivocator_descriptors_update IM final_descriptors (projT1 l) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 l) deqv') | None => None end = Some (oitem', ditem')
Heqproject_x: Some (x', x_descriptors) = match oitem' with | Some item' => Some ([item'], ditem') | None => Some ([], ditem') end
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], x_descriptors)) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)

proper_equivocator_descriptors IM final_descriptors final_state
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
final_state:= finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (equivocator_IM IM))
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
x_descriptors: equivocator_descriptors IM
IHtr: proper_equivocator_descriptors IM x_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
x': list (composite_transition_item IM)
oitem': option (composite_transition_item IM)
ditem': equivocator_descriptors IM
Hproject_x: match equivocator_vlsm_transition_item_project (IM (projT1 l)) {| l := eq_rect_r (λ n : index, EquivocatorLabel (IM n)) (projT2 l) eq_refl; input := iom; destination := s (projT1 l); output := oom |} (final_descriptors (projT1 l)) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 l) (VLSM.l item'); input := iom; destination := equivocators_state_project IM final_descriptors s; output := oom |}, equivocator_descriptors_update IM final_descriptors (projT1 l) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 l) deqv') | None => None end = Some (oitem', ditem')
Heqproject_x: Some (x', x_descriptors) = match oitem' with | Some item' => Some ([item'], ditem') | None => Some ([], ditem') end
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], x_descriptors)) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)

proper_equivocator_descriptors IM final_descriptors final_state
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
final_state:= finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (equivocator_IM IM))
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
x_descriptors: equivocator_descriptors IM
IHtr: proper_equivocator_descriptors IM x_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
x': list (composite_transition_item IM)
oitem': option (composite_transition_item IM)
ditem': equivocator_descriptors IM
Hproject_x: match equivocator_vlsm_transition_item_project (IM (projT1 l)) {| l := projT2 l; input := iom; destination := s (projT1 l); output := oom |} (final_descriptors (projT1 l)) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 l) (VLSM.l item'); input := iom; destination := equivocators_state_project IM final_descriptors s; output := oom |}, equivocator_descriptors_update IM final_descriptors (projT1 l) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 l) deqv') | None => None end = Some (oitem', ditem')
Heqproject_x: Some (x', x_descriptors) = match oitem' with | Some item' => Some ([item'], ditem') | None => Some ([], ditem') end
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], x_descriptors)) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)

proper_equivocator_descriptors IM final_descriptors final_state
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
final_state:= finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (equivocator_IM IM))
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
x_descriptors: equivocator_descriptors IM
IHtr: proper_equivocator_descriptors IM x_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
x': list (composite_transition_item IM)
oitem': option (composite_transition_item IM)
ditem': equivocator_descriptors IM
oitem'': option transition_item
ditem'': MachineDescriptor (IM (projT1 l))
Heqprojecti: equivocator_vlsm_transition_item_project (IM (projT1 l)) {| l := projT2 l; input := iom; destination := s (projT1 l); output := oom |} (final_descriptors (projT1 l)) = Some (oitem'', ditem'')
Hproject_x: match oitem'' with | Some item' => Some (Some {| l := existT (projT1 l) (VLSM.l item'); input := iom; destination := equivocators_state_project IM final_descriptors s; output := oom |}, equivocator_descriptors_update IM final_descriptors (projT1 l) ditem'') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 l) ditem'') end = Some (oitem', ditem')
Heqproject_x: Some (x', x_descriptors) = match oitem' with | Some item' => Some ([item'], ditem') | None => Some ([], ditem') end
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], x_descriptors)) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)

proper_equivocator_descriptors IM final_descriptors final_state
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
final_state:= finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (equivocator_IM IM))
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
x_descriptors: equivocator_descriptors IM
IHtr: proper_equivocator_descriptors IM x_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
x': list (composite_transition_item IM)
oitem': option (composite_transition_item IM)
ditem': equivocator_descriptors IM
oitem'': option transition_item
ditem'': MachineDescriptor (IM (projT1 l))
Heqprojecti: match final_descriptors (projT1 l) with | NewMachine _ => Some (None, final_descriptors (projT1 l)) | Existing j => match equivocator_state_project (s (projT1 l)) j with | Some sj => match projT2 l with | Spawn sn => if decide (j = equivocator_state_last (s (projT1 l))) then Some (None, NewMachine sn) else Some (None, Existing j) | ContinueWith i lx => if decide (i = j) then Some (Some {| l := lx; input := iom; destination := sj; output := oom |}, Existing i) else Some (None, Existing j) | ForkWith i lx => if decide (j = equivocator_state_last (s (projT1 l))) then Some (Some {| l := lx; input := iom; destination := sj; output := oom |}, Existing i) else Some (None, Existing j) end | None => None end end = Some (oitem'', ditem'')
Hproject_x: match oitem'' with | Some item' => Some (Some {| l := existT (projT1 l) (VLSM.l item'); input := iom; destination := equivocators_state_project IM final_descriptors s; output := oom |}, equivocator_descriptors_update IM final_descriptors (projT1 l) ditem'') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 l) ditem'') end = Some (oitem', ditem')
Heqproject_x: Some (x', x_descriptors) = match oitem' with | Some item' => Some ([item'], ditem') | None => Some ([], ditem') end
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], x_descriptors)) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)

proper_equivocator_descriptors IM final_descriptors final_state
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
final_state:= finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (equivocator_IM IM))
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
x_descriptors: equivocator_descriptors IM
IHtr: proper_equivocator_descriptors IM x_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
x': list (composite_transition_item IM)
oitem': option (composite_transition_item IM)
ditem': equivocator_descriptors IM
oitem'': option transition_item
ditem'': MachineDescriptor (IM (projT1 l))
Heqprojecti: match final_descriptors (projT1 l) with | NewMachine _ => Some (None, final_descriptors (projT1 l)) | Existing j => match equivocator_state_project (s (projT1 l)) j with | Some sj => match projT2 l with | Spawn sn => if decide (j = equivocator_state_last (s (projT1 l))) then Some (None, NewMachine sn) else Some (None, Existing j) | ContinueWith i lx => if decide (i = j) then Some (Some {| l := lx; input := iom; destination := sj; output := oom |}, Existing i) else Some (None, Existing j) | ForkWith i lx => if decide (j = equivocator_state_last (s (projT1 l))) then Some (Some {| l := lx; input := iom; destination := sj; output := oom |}, Existing i) else Some (None, Existing j) end | None => None end end = Some (oitem'', ditem'')
Hproject_x: match oitem'' with | Some item' => Some (Some {| l := existT (projT1 l) (VLSM.l item'); input := iom; destination := equivocators_state_project IM final_descriptors s; output := oom |}, equivocator_descriptors_update IM final_descriptors (projT1 l) ditem'') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 l) ditem'') end = Some (oitem', ditem')
Heqproject_x: Some (x', x_descriptors) = match oitem' with | Some item' => Some ([item'], ditem') | None => Some ([], ditem') end
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], x_descriptors)) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)

proper_equivocator_descriptors IM final_descriptors (finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]))
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
x_descriptors: equivocator_descriptors IM
IHtr: proper_equivocator_descriptors IM x_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
x': list (composite_transition_item IM)
oitem': option (composite_transition_item IM)
ditem': equivocator_descriptors IM
oitem'': option transition_item
ditem'': MachineDescriptor (IM (projT1 l))
Heqprojecti: match final_descriptors (projT1 l) with | NewMachine _ => Some (None, final_descriptors (projT1 l)) | Existing j => match equivocator_state_project (s (projT1 l)) j with | Some sj => match projT2 l with | Spawn sn => if decide (j = equivocator_state_last (s (projT1 l))) then Some (None, NewMachine sn) else Some (None, Existing j) | ContinueWith i lx => if decide (i = j) then Some (Some {| l := lx; input := iom; destination := sj; output := oom |}, Existing i) else Some (None, Existing j) | ForkWith i lx => if decide (j = equivocator_state_last (s (projT1 l))) then Some (Some {| l := lx; input := iom; destination := sj; output := oom |}, Existing i) else Some (None, Existing j) end | None => None end end = Some (oitem'', ditem'')
Hproject_x: match oitem'' with | Some item' => Some (Some {| l := existT (projT1 l) (VLSM.l item'); input := iom; destination := equivocators_state_project IM final_descriptors s; output := oom |}, equivocator_descriptors_update IM final_descriptors (projT1 l) ditem'') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 l) ditem'') end = Some (oitem', ditem')
Heqproject_x: Some (x', x_descriptors) = match oitem' with | Some item' => Some ([item'], ditem') | None => Some ([], ditem') end
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], x_descriptors)) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)

proper_equivocator_descriptors IM final_descriptors (finite_trace_last is (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]))
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
x_descriptors: equivocator_descriptors IM
IHtr: proper_equivocator_descriptors IM x_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
x': list (composite_transition_item IM)
oitem': option (composite_transition_item IM)
ditem': equivocator_descriptors IM
oitem'': option transition_item
ditem'': MachineDescriptor (IM (projT1 l))
Heqprojecti: match final_descriptors (projT1 l) with | NewMachine _ => Some (None, final_descriptors (projT1 l)) | Existing j => match equivocator_state_project (s (projT1 l)) j with | Some sj => match projT2 l with | Spawn sn => if decide (j = equivocator_state_last (s (projT1 l))) then Some (None, NewMachine sn) else Some (None, Existing j) | ContinueWith i lx => if decide (i = j) then Some (Some {| l := lx; input := iom; destination := sj; output := oom |}, Existing i) else Some (None, Existing j) | ForkWith i lx => if decide (j = equivocator_state_last (s (projT1 l))) then Some (Some {| l := lx; input := iom; destination := sj; output := oom |}, Existing i) else Some (None, Existing j) end | None => None end end = Some (oitem'', ditem'')
Hproject_x: match oitem'' with | Some item' => Some (Some {| l := existT (projT1 l) (VLSM.l item'); input := iom; destination := equivocators_state_project IM final_descriptors s; output := oom |}, equivocator_descriptors_update IM final_descriptors (projT1 l) ditem'') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 l) ditem'') end = Some (oitem', ditem')
Heqproject_x: Some (x', x_descriptors) = match oitem' with | Some item' => Some ([item'], ditem') | None => Some ([], ditem') end
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], x_descriptors)) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)

proper_equivocator_descriptors IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
x_descriptors: equivocator_descriptors IM
IHtr: proper_equivocator_descriptors IM x_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
x': list (composite_transition_item IM)
oitem': option (composite_transition_item IM)
ditem': equivocator_descriptors IM
oitem'': option transition_item
ditem'': MachineDescriptor (IM (projT1 l))
Heqprojecti: match final_descriptors (projT1 l) with | NewMachine _ => Some (None, final_descriptors (projT1 l)) | Existing j => match equivocator_state_project (s (projT1 l)) j with | Some sj => match projT2 l with | Spawn sn => if decide (j = equivocator_state_last (s (projT1 l))) then Some (None, NewMachine sn) else Some (None, Existing j) | ContinueWith i lx => if decide (i = j) then Some (Some {| l := lx; input := iom; destination := sj; output := oom |}, Existing i) else Some (None, Existing j) | ForkWith i lx => if decide (j = equivocator_state_last (s (projT1 l))) then Some (Some {| l := lx; input := iom; destination := sj; output := oom |}, Existing i) else Some (None, Existing j) end | None => None end end = Some (oitem'', ditem'')
Hproject_x: match oitem'' with | Some item' => Some (Some {| l := existT (projT1 l) (VLSM.l item'); input := iom; destination := equivocators_state_project IM final_descriptors s; output := oom |}, equivocator_descriptors_update IM final_descriptors (projT1 l) ditem'') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 l) ditem'') end = Some (oitem', ditem')
Heqproject_x: Some (x', x_descriptors) = match oitem' with | Some item' => Some ([item'], ditem') | None => Some ([], ditem') end
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], x_descriptors)) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)

proper_equivocator_descriptors IM final_descriptors s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
x_descriptors: equivocator_descriptors IM
IHtr: proper_equivocator_descriptors IM x_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
x': list (composite_transition_item IM)
oitem': option (composite_transition_item IM)
ditem': equivocator_descriptors IM
oitem'': option transition_item
ditem'': MachineDescriptor (IM (projT1 l))
sn: state (IM (projT1 l))
Hfinali: final_descriptors (projT1 l) = NewMachine sn
Heqprojecti: Some (None, NewMachine sn) = Some (oitem'', ditem'')
Hproject_x: match oitem'' with | Some item' => Some (Some {| l := existT (projT1 l) (VLSM.l item'); input := iom; destination := equivocators_state_project IM final_descriptors s; output := oom |}, equivocator_descriptors_update IM final_descriptors (projT1 l) ditem'') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 l) ditem'') end = Some (oitem', ditem')
Heqproject_x: Some (x', x_descriptors) = match oitem' with | Some item' => Some ([item'], ditem') | None => Some ([], ditem') end
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], x_descriptors)) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)

proper_equivocator_descriptors IM final_descriptors s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
x_descriptors: equivocator_descriptors IM
IHtr: proper_equivocator_descriptors IM x_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
x': list (composite_transition_item IM)
oitem': option (composite_transition_item IM)
ditem': equivocator_descriptors IM
oitem'': option transition_item
ditem'': MachineDescriptor (IM (projT1 l))
j: nat
Hfinali: final_descriptors (projT1 l) = Existing j
Heqprojecti: match equivocator_state_project (s (projT1 l)) j with | Some sj => match projT2 l with | Spawn sn => if decide (j = equivocator_state_last (s (projT1 l))) then Some (None, NewMachine sn) else Some (None, Existing j) | ContinueWith i lx => if decide (i = j) then Some (Some {| l := lx; input := iom; destination := sj; output := oom |}, Existing i) else Some (None, Existing j) | ForkWith i lx => if decide (j = equivocator_state_last (s (projT1 l))) then Some (Some {| l := lx; input := iom; destination := sj; output := oom |}, Existing i) else Some (None, Existing j) end | None => None end = Some (oitem'', ditem'')
Hproject_x: match oitem'' with | Some item' => Some (Some {| l := existT (projT1 l) (VLSM.l item'); input := iom; destination := equivocators_state_project IM final_descriptors s; output := oom |}, equivocator_descriptors_update IM final_descriptors (projT1 l) ditem'') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 l) ditem'') end = Some (oitem', ditem')
Heqproject_x: Some (x', x_descriptors) = match oitem' with | Some item' => Some ([item'], ditem') | None => Some ([], ditem') end
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], x_descriptors)) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)
proper_equivocator_descriptors IM final_descriptors s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
x_descriptors: equivocator_descriptors IM
IHtr: proper_equivocator_descriptors IM x_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
x': list (composite_transition_item IM)
oitem': option (composite_transition_item IM)
ditem': equivocator_descriptors IM
oitem'': option transition_item
ditem'': MachineDescriptor (IM (projT1 l))
sn: state (IM (projT1 l))
Hfinali: final_descriptors (projT1 l) = NewMachine sn
Heqprojecti: Some (None, NewMachine sn) = Some (oitem'', ditem'')
Hproject_x: match oitem'' with | Some item' => Some (Some {| l := existT (projT1 l) (VLSM.l item'); input := iom; destination := equivocators_state_project IM final_descriptors s; output := oom |}, equivocator_descriptors_update IM final_descriptors (projT1 l) ditem'') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 l) ditem'') end = Some (oitem', ditem')
Heqproject_x: Some (x', x_descriptors) = match oitem' with | Some item' => Some ([item'], ditem') | None => Some ([], ditem') end
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], x_descriptors)) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)

proper_equivocator_descriptors IM final_descriptors s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
x_descriptors: equivocator_descriptors IM
IHtr: proper_equivocator_descriptors IM x_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
x': list (composite_transition_item IM)
oitem': option (composite_transition_item IM)
ditem': equivocator_descriptors IM
oitem'': option transition_item
ditem'': MachineDescriptor (IM (projT1 l))
sn: state (IM (projT1 l))
Hfinali: final_descriptors (projT1 l) = NewMachine sn
Heqprojecti: Some (None, NewMachine sn) = Some (oitem'', ditem'')
Hproject_x: match oitem'' with | Some item' => Some (Some {| l := existT (projT1 l) (VLSM.l item'); input := iom; destination := equivocators_state_project IM final_descriptors s; output := oom |}, equivocator_descriptors_update IM final_descriptors (projT1 l) ditem'') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 l) ditem'') end = Some (oitem', ditem')
Heqproject_x: Some (x', x_descriptors) = match oitem' with | Some item' => Some ([item'], ditem') | None => Some ([], ditem') end
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], x_descriptors)) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)
H2: None = oitem''
H3: NewMachine sn = ditem''

proper_equivocator_descriptors IM final_descriptors s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
x_descriptors: equivocator_descriptors IM
IHtr: proper_equivocator_descriptors IM x_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
x': list (composite_transition_item IM)
oitem': option (composite_transition_item IM)
ditem': equivocator_descriptors IM
sn: state (IM (projT1 l))
Hfinali: final_descriptors (projT1 l) = NewMachine sn
Heqprojecti: Some (None, NewMachine sn) = Some (None, NewMachine sn)
Hproject_x: Some (None, equivocator_descriptors_update IM final_descriptors (projT1 l) (NewMachine sn)) = Some (oitem', ditem')
Heqproject_x: Some (x', x_descriptors) = match oitem' with | Some item' => Some ([item'], ditem') | None => Some ([], ditem') end
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], x_descriptors)) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)

proper_equivocator_descriptors IM final_descriptors s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
x_descriptors: equivocator_descriptors IM
IHtr: proper_equivocator_descriptors IM x_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
x': list (composite_transition_item IM)
oitem': option (composite_transition_item IM)
ditem': equivocator_descriptors IM
sn: state (IM (projT1 l))
Hfinali: final_descriptors (projT1 l) = NewMachine sn
Hproject_x: Some (None, equivocator_descriptors_update IM final_descriptors (projT1 l) (NewMachine sn)) = Some (oitem', ditem')
Heqproject_x: Some (x', x_descriptors) = match oitem' with | Some item' => Some ([item'], ditem') | None => Some ([], ditem') end
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], x_descriptors)) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)

proper_equivocator_descriptors IM final_descriptors s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
x_descriptors: equivocator_descriptors IM
IHtr: proper_equivocator_descriptors IM x_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
x': list (composite_transition_item IM)
oitem': option (composite_transition_item IM)
ditem': equivocator_descriptors IM
sn: state (IM (projT1 l))
Hfinali: final_descriptors (projT1 l) = NewMachine sn
Hproject_x: Some (None, equivocator_descriptors_update IM final_descriptors (projT1 l) (NewMachine sn)) = Some (oitem', ditem')
Heqproject_x: Some (x', x_descriptors) = match oitem' with | Some item' => Some ([item'], ditem') | None => Some ([], ditem') end
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], x_descriptors)) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)
H2: None = oitem'
H3: equivocator_descriptors_update IM final_descriptors (projT1 l) (NewMachine sn) = ditem'

proper_equivocator_descriptors IM final_descriptors s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
x_descriptors: equivocator_descriptors IM
IHtr: proper_equivocator_descriptors IM x_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
x': list (composite_transition_item IM)
sn: state (IM (projT1 l))
Hfinali: final_descriptors (projT1 l) = NewMachine sn
Heqproject_x: Some (x', x_descriptors) = Some ([], equivocator_descriptors_update IM final_descriptors (projT1 l) (NewMachine sn))
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], x_descriptors)) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)

proper_equivocator_descriptors IM final_descriptors s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
x_descriptors: equivocator_descriptors IM
IHtr: proper_equivocator_descriptors IM x_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
x': list (composite_transition_item IM)
sn: state (IM (projT1 l))
Hfinali: final_descriptors (projT1 l) = NewMachine sn
Heqproject_x: Some (x', x_descriptors) = Some ([], equivocator_descriptors_update IM final_descriptors (projT1 l) (NewMachine sn))
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], x_descriptors)) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)
H2: x' = []
H3: x_descriptors = equivocator_descriptors_update IM final_descriptors (projT1 l) (NewMachine sn)

proper_equivocator_descriptors IM final_descriptors s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
final_descriptors: equivocator_descriptors IM
sn: state (IM (projT1 l))
IHtr: proper_equivocator_descriptors IM (equivocator_descriptors_update IM final_descriptors (projT1 l) (NewMachine sn)) (finite_trace_last is tr)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
Hfinali: final_descriptors (projT1 l) = NewMachine sn
Heqproject_x: Some ([], equivocator_descriptors_update IM final_descriptors (projT1 l) (NewMachine sn)) = Some ([], equivocator_descriptors_update IM final_descriptors (projT1 l) (NewMachine sn))
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], equivocator_descriptors_update IM final_descriptors (projT1 l) (NewMachine sn))) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)

proper_equivocator_descriptors IM final_descriptors s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
final_descriptors: equivocator_descriptors IM
sn: state (IM (projT1 l))
IHtr: proper_equivocator_descriptors IM (equivocator_descriptors_update IM final_descriptors (projT1 l) (NewMachine sn)) (finite_trace_last is tr)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
Hfinali: final_descriptors (projT1 l) = NewMachine sn
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], equivocator_descriptors_update IM final_descriptors (projT1 l) (NewMachine sn))) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)

proper_equivocator_descriptors IM final_descriptors s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
final_descriptors: equivocator_descriptors IM
sn: state (IM (projT1 l))
IHtr: proper_equivocator_descriptors IM (equivocator_descriptors_update IM final_descriptors (projT1 l) (NewMachine sn)) (finite_trace_last is tr)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
Hfinali: final_descriptors (projT1 l) = NewMachine sn
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], equivocator_descriptors_update IM final_descriptors (projT1 l) (NewMachine sn))) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)
e: index

proper_descriptor (IM e) (final_descriptors e) (s e)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
final_descriptors: equivocator_descriptors IM
sn: state (IM (projT1 l))
e: index
IHtr: proper_descriptor (IM e) (equivocator_descriptors_update IM final_descriptors (projT1 l) (NewMachine sn) e) (finite_trace_last is tr e)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
Hfinali: final_descriptors (projT1 l) = NewMachine sn
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], equivocator_descriptors_update IM final_descriptors (projT1 l) (NewMachine sn))) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)

proper_descriptor (IM e) (final_descriptors e) (s e)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
final_descriptors: equivocator_descriptors IM
sn: state (IM (projT1 l))
e: index
IHtr: proper_descriptor (IM e) (equivocator_descriptors_update IM final_descriptors (projT1 l) (NewMachine sn) e) (finite_trace_last is tr e)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
Hfinali: final_descriptors (projT1 l) = NewMachine sn
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], equivocator_descriptors_update IM final_descriptors (projT1 l) (NewMachine sn))) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)
e0: e = projT1 l

proper_descriptor (IM e) (final_descriptors e) (s e)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
final_descriptors: equivocator_descriptors IM
sn: state (IM (projT1 l))
e: index
IHtr: proper_descriptor (IM e) (equivocator_descriptors_update IM final_descriptors (projT1 l) (NewMachine sn) e) (finite_trace_last is tr e)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
Hfinali: final_descriptors (projT1 l) = NewMachine sn
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], equivocator_descriptors_update IM final_descriptors (projT1 l) (NewMachine sn))) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)
n: e ≠ projT1 l
proper_descriptor (IM e) (final_descriptors e) (s e)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
final_descriptors: equivocator_descriptors IM
sn: state (IM (projT1 l))
e: index
IHtr: proper_descriptor (IM e) (equivocator_descriptors_update IM final_descriptors (projT1 l) (NewMachine sn) e) (finite_trace_last is tr e)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
Hfinali: final_descriptors (projT1 l) = NewMachine sn
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], equivocator_descriptors_update IM final_descriptors (projT1 l) (NewMachine sn))) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)
e0: e = projT1 l

proper_descriptor (IM e) (final_descriptors e) (s e)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
final_descriptors: equivocator_descriptors IM
sn: state (IM (projT1 l))
IHtr: proper_descriptor (IM (projT1 l)) (equivocator_descriptors_update IM final_descriptors (projT1 l) (NewMachine sn) (projT1 l)) (finite_trace_last is tr (projT1 l))
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
Hfinali: final_descriptors (projT1 l) = NewMachine sn
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], equivocator_descriptors_update IM final_descriptors (projT1 l) (NewMachine sn))) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)

proper_descriptor (IM (projT1 l)) (final_descriptors (projT1 l)) (s (projT1 l))
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
final_descriptors: equivocator_descriptors IM
sn: state (IM (projT1 l))
IHtr: proper_descriptor (IM (projT1 l)) (NewMachine sn) (finite_trace_last is tr (projT1 l))
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
Hfinali: final_descriptors (projT1 l) = NewMachine sn
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], equivocator_descriptors_update IM final_descriptors (projT1 l) (NewMachine sn))) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)

proper_descriptor (IM (projT1 l)) (final_descriptors (projT1 l)) (s (projT1 l))
by cbn; rewrite Hfinali.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
final_descriptors: equivocator_descriptors IM
sn: state (IM (projT1 l))
e: index
IHtr: proper_descriptor (IM e) (equivocator_descriptors_update IM final_descriptors (projT1 l) (NewMachine sn) e) (finite_trace_last is tr e)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
Hfinali: final_descriptors (projT1 l) = NewMachine sn
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], equivocator_descriptors_update IM final_descriptors (projT1 l) (NewMachine sn))) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)
n: e ≠ projT1 l

proper_descriptor (IM e) (final_descriptors e) (s e)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
final_descriptors: equivocator_descriptors IM
sn: state (IM (projT1 l))
e: index
IHtr: proper_descriptor (IM e) (final_descriptors e) (finite_trace_last is tr e)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
Hfinali: final_descriptors (projT1 l) = NewMachine sn
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], final_descriptors)) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)
n: e ≠ projT1 l

proper_descriptor (IM e) (final_descriptors e) (s e)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
final_descriptors: equivocator_descriptors IM
sn: state (IM (projT1 l))
e: index
IHtr: proper_descriptor (IM e) (final_descriptors e) (finite_trace_last is tr e)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
Hfinali: final_descriptors (projT1 l) = NewMachine sn
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], final_descriptors)) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Hv: input_valid (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom)
Ht: (let (i, li) := l in let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)
n: e ≠ projT1 l

proper_descriptor (IM e) (final_descriptors e) (s e)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
i: index
li: label (equivocator_IM IM i)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
final_descriptors: equivocator_descriptors IM
sn: state (IM (projT1 (existT i li)))
e: index
IHtr: proper_descriptor (IM e) (final_descriptors e) (finite_trace_last is tr e)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
Hfinali: final_descriptors (projT1 (existT i li)) = NewMachine sn
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], final_descriptors)) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Hv: input_valid (preloaded_with_all_messages_vlsm FreeE) (existT i li) (finite_trace_last is tr, iom)
Ht: (let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)
n: e ≠ projT1 (existT i li)

proper_descriptor (IM e) (final_descriptors e) (s e)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
i: index
li: label (equivocator_IM IM i)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
final_descriptors: equivocator_descriptors IM
sn: state (IM (projT1 (existT i li)))
e: index
IHtr: proper_descriptor (IM e) (final_descriptors e) (finite_trace_last is tr e)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
Hfinali: final_descriptors (projT1 (existT i li)) = NewMachine sn
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], final_descriptors)) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Hv: input_valid (preloaded_with_all_messages_vlsm FreeE) (existT i li) (finite_trace_last is tr, iom)
e0: equivocator_state (IM i)
o: option message
H1: equivocator_transition (IM i) li (finite_trace_last is tr i, iom) = (e0, o)
Ht: (state_update (equivocator_IM IM) (finite_trace_last is tr) i e0, o) = ( s, oom)
n: e ≠ projT1 (existT i li)

proper_descriptor (IM e) (final_descriptors e) (s e)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
i: index
li: label (equivocator_IM IM i)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
final_descriptors: equivocator_descriptors IM
sn: state (IM (projT1 (existT i li)))
e: index
IHtr: proper_descriptor (IM e) (final_descriptors e) (finite_trace_last is tr e)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
Hfinali: final_descriptors (projT1 (existT i li)) = NewMachine sn
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], final_descriptors)) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Hv: input_valid (preloaded_with_all_messages_vlsm FreeE) (existT i li) (finite_trace_last is tr, iom)
e0: equivocator_state (IM i)
o: option message
H1: equivocator_transition (IM i) li (finite_trace_last is tr i, iom) = (e0, o)
Ht: (state_update (equivocator_IM IM) (finite_trace_last is tr) i e0, o) = ( s, oom)
n: e ≠ projT1 (existT i li)
H3: state_update (equivocator_IM IM) (finite_trace_last is tr) i e0 = s
H4: o = oom

proper_descriptor (IM e) (final_descriptors e) (state_update (equivocator_IM IM) (finite_trace_last is tr) i e0 e)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
iom, oom: option message
i: index
li: label (equivocator_IM IM i)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
final_descriptors: equivocator_descriptors IM
sn: state (IM (projT1 (existT i li)))
e: index
IHtr: proper_descriptor (IM e) (final_descriptors e) (finite_trace_last is tr e)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
Hfinali: final_descriptors (projT1 (existT i li)) = NewMachine sn
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], final_descriptors)) tr = Some (trX', initial_descriptors)
e0: equivocator_state (IM i)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (state_update (equivocator_IM IM) (finite_trace_last is tr) i e0) []
Hv: input_valid (preloaded_with_all_messages_vlsm FreeE) (existT i li) (finite_trace_last is tr, iom)
Ht: (state_update (equivocator_IM IM) (finite_trace_last is tr) i e0, oom) = (state_update (equivocator_IM IM) (finite_trace_last is tr) i e0, oom)
H1: equivocator_transition (IM i) li (finite_trace_last is tr i, iom) = (e0, oom)
n: e ≠ projT1 (existT i li)

proper_descriptor (IM e) (final_descriptors e) (state_update (equivocator_IM IM) (finite_trace_last is tr) i e0 e)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
iom, oom: option message
i: index
li: label (equivocator_IM IM i)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
final_descriptors: equivocator_descriptors IM
sn: state (IM (projT1 (existT i li)))
e: index
IHtr: proper_descriptor (IM e) (final_descriptors e) (finite_trace_last is tr e)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
Hfinali: final_descriptors (projT1 (existT i li)) = NewMachine sn
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], final_descriptors)) tr = Some (trX', initial_descriptors)
e0: equivocator_state (IM i)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (state_update (equivocator_IM IM) (finite_trace_last is tr) i e0) []
Hv: input_valid (preloaded_with_all_messages_vlsm FreeE) (existT i li) (finite_trace_last is tr, iom)
Ht: (state_update (equivocator_IM IM) (finite_trace_last is tr) i e0, oom) = (state_update (equivocator_IM IM) (finite_trace_last is tr) i e0, oom)
H1: equivocator_transition (IM i) li (finite_trace_last is tr i, iom) = (e0, oom)
n: e ≠ i

proper_descriptor (IM e) (final_descriptors e) (state_update (equivocator_IM IM) (finite_trace_last is tr) i e0 e)
by state_update_simpl.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
x_descriptors: equivocator_descriptors IM
IHtr: proper_equivocator_descriptors IM x_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
x': list (composite_transition_item IM)
oitem': option (composite_transition_item IM)
ditem': equivocator_descriptors IM
oitem'': option transition_item
ditem'': MachineDescriptor (IM (projT1 l))
j: nat
Hfinali: final_descriptors (projT1 l) = Existing j
Heqprojecti: match equivocator_state_project (s (projT1 l)) j with | Some sj => match projT2 l with | Spawn sn => if decide (j = equivocator_state_last (s (projT1 l))) then Some (None, NewMachine sn) else Some (None, Existing j) | ContinueWith i lx => if decide (i = j) then Some (Some {| l := lx; input := iom; destination := sj; output := oom |}, Existing i) else Some (None, Existing j) | ForkWith i lx => if decide (j = equivocator_state_last (s (projT1 l))) then Some (Some {| l := lx; input := iom; destination := sj; output := oom |}, Existing i) else Some (None, Existing j) end | None => None end = Some (oitem'', ditem'')
Hproject_x: match oitem'' with | Some item' => Some (Some {| l := existT (projT1 l) (VLSM.l item'); input := iom; destination := equivocators_state_project IM final_descriptors s; output := oom |}, equivocator_descriptors_update IM final_descriptors (projT1 l) ditem'') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 l) ditem'') end = Some (oitem', ditem')
Heqproject_x: Some (x', x_descriptors) = match oitem' with | Some item' => Some ([item'], ditem') | None => Some ([], ditem') end
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], x_descriptors)) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)

proper_equivocator_descriptors IM final_descriptors s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
i: index
li: label (equivocator_IM IM i)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
x_descriptors: equivocator_descriptors IM
IHtr: proper_equivocator_descriptors IM x_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
x': list (composite_transition_item IM)
oitem': option (composite_transition_item IM)
ditem': equivocator_descriptors IM
oitem'': option transition_item
ditem'': MachineDescriptor (IM (projT1 (existT i li)))
j: nat
Hfinali: final_descriptors (projT1 (existT i li)) = Existing j
Heqprojecti: match equivocator_state_project (s (projT1 (existT i li))) j with | Some sj => match projT2 (existT i li) with | Spawn sn => if decide (j = equivocator_state_last (s (projT1 (existT i li)))) then Some (None, NewMachine sn) else Some (None, Existing j) | ContinueWith i0 lx => if decide (i0 = j) then Some (Some {| l := lx; input := iom; destination := sj; output := oom |}, Existing i0) else Some (None, Existing j) | ForkWith i0 lx => if decide (j = equivocator_state_last (s (projT1 (existT i li)))) then Some (Some {| l := lx; input := iom; destination := sj; output := oom |}, Existing i0) else Some (None, Existing j) end | None => None end = Some (oitem'', ditem'')
Hproject_x: match oitem'' with | Some item' => Some (Some {| l := existT (projT1 (existT i li)) (l item'); input := iom; destination := equivocators_state_project IM final_descriptors s; output := oom |}, equivocator_descriptors_update IM final_descriptors (projT1 (existT i li)) ditem'') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (existT i li)) ditem'') end = Some (oitem', ditem')
Heqproject_x: Some (x', x_descriptors) = match oitem' with | Some item' => Some ([item'], ditem') | None => Some ([], ditem') end
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], x_descriptors)) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) (existT i li) (finite_trace_last is tr, iom) (s, oom)

proper_equivocator_descriptors IM final_descriptors s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
i: index
li: label (equivocator_IM IM i)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
x_descriptors: equivocator_descriptors IM
IHtr: proper_equivocator_descriptors IM x_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
x': list (composite_transition_item IM)
oitem': option (composite_transition_item IM)
ditem': equivocator_descriptors IM
oitem'': option transition_item
ditem'': MachineDescriptor (IM (projT1 (existT i li)))
j: nat
Hfinali: final_descriptors (projT1 (existT i li)) = Existing j
Heqprojecti: match equivocator_state_project (s i) j with | Some sj => match li with | Spawn sn => if decide (j = equivocator_state_last (s i)) then Some (None, NewMachine sn) else Some (None, Existing j) | ContinueWith i0 lx => if decide (i0 = j) then Some (Some {| l := lx; input := iom; destination := sj; output := oom |}, Existing i0) else Some (None, Existing j) | ForkWith i0 lx => if decide (j = equivocator_state_last (s i)) then Some (Some {| l := lx; input := iom; destination := sj; output := oom |}, Existing i0) else Some (None, Existing j) end | None => None end = Some (oitem'', ditem'')
Hproject_x: match oitem'' with | Some item' => Some (Some {| l := existT (projT1 (existT i li)) (l item'); input := iom; destination := equivocators_state_project IM final_descriptors s; output := oom |}, equivocator_descriptors_update IM final_descriptors (projT1 (existT i li)) ditem'') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (existT i li)) ditem'') end = Some (oitem', ditem')
Heqproject_x: Some (x', x_descriptors) = match oitem' with | Some item' => Some ([item'], ditem') | None => Some ([], ditem') end
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], x_descriptors)) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) (existT i li) (finite_trace_last is tr, iom) (s, oom)

proper_equivocator_descriptors IM final_descriptors s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
i: index
li: label (equivocator_IM IM i)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
x_descriptors: equivocator_descriptors IM
IHtr: proper_equivocator_descriptors IM x_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
x': list (composite_transition_item IM)
oitem': option (composite_transition_item IM)
ditem': equivocator_descriptors IM
oitem'': option transition_item
ditem'': MachineDescriptor (IM (projT1 (existT i li)))
j: nat
Hfinali: final_descriptors (projT1 (existT i li)) = Existing j
Heqprojecti: match equivocator_state_project (s i) j with | Some sj => match li with | Spawn sn => if decide (j = equivocator_state_last (s i)) then Some (None, NewMachine sn) else Some (None, Existing j) | ContinueWith i0 lx => if decide (i0 = j) then Some (Some {| l := lx; input := iom; destination := sj; output := oom |}, Existing i0) else Some (None, Existing j) | ForkWith i0 lx => if decide (j = equivocator_state_last (s i)) then Some (Some {| l := lx; input := iom; destination := sj; output := oom |}, Existing i0) else Some (None, Existing j) end | None => None end = Some (oitem'', ditem'')
Hproject_x: match oitem'' with | Some item' => Some (Some {| l := existT (projT1 (existT i li)) (l item'); input := iom; destination := equivocators_state_project IM final_descriptors s; output := oom |}, equivocator_descriptors_update IM final_descriptors (projT1 (existT i li)) ditem'') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (existT i li)) ditem'') end = Some (oitem', ditem')
Heqproject_x: Some (x', x_descriptors) = match oitem' with | Some item' => Some ([item'], ditem') | None => Some ([], ditem') end
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], x_descriptors)) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Hv: input_valid (preloaded_with_all_messages_vlsm FreeE) (existT i li) (finite_trace_last is tr, iom)
Ht: transition (existT i li) (finite_trace_last is tr, iom) = ( s, oom)

proper_equivocator_descriptors IM final_descriptors s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
i: index
li: label (equivocator_IM IM i)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
x_descriptors: equivocator_descriptors IM
IHtr: proper_equivocator_descriptors IM x_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
x': list (composite_transition_item IM)
oitem': option (composite_transition_item IM)
ditem': equivocator_descriptors IM
oitem'': option transition_item
ditem'': MachineDescriptor (IM (projT1 (existT i li)))
j: nat
Hfinali: final_descriptors (projT1 (existT i li)) = Existing j
Heqprojecti: match equivocator_state_project (s i) j with | Some sj => match li with | Spawn sn => if decide (j = equivocator_state_last (s i)) then Some (None, NewMachine sn) else Some (None, Existing j) | ContinueWith i0 lx => if decide (i0 = j) then Some (Some {| l := lx; input := iom; destination := sj; output := oom |}, Existing i0) else Some (None, Existing j) | ForkWith i0 lx => if decide (j = equivocator_state_last (s i)) then Some (Some {| l := lx; input := iom; destination := sj; output := oom |}, Existing i0) else Some (None, Existing j) end | None => None end = Some (oitem'', ditem'')
Hproject_x: match oitem'' with | Some item' => Some (Some {| l := existT (projT1 (existT i li)) (l item'); input := iom; destination := equivocators_state_project IM final_descriptors s; output := oom |}, equivocator_descriptors_update IM final_descriptors (projT1 (existT i li)) ditem'') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (existT i li)) ditem'') end = Some (oitem', ditem')
Heqproject_x: Some (x', x_descriptors) = match oitem' with | Some item' => Some ([item'], ditem') | None => Some ([], ditem') end
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], x_descriptors)) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Hv: input_valid (preloaded_with_all_messages_vlsm FreeE) (existT i li) (finite_trace_last is tr, iom)
Ht: (let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)

proper_equivocator_descriptors IM final_descriptors s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
i: index
li: label (equivocator_IM IM i)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
x_descriptors: equivocator_descriptors IM
IHtr: proper_equivocator_descriptors IM x_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
x': list (composite_transition_item IM)
oitem': option (composite_transition_item IM)
ditem': equivocator_descriptors IM
oitem'': option transition_item
ditem'': MachineDescriptor (IM (projT1 (existT i li)))
j: nat
Hfinali: final_descriptors (projT1 (existT i li)) = Existing j
Heqprojecti: match equivocator_state_project (s i) j with | Some sj => match li with | Spawn sn => if decide (j = equivocator_state_last (s i)) then Some (None, NewMachine sn) else Some (None, Existing j) | ContinueWith i0 lx => if decide (i0 = j) then Some (Some {| l := lx; input := iom; destination := sj; output := oom |}, Existing i0) else Some (None, Existing j) | ForkWith i0 lx => if decide (j = equivocator_state_last (s i)) then Some (Some {| l := lx; input := iom; destination := sj; output := oom |}, Existing i0) else Some (None, Existing j) end | None => None end = Some (oitem'', ditem'')
Hproject_x: match oitem'' with | Some item' => Some (Some {| l := existT (projT1 (existT i li)) (l item'); input := iom; destination := equivocators_state_project IM final_descriptors s; output := oom |}, equivocator_descriptors_update IM final_descriptors (projT1 (existT i li)) ditem'') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (existT i li)) ditem'') end = Some (oitem', ditem')
Heqproject_x: Some (x', x_descriptors) = match oitem' with | Some item' => Some ([item'], ditem') | None => Some ([], ditem') end
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], x_descriptors)) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Hv: input_valid (preloaded_with_all_messages_vlsm FreeE) (existT i li) (finite_trace_last is tr, iom)
si': equivocator_state (IM i)
om': option message
Ht': equivocator_transition (IM i) li (finite_trace_last is tr i, iom) = (si', om')
Ht: (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om') = (s, oom)

proper_equivocator_descriptors IM final_descriptors s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
i: index
li: label (equivocator_IM IM i)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
x_descriptors: equivocator_descriptors IM
IHtr: proper_equivocator_descriptors IM x_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
x': list (composite_transition_item IM)
oitem': option (composite_transition_item IM)
ditem': equivocator_descriptors IM
oitem'': option transition_item
ditem'': MachineDescriptor (IM (projT1 (existT i li)))
j: nat
Hfinali: final_descriptors (projT1 (existT i li)) = Existing j
Heqprojecti: match equivocator_state_project (s i) j with | Some sj => match li with | Spawn sn => if decide (j = equivocator_state_last (s i)) then Some (None, NewMachine sn) else Some (None, Existing j) | ContinueWith i0 lx => if decide (i0 = j) then Some (Some {| l := lx; input := iom; destination := sj; output := oom |}, Existing i0) else Some (None, Existing j) | ForkWith i0 lx => if decide (j = equivocator_state_last (s i)) then Some (Some {| l := lx; input := iom; destination := sj; output := oom |}, Existing i0) else Some (None, Existing j) end | None => None end = Some (oitem'', ditem'')
Hproject_x: match oitem'' with | Some item' => Some (Some {| l := existT (projT1 (existT i li)) (l item'); input := iom; destination := equivocators_state_project IM final_descriptors s; output := oom |}, equivocator_descriptors_update IM final_descriptors (projT1 (existT i li)) ditem'') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (existT i li)) ditem'') end = Some (oitem', ditem')
Heqproject_x: Some (x', x_descriptors) = match oitem' with | Some item' => Some ([item'], ditem') | None => Some ([], ditem') end
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], x_descriptors)) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Hv: input_valid (preloaded_with_all_messages_vlsm FreeE) (existT i li) (finite_trace_last is tr, iom)
si': equivocator_state (IM i)
om': option message
Ht': equivocator_transition (IM i) li (finite_trace_last is tr i, iom) = (si', om')
Ht: (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om') = (s, oom)
H2: state_update (equivocator_IM IM) (finite_trace_last is tr) i si' = s
H3: om' = oom

proper_equivocator_descriptors IM final_descriptors (state_update (equivocator_IM IM) (finite_trace_last is tr) i si')
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
i: index
li: label (equivocator_IM IM i)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
x_descriptors: equivocator_descriptors IM
IHtr: proper_equivocator_descriptors IM x_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
x': list (composite_transition_item IM)
oitem': option (composite_transition_item IM)
ditem': equivocator_descriptors IM
oitem'': option transition_item
ditem'': MachineDescriptor (IM (projT1 (existT i li)))
j: nat
Hfinali: final_descriptors (projT1 (existT i li)) = Existing j
Heqprojecti: match equivocator_state_project (s i) j with | Some sj => match li with | Spawn sn => if decide (j = equivocator_state_last (s i)) then Some (None, NewMachine sn) else Some (None, Existing j) | ContinueWith i0 lx => if decide (i0 = j) then Some (Some {| l := lx; input := iom; destination := sj; output := oom |}, Existing i0) else Some (None, Existing j) | ForkWith i0 lx => if decide (j = equivocator_state_last (s i)) then Some (Some {| l := lx; input := iom; destination := sj; output := oom |}, Existing i0) else Some (None, Existing j) end | None => None end = Some (oitem'', ditem'')
Hproject_x: match oitem'' with | Some item' => Some (Some {| l := existT (projT1 (existT i li)) (l item'); input := iom; destination := equivocators_state_project IM final_descriptors s; output := oom |}, equivocator_descriptors_update IM final_descriptors (projT1 (existT i li)) ditem'') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (existT i li)) ditem'') end = Some (oitem', ditem')
Heqproject_x: Some (x', x_descriptors) = match oitem' with | Some item' => Some ([item'], ditem') | None => Some ([], ditem') end
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], x_descriptors)) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Hv: input_valid (preloaded_with_all_messages_vlsm FreeE) (existT i li) (finite_trace_last is tr, iom)
si': equivocator_state (IM i)
Ht: (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', oom) = (s, oom)
Ht': equivocator_transition (IM i) li (finite_trace_last is tr i, iom) = (si', oom)
H2: state_update (equivocator_IM IM) (finite_trace_last is tr) i si' = s

proper_equivocator_descriptors IM final_descriptors (state_update (equivocator_IM IM) (finite_trace_last is tr) i si')
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
i: index
li: label (equivocator_IM IM i)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
x_descriptors: equivocator_descriptors IM
IHtr: proper_equivocator_descriptors IM x_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
x': list (composite_transition_item IM)
oitem': option (composite_transition_item IM)
ditem': equivocator_descriptors IM
oitem'': option transition_item
ditem'': MachineDescriptor (IM (projT1 (existT i li)))
j: nat
Hfinali: final_descriptors (projT1 (existT i li)) = Existing j
Heqprojecti: match equivocator_state_project (s i) j with | Some sj => match li with | Spawn sn => if decide (j = equivocator_state_last (s i)) then Some (None, NewMachine sn) else Some (None, Existing j) | ContinueWith i0 lx => if decide (i0 = j) then Some (Some {| l := lx; input := iom; destination := sj; output := oom |}, Existing i0) else Some (None, Existing j) | ForkWith i0 lx => if decide (j = equivocator_state_last (s i)) then Some (Some {| l := lx; input := iom; destination := sj; output := oom |}, Existing i0) else Some (None, Existing j) end | None => None end = Some (oitem'', ditem'')
Hproject_x: match oitem'' with | Some item' => Some (Some {| l := existT (projT1 (existT i li)) (l item'); input := iom; destination := equivocators_state_project IM final_descriptors s; output := oom |}, equivocator_descriptors_update IM final_descriptors (projT1 (existT i li)) ditem'') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (existT i li)) ditem'') end = Some (oitem', ditem')
Heqproject_x: Some (x', x_descriptors) = match oitem' with | Some item' => Some ([item'], ditem') | None => Some ([], ditem') end
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], x_descriptors)) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Hv: input_valid (preloaded_with_all_messages_vlsm FreeE) (existT i li) (finite_trace_last is tr, iom)
si': equivocator_state (IM i)
Ht': equivocator_transition (IM i) li (finite_trace_last is tr i, iom) = (si', oom)
H2: state_update (equivocator_IM IM) (finite_trace_last is tr) i si' = s

proper_equivocator_descriptors IM final_descriptors (state_update (equivocator_IM IM) (finite_trace_last is tr) i si')
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
i: index
li: label (equivocator_IM IM i)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
x_descriptors: equivocator_descriptors IM
IHtr: proper_equivocator_descriptors IM x_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
x': list (composite_transition_item IM)
oitem': option (composite_transition_item IM)
ditem': equivocator_descriptors IM
oitem'': option transition_item
ditem'': MachineDescriptor (IM (projT1 (existT i li)))
j: nat
Hfinali: final_descriptors (projT1 (existT i li)) = Existing j
si': equivocator_state (IM i)
Heqprojecti: match equivocator_state_project si' j with | Some sj => match li with | Spawn sn => if decide (j = equivocator_state_last si') then Some (None, NewMachine sn) else Some (None, Existing j) | ContinueWith i0 lx => if decide (i0 = j) then Some (Some {| l := lx; input := iom; destination := sj; output := oom |}, Existing i0) else Some (None, Existing j) | ForkWith i0 lx => if decide (j = equivocator_state_last si') then Some (Some {| l := lx; input := iom; destination := sj; output := oom |}, Existing i0) else Some (None, Existing j) end | None => None end = Some (oitem'', ditem'')
Hproject_x: match oitem'' with | Some item' => Some (Some {| l := existT (projT1 (existT i li)) (l item'); input := iom; destination := equivocators_state_project IM final_descriptors s; output := oom |}, equivocator_descriptors_update IM final_descriptors (projT1 (existT i li)) ditem'') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (existT i li)) ditem'') end = Some (oitem', ditem')
Heqproject_x: Some (x', x_descriptors) = match oitem' with | Some item' => Some ([item'], ditem') | None => Some ([], ditem') end
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], x_descriptors)) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Hv: input_valid (preloaded_with_all_messages_vlsm FreeE) (existT i li) (finite_trace_last is tr, iom)
Ht': equivocator_transition (IM i) li (finite_trace_last is tr i, iom) = (si', oom)
H2: state_update (equivocator_IM IM) (finite_trace_last is tr) i si' = s

proper_equivocator_descriptors IM final_descriptors (state_update (equivocator_IM IM) (finite_trace_last is tr) i si')
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
i: index
li: label (equivocator_IM IM i)
initial_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM initial_descriptors is
x_descriptors: equivocator_descriptors IM
IHtr: proper_equivocator_descriptors IM x_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) is tr
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
x': list (composite_transition_item IM)
oitem': option (composite_transition_item IM)
ditem': equivocator_descriptors IM
oitem'': option transition_item
ditem'': MachineDescriptor (IM (projT1 (existT i li)))
j: nat
Hfinali: final_descriptors (projT1 (existT i li)) = Existing j
si': equivocator_state (IM i)
si'j: state (IM i)
Hj: equivocator_state_project si' j = Some si'j
Heqprojecti: match li with | Spawn sn => if decide (j = equivocator_state_last si') then Some (None, NewMachine sn) else Some (None, Existing j) | ContinueWith i0 lx => if decide (i0 = j) then Some (Some {| l := lx; input := iom; destination := si'j; output := oom |}, Existing i0) else Some (None, Existing j) | ForkWith i0 lx => if decide (j = equivocator_state_last si') then Some (Some {| l := lx; input := iom; destination := si'j; output := oom |}, Existing i0) else Some (None, Existing j) end = Some (oitem'', ditem'')
Hproject_x: match oitem'' with | Some item' => Some (Some {| l := existT (projT1 (existT i li)) (l item'); input := iom; destination := equivocators_state_project IM final_descriptors s; output := oom |}, equivocator_descriptors_update IM final_descriptors (projT1 (existT i li)) ditem'') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (existT i li)) ditem'') end = Some (oitem', ditem')
Heqproject_x: Some (x', x_descriptors) = match oitem' with | Some item' => Some ([item'], ditem') | None => Some ([], ditem') end
trX': list (composite_transition_item IM)
Hproject_x': foldr equivocators_trace_project_folder (Some ([], x_descriptors)) tr = Some (trX', initial_descriptors)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s []
Hv: input_valid (preloaded_with_all_messages_vlsm FreeE) (existT i li) (finite_trace_last is tr, iom)
Ht': equivocator_transition (IM i) li (finite_trace_last is tr i, iom) = (si', oom)
H2: state_update (equivocator_IM IM) (finite_trace_last is tr) i si' = s

proper_equivocator_descriptors IM final_descriptors (state_update (equivocator_IM IM) (finite_trace_last is tr) i si')
by destruct li as [ndi | idi li | idi li] ; destruct (decide _) ; inversion Heqprojecti; subst; clear Heqprojecti ; inversion Hproject_x; subst; clear Hproject_x ; inversion Heqproject_x; subst; clear Heqproject_x ; intro eqv; specialize (IHtr eqv) ; (destruct (decide (i = eqv)); subst; state_update_simpl ; cbn in *; [rewrite ?Hfinali; eexists |]; done). Qed.
A corollary of preloaded_equivocators_valid_trace_from_project selecting only the proper_equivocator_descriptors property.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_state:= finite_trace_last is tr: state (composite_type (equivocator_IM IM))
Htr: finite_constrained_trace_from FreeE is tr
final_descriptors: equivocator_descriptors IM
trX: list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Hproject: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)
Hproper: proper_equivocator_descriptors IM final_descriptors final_state

proper_equivocator_descriptors IM initial_descriptors is
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_state:= finite_trace_last is tr: state (composite_type (equivocator_IM IM))
Htr: finite_constrained_trace_from FreeE is tr
final_descriptors: equivocator_descriptors IM
trX: list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Hproject: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)
Hproper: proper_equivocator_descriptors IM final_descriptors final_state

proper_equivocator_descriptors IM initial_descriptors is
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_state:= finite_trace_last is tr: state (composite_type (equivocator_IM IM))
Htr: finite_constrained_trace_from FreeE is tr
final_descriptors: equivocator_descriptors IM
trX: list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Hproject: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)
Hproper: proper_equivocator_descriptors IM final_descriptors final_state
_trX: list (composite_transition_item IM)
_initial_descriptors: equivocator_descriptors IM
_Hproject: equivocators_trace_project final_descriptors tr = Some (_trX, _initial_descriptors)
Hiproper: proper_equivocator_descriptors IM _initial_descriptors is

proper_equivocator_descriptors IM initial_descriptors is
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_state:= finite_trace_last is tr: state (composite_type (equivocator_IM IM))
Htr: finite_constrained_trace_from FreeE is tr
final_descriptors: equivocator_descriptors IM
trX: list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Hproject: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)
Hproper: proper_equivocator_descriptors IM final_descriptors final_state
_trX: list (composite_transition_item IM)
_initial_descriptors: equivocator_descriptors IM
_Hproject: Some (trX, initial_descriptors) = Some (_trX, _initial_descriptors)
Hiproper: proper_equivocator_descriptors IM _initial_descriptors is

proper_equivocator_descriptors IM initial_descriptors is
by inversion _Hproject; subst. Qed.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
Hbbs: Exists (field_selector output m) tr

(final_descriptors initial_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) ∧ equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ Exists (field_selector output m) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
Hbbs: Exists (field_selector output m) tr

(final_descriptors initial_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) ∧ equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ Exists (field_selector output m) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
Hbbs: x : transition_item, x ∈ tr ∧ field_selector output m x

(final_descriptors initial_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) ∧ equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ Exists (field_selector output m) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
item: transition_item
Hitem: item ∈ tr
Hm: field_selector output m item

(final_descriptors initial_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) ∧ equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ Exists (field_selector output m) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
item: transition_item
Hitem: item ∈ tr
Hm: output item = Some m

(final_descriptors initial_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) ∧ equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ Exists (field_selector output m) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
item: transition_item
Hitem: {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} ∈ VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) (projT1 (l item))) tr
Hm: output item = Some m

(final_descriptors initial_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) ∧ equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ Exists (field_selector output m) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
l: label (composite_type (equivocator_IM IM))
input: option message
destination: state (composite_type (equivocator_IM IM))
output: option message
Hitem: {| l := projT2 (VLSM.l {| l := l; input := input; destination := destination; output := output |}); input := VLSM.input {| l := l; input := input; destination := destination; output := output |}; destination := VLSM.destination {| l := l; input := input; destination := destination; output := output |} (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |})); output := VLSM.output {| l := l; input := input; destination := destination; output := output |} |} ∈ VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) (projT1 (VLSM.l {| l := l; input := input; destination := destination; output := output |}))) tr
Hm: VLSM.output {| l := l; input := input; destination := destination; output := output |} = Some m

(final_descriptors initial_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) ∧ equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ Exists (field_selector VLSM.output m) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
l: composite_label (equivocator_IM IM)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hitem: {| l := projT2 l; input := input; destination := destination (projT1 l); output := output |} ∈ VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) (projT1 l)) tr
Hm: output = Some m

(final_descriptors initial_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) ∧ equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ Exists (field_selector VLSM.output m) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
i: index
li: label (equivocator_IM IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hitem: {| l := projT2 (existT i li); input := input; destination := destination (projT1 (existT i li)); output := output |} ∈ VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) (projT1 (existT i li))) tr
Hm: output = Some m

(final_descriptors initial_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) ∧ equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ Exists (field_selector VLSM.output m) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hitem: {| l := li; input := input; destination := destination i; output := output |} ∈ VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr
Hm: output = Some m

(final_descriptors initial_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) ∧ equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ Exists (field_selector VLSM.output m) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hitem: {| l := li; input := input; destination := destination i; output := output |} ∈ VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr
Hm: output = Some m
Htri: finite_constrained_trace_from (equivocator_IM IM i) (is i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr)

(final_descriptors initial_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) ∧ equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ Exists (field_selector VLSM.output m) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hitem: {| l := li; input := input; destination := destination i; output := output |} ∈ VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr
Hm: output = Some m
Htri: finite_constrained_trace_from (equivocator_IM IM i) (is i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr)
Hex: Exists (field_selector VLSM.output m) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr) → (j i0 : MachineDescriptor (IM i)) (_ : proper_descriptor (IM i) i0 (is i)) (_ : existing_descriptor (IM i) j (finite_trace_last (is i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr))) (trX : list transition_item) (_ : equivocator_vlsm_trace_project (IM i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr) j = Some (trX, i0)), Exists (field_selector VLSM.output m) trX

(final_descriptors initial_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) ∧ equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ Exists (field_selector VLSM.output m) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hitem: {| l := li; input := input; destination := destination i; output := output |} ∈ VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr
Hm: output = Some m
Htri: finite_constrained_trace_from (equivocator_IM IM i) (is i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr)
Hex: (j i0 : MachineDescriptor (IM i)) (_ : proper_descriptor (IM i) i0 (is i)) (_ : existing_descriptor (IM i) j (finite_trace_last (is i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr))) (trX : list transition_item) (_ : equivocator_vlsm_trace_project (IM i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr) j = Some (trX, i0)), Exists (field_selector VLSM.output m) trX

(final_descriptors initial_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) ∧ equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ Exists (field_selector VLSM.output m) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hitem: {| l := li; input := input; destination := destination i; output := output |} ∈ VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr
Hm: output = Some m
Htri: finite_constrained_trace_from (equivocator_IM IM i) (is i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr)
eqv_final, eqv_init: MachineDescriptor (IM i)
Heqv_init: proper_descriptor (IM i) eqv_init (is i)
Heqv_final: existing_descriptor (IM i) eqv_final (finite_trace_last (is i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr))
trXi: list transition_item
Hprojecti: equivocator_vlsm_trace_project (IM i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr) eqv_final = Some (trXi, eqv_init)
Hex: Exists (field_selector VLSM.output m) trXi

(final_descriptors initial_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) ∧ equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ Exists (field_selector VLSM.output m) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hitem: {| l := li; input := input; destination := destination i; output := output |} ∈ VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr
Hm: output = Some m
Htri: finite_constrained_trace_from (equivocator_IM IM i) (is i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr)
eqv_final, eqv_init: MachineDescriptor (IM i)
Heqv_init: proper_descriptor (IM i) eqv_init (is i)
Heqv_final: existing_descriptor (IM i) eqv_final (finite_trace_last (is i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr))
trXi: list transition_item
Hprojecti: equivocator_vlsm_trace_project (IM i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr) eqv_final = Some (trXi, eqv_init)
Hex: Exists (field_selector VLSM.output m) trXi
Hlst: (λ s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))), s i) (finite_trace_last is tr) = finite_trace_last ((λ s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))), s i) is) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr)

(final_descriptors initial_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) ∧ equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ Exists (field_selector VLSM.output m) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hitem: {| l := li; input := input; destination := destination i; output := output |} ∈ VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr
Hm: output = Some m
Htri: finite_constrained_trace_from (equivocator_IM IM i) (is i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr)
eqv_final, eqv_init: MachineDescriptor (IM i)
Heqv_init: proper_descriptor (IM i) eqv_init (is i)
Heqv_final: existing_descriptor (IM i) eqv_final (finite_trace_last (is i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr))
trXi: list transition_item
Hprojecti: equivocator_vlsm_trace_project (IM i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr) eqv_final = Some (trXi, eqv_init)
Hex: Exists (field_selector VLSM.output m) trXi
Hlst: finite_trace_last is tr i = finite_trace_last (is i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr)

(final_descriptors initial_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) ∧ equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ Exists (field_selector VLSM.output m) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hitem: {| l := li; input := input; destination := destination i; output := output |} ∈ VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr
Hm: output = Some m
Htri: finite_constrained_trace_from (equivocator_IM IM i) (is i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr)
eqv_final, eqv_init: MachineDescriptor (IM i)
Heqv_init: proper_descriptor (IM i) eqv_init (is i)
Heqv_final: existing_descriptor (IM i) eqv_final (finite_trace_last is tr i)
trXi: list transition_item
Hprojecti: equivocator_vlsm_trace_project (IM i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr) eqv_final = Some (trXi, eqv_init)
Hex: Exists (field_selector VLSM.output m) trXi
Hlst: finite_trace_last is tr i = finite_trace_last (is i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr)

(final_descriptors initial_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) ∧ equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ Exists (field_selector VLSM.output m) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hitem: {| l := li; input := input; destination := destination i; output := output |} ∈ VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr
Hm: output = Some m
Htri: finite_constrained_trace_from (equivocator_IM IM i) (is i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr)
eqv_final, eqv_init: MachineDescriptor (IM i)
Heqv_init: proper_descriptor (IM i) eqv_init (is i)
Heqv_final: existing_descriptor (IM i) eqv_final (finite_trace_last is tr i)
trXi: list transition_item
Hprojecti: equivocator_vlsm_trace_project (IM i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr) eqv_final = Some (trXi, eqv_init)
Hex: Exists (field_selector VLSM.output m) trXi

(final_descriptors initial_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) ∧ equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ Exists (field_selector VLSM.output m) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hitem: {| l := li; input := input; destination := destination i; output := output |} ∈ VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr
Hm: output = Some m
Htri: finite_constrained_trace_from (equivocator_IM IM i) (is i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr)
eqv_final, eqv_init: MachineDescriptor (IM i)
Heqv_init: proper_descriptor (IM i) eqv_init (is i)
final: state (composite_type (equivocator_IM IM))
Heqfinal: final = finite_trace_last is tr
Heqv_final: existing_descriptor (IM i) eqv_final (final i)
trXi: list transition_item
Hprojecti: equivocator_vlsm_trace_project (IM i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr) eqv_final = Some (trXi, eqv_init)
Hex: Exists (field_selector VLSM.output m) trXi

(final_descriptors initial_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), not_equivocating_equivocator_descriptors IM final_descriptors final ∧ equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ Exists (field_selector VLSM.output m) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hitem: {| l := li; input := input; destination := destination i; output := output |} ∈ VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr
Hm: output = Some m
Htri: finite_constrained_trace_from (equivocator_IM IM i) (is i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr)
eqv_final, eqv_init: MachineDescriptor (IM i)
Heqv_init: proper_descriptor (IM i) eqv_init (is i)
final: state (composite_type (equivocator_IM IM))
Heqfinal: final = finite_trace_last is tr
Heqv_final: existing_descriptor (IM i) eqv_final (final i)
trXi: list transition_item
Hprojecti: equivocator_vlsm_trace_project (IM i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr) eqv_final = Some (trXi, eqv_init)
Hex: Exists (field_selector VLSM.output m) trXi
final_descriptors: j : index, MachineDescriptor (IM j)
Heqfinal_descriptors: final_descriptors = equivocator_descriptors_update IM (zero_descriptor IM) i eqv_final

(final_descriptors initial_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), not_equivocating_equivocator_descriptors IM final_descriptors final ∧ equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ Exists (field_selector VLSM.output m) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hitem: {| l := li; input := input; destination := destination i; output := output |} ∈ VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr
Hm: output = Some m
Htri: finite_constrained_trace_from (equivocator_IM IM i) (is i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr)
eqv_final, eqv_init: MachineDescriptor (IM i)
Heqv_init: proper_descriptor (IM i) eqv_init (is i)
final: state (composite_type (equivocator_IM IM))
Heqfinal: final = finite_trace_last is tr
Heqv_final: existing_descriptor (IM i) eqv_final (final i)
trXi: list transition_item
Hprojecti: equivocator_vlsm_trace_project (IM i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr) eqv_final = Some (trXi, eqv_init)
Hex: Exists (field_selector VLSM.output m) trXi
final_descriptors: j : index, MachineDescriptor (IM j)
Heqfinal_descriptors: final_descriptors = equivocator_descriptors_update IM (zero_descriptor IM) i eqv_final

not_equivocating_equivocator_descriptors IM final_descriptors final
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hitem: {| l := li; input := input; destination := destination i; output := output |} ∈ VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr
Hm: output = Some m
Htri: finite_constrained_trace_from (equivocator_IM IM i) (is i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr)
eqv_final, eqv_init: MachineDescriptor (IM i)
Heqv_init: proper_descriptor (IM i) eqv_init (is i)
final: state (composite_type (equivocator_IM IM))
Heqfinal: final = finite_trace_last is tr
Heqv_final: existing_descriptor (IM i) eqv_final (final i)
trXi: list transition_item
Hprojecti: equivocator_vlsm_trace_project (IM i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr) eqv_final = Some (trXi, eqv_init)
Hex: Exists (field_selector VLSM.output m) trXi
final_descriptors: j : index, MachineDescriptor (IM j)
Heqfinal_descriptors: final_descriptors = equivocator_descriptors_update IM (zero_descriptor IM) i eqv_final
Hfinal_descriptors: not_equivocating_equivocator_descriptors IM final_descriptors final
(final_descriptors initial_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), not_equivocating_equivocator_descriptors IM final_descriptors final ∧ equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ Exists (field_selector VLSM.output m) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hitem: {| l := li; input := input; destination := destination i; output := output |} ∈ VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr
Hm: output = Some m
Htri: finite_constrained_trace_from (equivocator_IM IM i) (is i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr)
eqv_final, eqv_init: MachineDescriptor (IM i)
Heqv_init: proper_descriptor (IM i) eqv_init (is i)
final: state (composite_type (equivocator_IM IM))
Heqfinal: final = finite_trace_last is tr
Heqv_final: existing_descriptor (IM i) eqv_final (final i)
trXi: list transition_item
Hprojecti: equivocator_vlsm_trace_project (IM i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr) eqv_final = Some (trXi, eqv_init)
Hex: Exists (field_selector VLSM.output m) trXi
final_descriptors: j : index, MachineDescriptor (IM j)
Heqfinal_descriptors: final_descriptors = equivocator_descriptors_update IM (zero_descriptor IM) i eqv_final

not_equivocating_equivocator_descriptors IM final_descriptors final
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hitem: {| l := li; input := input; destination := destination i; output := output |} ∈ VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr
Hm: output = Some m
Htri: finite_constrained_trace_from (equivocator_IM IM i) (is i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr)
eqv_final, eqv_init: MachineDescriptor (IM i)
Heqv_init: proper_descriptor (IM i) eqv_init (is i)
final: state (composite_type (equivocator_IM IM))
Heqfinal: final = finite_trace_last is tr
Heqv_final: existing_descriptor (IM i) eqv_final (final i)
trXi: list transition_item
Hprojecti: equivocator_vlsm_trace_project (IM i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr) eqv_final = Some (trXi, eqv_init)
Hex: Exists (field_selector VLSM.output m) trXi
final_descriptors: j : index, MachineDescriptor (IM j)
Heqfinal_descriptors: final_descriptors = equivocator_descriptors_update IM (zero_descriptor IM) i eqv_final
eqv: index

existing_descriptor (IM eqv) (final_descriptors eqv) (final eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hitem: {| l := li; input := input; destination := destination i; output := output |} ∈ VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr
Hm: output = Some m
Htri: finite_constrained_trace_from (equivocator_IM IM i) (is i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr)
eqv_final, eqv_init: MachineDescriptor (IM i)
Heqv_init: proper_descriptor (IM i) eqv_init (is i)
final: state (composite_type (equivocator_IM IM))
Heqfinal: final = finite_trace_last is tr
Heqv_final: existing_descriptor (IM i) eqv_final (final i)
trXi: list transition_item
Hprojecti: equivocator_vlsm_trace_project (IM i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr) eqv_final = Some (trXi, eqv_init)
Hex: Exists (field_selector VLSM.output m) trXi
eqv: index

existing_descriptor (IM eqv) (equivocator_descriptors_update IM (zero_descriptor IM) i eqv_final eqv) (final eqv)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
Hitem: {| l := li; input := input; destination := destination i; output := Some m |} ∈ VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr
Htri: finite_constrained_trace_from (equivocator_IM IM i) (is i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr)
eqv_final, eqv_init: MachineDescriptor (IM i)
Heqv_init: proper_descriptor (IM i) eqv_init (is i)
Heqv_final: existing_descriptor (IM i) eqv_final (finite_trace_last is tr i)
trXi: list transition_item
Hprojecti: equivocator_vlsm_trace_project (IM i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr) eqv_final = Some (trXi, eqv_init)
Hex: Exists (field_selector output m) trXi
eqv: index
n: i ≠ eqv

existing_descriptor (IM eqv) (zero_descriptor IM eqv) (finite_trace_last is tr eqv)
by apply zero_descriptor_proper.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hitem: {| l := li; input := input; destination := destination i; output := output |} ∈ VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr
Hm: output = Some m
Htri: finite_constrained_trace_from (equivocator_IM IM i) (is i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr)
eqv_final, eqv_init: MachineDescriptor (IM i)
Heqv_init: proper_descriptor (IM i) eqv_init (is i)
final: state (composite_type (equivocator_IM IM))
Heqfinal: final = finite_trace_last is tr
Heqv_final: existing_descriptor (IM i) eqv_final (final i)
trXi: list transition_item
Hprojecti: equivocator_vlsm_trace_project (IM i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr) eqv_final = Some (trXi, eqv_init)
Hex: Exists (field_selector VLSM.output m) trXi
final_descriptors: j : index, MachineDescriptor (IM j)
Heqfinal_descriptors: final_descriptors = equivocator_descriptors_update IM (zero_descriptor IM) i eqv_final
Hfinal_descriptors: not_equivocating_equivocator_descriptors IM final_descriptors final

(final_descriptors initial_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), not_equivocating_equivocator_descriptors IM final_descriptors final ∧ equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ Exists (field_selector VLSM.output m) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hitem: {| l := li; input := input; destination := destination i; output := output |} ∈ VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr
Hm: output = Some m
Htri: finite_constrained_trace_from (equivocator_IM IM i) (is i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr)
eqv_final, eqv_init: MachineDescriptor (IM i)
Heqv_init: proper_descriptor (IM i) eqv_init (is i)
final: state (composite_type (equivocator_IM IM))
Heqfinal: final = finite_trace_last is tr
Heqv_final: existing_descriptor (IM i) eqv_final (final i)
trXi: list transition_item
Hprojecti: equivocator_vlsm_trace_project (IM i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr) eqv_final = Some (trXi, eqv_init)
Hex: Exists (field_selector VLSM.output m) trXi
final_descriptors: j : index, MachineDescriptor (IM j)
Heqfinal_descriptors: final_descriptors = equivocator_descriptors_update IM (zero_descriptor IM) i eqv_final
Hfinal_descriptors: not_equivocating_equivocator_descriptors IM final_descriptors final

(initial_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), not_equivocating_equivocator_descriptors IM final_descriptors final ∧ equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ Exists (field_selector VLSM.output m) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hitem: {| l := li; input := input; destination := destination i; output := output |} ∈ VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr
Hm: output = Some m
Htri: finite_constrained_trace_from (equivocator_IM IM i) (is i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr)
eqv_final, eqv_init: MachineDescriptor (IM i)
Heqv_init: proper_descriptor (IM i) eqv_init (is i)
Heqv_final: existing_descriptor (IM i) eqv_final (finite_trace_last is tr i)
trXi: list transition_item
Hprojecti: equivocator_vlsm_trace_project (IM i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr) eqv_final = Some (trXi, eqv_init)
Hex: Exists (field_selector VLSM.output m) trXi
final_descriptors: j : index, MachineDescriptor (IM j)
Heqfinal_descriptors: final_descriptors = equivocator_descriptors_update IM (zero_descriptor IM) i eqv_final
Hfinal_descriptors: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)

(initial_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) ∧ equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ Exists (field_selector VLSM.output m) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hitem: {| l := li; input := input; destination := destination i; output := output |} ∈ VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr
Hm: output = Some m
Htri: finite_constrained_trace_from (equivocator_IM IM i) (is i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr)
eqv_final, eqv_init: MachineDescriptor (IM i)
Heqv_init: proper_descriptor (IM i) eqv_init (is i)
Heqv_final: existing_descriptor (IM i) eqv_final (finite_trace_last is tr i)
trXi: list transition_item
Hprojecti: equivocator_vlsm_trace_project (IM i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr) eqv_final = Some (trXi, eqv_init)
Hex: Exists (field_selector VLSM.output m) trXi
final_descriptors: j : index, MachineDescriptor (IM j)
Heqfinal_descriptors: final_descriptors = equivocator_descriptors_update IM (zero_descriptor IM) i eqv_final
Hfinal_descriptors: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)

proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hitem: {| l := li; input := input; destination := destination i; output := output |} ∈ VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr
Hm: output = Some m
Htri: finite_constrained_trace_from (equivocator_IM IM i) (is i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr)
eqv_final, eqv_init: MachineDescriptor (IM i)
Heqv_init: proper_descriptor (IM i) eqv_init (is i)
Heqv_final: existing_descriptor (IM i) eqv_final (finite_trace_last is tr i)
trXi: list transition_item
Hprojecti: equivocator_vlsm_trace_project (IM i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr) eqv_final = Some (trXi, eqv_init)
Hex: Exists (field_selector VLSM.output m) trXi
final_descriptors: j : index, MachineDescriptor (IM j)
Heqfinal_descriptors: final_descriptors = equivocator_descriptors_update IM (zero_descriptor IM) i eqv_final
Hfinal_descriptors: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
Hfinal_descriptors_proper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
(initial_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) ∧ equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ Exists (field_selector VLSM.output m) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hitem: {| l := li; input := input; destination := destination i; output := output |} ∈ VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr
Hm: output = Some m
Htri: finite_constrained_trace_from (equivocator_IM IM i) (is i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr)
eqv_final, eqv_init: MachineDescriptor (IM i)
Heqv_init: proper_descriptor (IM i) eqv_init (is i)
Heqv_final: existing_descriptor (IM i) eqv_final (finite_trace_last is tr i)
trXi: list transition_item
Hprojecti: equivocator_vlsm_trace_project (IM i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr) eqv_final = Some (trXi, eqv_init)
Hex: Exists (field_selector VLSM.output m) trXi
final_descriptors: j : index, MachineDescriptor (IM j)
Heqfinal_descriptors: final_descriptors = equivocator_descriptors_update IM (zero_descriptor IM) i eqv_final
Hfinal_descriptors: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)

proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
by apply not_equivocating_equivocator_descriptors_proper.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hitem: {| l := li; input := input; destination := destination i; output := output |} ∈ VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr
Hm: output = Some m
Htri: finite_constrained_trace_from (equivocator_IM IM i) (is i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr)
eqv_final, eqv_init: MachineDescriptor (IM i)
Heqv_init: proper_descriptor (IM i) eqv_init (is i)
Heqv_final: existing_descriptor (IM i) eqv_final (finite_trace_last is tr i)
trXi: list transition_item
Hprojecti: equivocator_vlsm_trace_project (IM i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr) eqv_final = Some (trXi, eqv_init)
Hex: Exists (field_selector VLSM.output m) trXi
final_descriptors: j : index, MachineDescriptor (IM j)
Heqfinal_descriptors: final_descriptors = equivocator_descriptors_update IM (zero_descriptor IM) i eqv_final
Hfinal_descriptors: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
Hfinal_descriptors_proper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)

(initial_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) ∧ equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ Exists (field_selector VLSM.output m) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hitem: {| l := li; input := input; destination := destination i; output := output |} ∈ VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr
Hm: output = Some m
Htri: finite_constrained_trace_from (equivocator_IM IM i) (is i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr)
eqv_final, eqv_init: MachineDescriptor (IM i)
Heqv_init: proper_descriptor (IM i) eqv_init (is i)
Heqv_final: existing_descriptor (IM i) eqv_final (finite_trace_last is tr i)
trXi: list transition_item
Hprojecti: equivocator_vlsm_trace_project (IM i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr) eqv_final = Some (trXi, eqv_init)
Hex: Exists (field_selector VLSM.output m) trXi
final_descriptors: j : index, MachineDescriptor (IM j)
Heqfinal_descriptors: final_descriptors = equivocator_descriptors_update IM (zero_descriptor IM) i eqv_final
Hfinal_descriptors: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
Hfinal_descriptors_proper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
trX: list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Hproject_tr: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)

(initial_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) ∧ equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ Exists (field_selector VLSM.output m) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hitem: {| l := li; input := input; destination := destination i; output := output |} ∈ VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr
Hm: output = Some m
Htri: finite_constrained_trace_from (equivocator_IM IM i) (is i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr)
eqv_final, eqv_init: MachineDescriptor (IM i)
Heqv_init: proper_descriptor (IM i) eqv_init (is i)
Heqv_final: existing_descriptor (IM i) eqv_final (finite_trace_last is tr i)
trXi: list transition_item
Hprojecti: equivocator_vlsm_trace_project (IM i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr) eqv_final = Some (trXi, eqv_init)
Hex: Exists (field_selector VLSM.output m) trXi
final_descriptors: j : index, MachineDescriptor (IM j)
Heqfinal_descriptors: final_descriptors = equivocator_descriptors_update IM (zero_descriptor IM) i eqv_final
Hfinal_descriptors: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
Hfinal_descriptors_proper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
trX: list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Hproject_tr: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)

not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) ∧ equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ Exists (field_selector VLSM.output m) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hitem: {| l := li; input := input; destination := destination i; output := output |} ∈ VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr
Hm: output = Some m
Htri: finite_constrained_trace_from (equivocator_IM IM i) (is i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr)
eqv_final, eqv_init: MachineDescriptor (IM i)
Heqv_init: proper_descriptor (IM i) eqv_init (is i)
Heqv_final: existing_descriptor (IM i) eqv_final (finite_trace_last is tr i)
trXi: list transition_item
Hprojecti: equivocator_vlsm_trace_project (IM i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr) eqv_final = Some (trXi, eqv_init)
Hex: Exists (field_selector VLSM.output m) trXi
final_descriptors: j : index, MachineDescriptor (IM j)
Heqfinal_descriptors: final_descriptors = equivocator_descriptors_update IM (zero_descriptor IM) i eqv_final
Hfinal_descriptors: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
Hfinal_descriptors_proper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
trX: list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Hproject_tr: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)

equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ Exists (field_selector VLSM.output m) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hitem: {| l := li; input := input; destination := destination i; output := output |} ∈ VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr
Hm: output = Some m
Htri: finite_constrained_trace_from (equivocator_IM IM i) (is i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr)
eqv_final, eqv_init: MachineDescriptor (IM i)
Heqv_init: proper_descriptor (IM i) eqv_init (is i)
Heqv_final: existing_descriptor (IM i) eqv_final (finite_trace_last is tr i)
trXi: list transition_item
Hprojecti: equivocator_vlsm_trace_project (IM i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr) eqv_final = Some (trXi, eqv_init)
Hex: Exists (field_selector VLSM.output m) trXi
final_descriptors: j : index, MachineDescriptor (IM j)
Heqfinal_descriptors: final_descriptors = equivocator_descriptors_update IM (zero_descriptor IM) i eqv_final
Hfinal_descriptors: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
Hfinal_descriptors_proper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
trX: list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Hproject_tr: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)

Exists (field_selector VLSM.output m) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hitem: {| l := li; input := input; destination := destination i; output := output |} ∈ VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr
Hm: output = Some m
Htri: finite_constrained_trace_from (equivocator_IM IM i) (is i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr)
eqv_final, eqv_init: MachineDescriptor (IM i)
Heqv_init: proper_descriptor (IM i) eqv_init (is i)
Heqv_final: existing_descriptor (IM i) eqv_final (finite_trace_last is tr i)
trXi: list transition_item
Hprojecti: equivocator_vlsm_trace_project (IM i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr) eqv_final = Some (trXi, eqv_init)
Hex: Exists (field_selector VLSM.output m) trXi
final_descriptors: j : index, MachineDescriptor (IM j)
Heqfinal_descriptors: final_descriptors = equivocator_descriptors_update IM (zero_descriptor IM) i eqv_final
Hfinal_descriptors: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
Hfinal_descriptors_proper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
trX: list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Hproject_tr: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)
Hcommute: equivocator_vlsm_trace_project (IM i) (finite_trace_projection_list (equivocator_IM IM) i tr) (final_descriptors i) = Some (trXi, eqv_init) → initial_descriptors i = eqv_init ∧ finite_trace_projection_list IM i trX = trXi

Exists (field_selector VLSM.output m) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hitem: {| l := li; input := input; destination := destination i; output := output |} ∈ VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr
Hm: output = Some m
Htri: finite_constrained_trace_from (equivocator_IM IM i) (is i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr)
eqv_final, eqv_init: MachineDescriptor (IM i)
Heqv_init: proper_descriptor (IM i) eqv_init (is i)
Heqv_final: existing_descriptor (IM i) eqv_final (finite_trace_last is tr i)
trXi: list transition_item
Hprojecti: equivocator_vlsm_trace_project (IM i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr) eqv_final = Some (trXi, eqv_init)
Hex: Exists (field_selector VLSM.output m) trXi
final_descriptors: j : index, MachineDescriptor (IM j)
Heqfinal_descriptors: final_descriptors = equivocator_descriptors_update IM (zero_descriptor IM) i eqv_final
Hfinal_descriptors: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
Hfinal_descriptors_proper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
trX: list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Hproject_tr: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)
Hcommute: equivocator_vlsm_trace_project (IM i) (finite_trace_projection_list (equivocator_IM IM) i tr) (final_descriptors i) = Some (trXi, eqv_init) → initial_descriptors i = eqv_init ∧ finite_trace_projection_list IM i trX = trXi
Hfinali: final_descriptors i = eqv_final

Exists (field_selector VLSM.output m) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hitem: {| l := li; input := input; destination := destination i; output := output |} ∈ VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr
Hm: output = Some m
Htri: finite_constrained_trace_from (equivocator_IM IM i) (is i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr)
eqv_final, eqv_init: MachineDescriptor (IM i)
Heqv_init: proper_descriptor (IM i) eqv_init (is i)
Heqv_final: existing_descriptor (IM i) eqv_final (finite_trace_last is tr i)
trXi: list transition_item
Hprojecti: equivocator_vlsm_trace_project (IM i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr) eqv_final = Some (trXi, eqv_init)
Hex: Exists (field_selector VLSM.output m) trXi
final_descriptors: j : index, MachineDescriptor (IM j)
Heqfinal_descriptors: final_descriptors = equivocator_descriptors_update IM (zero_descriptor IM) i eqv_final
Hfinal_descriptors: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
Hfinal_descriptors_proper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
trX: list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Hproject_tr: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)
Hcommute: equivocator_vlsm_trace_project (IM i) (finite_trace_projection_list (equivocator_IM IM) i tr) eqv_final = Some (trXi, eqv_init) → initial_descriptors i = eqv_init ∧ finite_trace_projection_list IM i trX = trXi
Hfinali: final_descriptors i = eqv_final

Exists (field_selector VLSM.output m) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hitem: {| l := li; input := input; destination := destination i; output := output |} ∈ VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr
Hm: output = Some m
Htri: finite_constrained_trace_from (equivocator_IM IM i) (is i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr)
eqv_final, eqv_init: MachineDescriptor (IM i)
Heqv_init: proper_descriptor (IM i) eqv_init (is i)
Heqv_final: existing_descriptor (IM i) eqv_final (finite_trace_last is tr i)
trXi: list transition_item
Hprojecti: equivocator_vlsm_trace_project (IM i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr) eqv_final = Some (trXi, eqv_init)
Hex: Exists (field_selector VLSM.output m) trXi
final_descriptors: j : index, MachineDescriptor (IM j)
Heqfinal_descriptors: final_descriptors = equivocator_descriptors_update IM (zero_descriptor IM) i eqv_final
Hfinal_descriptors: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
Hfinal_descriptors_proper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
trX: list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Hproject_tr: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)
Hcommute: initial_descriptors i = eqv_init ∧ finite_trace_projection_list IM i trX = trXi
Hfinali: final_descriptors i = eqv_final

Exists (field_selector VLSM.output m) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
i: index
li: EquivocatorLabel (IM i)
input: option message
destination: composite_state (equivocator_IM IM)
output: option message
Hitem: {| l := li; input := input; destination := destination i; output := output |} ∈ VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr
Hm: output = Some m
Htri: finite_constrained_trace_from (equivocator_IM IM i) (is i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr)
eqv_final, eqv_init: MachineDescriptor (IM i)
Heqv_init: proper_descriptor (IM i) eqv_init (is i)
Heqv_final: existing_descriptor (IM i) eqv_final (finite_trace_last is tr i)
trXi: list transition_item
Hprojecti: equivocator_vlsm_trace_project (IM i) (VLSM_projection_finite_trace_project (preloaded_component_projection (equivocator_IM IM) i) tr) eqv_final = Some (trXi, eqv_init)
Hex: Exists (field_selector VLSM.output m) trXi
final_descriptors: j : index, MachineDescriptor (IM j)
Heqfinal_descriptors: final_descriptors = equivocator_descriptors_update IM (zero_descriptor IM) i eqv_final
Hfinal_descriptors: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
Hfinal_descriptors_proper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
trX: list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Hproject_tr: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)
Hiniti: initial_descriptors i = eqv_init
Hcommute: finite_trace_projection_list IM i trX = trXi
Hfinali: final_descriptors i = eqv_final

Exists (field_selector VLSM.output m) trX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
m: message
i: index
trXi: list transition_item
Hex: Exists (field_selector output m) trXi
trX: list (composite_transition_item IM)
Hcommute: finite_trace_projection_list IM i trX = trXi

Exists (field_selector output m) trX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
m: message
i: index
trX: list (composite_transition_item IM)
Hex: Exists (field_selector output m) (finite_trace_projection_list IM i trX)

Exists (field_selector output m) trX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
m: message
i: index
trX: list (composite_transition_item IM)
Hex: x : transition_item, x ∈ finite_trace_projection_list IM i trX ∧ field_selector output m x

Exists (field_selector output m) trX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
m: message
i: index
trX: list (composite_transition_item IM)
x: transition_item
Hx: x ∈ finite_trace_projection_list IM i trX
Hm: field_selector output m x

Exists (field_selector output m) trX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
m: message
i: index
trX: list (composite_transition_item IM)
x: transition_item
Hx: itemX : composite_transition_item IM, itemX ∈ trX ∧ output itemX = output x ∧ input itemX = input x ∧ destination itemX i = destination x ∧ ( Hl1 : i = projT1 (l itemX), eq_rect_r (λ n : index, label (IM n)) (projT2 (l itemX)) Hl1 = l x)
Hm: field_selector output m x

Exists (field_selector output m) trX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
m: message
i: index
trX: list (composite_transition_item IM)
x: transition_item
itemX: composite_transition_item IM
HitemX: itemX ∈ trX
Houtput: output itemX = output x
Hm: field_selector output m x

Exists (field_selector output m) trX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
m: message
i: index
trX: list (composite_transition_item IM)
x: transition_item
itemX: composite_transition_item IM
HitemX: itemX ∈ trX
Houtput: output itemX = output x
Hm: field_selector output m x

x : transition_item, x ∈ trX ∧ field_selector output m x
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
m: message
i: index
trX: list (composite_transition_item IM)
x: transition_item
itemX: composite_transition_item IM
HitemX: itemX ∈ trX
Houtput: output itemX = output x
Hm: field_selector output m x

itemX ∈ trX ∧ field_selector output m itemX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
m: message
i: index
trX: list (composite_transition_item IM)
x: transition_item
itemX: composite_transition_item IM
HitemX: itemX ∈ trX
Houtput: output itemX = output x
Hm: field_selector output m x

field_selector output m itemX
by simpl; rewrite Houtput. Qed.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message

Exists (field_selector output m) tr ↔ ( (final_descriptors initial_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) ∧ equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ Exists (field_selector output m) trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message

Exists (field_selector output m) tr ↔ ( (final_descriptors initial_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) ∧ equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ Exists (field_selector output m) trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message

( (final_descriptors initial_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) ∧ equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ Exists (field_selector output m) trX) → Exists (field_selector output m) tr
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
final_descriptors, initial_descriptors: equivocator_descriptors IM
trX: list (composite_transition_item IM)
Hfinal_descriptors: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
Hpr_tr: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)
Hex: Exists (field_selector output m) trX

Exists (field_selector output m) tr
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
final_descriptors, initial_descriptors: equivocator_descriptors IM
trX: list (composite_transition_item IM)
Hfinal_descriptors: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
Hpr_tr: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)
Hex: x : transition_item, x ∈ trX ∧ field_selector output m x

Exists (field_selector output m) tr
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
final_descriptors, initial_descriptors: equivocator_descriptors IM
trX: list (composite_transition_item IM)
Hfinal_descriptors: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
Hpr_tr: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)
itemX: transition_item
HitemX: itemX ∈ trX
Hm: field_selector output m itemX

Exists (field_selector output m) tr
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
final_descriptors, initial_descriptors: equivocator_descriptors IM
trX: list (composite_transition_item IM)
Hfinal_descriptors: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
Hpr_tr: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)
itemX: transition_item
HitemX: l1 l2 : list transition_item, trX = l1 ++ itemX :: l2
Hm: field_selector output m itemX

Exists (field_selector output m) tr
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
final_descriptors, initial_descriptors: equivocator_descriptors IM
trX: list (composite_transition_item IM)
Hfinal_descriptors: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
Hpr_tr: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)
itemX: transition_item
preX, sufX: list transition_item
Heq_trX: trX = preX ++ itemX :: sufX
Hm: field_selector output m itemX

Exists (field_selector output m) tr
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
final_descriptors, initial_descriptors: equivocator_descriptors IM
Hfinal_descriptors: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
itemX: transition_item
preX, sufX: list transition_item
Hpr_tr: equivocators_trace_project final_descriptors tr = Some (preX ++ itemX :: sufX, initial_descriptors)
Hm: field_selector output m itemX

Exists (field_selector output m) tr
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
final_descriptors, initial_descriptors: equivocator_descriptors IM
Hfinal_descriptors: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
itemX: transition_item
preX, sufX: list transition_item
Hpr_tr: (pre suf : list (composite_transition_item (equivocator_IM IM))) (item : composite_transition_item (equivocator_IM IM)) (item_descriptors pre_descriptors : equivocator_descriptors IM), equivocators_trace_project final_descriptors suf = Some (sufX, item_descriptors) ∧ equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors) ∧ equivocators_trace_project pre_descriptors pre = Some (preX, initial_descriptors) ∧ tr = pre ++ [item] ++ suf
Hm: field_selector output m itemX

Exists (field_selector output m) tr
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is tr
m: message
final_descriptors, initial_descriptors: equivocator_descriptors IM
Hfinal_descriptors: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
itemX: transition_item
preX, sufX: list transition_item
pre, suf: list (composite_transition_item (equivocator_IM IM))
item: composite_transition_item (equivocator_IM IM)
item_descriptors, pre_descriptors: equivocator_descriptors IM
Hpr_item: equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors)
Heqtr: tr = pre ++ [item] ++ suf
Hm: field_selector output m itemX

Exists (field_selector output m) tr
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
pre, suf: list (composite_transition_item (equivocator_IM IM))
item: composite_transition_item (equivocator_IM IM)
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is (pre ++ [item] ++ suf)
m: message
final_descriptors, initial_descriptors: equivocator_descriptors IM
Hfinal_descriptors: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is (pre ++ [item] ++ suf))
itemX: transition_item
preX, sufX: list transition_item
item_descriptors, pre_descriptors: equivocator_descriptors IM
Hpr_item: equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors)
Hm: field_selector output m itemX

Exists (field_selector output m) (pre ++ [item] ++ suf)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
pre, suf: list (composite_transition_item (equivocator_IM IM))
item: composite_transition_item (equivocator_IM IM)
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is (pre ++ [item] ++ suf)
m: message
final_descriptors, initial_descriptors: equivocator_descriptors IM
Hfinal_descriptors: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is (pre ++ [item] ++ suf))
itemX: transition_item
preX, sufX: list transition_item
item_descriptors, pre_descriptors: equivocator_descriptors IM
Hpr_item: equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors)
Hm: field_selector output m itemX

Exists (field_selector output m) pre ∨ Exists (field_selector output m) [item] ∨ Exists (field_selector output m) suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
pre, suf: list (composite_transition_item (equivocator_IM IM))
item: composite_transition_item (equivocator_IM IM)
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is (pre ++ [item] ++ suf)
m: message
final_descriptors, initial_descriptors: equivocator_descriptors IM
Hfinal_descriptors: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is (pre ++ [item] ++ suf))
itemX: transition_item
preX, sufX: list transition_item
item_descriptors, pre_descriptors: equivocator_descriptors IM
Hpr_item: equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors)
Hm: field_selector output m itemX

Exists (field_selector output m) [item] ∨ Exists (field_selector output m) suf
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
pre, suf: list (composite_transition_item (equivocator_IM IM))
item: composite_transition_item (equivocator_IM IM)
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is (pre ++ [item] ++ suf)
m: message
final_descriptors, initial_descriptors: equivocator_descriptors IM
Hfinal_descriptors: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is (pre ++ [item] ++ suf))
itemX: transition_item
preX, sufX: list transition_item
item_descriptors, pre_descriptors: equivocator_descriptors IM
Hpr_item: equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors)
Hm: field_selector output m itemX

Exists (field_selector output m) [item]
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
pre, suf: list (composite_transition_item (equivocator_IM IM))
item: composite_transition_item (equivocator_IM IM)
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is (pre ++ [item] ++ suf)
m: message
final_descriptors, initial_descriptors: equivocator_descriptors IM
Hfinal_descriptors: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is (pre ++ [item] ++ suf))
itemX: transition_item
preX, sufX: list transition_item
item_descriptors, pre_descriptors: equivocator_descriptors IM
Hpr_item: equivocators_transition_item_project item_descriptors item = Some (Some itemX, pre_descriptors)
Hm: field_selector output m itemX

field_selector output m item
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
pre, suf: list (composite_transition_item (equivocator_IM IM))
item: composite_transition_item (equivocator_IM IM)
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is (pre ++ [item] ++ suf)
m: message
final_descriptors, initial_descriptors: equivocator_descriptors IM
Hfinal_descriptors: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is (pre ++ [item] ++ suf))
itemX: transition_item
preX, sufX: list transition_item
item_descriptors, pre_descriptors: equivocator_descriptors IM
Hpr_item: ( Hex : existing_equivocator_label (IM (projT1 (l item))) (projT2 (l item)), existT (projT1 (l item)) (existing_equivocator_label_extract (IM (projT1 (l item))) (projT2 (l item)) Hex) = l itemX) ∧ input item = input itemX ∧ output item = output itemX ∧ equivocators_state_project IM item_descriptors (destination item) = destination itemX
Hm: field_selector output m itemX

field_selector output m item
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
pre, suf: list (composite_transition_item (equivocator_IM IM))
item: composite_transition_item (equivocator_IM IM)
Htr: finite_constrained_trace_from (free_composite_vlsm (equivocator_IM IM)) is (pre ++ [item] ++ suf)
m: message
final_descriptors, initial_descriptors: equivocator_descriptors IM
Hfinal_descriptors: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is (pre ++ [item] ++ suf))
itemX: transition_item
preX, sufX: list transition_item
item_descriptors, pre_descriptors: equivocator_descriptors IM
Heqoutput: output item = output itemX
Hm: field_selector output m itemX

field_selector output m item
by simpl in *; congruence. Qed.
Projecting a preloaded valid trace of the composition of equivocators using proper_equivocator_descriptors one obtains a preloaded valid trace of a free composition.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is, final_state: state (equivocators_no_equivocations_vlsm IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_init_to FreeE is final_state tr
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors final_state

initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors final_state in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is, final_state: state (equivocators_no_equivocations_vlsm IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_init_to FreeE is final_state tr
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors final_state

initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors final_state in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is, final_state: state (equivocators_no_equivocations_vlsm IM)
tr: list (composite_transition_item (equivocator_IM IM))
Htr: finite_constrained_trace_init_to FreeE is final_state tr

final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors final_state → initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors final_state in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: state (equivocators_no_equivocations_vlsm IM)
tr: list (composite_transition_item (equivocator_IM IM))

final_state : state (equivocators_no_equivocations_vlsm IM), finite_constrained_trace_init_to FreeE is final_state tr → final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors final_state → initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors final_state in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is, final_state: state (equivocators_no_equivocations_vlsm IM)
Htr: finite_constrained_trace_init_to FreeE is final_state []
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors final_state

initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors final_state in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors [] = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: state (equivocators_no_equivocations_vlsm IM)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
IHtr: final_state : state (equivocators_no_equivocations_vlsm IM), finite_constrained_trace_init_to FreeE is final_state tr → final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors final_state → initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors final_state in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
final_state: state (equivocators_no_equivocations_vlsm IM)
Htr: finite_constrained_trace_init_to FreeE is final_state (tr ++ [x])
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors final_state
initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors final_state in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [x]) = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is, final_state: state (equivocators_no_equivocations_vlsm IM)
Htr: finite_constrained_trace_init_to FreeE is final_state []
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors final_state

initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors final_state in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors [] = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is, final_state: state (equivocators_no_equivocations_vlsm IM)
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm FreeE) is final_state []
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors final_state
Hfinal_state_eq: finite_trace_last is [] = final_state

initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors final_state in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors [] = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: state (equivocators_no_equivocations_vlsm IM)
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is []) []
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last is [])

initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors (finite_trace_last is []) in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors [] = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: state (equivocators_no_equivocations_vlsm IM)
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is []) []
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last is [])

proper_equivocator_descriptors IM final_descriptors is ∧ (let isX := equivocators_state_project IM final_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors (finite_trace_last is []) in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors [] = Some (trX, final_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: state (equivocators_no_equivocations_vlsm IM)
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is []) []
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last is [])

let isX := equivocators_state_project IM final_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors (finite_trace_last is []) in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors [] = Some (trX, final_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: state (equivocators_no_equivocations_vlsm IM)
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is []) []
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last is [])

equivocators_trace_project final_descriptors [] = Some ([], final_descriptors) ∧ finite_constrained_trace_init_to Free (equivocators_state_project IM final_descriptors is) (equivocators_state_project IM final_descriptors (finite_trace_last is [])) []
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: state (equivocators_no_equivocations_vlsm IM)
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is []) []
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last is [])

finite_constrained_trace_init_to Free (equivocators_state_project IM final_descriptors is) (equivocators_state_project IM final_descriptors (finite_trace_last is [])) []
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: state (equivocators_no_equivocations_vlsm IM)
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is []) []
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last is [])

initial_state_prop (equivocators_state_project IM final_descriptors is) → finite_constrained_trace_init_to Free (equivocators_state_project IM final_descriptors is) (equivocators_state_project IM final_descriptors (finite_trace_last is [])) []
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: state (equivocators_no_equivocations_vlsm IM)
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is []) []
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last is [])
initial_state_prop (equivocators_state_project IM final_descriptors is)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: state (equivocators_no_equivocations_vlsm IM)
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is []) []
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last is [])

initial_state_prop (equivocators_state_project IM final_descriptors is) → finite_constrained_trace_init_to Free (equivocators_state_project IM final_descriptors is) (equivocators_state_project IM final_descriptors (finite_trace_last is [])) []
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: state (equivocators_no_equivocations_vlsm IM)
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is []) []
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last is [])
Hinit: initial_state_prop (equivocators_state_project IM final_descriptors is)

finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Free) (equivocators_state_project IM final_descriptors is) (equivocators_state_project IM final_descriptors (finite_trace_last is [])) []
by constructor; apply initial_state_is_valid.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: state (equivocators_no_equivocations_vlsm IM)
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is []) []
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last is [])

initial_state_prop (equivocators_state_project IM final_descriptors is)
by apply (equivocators_initial_state_project IM); [apply Htr |].
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: state (equivocators_no_equivocations_vlsm IM)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
IHtr: final_state : state (equivocators_no_equivocations_vlsm IM), finite_constrained_trace_init_to FreeE is final_state tr → final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors final_state → initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors final_state in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
final_state: state (equivocators_no_equivocations_vlsm IM)
Htr: finite_constrained_trace_init_to FreeE is final_state (tr ++ [x])
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors final_state

initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors final_state in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [x]) = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: state (equivocators_no_equivocations_vlsm IM)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
IHtr: final_state : state (equivocators_no_equivocations_vlsm IM), finite_constrained_trace_init_to FreeE is final_state tr → final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors final_state → initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors final_state in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
final_state: state (equivocators_no_equivocations_vlsm IM)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is final_state (tr ++ [x])
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors final_state

initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors final_state in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [x]) = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: state (equivocators_no_equivocations_vlsm IM)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
IHtr: final_state : state (equivocators_no_equivocations_vlsm IM), finite_constrained_trace_init_to FreeE is final_state tr → final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors final_state → initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors final_state in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
final_state: state (equivocators_no_equivocations_vlsm IM)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr ∧ finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) final_state [x]
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors final_state

initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors final_state in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [x]) = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: state (equivocators_no_equivocations_vlsm IM)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
IHtr: final_state : state (equivocators_no_equivocations_vlsm IM), finite_constrained_trace_init_to FreeE is final_state tr → final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors final_state → initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors final_state in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
final_state: state (equivocators_no_equivocations_vlsm IM)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
Hx: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) final_state [x]
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors final_state

initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors final_state in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [x]) = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: state (equivocators_no_equivocations_vlsm IM)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
IHtr: final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) → initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors (finite_trace_last is tr) in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
final_state: state (equivocators_no_equivocations_vlsm IM)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
Hx: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) final_state [x]
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors final_state

initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors final_state in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [x]) = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: state (equivocators_no_equivocations_vlsm IM)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
IHtr: final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) → initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors (finite_trace_last is tr) in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
final_state: state (equivocators_no_equivocations_vlsm IM)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
Hx: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) final_state [x]
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors final_state
Hfinal_state_eq: finite_trace_last (finite_trace_last is tr) [x] = final_state

initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors final_state in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [x]) = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: state (equivocators_no_equivocations_vlsm IM)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
IHtr: final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) → initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors (finite_trace_last is tr) in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
final_state: state (equivocators_no_equivocations_vlsm IM)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
Hx: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) final_state [x]
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors final_state
Hfinal_state_eq: finite_trace_last (finite_trace_last is tr) ([] ++ [x]) = final_state

initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors final_state in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [x]) = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: state (equivocators_no_equivocations_vlsm IM)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
IHtr: final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) → initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors (finite_trace_last is tr) in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
final_state: state (equivocators_no_equivocations_vlsm IM)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
Hx: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) final_state [x]
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors final_state
Hfinal_state_eq: destination x = final_state

initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors final_state in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [x]) = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: state (equivocators_no_equivocations_vlsm IM)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
IHtr: final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) → initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors (finite_trace_last is tr) in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
Hx: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) (destination x) [x]
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (destination x)

initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors (destination x) in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [x]) = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: state (equivocators_no_equivocations_vlsm IM)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
IHtr: final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) → initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors (finite_trace_last is tr) in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
Hx: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) (destination x) [x]
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (destination x)
oitem: option (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hpr_x: equivocators_transition_item_project final_descriptors x = Some (oitem, final_descriptors')
Hchar1: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l x))) (projT2 (l x)), existT (projT1 (l x)) (existing_equivocator_label_extract (IM (projT1 (l x))) (projT2 (l x)) Hex) = l itemx) ∧ input x = input itemx ∧ output x = output itemx ∧ equivocators_state_project IM final_descriptors (destination x) = destination itemx ∧ final_descriptors' (projT1 (l x)) = equivocator_label_descriptor (projT2 (l x)) | None => True end
Hchar2: s : composite_state (equivocator_IM IM), composite_valid (equivocator_IM IM) (l x) (s, input x) → composite_transition (equivocator_IM IM) (l x) (s, input x) = (destination x, output x) → proper_equivocator_descriptors IM final_descriptors' s ∧ final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 (l x)) (final_descriptors' (projT1 (l x))) ∧ s = state_update (equivocator_IM IM) (destination x) (projT1 (l x)) (s (projT1 (l x))) ∧ previous_state_descriptor_prop (IM (projT1 (l x))) (final_descriptors (projT1 (l x))) (s (projT1 (l x))) (final_descriptors' (projT1 (l x))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' s → composite_valid IM (l itemx) (sx, input itemx) ∧ composite_transition IM (l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM final_descriptors (destination x) = equivocators_state_project IM final_descriptors' s end

initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors (destination x) in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [x]) = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: state (equivocators_no_equivocations_vlsm IM)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
IHtr: final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) → initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors (finite_trace_last is tr) in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
Hx: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) (destination x) [x]
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (destination x)
oitem: option (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hpr_x: equivocators_transition_item_project final_descriptors x = Some (oitem, final_descriptors')
Hchar1: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (l x))) (projT2 (l x)), existT (projT1 (l x)) (existing_equivocator_label_extract (IM (projT1 (l x))) (projT2 (l x)) Hex) = l itemx) ∧ input x = input itemx ∧ output x = output itemx ∧ equivocators_state_project IM final_descriptors (destination x) = destination itemx ∧ final_descriptors' (projT1 (l x)) = equivocator_label_descriptor (projT2 (l x)) | None => True end
Hchar2: s : composite_state (equivocator_IM IM), composite_valid (equivocator_IM IM) (l x) (s, input x) → composite_transition (equivocator_IM IM) (l x) (s, input x) = (destination x, output x) → proper_equivocator_descriptors IM final_descriptors' s ∧ final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 (l x)) (final_descriptors' (projT1 (l x))) ∧ s = state_update (equivocator_IM IM) (destination x) (projT1 (l x)) (s (projT1 (l x))) ∧ previous_state_descriptor_prop (IM (projT1 (l x))) (final_descriptors (projT1 (l x))) (s (projT1 (l x))) (final_descriptors' (projT1 (l x))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' s → composite_valid IM (l itemx) (sx, input itemx) ∧ composite_transition IM (l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM final_descriptors (destination x) = equivocators_state_project IM final_descriptors' s end
Hpr_app: (ieqv_descriptors eqv_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors (tr ++ [x]) = Some (trX, ieqv_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors [x] = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, ieqv_descriptors) ∧ trX = preX ++ sufX)

initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors (destination x) in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [x]) = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: state (equivocators_no_equivocations_vlsm IM)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
IHtr: final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) → initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors (finite_trace_last is tr) in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
Hx: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) (destination x) [x]
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (destination x)
oitem: option (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hpr_x: equivocators_transition_item_project final_descriptors x = Some (oitem, final_descriptors')
Hchar1: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (VLSM.l x))) (projT2 (VLSM.l x)), existT (projT1 (VLSM.l x)) (existing_equivocator_label_extract (IM (projT1 (VLSM.l x))) (projT2 (VLSM.l x)) Hex) = VLSM.l itemx) ∧ input x = input itemx ∧ output x = output itemx ∧ equivocators_state_project IM final_descriptors (destination x) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l x)) = equivocator_label_descriptor (projT2 (VLSM.l x)) | None => True end
Hchar2: s : composite_state (equivocator_IM IM), composite_valid (equivocator_IM IM) (VLSM.l x) (s, input x) → composite_transition (equivocator_IM IM) (VLSM.l x) (s, input x) = (destination x, output x) → proper_equivocator_descriptors IM final_descriptors' s ∧ final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 (VLSM.l x)) (final_descriptors' (projT1 (VLSM.l x))) ∧ s = state_update (equivocator_IM IM) (destination x) (projT1 (VLSM.l x)) (s (projT1 (VLSM.l x))) ∧ previous_state_descriptor_prop (IM (projT1 (VLSM.l x))) (final_descriptors (projT1 (VLSM.l x))) (s (projT1 (VLSM.l x))) (final_descriptors' (projT1 (VLSM.l x))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' s → composite_valid IM (VLSM.l itemx) (sx, input itemx) ∧ composite_transition IM (VLSM.l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM final_descriptors (destination x) = equivocators_state_project IM final_descriptors' s end
Hpr_app: (ieqv_descriptors eqv_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors (tr ++ [x]) = Some (trX, ieqv_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors [x] = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, ieqv_descriptors) ∧ trX = preX ++ sufX)
s, f: state (preloaded_with_all_messages_vlsm FreeE)
tl: list transition_item
s': state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
Htl: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) s (destination {| l := l; input := iom; destination := s; output := oom |}) []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)
H1: s' = finite_trace_last is tr
H2: f = destination x
H4: {| l := l; input := iom; destination := s; output := oom |} = x
H5: tl = []

initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: state (equivocators_no_equivocations_vlsm IM)
tr: list (composite_transition_item (equivocator_IM IM))
IHtr: final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) → initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors (finite_trace_last is tr) in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
Hx: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last is tr) (destination {| l := l; input := iom; destination := s; output := oom |}) [{| l := l; input := iom; destination := s; output := oom |}]
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
oitem: option (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hpr_app: (ieqv_descriptors eqv_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, ieqv_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors [{| l := l; input := iom; destination := s; output := oom |}] = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, ieqv_descriptors) ∧ trX = preX ++ sufX)
Hchar2: s0 : composite_state (equivocator_IM IM), composite_valid (equivocator_IM IM) (VLSM.l {| l := l; input := iom; destination := s; output := oom |}) (s0, input {| l := l; input := iom; destination := s; output := oom |}) → composite_transition (equivocator_IM IM) (VLSM.l {| l := l; input := iom; destination := s; output := oom |}) (s0, input {| l := l; input := iom; destination := s; output := oom |}) = (destination {| l := l; input := iom; destination := s; output := oom |}, output {| l := l; input := iom; destination := s; output := oom |}) → proper_equivocator_descriptors IM final_descriptors' s0 ∧ final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ s0 = state_update (equivocator_IM IM) (destination {| l := l; input := iom; destination := s; output := oom |}) (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (s0 (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ previous_state_descriptor_prop (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (s0 (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' s0 → composite_valid IM (VLSM.l itemx) (sx, input itemx) ∧ composite_transition IM (VLSM.l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = equivocators_state_project IM final_descriptors' s0 end
Hchar1: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l itemx) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input itemx ∧ output {| l := l; input := iom; destination := s; output := oom |} = output itemx ∧ equivocators_state_project IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) | None => True end
Hpr_x: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Htl: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) s (destination {| l := l; input := iom; destination := s; output := oom |}) []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)

initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: state (equivocators_no_equivocations_vlsm IM)
tr: list (composite_transition_item (equivocator_IM IM))
IHtr: final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) → initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors (finite_trace_last is tr) in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
oitem: option (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hpr_app: (ieqv_descriptors eqv_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, ieqv_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors [{| l := l; input := iom; destination := s; output := oom |}] = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, ieqv_descriptors) ∧ trX = preX ++ sufX)
Hchar2: s0 : composite_state (equivocator_IM IM), composite_valid (equivocator_IM IM) (VLSM.l {| l := l; input := iom; destination := s; output := oom |}) (s0, input {| l := l; input := iom; destination := s; output := oom |}) → composite_transition (equivocator_IM IM) (VLSM.l {| l := l; input := iom; destination := s; output := oom |}) (s0, input {| l := l; input := iom; destination := s; output := oom |}) = (destination {| l := l; input := iom; destination := s; output := oom |}, output {| l := l; input := iom; destination := s; output := oom |}) → proper_equivocator_descriptors IM final_descriptors' s0 ∧ final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ s0 = state_update (equivocator_IM IM) (destination {| l := l; input := iom; destination := s; output := oom |}) (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (s0 (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ previous_state_descriptor_prop (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (s0 (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' s0 → composite_valid IM (VLSM.l itemx) (sx, input itemx) ∧ composite_transition IM (VLSM.l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = equivocators_state_project IM final_descriptors' s0 end
Hchar1: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l itemx) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input itemx ∧ output {| l := l; input := iom; destination := s; output := oom |} = output itemx ∧ equivocators_state_project IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) | None => True end
Hpr_x: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last is tr, iom) ( s, oom)

initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: state (equivocators_no_equivocations_vlsm IM)
tr: list (composite_transition_item (equivocator_IM IM))
IHtr: final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) → initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors (finite_trace_last is tr) in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
oitem: option (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hpr_app: (ieqv_descriptors eqv_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, ieqv_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors [{| l := l; input := iom; destination := s; output := oom |}] = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, ieqv_descriptors) ∧ trX = preX ++ sufX)
Hchar2: s0 : composite_state (equivocator_IM IM), composite_valid (equivocator_IM IM) (VLSM.l {| l := l; input := iom; destination := s; output := oom |}) (s0, input {| l := l; input := iom; destination := s; output := oom |}) → composite_transition (equivocator_IM IM) (VLSM.l {| l := l; input := iom; destination := s; output := oom |}) (s0, input {| l := l; input := iom; destination := s; output := oom |}) = (destination {| l := l; input := iom; destination := s; output := oom |}, output {| l := l; input := iom; destination := s; output := oom |}) → proper_equivocator_descriptors IM final_descriptors' s0 ∧ final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ s0 = state_update (equivocator_IM IM) (destination {| l := l; input := iom; destination := s; output := oom |}) (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (s0 (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ previous_state_descriptor_prop (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (s0 (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' s0 → composite_valid IM (VLSM.l itemx) (sx, input itemx) ∧ composite_transition IM (VLSM.l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = equivocators_state_project IM final_descriptors' s0 end
Hchar1: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l itemx) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input itemx ∧ output {| l := l; input := iom; destination := s; output := oom |} = output itemx ∧ equivocators_state_project IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) | None => True end
Hpr_x: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Hvx: valid l (finite_trace_last is tr, iom)
Htx: transition l (finite_trace_last is tr, iom) = (s, oom)

initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: state (equivocators_no_equivocations_vlsm IM)
tr: list (composite_transition_item (equivocator_IM IM))
IHtr: final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) → initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors (finite_trace_last is tr) in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
Hinit: initial_state_prop is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
oitem: option (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hpr_app: (ieqv_descriptors eqv_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, ieqv_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), equivocators_trace_project eqv_descriptors [{| l := l; input := iom; destination := s; output := oom |}] = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, ieqv_descriptors) ∧ trX = preX ++ sufX)
Hchar2: proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr) ∧ final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ finite_trace_last is tr = state_update (equivocator_IM IM) (destination {| l := l; input := iom; destination := s; output := oom |}) (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ previous_state_descriptor_prop (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (finite_trace_last is tr (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → composite_valid IM (VLSM.l itemx) (sx, input itemx) ∧ composite_transition IM (VLSM.l itemx) (sx, input itemx) = (destination itemx, output itemx) | None => equivocators_state_project IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hchar1: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l itemx) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input itemx ∧ output {| l := l; input := iom; destination := s; output := oom |} = output itemx ∧ equivocators_state_project IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) | None => True end
Hpr_x: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Hvx: valid l (finite_trace_last is tr, iom)
Htx: transition l (finite_trace_last is tr, iom) = (s, oom)

initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ (let isX := equivocators_state_project IM initial_descriptors is in let final_stateX := equivocators_state_project IM final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) in trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free isX final_stateX trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
IHtr: final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) → initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ ( trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors (finite_trace_last is tr)) trX)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
l: composite_label (equivocator_IM IM)
Hinit: composite_initial_state_prop (equivocator_IM IM) is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors s
oitem: option (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hpr_app: (ieqv_descriptors eqv_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, ieqv_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocators_transition_item_project eqv_descriptors {| l := l; input := iom; destination := s; output := oom |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, ieqv_descriptors) ∧ trX = preX ++ sufX)
Hchar2: proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr) ∧ final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 l) (final_descriptors' (projT1 l)) ∧ finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 l) (finite_trace_last is tr (projT1 l)) ∧ previous_state_descriptor_prop (IM (projT1 l)) (final_descriptors (projT1 l)) (finite_trace_last is tr (projT1 l)) (final_descriptors' (projT1 l)) ∧ match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := VLSM.l itemx in valid li (sx i, input itemx)) ∧ (let (i, li) := VLSM.l itemx in let (si', om') := transition li (sx i, input itemx) in (state_update IM sx i si', om')) = (destination itemx, output itemx) | None => equivocators_state_project IM final_descriptors s = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hchar1: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM (projT1 l)) (projT2 l) Hex) = VLSM.l itemx) ∧ iom = input itemx ∧ oom = output itemx ∧ equivocators_state_project IM final_descriptors s = destination itemx ∧ final_descriptors' (projT1 l) = equivocator_label_descriptor (projT2 l) | None => True end
Hpr_x: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Hvx: let (i, li) := l in equivocator_valid (IM i) li (finite_trace_last is tr i, iom)
Htx: (let (i, li) := l in let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)

initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ ( trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors s) trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
IHtr: final_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr) → initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ ( trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors (finite_trace_last is tr)) trX)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
l: composite_label (equivocator_IM IM)
Hinit: composite_initial_state_prop (equivocator_IM IM) is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors s
oitem: option (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hpr_app: (ieqv_descriptors eqv_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, ieqv_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocators_transition_item_project eqv_descriptors {| l := l; input := iom; destination := s; output := oom |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, ieqv_descriptors) ∧ trX = preX ++ sufX)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Heq_last_tr: finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 l) (finite_trace_last is tr (projT1 l))
Hex_new: previous_state_descriptor_prop (IM (projT1 l)) (final_descriptors (projT1 l)) (finite_trace_last is tr (projT1 l)) (final_descriptors' (projT1 l))
Hchar2: match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := VLSM.l itemx in valid li (sx i, input itemx)) ∧ (let (i, li) := VLSM.l itemx in let (si', om') := transition li (sx i, input itemx) in (state_update IM sx i si', om')) = (destination itemx, output itemx) | None => equivocators_state_project IM final_descriptors s = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hchar1: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM (projT1 l)) (projT2 l) Hex) = VLSM.l itemx) ∧ iom = input itemx ∧ oom = output itemx ∧ equivocators_state_project IM final_descriptors s = destination itemx ∧ final_descriptors' (projT1 l) = equivocator_label_descriptor (projT2 l) | None => True end
Hpr_x: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Hvx: let (i, li) := l in equivocator_valid (IM i) li (finite_trace_last is tr i, iom)
Htx: (let (i, li) := l in let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)

initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ ( trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors s) trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors': equivocator_descriptors IM
IHtr: initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ ( trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors' tr = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) trX)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
l: composite_label (equivocator_IM IM)
Hinit: composite_initial_state_prop (equivocator_IM IM) is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors s
oitem: option (composite_transition_item IM)
Hpr_app: (ieqv_descriptors eqv_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, ieqv_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocators_transition_item_project eqv_descriptors {| l := l; input := iom; destination := s; output := oom |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, ieqv_descriptors) ∧ trX = preX ++ sufX)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Heq_last_tr: finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 l) (finite_trace_last is tr (projT1 l))
Hex_new: previous_state_descriptor_prop (IM (projT1 l)) (final_descriptors (projT1 l)) (finite_trace_last is tr (projT1 l)) (final_descriptors' (projT1 l))
Hchar2: match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := VLSM.l itemx in valid li (sx i, input itemx)) ∧ (let (i, li) := VLSM.l itemx in let (si', om') := transition li (sx i, input itemx) in (state_update IM sx i si', om')) = (destination itemx, output itemx) | None => equivocators_state_project IM final_descriptors s = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hchar1: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM (projT1 l)) (projT2 l) Hex) = VLSM.l itemx) ∧ iom = input itemx ∧ oom = output itemx ∧ equivocators_state_project IM final_descriptors s = destination itemx ∧ final_descriptors' (projT1 l) = equivocator_label_descriptor (projT2 l) | None => True end
Hpr_x: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Hvx: let (i, li) := l in equivocator_valid (IM i) li (finite_trace_last is tr i, iom)
Htx: (let (i, li) := l in let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)

initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ ( trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors s) trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors', initial_descriptors: equivocator_descriptors IM
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
trX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project final_descriptors' tr = Some (trX, initial_descriptors)
HtrX: finite_constrained_trace_init_to Free (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) trX
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
l: composite_label (equivocator_IM IM)
Hinit: composite_initial_state_prop (equivocator_IM IM) is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors s
oitem: option (composite_transition_item IM)
Hpr_app: (ieqv_descriptors eqv_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, ieqv_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocators_transition_item_project eqv_descriptors {| l := l; input := iom; destination := s; output := oom |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, ieqv_descriptors) ∧ trX = preX ++ sufX)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Heq_last_tr: finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 l) (finite_trace_last is tr (projT1 l))
Hex_new: previous_state_descriptor_prop (IM (projT1 l)) (final_descriptors (projT1 l)) (finite_trace_last is tr (projT1 l)) (final_descriptors' (projT1 l))
Hchar2: match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := VLSM.l itemx in valid li (sx i, input itemx)) ∧ (let (i, li) := VLSM.l itemx in let (si', om') := transition li (sx i, input itemx) in (state_update IM sx i si', om')) = (destination itemx, output itemx) | None => equivocators_state_project IM final_descriptors s = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hchar1: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM (projT1 l)) (projT2 l) Hex) = VLSM.l itemx) ∧ iom = input itemx ∧ oom = output itemx ∧ equivocators_state_project IM final_descriptors s = destination itemx ∧ final_descriptors' (projT1 l) = equivocator_label_descriptor (projT2 l) | None => True end
Hpr_x: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Hvx: let (i, li) := l in equivocator_valid (IM i) li (finite_trace_last is tr i, iom)
Htx: (let (i, li) := l in let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)

initial_descriptors : equivocator_descriptors IM, proper_equivocator_descriptors IM initial_descriptors is ∧ ( trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors s) trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors', initial_descriptors: equivocator_descriptors IM
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
trX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project final_descriptors' tr = Some (trX, initial_descriptors)
HtrX: finite_constrained_trace_init_to Free (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) trX
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
l: composite_label (equivocator_IM IM)
Hinit: composite_initial_state_prop (equivocator_IM IM) is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors s
oitem: option (composite_transition_item IM)
Hpr_app: (ieqv_descriptors eqv_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, ieqv_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocators_transition_item_project eqv_descriptors {| l := l; input := iom; destination := s; output := oom |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, ieqv_descriptors) ∧ trX = preX ++ sufX)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Heq_last_tr: finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 l) (finite_trace_last is tr (projT1 l))
Hex_new: previous_state_descriptor_prop (IM (projT1 l)) (final_descriptors (projT1 l)) (finite_trace_last is tr (projT1 l)) (final_descriptors' (projT1 l))
Hchar2: match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := VLSM.l itemx in valid li (sx i, input itemx)) ∧ (let (i, li) := VLSM.l itemx in let (si', om') := transition li (sx i, input itemx) in (state_update IM sx i si', om')) = (destination itemx, output itemx) | None => equivocators_state_project IM final_descriptors s = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hchar1: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM (projT1 l)) (projT2 l) Hex) = VLSM.l itemx) ∧ iom = input itemx ∧ oom = output itemx ∧ equivocators_state_project IM final_descriptors s = destination itemx ∧ final_descriptors' (projT1 l) = equivocator_label_descriptor (projT2 l) | None => True end
Hpr_x: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Hvx: let (i, li) := l in equivocator_valid (IM i) li (finite_trace_last is tr i, iom)
Htx: (let (i, li) := l in let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)

proper_equivocator_descriptors IM initial_descriptors is ∧ ( trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors s) trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors', initial_descriptors: equivocator_descriptors IM
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
trX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project final_descriptors' tr = Some (trX, initial_descriptors)
HtrX: finite_constrained_trace_init_to Free (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) trX
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
l: composite_label (equivocator_IM IM)
Hinit: composite_initial_state_prop (equivocator_IM IM) is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors s
oitem: option (composite_transition_item IM)
Hpr_app: (ieqv_descriptors eqv_descriptors : equivocator_descriptors IM) (trX : list (composite_transition_item IM)), equivocators_trace_project eqv_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, ieqv_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocators_transition_item_project eqv_descriptors {| l := l; input := iom; destination := s; output := oom |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, ieqv_descriptors) ∧ trX = preX ++ sufX)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Heq_last_tr: finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 l) (finite_trace_last is tr (projT1 l))
Hex_new: previous_state_descriptor_prop (IM (projT1 l)) (final_descriptors (projT1 l)) (finite_trace_last is tr (projT1 l)) (final_descriptors' (projT1 l))
Hchar2: match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := VLSM.l itemx in valid li (sx i, input itemx)) ∧ (let (i, li) := VLSM.l itemx in let (si', om') := transition li (sx i, input itemx) in (state_update IM sx i si', om')) = (destination itemx, output itemx) | None => equivocators_state_project IM final_descriptors s = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hchar1: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM (projT1 l)) (projT2 l) Hex) = VLSM.l itemx) ∧ iom = input itemx ∧ oom = output itemx ∧ equivocators_state_project IM final_descriptors s = destination itemx ∧ final_descriptors' (projT1 l) = equivocator_label_descriptor (projT2 l) | None => True end
Hpr_x: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Hvx: let (i, li) := l in equivocator_valid (IM i) li (finite_trace_last is tr i, iom)
Htx: (let (i, li) := l in let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)

trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors s) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors', initial_descriptors: equivocator_descriptors IM
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
trX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project final_descriptors' tr = Some (trX, initial_descriptors)
HtrX: finite_constrained_trace_init_to Free (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) trX
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
l: composite_label (equivocator_IM IM)
Hinit: composite_initial_state_prop (equivocator_IM IM) is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors s
oitem: option (composite_transition_item IM)
Hpr_app: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, initial_descriptors) ∧ trX = preX ++ sufX)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Heq_last_tr: finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 l) (finite_trace_last is tr (projT1 l))
Hex_new: previous_state_descriptor_prop (IM (projT1 l)) (final_descriptors (projT1 l)) (finite_trace_last is tr (projT1 l)) (final_descriptors' (projT1 l))
Hchar2: match oitem with | Some itemx => sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := VLSM.l itemx in valid li (sx i, input itemx)) ∧ (let (i, li) := VLSM.l itemx in let (si', om') := transition li (sx i, input itemx) in (state_update IM sx i si', om')) = (destination itemx, output itemx) | None => equivocators_state_project IM final_descriptors s = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) end
Hchar1: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM (projT1 l)) (projT2 l) Hex) = VLSM.l itemx) ∧ iom = input itemx ∧ oom = output itemx ∧ equivocators_state_project IM final_descriptors s = destination itemx ∧ final_descriptors' (projT1 l) = equivocator_label_descriptor (projT2 l) | None => True end
Hpr_x: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Hvx: let (i, li) := l in equivocator_valid (IM i) li (finite_trace_last is tr i, iom)
Htx: (let (i, li) := l in let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)

trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors s) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors', initial_descriptors: equivocator_descriptors IM
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
trX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project final_descriptors' tr = Some (trX, initial_descriptors)
HtrX: finite_constrained_trace_init_to Free (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) trX
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
l: composite_label (equivocator_IM IM)
Hinit: composite_initial_state_prop (equivocator_IM IM) is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors s
item: composite_transition_item IM
Hpr_app: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, initial_descriptors) ∧ trX = preX ++ sufX)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Heq_last_tr: finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 l) (finite_trace_last is tr (projT1 l))
Hex_new: previous_state_descriptor_prop (IM (projT1 l)) (final_descriptors (projT1 l)) (finite_trace_last is tr (projT1 l)) (final_descriptors' (projT1 l))
Hchar2: sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := VLSM.l item in valid li (sx i, input item)) ∧ (let (i, li) := VLSM.l item in let (si', om') := transition li (sx i, input item) in (state_update IM sx i si', om')) = (destination item, output item)
Hchar1: ( Hex : existing_equivocator_label (IM (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM (projT1 l)) (projT2 l) Hex) = VLSM.l item) ∧ iom = input item ∧ oom = output item ∧ equivocators_state_project IM final_descriptors s = destination item ∧ final_descriptors' (projT1 l) = equivocator_label_descriptor (projT2 l)
Hpr_x: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (Some item, final_descriptors')
Hvx: let (i, li) := l in equivocator_valid (IM i) li (finite_trace_last is tr i, iom)
Htx: (let (i, li) := l in let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)

trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors s) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors', initial_descriptors: equivocator_descriptors IM
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
trX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project final_descriptors' tr = Some (trX, initial_descriptors)
HtrX: finite_constrained_trace_init_to Free (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) trX
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
l: composite_label (equivocator_IM IM)
Hinit: composite_initial_state_prop (equivocator_IM IM) is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors s
Hpr_app: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, initial_descriptors) ∧ trX = preX ++ sufX)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Heq_last_tr: finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 l) (finite_trace_last is tr (projT1 l))
Hex_new: previous_state_descriptor_prop (IM (projT1 l)) (final_descriptors (projT1 l)) (finite_trace_last is tr (projT1 l)) (final_descriptors' (projT1 l))
Hchar2: equivocators_state_project IM final_descriptors s = equivocators_state_project IM final_descriptors' (finite_trace_last is tr)
Hchar1: True
Hpr_x: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (None, final_descriptors')
Hvx: let (i, li) := l in equivocator_valid (IM i) li (finite_trace_last is tr i, iom)
Htx: (let (i, li) := l in let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)
trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors s) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors', initial_descriptors: equivocator_descriptors IM
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
trX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project final_descriptors' tr = Some (trX, initial_descriptors)
HtrX: finite_constrained_trace_init_to Free (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) trX
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
l: composite_label (equivocator_IM IM)
Hinit: composite_initial_state_prop (equivocator_IM IM) is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors s
item: composite_transition_item IM
Hpr_app: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, initial_descriptors) ∧ trX = preX ++ sufX)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Heq_last_tr: finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 l) (finite_trace_last is tr (projT1 l))
Hex_new: previous_state_descriptor_prop (IM (projT1 l)) (final_descriptors (projT1 l)) (finite_trace_last is tr (projT1 l)) (final_descriptors' (projT1 l))
Hchar2: sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := VLSM.l item in valid li (sx i, input item)) ∧ (let (i, li) := VLSM.l item in let (si', om') := transition li (sx i, input item) in (state_update IM sx i si', om')) = (destination item, output item)
Hchar1: ( Hex : existing_equivocator_label (IM (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM (projT1 l)) (projT2 l) Hex) = VLSM.l item) ∧ iom = input item ∧ oom = output item ∧ equivocators_state_project IM final_descriptors s = destination item ∧ final_descriptors' (projT1 l) = equivocator_label_descriptor (projT2 l)
Hpr_x: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (Some item, final_descriptors')
Hvx: let (i, li) := l in equivocator_valid (IM i) li (finite_trace_last is tr i, iom)
Htx: (let (i, li) := l in let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)

trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors s) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors', initial_descriptors: equivocator_descriptors IM
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
trX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project final_descriptors' tr = Some (trX, initial_descriptors)
HtrX: finite_constrained_trace_init_to Free (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) trX
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
l: composite_label (equivocator_IM IM)
Hinit: composite_initial_state_prop (equivocator_IM IM) is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors s
item: composite_transition_item IM
Hpr_app: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, initial_descriptors) ∧ trX = preX ++ sufX)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Heq_last_tr: finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 l) (finite_trace_last is tr (projT1 l))
Hex_new: previous_state_descriptor_prop (IM (projT1 l)) (final_descriptors (projT1 l)) (finite_trace_last is tr (projT1 l)) (final_descriptors' (projT1 l))
Hchar2: sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := VLSM.l item in valid li (sx i, input item)) ∧ (let (i, li) := VLSM.l item in let (si', om') := transition li (sx i, input item) in (state_update IM sx i si', om')) = (destination item, output item)
Hchar1: ( Hex : existing_equivocator_label (IM (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM (projT1 l)) (projT2 l) Hex) = VLSM.l item) ∧ iom = input item ∧ oom = output item ∧ equivocators_state_project IM final_descriptors s = destination item ∧ final_descriptors' (projT1 l) = equivocator_label_descriptor (projT2 l)
Hpr_x: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (Some item, final_descriptors')
Hvx: let (i, li) := l in equivocator_valid (IM i) li (finite_trace_last is tr i, iom)
Htx: (let (i, li) := l in let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)

equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX ++ [item], initial_descriptors) ∧ finite_constrained_trace_init_to Free (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors s) (trX ++ [item])
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors', initial_descriptors: equivocator_descriptors IM
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
trX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project final_descriptors' tr = Some (trX, initial_descriptors)
HtrX: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Free) (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) trX
HinitX: initial_state_prop (equivocators_state_project IM initial_descriptors is)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
l: composite_label (equivocator_IM IM)
Hinit: composite_initial_state_prop (equivocator_IM IM) is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors s
item: composite_transition_item IM
Hpr_app: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, initial_descriptors) ∧ trX = preX ++ sufX)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Heq_last_tr: finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 l) (finite_trace_last is tr (projT1 l))
Hex_new: previous_state_descriptor_prop (IM (projT1 l)) (final_descriptors (projT1 l)) (finite_trace_last is tr (projT1 l)) (final_descriptors' (projT1 l))
Hchar2: sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := VLSM.l item in valid li (sx i, input item)) ∧ (let (i, li) := VLSM.l item in let (si', om') := transition li (sx i, input item) in (state_update IM sx i si', om')) = (destination item, output item)
Hchar1: ( Hex : existing_equivocator_label (IM (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM (projT1 l)) (projT2 l) Hex) = VLSM.l item) ∧ iom = input item ∧ oom = output item ∧ equivocators_state_project IM final_descriptors s = destination item ∧ final_descriptors' (projT1 l) = equivocator_label_descriptor (projT2 l)
Hpr_x: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (Some item, final_descriptors')
Hvx: let (i, li) := l in equivocator_valid (IM i) li (finite_trace_last is tr i, iom)
Htx: (let (i, li) := l in let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)

equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX ++ [item], initial_descriptors) ∧ finite_constrained_trace_init_to Free (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors s) (trX ++ [item])
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors', initial_descriptors: equivocator_descriptors IM
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
trX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project final_descriptors' tr = Some (trX, initial_descriptors)
HtrX: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Free) (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) trX
HinitX: initial_state_prop (equivocators_state_project IM initial_descriptors is)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
l: composite_label (equivocator_IM IM)
Hinit: composite_initial_state_prop (equivocator_IM IM) is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors s
item: composite_transition_item IM
Hpr_app: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, initial_descriptors) ∧ trX = preX ++ sufX)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Heq_last_tr: finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 l) (finite_trace_last is tr (projT1 l))
Hex_new: previous_state_descriptor_prop (IM (projT1 l)) (final_descriptors (projT1 l)) (finite_trace_last is tr (projT1 l)) (final_descriptors' (projT1 l))
Hchar2: sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := VLSM.l item in valid li (sx i, input item)) ∧ (let (i, li) := VLSM.l item in let (si', om') := transition li (sx i, input item) in (state_update IM sx i si', om')) = (destination item, output item)
Hchar1: ( Hex : existing_equivocator_label (IM (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM (projT1 l)) (projT2 l) Hex) = VLSM.l item) ∧ iom = input item ∧ oom = output item ∧ equivocators_state_project IM final_descriptors s = destination item ∧ final_descriptors' (projT1 l) = equivocator_label_descriptor (projT2 l)
Hpr_x: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (Some item, final_descriptors')
Hvx: let (i, li) := l in equivocator_valid (IM i) li (finite_trace_last is tr i, iom)
Htx: (let (i, li) := l in let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)

equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX ++ [item], initial_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors', initial_descriptors: equivocator_descriptors IM
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
trX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project final_descriptors' tr = Some (trX, initial_descriptors)
HtrX: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Free) (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) trX
HinitX: initial_state_prop (equivocators_state_project IM initial_descriptors is)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
l: composite_label (equivocator_IM IM)
Hinit: composite_initial_state_prop (equivocator_IM IM) is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors s
item: composite_transition_item IM
Hpr_app: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, initial_descriptors) ∧ trX = preX ++ sufX)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Heq_last_tr: finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 l) (finite_trace_last is tr (projT1 l))
Hex_new: previous_state_descriptor_prop (IM (projT1 l)) (final_descriptors (projT1 l)) (finite_trace_last is tr (projT1 l)) (final_descriptors' (projT1 l))
Hchar2: sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := VLSM.l item in valid li (sx i, input item)) ∧ (let (i, li) := VLSM.l item in let (si', om') := transition li (sx i, input item) in (state_update IM sx i si', om')) = (destination item, output item)
Hchar1: ( Hex : existing_equivocator_label (IM (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM (projT1 l)) (projT2 l) Hex) = VLSM.l item) ∧ iom = input item ∧ oom = output item ∧ equivocators_state_project IM final_descriptors s = destination item ∧ final_descriptors' (projT1 l) = equivocator_label_descriptor (projT2 l)
Hpr_x: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (Some item, final_descriptors')
Hvx: let (i, li) := l in equivocator_valid (IM i) li (finite_trace_last is tr i, iom)
Htx: (let (i, li) := l in let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)
finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Free) (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors s) (trX ++ [item])
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors', initial_descriptors: equivocator_descriptors IM
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
trX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project final_descriptors' tr = Some (trX, initial_descriptors)
HtrX: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Free) (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) trX
HinitX: initial_state_prop (equivocators_state_project IM initial_descriptors is)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
l: composite_label (equivocator_IM IM)
Hinit: composite_initial_state_prop (equivocator_IM IM) is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors s
item: composite_transition_item IM
Hpr_app: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, initial_descriptors) ∧ trX = preX ++ sufX)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Heq_last_tr: finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 l) (finite_trace_last is tr (projT1 l))
Hex_new: previous_state_descriptor_prop (IM (projT1 l)) (final_descriptors (projT1 l)) (finite_trace_last is tr (projT1 l)) (final_descriptors' (projT1 l))
Hchar2: sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := VLSM.l item in valid li (sx i, input item)) ∧ (let (i, li) := VLSM.l item in let (si', om') := transition li (sx i, input item) in (state_update IM sx i si', om')) = (destination item, output item)
Hchar1: ( Hex : existing_equivocator_label (IM (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM (projT1 l)) (projT2 l) Hex) = VLSM.l item) ∧ iom = input item ∧ oom = output item ∧ equivocators_state_project IM final_descriptors s = destination item ∧ final_descriptors' (projT1 l) = equivocator_label_descriptor (projT2 l)
Hpr_x: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (Some item, final_descriptors')
Hvx: let (i, li) := l in equivocator_valid (IM i) li (finite_trace_last is tr i, iom)
Htx: (let (i, li) := l in let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)

equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX ++ [item], initial_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors', initial_descriptors: equivocator_descriptors IM
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
trX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project final_descriptors' tr = Some (trX, initial_descriptors)
HtrX: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Free) (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) trX
HinitX: initial_state_prop (equivocators_state_project IM initial_descriptors is)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
l: composite_label (equivocator_IM IM)
Hinit: composite_initial_state_prop (equivocator_IM IM) is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors s
item: composite_transition_item IM
Hpr_app: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, initial_descriptors) ∧ trX = preX ++ sufX)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Heq_last_tr: finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 l) (finite_trace_last is tr (projT1 l))
Hex_new: previous_state_descriptor_prop (IM (projT1 l)) (final_descriptors (projT1 l)) (finite_trace_last is tr (projT1 l)) (final_descriptors' (projT1 l))
Hchar2: sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := VLSM.l item in valid li (sx i, input item)) ∧ (let (i, li) := VLSM.l item in let (si', om') := transition li (sx i, input item) in (state_update IM sx i si', om')) = (destination item, output item)
Hchar1: ( Hex : existing_equivocator_label (IM (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM (projT1 l)) (projT2 l) Hex) = VLSM.l item) ∧ iom = input item ∧ oom = output item ∧ equivocators_state_project IM final_descriptors s = destination item ∧ final_descriptors' (projT1 l) = equivocator_label_descriptor (projT2 l)
Hpr_x: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (Some item, final_descriptors')
Hvx: let (i, li) := l in equivocator_valid (IM i) li (finite_trace_last is tr i, iom)
Htx: (let (i, li) := l in let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)

(preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, initial_descriptors) ∧ trX ++ [item] = preX ++ sufX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors', initial_descriptors: equivocator_descriptors IM
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
trX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project final_descriptors' tr = Some (trX, initial_descriptors)
HtrX: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Free) (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) trX
HinitX: initial_state_prop (equivocators_state_project IM initial_descriptors is)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
l: composite_label (equivocator_IM IM)
Hinit: composite_initial_state_prop (equivocator_IM IM) is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors s
item: composite_transition_item IM
Hpr_app: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, initial_descriptors) ∧ trX = preX ++ sufX)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Heq_last_tr: finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 l) (finite_trace_last is tr (projT1 l))
Hex_new: previous_state_descriptor_prop (IM (projT1 l)) (final_descriptors (projT1 l)) (finite_trace_last is tr (projT1 l)) (final_descriptors' (projT1 l))
Hchar2: sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := VLSM.l item in valid li (sx i, input item)) ∧ (let (i, li) := VLSM.l item in let (si', om') := transition li (sx i, input item) in (state_update IM sx i si', om')) = (destination item, output item)
Hchar1: ( Hex : existing_equivocator_label (IM (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM (projT1 l)) (projT2 l) Hex) = VLSM.l item) ∧ iom = input item ∧ oom = output item ∧ equivocators_state_project IM final_descriptors s = destination item ∧ final_descriptors' (projT1 l) = equivocator_label_descriptor (projT2 l)
Hpr_x: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (Some item, final_descriptors')
Hvx: let (i, li) := l in equivocator_valid (IM i) li (finite_trace_last is tr i, iom)
Htx: (let (i, li) := l in let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)

match equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some ([item], final_descriptors') ∧ equivocators_trace_project final_descriptors' tr = Some (trX, initial_descriptors) ∧ trX ++ [item] = trX ++ [item]
by rewrite Hpr_x.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors', initial_descriptors: equivocator_descriptors IM
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
trX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project final_descriptors' tr = Some (trX, initial_descriptors)
HtrX: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Free) (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) trX
HinitX: initial_state_prop (equivocators_state_project IM initial_descriptors is)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
l: composite_label (equivocator_IM IM)
Hinit: composite_initial_state_prop (equivocator_IM IM) is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors s
item: composite_transition_item IM
Hpr_app: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, initial_descriptors) ∧ trX = preX ++ sufX)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Heq_last_tr: finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 l) (finite_trace_last is tr (projT1 l))
Hex_new: previous_state_descriptor_prop (IM (projT1 l)) (final_descriptors (projT1 l)) (finite_trace_last is tr (projT1 l)) (final_descriptors' (projT1 l))
Hchar2: sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := VLSM.l item in valid li (sx i, input item)) ∧ (let (i, li) := VLSM.l item in let (si', om') := transition li (sx i, input item) in (state_update IM sx i si', om')) = (destination item, output item)
Hchar1: ( Hex : existing_equivocator_label (IM (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM (projT1 l)) (projT2 l) Hex) = VLSM.l item) ∧ iom = input item ∧ oom = output item ∧ equivocators_state_project IM final_descriptors s = destination item ∧ final_descriptors' (projT1 l) = equivocator_label_descriptor (projT2 l)
Hpr_x: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (Some item, final_descriptors')
Hvx: let (i, li) := l in equivocator_valid (IM i) li (finite_trace_last is tr i, iom)
Htx: (let (i, li) := l in let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)

finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Free) (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors s) (trX ++ [item])
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors', initial_descriptors: equivocator_descriptors IM
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
trX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project final_descriptors' tr = Some (trX, initial_descriptors)
HtrX: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Free) (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) trX
HinitX: initial_state_prop (equivocators_state_project IM initial_descriptors is)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
l: composite_label (equivocator_IM IM)
Hinit: composite_initial_state_prop (equivocator_IM IM) is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors s
item: composite_transition_item IM
Hpr_app: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, initial_descriptors) ∧ trX = preX ++ sufX)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Heq_last_tr: finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 l) (finite_trace_last is tr (projT1 l))
Hex_new: previous_state_descriptor_prop (IM (projT1 l)) (final_descriptors (projT1 l)) (finite_trace_last is tr (projT1 l)) (final_descriptors' (projT1 l))
Hchar2: sx : composite_state IM, sx = equivocators_state_project IM final_descriptors' (finite_trace_last is tr) → (let (i, li) := VLSM.l item in valid li (sx i, input item)) ∧ (let (i, li) := VLSM.l item in let (si', om') := transition li (sx i, input item) in (state_update IM sx i si', om')) = (destination item, output item)
Hchar1: ( Hex : existing_equivocator_label (IM (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM (projT1 l)) (projT2 l) Hex) = VLSM.l item) ∧ iom = input item ∧ oom = output item ∧ equivocators_state_project IM final_descriptors s = destination item ∧ final_descriptors' (projT1 l) = equivocator_label_descriptor (projT2 l)
Hpr_x: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (Some item, final_descriptors')
Hvx: let (i, li) := l in equivocator_valid (IM i) li (finite_trace_last is tr i, iom)
Htx: (let (i, li) := l in let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)

finite_valid_trace_from_to PreFree (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) (equivocators_state_project IM final_descriptors s) [item]
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors', initial_descriptors: equivocator_descriptors IM
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
trX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project final_descriptors' tr = Some (trX, initial_descriptors)
HtrX: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Free) (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) trX
HinitX: initial_state_prop (equivocators_state_project IM initial_descriptors is)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
l: composite_label (equivocator_IM IM)
Hinit: composite_initial_state_prop (equivocator_IM IM) is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors s
item: composite_transition_item IM
Hpr_app: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, initial_descriptors) ∧ trX = preX ++ sufX)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Heq_last_tr: finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 l) (finite_trace_last is tr (projT1 l))
Hex_new: previous_state_descriptor_prop (IM (projT1 l)) (final_descriptors (projT1 l)) (finite_trace_last is tr (projT1 l)) (final_descriptors' (projT1 l))
Hchar2: (let (i, li) := VLSM.l item in valid li (equivocators_state_project IM final_descriptors' (finite_trace_last is tr) i, input item)) ∧ (let (i, li) := VLSM.l item in let (si', om') := transition li (equivocators_state_project IM final_descriptors' (finite_trace_last is tr) i, input item) in (state_update IM (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) i si', om')) = (destination item, output item)
Hchar1: ( Hex : existing_equivocator_label (IM (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM (projT1 l)) (projT2 l) Hex) = VLSM.l item) ∧ iom = input item ∧ oom = output item ∧ equivocators_state_project IM final_descriptors s = destination item ∧ final_descriptors' (projT1 l) = equivocator_label_descriptor (projT2 l)
Hpr_x: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (Some item, final_descriptors')
Hvx: let (i, li) := l in equivocator_valid (IM i) li (finite_trace_last is tr i, iom)
Htx: (let (i, li) := l in let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)

finite_valid_trace_from_to PreFree (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) (equivocators_state_project IM final_descriptors s) [item]
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors', initial_descriptors: equivocator_descriptors IM
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
trX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project final_descriptors' tr = Some (trX, initial_descriptors)
HtrX: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Free) (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) trX
HinitX: initial_state_prop (equivocators_state_project IM initial_descriptors is)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
l: composite_label (equivocator_IM IM)
Hinit: composite_initial_state_prop (equivocator_IM IM) is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors s
l0: label (composite_type IM)
input: option message
destination: state (composite_type IM)
output: option message
Hpr_app: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, initial_descriptors) ∧ trX = preX ++ sufX)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Heq_last_tr: finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 l) (finite_trace_last is tr (projT1 l))
Hex_new: previous_state_descriptor_prop (IM (projT1 l)) (final_descriptors (projT1 l)) (finite_trace_last is tr (projT1 l)) (final_descriptors' (projT1 l))
Hchar2: (let (i, li) := VLSM.l {| l := l0; input := input; destination := destination; output := output |} in valid li (equivocators_state_project IM final_descriptors' (finite_trace_last is tr) i, VLSM.input {| l := l0; input := input; destination := destination; output := output |})) ∧ (let (i, li) := VLSM.l {| l := l0; input := input; destination := destination; output := output |} in let (si', om') := transition li (equivocators_state_project IM final_descriptors' (finite_trace_last is tr) i, VLSM.input {| l := l0; input := input; destination := destination; output := output |}) in (state_update IM (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) i si', om')) = (VLSM.destination {| l := l0; input := input; destination := destination; output := output |}, VLSM.output {| l := l0; input := input; destination := destination; output := output |})
Hchar1: ( Hex : existing_equivocator_label (IM (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM (projT1 l)) (projT2 l) Hex) = VLSM.l {| l := l0; input := input; destination := destination; output := output |}) ∧ iom = VLSM.input {| l := l0; input := input; destination := destination; output := output |} ∧ oom = VLSM.output {| l := l0; input := input; destination := destination; output := output |} ∧ equivocators_state_project IM final_descriptors s = VLSM.destination {| l := l0; input := input; destination := destination; output := output |} ∧ final_descriptors' (projT1 l) = equivocator_label_descriptor (projT2 l)
Hpr_x: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (Some {| l := l0; input := input; destination := destination; output := output |}, final_descriptors')
Hvx: let (i, li) := l in equivocator_valid (IM i) li (finite_trace_last is tr i, iom)
Htx: (let (i, li) := l in let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)

finite_valid_trace_from_to PreFree (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) (equivocators_state_project IM final_descriptors s) [{| l := l0; input := input; destination := destination; output := output |}]
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors', initial_descriptors: equivocator_descriptors IM
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
trX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project final_descriptors' tr = Some (trX, initial_descriptors)
HtrX: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Free) (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) trX
HinitX: initial_state_prop (equivocators_state_project IM initial_descriptors is)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
l: composite_label (equivocator_IM IM)
Hinit: composite_initial_state_prop (equivocator_IM IM) is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors s
ix: index
lix: label (IM ix)
input: option message
destination: state (composite_type IM)
output: option message
Hpr_app: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, initial_descriptors) ∧ trX = preX ++ sufX)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Heq_last_tr: finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 l) (finite_trace_last is tr (projT1 l))
Hex_new: previous_state_descriptor_prop (IM (projT1 l)) (final_descriptors (projT1 l)) (finite_trace_last is tr (projT1 l)) (final_descriptors' (projT1 l))
Hchar2: (let (i, li) := VLSM.l {| l := existT ix lix; input := input; destination := destination; output := output |} in valid li (equivocators_state_project IM final_descriptors' (finite_trace_last is tr) i, VLSM.input {| l := existT ix lix; input := input; destination := destination; output := output |})) ∧ (let (i, li) := VLSM.l {| l := existT ix lix; input := input; destination := destination; output := output |} in let (si', om') := transition li (equivocators_state_project IM final_descriptors' (finite_trace_last is tr) i, VLSM.input {| l := existT ix lix; input := input; destination := destination; output := output |}) in (state_update IM (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) i si', om')) = (VLSM.destination {| l := existT ix lix; input := input; destination := destination; output := output |}, VLSM.output {| l := existT ix lix; input := input; destination := destination; output := output |})
Hchar1: ( Hex : existing_equivocator_label (IM (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM (projT1 l)) (projT2 l) Hex) = VLSM.l {| l := existT ix lix; input := input; destination := destination; output := output |}) ∧ iom = VLSM.input {| l := existT ix lix; input := input; destination := destination; output := output |} ∧ oom = VLSM.output {| l := existT ix lix; input := input; destination := destination; output := output |} ∧ equivocators_state_project IM final_descriptors s = VLSM.destination {| l := existT ix lix; input := input; destination := destination; output := output |} ∧ final_descriptors' (projT1 l) = equivocator_label_descriptor (projT2 l)
Hpr_x: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (Some {| l := existT ix lix; input := input; destination := destination; output := output |}, final_descriptors')
Hvx: let (i, li) := l in equivocator_valid (IM i) li (finite_trace_last is tr i, iom)
Htx: (let (i, li) := l in let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)

finite_valid_trace_from_to PreFree (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) (equivocators_state_project IM final_descriptors s) [{| l := existT ix lix; input := input; destination := destination; output := output |}]
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors', initial_descriptors: equivocator_descriptors IM
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
trX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project final_descriptors' tr = Some (trX, initial_descriptors)
HtrX: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Free) (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) trX
HinitX: initial_state_prop (equivocators_state_project IM initial_descriptors is)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
i: index
li: label (equivocator_IM IM i)
Hinit: composite_initial_state_prop (equivocator_IM IM) is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors s
ix: index
lix: label (IM ix)
input: option message
destination: state (composite_type IM)
output: option message
Hpr_app: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := existT i li; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocators_transition_item_project final_descriptors {| l := existT i li; input := iom; destination := s; output := oom |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, initial_descriptors) ∧ trX = preX ++ sufX)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 (existT i li)) (final_descriptors' (projT1 (existT i li)))
Heq_last_tr: finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 (existT i li)) (finite_trace_last is tr (projT1 (existT i li)))
Hex_new: previous_state_descriptor_prop (IM (projT1 (existT i li))) (final_descriptors (projT1 (existT i li))) (finite_trace_last is tr (projT1 (existT i li))) (final_descriptors' (projT1 (existT i li)))
Hchar2: (let (i, li) := l {| l := existT ix lix; input := input; destination := destination; output := output |} in valid li (equivocators_state_project IM final_descriptors' (finite_trace_last is tr) i, VLSM.input {| l := existT ix lix; input := input; destination := destination; output := output |})) ∧ (let (i, li) := l {| l := existT ix lix; input := input; destination := destination; output := output |} in let (si', om') := transition li (equivocators_state_project IM final_descriptors' (finite_trace_last is tr) i, VLSM.input {| l := existT ix lix; input := input; destination := destination; output := output |}) in (state_update IM (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) i si', om')) = (VLSM.destination {| l := existT ix lix; input := input; destination := destination; output := output |}, VLSM.output {| l := existT ix lix; input := input; destination := destination; output := output |})
Hchar1: ( Hex : existing_equivocator_label (IM (projT1 (existT i li))) (projT2 (existT i li)), existT (projT1 (existT i li)) (existing_equivocator_label_extract (IM (projT1 (existT i li))) (projT2 (existT i li)) Hex) = l {| l := existT ix lix; input := input; destination := destination; output := output |}) ∧ iom = VLSM.input {| l := existT ix lix; input := input; destination := destination; output := output |} ∧ oom = VLSM.output {| l := existT ix lix; input := input; destination := destination; output := output |} ∧ equivocators_state_project IM final_descriptors s = VLSM.destination {| l := existT ix lix; input := input; destination := destination; output := output |} ∧ final_descriptors' (projT1 (existT i li)) = equivocator_label_descriptor (projT2 (existT i li))
Hpr_x: equivocators_transition_item_project final_descriptors {| l := existT i li; input := iom; destination := s; output := oom |} = Some (Some {| l := existT ix lix; input := input; destination := destination; output := output |}, final_descriptors')
Hvx: equivocator_valid (IM i) li (finite_trace_last is tr i, iom)
Htx: (let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)

finite_valid_trace_from_to PreFree (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) (equivocators_state_project IM final_descriptors s) [{| l := existT ix lix; input := input; destination := destination; output := output |}]
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors', initial_descriptors: equivocator_descriptors IM
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
trX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project final_descriptors' tr = Some (trX, initial_descriptors)
HtrX: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Free) (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) trX
HinitX: composite_initial_state_prop IM (equivocators_state_project IM initial_descriptors is)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
i: index
li: EquivocatorLabel (IM i)
Hinit: composite_initial_state_prop (equivocator_IM IM) is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors s
ix: index
lix: label (IM ix)
input: option message
destination: composite_state IM
output: option message
Hpr_app: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := existT i li; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocators_transition_item_project final_descriptors {| l := existT i li; input := iom; destination := s; output := oom |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, initial_descriptors) ∧ trX = preX ++ sufX)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors i (final_descriptors' i)
Heq_last_tr: finite_trace_last is tr = state_update (equivocator_IM IM) s i (finite_trace_last is tr i)
Hex_new: previous_state_descriptor_prop (IM i) (final_descriptors i) (finite_trace_last is tr i) (final_descriptors' i)
Hchar2: valid lix (equivocators_state_project IM final_descriptors' (finite_trace_last is tr) ix, input) ∧ (let (si', om') := transition lix (equivocators_state_project IM final_descriptors' (finite_trace_last is tr) ix, input) in (state_update IM (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) ix si', om')) = (destination, output)
Hchar1: ( Hex : existing_equivocator_label (IM i) li, existT i (existing_equivocator_label_extract (IM i) li Hex) = existT ix lix) ∧ iom = input ∧ oom = output ∧ equivocators_state_project IM final_descriptors s = destination ∧ final_descriptors' i = equivocator_label_descriptor li
Hpr_x: equivocators_transition_item_project final_descriptors {| l := existT i li; input := iom; destination := s; output := oom |} = Some (Some {| l := existT ix lix; input := input; destination := destination; output := output |}, final_descriptors')
Hvx: equivocator_valid (IM i) li (finite_trace_last is tr i, iom)
Htx: (let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)

finite_valid_trace_from_to PreFree (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) (equivocators_state_project IM final_descriptors s) [{| l := existT ix lix; input := input; destination := destination; output := output |}]
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors', initial_descriptors: equivocator_descriptors IM
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
trX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project final_descriptors' tr = Some (trX, initial_descriptors)
HtrX: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Free) (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) trX
HinitX: composite_initial_state_prop IM (equivocators_state_project IM initial_descriptors is)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
i: index
li: EquivocatorLabel (IM i)
Hinit: composite_initial_state_prop (equivocator_IM IM) is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors s
ix: index
lix: label (IM ix)
input: option message
destination: composite_state IM
output: option message
Hpr_app: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := existT i li; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocators_transition_item_project final_descriptors {| l := existT i li; input := iom; destination := s; output := oom |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, initial_descriptors) ∧ trX = preX ++ sufX)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors i (final_descriptors' i)
Heq_last_tr: finite_trace_last is tr = state_update (equivocator_IM IM) s i (finite_trace_last is tr i)
Hex_new: previous_state_descriptor_prop (IM i) (final_descriptors i) (finite_trace_last is tr i) (final_descriptors' i)
Hchar2: valid lix (equivocators_state_project IM final_descriptors' (finite_trace_last is tr) ix, input) ∧ (let (si', om') := transition lix (equivocators_state_project IM final_descriptors' (finite_trace_last is tr) ix, input) in (state_update IM (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) ix si', om')) = (destination, output)
Hex: existing_equivocator_label (IM i) li
Heq_l: existT i (existing_equivocator_label_extract (IM i) li Hex) = existT ix lix
Heq_input: iom = input
Heq_output: oom = output
Hpr_s: equivocators_state_project IM final_descriptors s = destination
Heq_descli: final_descriptors' i = equivocator_label_descriptor li
Hpr_x: equivocators_transition_item_project final_descriptors {| l := existT i li; input := iom; destination := s; output := oom |} = Some (Some {| l := existT ix lix; input := input; destination := destination; output := output |}, final_descriptors')
Hvx: equivocator_valid (IM i) li (finite_trace_last is tr i, iom)
Htx: (let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)

finite_valid_trace_from_to PreFree (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) (equivocators_state_project IM final_descriptors s) [{| l := existT ix lix; input := input; destination := destination; output := output |}]
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors', initial_descriptors: equivocator_descriptors IM
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
trX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project final_descriptors' tr = Some (trX, initial_descriptors)
HtrX: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Free) (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) trX
HinitX: composite_initial_state_prop IM (equivocators_state_project IM initial_descriptors is)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
ix: index
li: EquivocatorLabel (IM ix)
Hinit: composite_initial_state_prop (equivocator_IM IM) is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors s
input, output: option message
Hpr_app: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := existT ix li; input := input; destination := s; output := output |}]) = Some (trX, initial_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocators_transition_item_project final_descriptors {| l := existT ix li; input := input; destination := s; output := output |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, initial_descriptors) ∧ trX = preX ++ sufX)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Hex_new: previous_state_descriptor_prop (IM ix) (final_descriptors ix) (finite_trace_last is tr ix) (final_descriptors' ix)
Heq_last_tr: finite_trace_last is tr = state_update (equivocator_IM IM) s ix (finite_trace_last is tr ix)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors ix (final_descriptors' ix)
Hex: existing_equivocator_label (IM ix) li
Hpr_x: equivocators_transition_item_project final_descriptors {| l := existT ix li; input := input; destination := s; output := output |} = Some (Some {| l := existT ix (existing_equivocator_label_extract (IM ix) li Hex); input := input; destination := equivocators_state_project IM final_descriptors s; output := output |}, final_descriptors')
Hchar2: valid (existing_equivocator_label_extract (IM ix) li Hex) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr) ix, input) ∧ (let (si', om') := transition (existing_equivocator_label_extract (IM ix) li Hex) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr) ix, input) in (state_update IM (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) ix si', om')) = (equivocators_state_project IM final_descriptors s, output)
Hvx: equivocator_valid (IM ix) li (finite_trace_last is tr ix, input)
Htx: (let (si', om') := equivocator_transition (IM ix) li (finite_trace_last is tr ix, input) in (state_update (equivocator_IM IM) (finite_trace_last is tr) ix si', om')) = (s, output)
Heq_descli: final_descriptors' ix = equivocator_label_descriptor li

finite_valid_trace_from_to PreFree (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) (equivocators_state_project IM final_descriptors s) [{| l := existT ix (existing_equivocator_label_extract (IM ix) li Hex); input := input; destination := equivocators_state_project IM final_descriptors s; output := output |}]
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors', initial_descriptors: equivocator_descriptors IM
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
trX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project final_descriptors' tr = Some (trX, initial_descriptors)
HtrX: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Free) (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) trX
HinitX: composite_initial_state_prop IM (equivocators_state_project IM initial_descriptors is)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
ix: index
li: EquivocatorLabel (IM ix)
Hinit: composite_initial_state_prop (equivocator_IM IM) is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors s
input, output: option message
Hpr_app: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := existT ix li; input := input; destination := s; output := output |}]) = Some (trX, initial_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocators_transition_item_project final_descriptors {| l := existT ix li; input := input; destination := s; output := output |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, initial_descriptors) ∧ trX = preX ++ sufX)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Hex_new: previous_state_descriptor_prop (IM ix) (final_descriptors ix) (finite_trace_last is tr ix) (final_descriptors' ix)
Heq_last_tr: finite_trace_last is tr = state_update (equivocator_IM IM) s ix (finite_trace_last is tr ix)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors ix (final_descriptors' ix)
Hex: existing_equivocator_label (IM ix) li
Hpr_x: equivocators_transition_item_project final_descriptors {| l := existT ix li; input := input; destination := s; output := output |} = Some (Some {| l := existT ix (existing_equivocator_label_extract (IM ix) li Hex); input := input; destination := equivocators_state_project IM final_descriptors s; output := output |}, final_descriptors')
Hvx_pr: valid (existing_equivocator_label_extract (IM ix) li Hex) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr) ix, input)
Htx_pr: (let (si', om') := transition (existing_equivocator_label_extract (IM ix) li Hex) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr) ix, input) in (state_update IM (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) ix si', om')) = (equivocators_state_project IM final_descriptors s, output)
Hvx: equivocator_valid (IM ix) li (finite_trace_last is tr ix, input)
Htx: (let (si', om') := equivocator_transition (IM ix) li (finite_trace_last is tr ix, input) in (state_update (equivocator_IM IM) (finite_trace_last is tr) ix si', om')) = (s, output)
Heq_descli: final_descriptors' ix = equivocator_label_descriptor li

finite_valid_trace_from_to PreFree (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) (equivocators_state_project IM final_descriptors s) [{| l := existT ix (existing_equivocator_label_extract (IM ix) li Hex); input := input; destination := equivocators_state_project IM final_descriptors s; output := output |}]
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors', initial_descriptors: equivocator_descriptors IM
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
trX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project final_descriptors' tr = Some (trX, initial_descriptors)
HtrX: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Free) (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) trX
HinitX: composite_initial_state_prop IM (equivocators_state_project IM initial_descriptors is)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
ix: index
li: EquivocatorLabel (IM ix)
Hinit: composite_initial_state_prop (equivocator_IM IM) is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors s
input, output: option message
Hpr_app: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := existT ix li; input := input; destination := s; output := output |}]) = Some (trX, initial_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocators_transition_item_project final_descriptors {| l := existT ix li; input := input; destination := s; output := output |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, initial_descriptors) ∧ trX = preX ++ sufX)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Hex_new: previous_state_descriptor_prop (IM ix) (final_descriptors ix) (finite_trace_last is tr ix) (final_descriptors' ix)
Heq_last_tr: finite_trace_last is tr = state_update (equivocator_IM IM) s ix (finite_trace_last is tr ix)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors ix (final_descriptors' ix)
Hex: existing_equivocator_label (IM ix) li
Hpr_x: equivocators_transition_item_project final_descriptors {| l := existT ix li; input := input; destination := s; output := output |} = Some (Some {| l := existT ix (existing_equivocator_label_extract (IM ix) li Hex); input := input; destination := equivocators_state_project IM final_descriptors s; output := output |}, final_descriptors')
Hvx_pr: valid (existing_equivocator_label_extract (IM ix) li Hex) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr) ix, input)
Htx_pr: (let (si', om') := transition (existing_equivocator_label_extract (IM ix) li Hex) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr) ix, input) in (state_update IM (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) ix si', om')) = (equivocators_state_project IM final_descriptors s, output)
Hvx: equivocator_valid (IM ix) li (finite_trace_last is tr ix, input)
Htx: (let (si', om') := equivocator_transition (IM ix) li (finite_trace_last is tr ix, input) in (state_update (equivocator_IM IM) (finite_trace_last is tr) ix si', om')) = (s, output)
Heq_descli: final_descriptors' ix = equivocator_label_descriptor li

input_valid_transition PreFree (existT ix (existing_equivocator_label_extract (IM ix) li Hex)) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr), input) (equivocators_state_project IM final_descriptors s, output)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors', initial_descriptors: equivocator_descriptors IM
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
trX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project final_descriptors' tr = Some (trX, initial_descriptors)
HtrX: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Free) (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) trX
HinitX: composite_initial_state_prop IM (equivocators_state_project IM initial_descriptors is)
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
ix: index
li: EquivocatorLabel (IM ix)
Hinit: composite_initial_state_prop (equivocator_IM IM) is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors s
input, output: option message
Hpr_app: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := existT ix li; input := input; destination := s; output := output |}]) = Some (trX, initial_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocators_transition_item_project final_descriptors {| l := existT ix li; input := input; destination := s; output := output |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, initial_descriptors) ∧ trX = preX ++ sufX)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Hex_new: previous_state_descriptor_prop (IM ix) (final_descriptors ix) (finite_trace_last is tr ix) (final_descriptors' ix)
Heq_last_tr: finite_trace_last is tr = state_update (equivocator_IM IM) s ix (finite_trace_last is tr ix)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors ix (final_descriptors' ix)
Hex: existing_equivocator_label (IM ix) li
Hpr_x: equivocators_transition_item_project final_descriptors {| l := existT ix li; input := input; destination := s; output := output |} = Some (Some {| l := existT ix (existing_equivocator_label_extract (IM ix) li Hex); input := input; destination := equivocators_state_project IM final_descriptors s; output := output |}, final_descriptors')
Hvx_pr: valid (existing_equivocator_label_extract (IM ix) li Hex) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr) ix, input)
Htx_pr: (let (si', om') := transition (existing_equivocator_label_extract (IM ix) li Hex) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr) ix, input) in (state_update IM (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) ix si', om')) = (equivocators_state_project IM final_descriptors s, output)
Hvx: equivocator_valid (IM ix) li (finite_trace_last is tr ix, input)
Htx: (let (si', om') := equivocator_transition (IM ix) li (finite_trace_last is tr ix, input) in (state_update (equivocator_IM IM) (finite_trace_last is tr) ix si', om')) = (s, output)
Heq_descli: final_descriptors' ix = equivocator_label_descriptor li

valid_state_prop PreFree (equivocators_state_project IM final_descriptors' (finite_trace_last is tr))
by apply finite_valid_trace_from_to_last_pstate in HtrX.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors', initial_descriptors: equivocator_descriptors IM
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
trX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project final_descriptors' tr = Some (trX, initial_descriptors)
HtrX: finite_constrained_trace_init_to Free (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) trX
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
l: composite_label (equivocator_IM IM)
Hinit: composite_initial_state_prop (equivocator_IM IM) is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors s
Hpr_app: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, initial_descriptors) ∧ trX = preX ++ sufX)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Heq_last_tr: finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 l) (finite_trace_last is tr (projT1 l))
Hex_new: previous_state_descriptor_prop (IM (projT1 l)) (final_descriptors (projT1 l)) (finite_trace_last is tr (projT1 l)) (final_descriptors' (projT1 l))
Hchar2: equivocators_state_project IM final_descriptors s = equivocators_state_project IM final_descriptors' (finite_trace_last is tr)
Hchar1: True
Hpr_x: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (None, final_descriptors')
Hvx: let (i, li) := l in equivocator_valid (IM i) li (finite_trace_last is tr i, iom)
Htx: (let (i, li) := l in let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)

trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors s) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors', initial_descriptors: equivocator_descriptors IM
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
trX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project final_descriptors' tr = Some (trX, initial_descriptors)
HtrX: finite_constrained_trace_init_to Free (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) trX
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
l: composite_label (equivocator_IM IM)
Hinit: composite_initial_state_prop (equivocator_IM IM) is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors s
Hpr_app: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, initial_descriptors) ∧ trX = preX ++ sufX)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Heq_last_tr: finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 l) (finite_trace_last is tr (projT1 l))
Hex_new: previous_state_descriptor_prop (IM (projT1 l)) (final_descriptors (projT1 l)) (finite_trace_last is tr (projT1 l)) (final_descriptors' (projT1 l))
Hchar2: equivocators_state_project IM final_descriptors s = equivocators_state_project IM final_descriptors' (finite_trace_last is tr)
Hchar1: True
Hpr_x: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (None, final_descriptors')
Hvx: let (i, li) := l in equivocator_valid (IM i) li (finite_trace_last is tr i, iom)
Htx: (let (i, li) := l in let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)

equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors s) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors', initial_descriptors: equivocator_descriptors IM
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
trX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project final_descriptors' tr = Some (trX, initial_descriptors)
HtrX: finite_constrained_trace_init_to Free (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) trX
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
l: composite_label (equivocator_IM IM)
Hinit: composite_initial_state_prop (equivocator_IM IM) is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors s
Hpr_app: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, initial_descriptors) ∧ trX = preX ++ sufX)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Heq_last_tr: finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 l) (finite_trace_last is tr (projT1 l))
Hex_new: previous_state_descriptor_prop (IM (projT1 l)) (final_descriptors (projT1 l)) (finite_trace_last is tr (projT1 l)) (final_descriptors' (projT1 l))
Hchar2: equivocators_state_project IM final_descriptors s = equivocators_state_project IM final_descriptors' (finite_trace_last is tr)
Hpr_x: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (None, final_descriptors')
Hvx: let (i, li) := l in equivocator_valid (IM i) li (finite_trace_last is tr i, iom)
Htx: (let (i, li) := l in let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)

equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors s) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors', initial_descriptors: equivocator_descriptors IM
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
trX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project final_descriptors' tr = Some (trX, initial_descriptors)
HtrX: finite_constrained_trace_init_to Free (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) trX
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
l: composite_label (equivocator_IM IM)
Hinit: composite_initial_state_prop (equivocator_IM IM) is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors s
Hpr_app: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, initial_descriptors) ∧ trX = preX ++ sufX)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Heq_last_tr: finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 l) (finite_trace_last is tr (projT1 l))
Hex_new: previous_state_descriptor_prop (IM (projT1 l)) (final_descriptors (projT1 l)) (finite_trace_last is tr (projT1 l)) (final_descriptors' (projT1 l))
Hchar2: equivocators_state_project IM final_descriptors s = equivocators_state_project IM final_descriptors' (finite_trace_last is tr)
Hpr_x: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (None, final_descriptors')
Hvx: let (i, li) := l in equivocator_valid (IM i) li (finite_trace_last is tr i, iom)
Htx: (let (i, li) := l in let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)

equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to Free (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors', initial_descriptors: equivocator_descriptors IM
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
trX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project final_descriptors' tr = Some (trX, initial_descriptors)
HtrX: finite_constrained_trace_init_to Free (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) trX
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
l: composite_label (equivocator_IM IM)
Hinit: composite_initial_state_prop (equivocator_IM IM) is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors s
Hpr_app: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, initial_descriptors) ∧ trX = preX ++ sufX)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Heq_last_tr: finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 l) (finite_trace_last is tr (projT1 l))
Hex_new: previous_state_descriptor_prop (IM (projT1 l)) (final_descriptors (projT1 l)) (finite_trace_last is tr (projT1 l)) (final_descriptors' (projT1 l))
Hchar2: equivocators_state_project IM final_descriptors s = equivocators_state_project IM final_descriptors' (finite_trace_last is tr)
Hpr_x: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (None, final_descriptors')
Hvx: let (i, li) := l in equivocator_valid (IM i) li (finite_trace_last is tr i, iom)
Htx: (let (i, li) := l in let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)

equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors', initial_descriptors: equivocator_descriptors IM
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
trX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project final_descriptors' tr = Some (trX, initial_descriptors)
HtrX: finite_constrained_trace_init_to Free (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) trX
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
l: composite_label (equivocator_IM IM)
Hinit: composite_initial_state_prop (equivocator_IM IM) is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors s
Hpr_app: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, initial_descriptors) ∧ trX = preX ++ sufX)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Heq_last_tr: finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 l) (finite_trace_last is tr (projT1 l))
Hex_new: previous_state_descriptor_prop (IM (projT1 l)) (final_descriptors (projT1 l)) (finite_trace_last is tr (projT1 l)) (final_descriptors' (projT1 l))
Hchar2: equivocators_state_project IM final_descriptors s = equivocators_state_project IM final_descriptors' (finite_trace_last is tr)
Hpr_x: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (None, final_descriptors')
Hvx: let (i, li) := l in equivocator_valid (IM i) li (finite_trace_last is tr i, iom)
Htx: (let (i, li) := l in let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)

(preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, initial_descriptors) ∧ trX = preX ++ sufX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
is: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors', initial_descriptors: equivocator_descriptors IM
Hproper_initial: proper_equivocator_descriptors IM initial_descriptors is
trX: list (composite_transition_item IM)
Hpr_tr: equivocators_trace_project final_descriptors' tr = Some (trX, initial_descriptors)
HtrX: finite_constrained_trace_init_to Free (equivocators_state_project IM initial_descriptors is) (equivocators_state_project IM final_descriptors' (finite_trace_last is tr)) trX
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm FreeE) is (finite_trace_last is tr) tr
s: composite_state (equivocator_IM IM)
iom, oom: option message
l: composite_label (equivocator_IM IM)
Hinit: composite_initial_state_prop (equivocator_IM IM) is
final_descriptors: equivocator_descriptors IM
Hproper: proper_equivocator_descriptors IM final_descriptors s
Hpr_app: trX : list (composite_transition_item IM), equivocators_trace_project final_descriptors (tr ++ [{| l := l; input := iom; destination := s; output := oom |}]) = Some (trX, initial_descriptors) ↔ ( (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), match equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr = Some (preX, initial_descriptors) ∧ trX = preX ++ sufX)
Hproper': proper_equivocator_descriptors IM final_descriptors' (finite_trace_last is tr)
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Heq_last_tr: finite_trace_last is tr = state_update (equivocator_IM IM) s (projT1 l) (finite_trace_last is tr (projT1 l))
Hex_new: previous_state_descriptor_prop (IM (projT1 l)) (final_descriptors (projT1 l)) (finite_trace_last is tr (projT1 l)) (final_descriptors' (projT1 l))
Hchar2: equivocators_state_project IM final_descriptors s = equivocators_state_project IM final_descriptors' (finite_trace_last is tr)
Hpr_x: equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (None, final_descriptors')
Hvx: let (i, li) := l in equivocator_valid (IM i) li (finite_trace_last is tr i, iom)
Htx: (let (i, li) := l in let (si', om') := equivocator_transition (IM i) li (finite_trace_last is tr i, iom) in (state_update (equivocator_IM IM) (finite_trace_last is tr) i si', om')) = (s, oom)

match equivocators_transition_item_project final_descriptors {| l := l; input := iom; destination := s; output := oom |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some ([], final_descriptors') ∧ equivocators_trace_project final_descriptors' tr = Some (trX, initial_descriptors) ∧ trX = trX ++ []
by rewrite Hpr_x, app_nil_r. Qed. Definition equivocators_partial_trace_project (final_descriptors : equivocator_descriptors IM) (str : composite_state (equivocator_IM IM) * list (composite_transition_item (equivocator_IM IM))) : option (composite_state IM * list (composite_transition_item IM)) := let (s, tr) := str in if (decide (not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last s tr))) then match equivocators_trace_project final_descriptors tr with | None => None | Some (trX, initial_descriptors) => Some (equivocators_state_project IM initial_descriptors s, trX) end else None.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
X:= free_composite_vlsm (equivocator_IM IM): VLSM message
partial_trace_project:= equivocators_partial_trace_project final_descriptors: composite_state (equivocator_IM IM) * list (composite_transition_item (equivocator_IM IM)) → option (composite_state IM * list (composite_transition_item IM))
sX: composite_state (equivocator_IM IM)
trX: list (composite_transition_item (equivocator_IM IM))
sY: composite_state IM
trY: list (composite_transition_item IM)

partial_trace_project (sX, trX) = Some (sY, trY) ↔ not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last sX trX) ∧ ( initial_descriptors : equivocator_descriptors IM, equivocators_trace_project final_descriptors trX = Some (trY, initial_descriptors) ∧ equivocators_state_project IM initial_descriptors sX = sY)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
X:= free_composite_vlsm (equivocator_IM IM): VLSM message
partial_trace_project:= equivocators_partial_trace_project final_descriptors: composite_state (equivocator_IM IM) * list (composite_transition_item (equivocator_IM IM)) → option (composite_state IM * list (composite_transition_item IM))
sX: composite_state (equivocator_IM IM)
trX: list (composite_transition_item (equivocator_IM IM))
sY: composite_state IM
trY: list (composite_transition_item IM)

partial_trace_project (sX, trX) = Some (sY, trY) ↔ not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last sX trX) ∧ ( initial_descriptors : equivocator_descriptors IM, equivocators_trace_project final_descriptors trX = Some (trY, initial_descriptors) ∧ equivocators_state_project IM initial_descriptors sX = sY)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
X:= free_composite_vlsm (equivocator_IM IM): VLSM message
partial_trace_project:= equivocators_partial_trace_project final_descriptors: composite_state (equivocator_IM IM) * list (composite_transition_item (equivocator_IM IM)) → option (composite_state IM * list (composite_transition_item IM))
sX: composite_state (equivocator_IM IM)
trX: list (composite_transition_item (equivocator_IM IM))
sY: composite_state IM
trY: list (composite_transition_item IM)

(if decide (not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last sX trX)) then match equivocators_trace_project final_descriptors trX with | Some (trX, initial_descriptors) => Some (equivocators_state_project IM initial_descriptors sX, trX) | None => None end else None) = Some (sY, trY) ↔ not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last sX trX) ∧ ( initial_descriptors : equivocator_descriptors IM, equivocators_trace_project final_descriptors trX = Some (trY, initial_descriptors) ∧ equivocators_state_project IM initial_descriptors sX = sY)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
X:= free_composite_vlsm (equivocator_IM IM): VLSM message
partial_trace_project:= equivocators_partial_trace_project final_descriptors: composite_state (equivocator_IM IM) * list (composite_transition_item (equivocator_IM IM)) → option (composite_state IM * list (composite_transition_item IM))
sX: composite_state (equivocator_IM IM)
trX: list (composite_transition_item (equivocator_IM IM))
sY: composite_state IM
trY: list (composite_transition_item IM)

(if decide (not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last sX trX)) then match equivocators_trace_project final_descriptors trX with | Some (trX, initial_descriptors) => Some (equivocators_state_project IM initial_descriptors sX, trX) | None => None end else None) = Some (sY, trY) → not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last sX trX) ∧ ( initial_descriptors : equivocator_descriptors IM, equivocators_trace_project final_descriptors trX = Some (trY, initial_descriptors) ∧ equivocators_state_project IM initial_descriptors sX = sY)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
X:= free_composite_vlsm (equivocator_IM IM): VLSM message
partial_trace_project:= equivocators_partial_trace_project final_descriptors: composite_state (equivocator_IM IM) * list (composite_transition_item (equivocator_IM IM)) → option (composite_state IM * list (composite_transition_item IM))
sX: composite_state (equivocator_IM IM)
trX: list (composite_transition_item (equivocator_IM IM))
sY: composite_state IM
trY: list (composite_transition_item IM)
not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last sX trX) ∧ ( initial_descriptors : equivocator_descriptors IM, equivocators_trace_project final_descriptors trX = Some (trY, initial_descriptors) ∧ equivocators_state_project IM initial_descriptors sX = sY) → (if decide (not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last sX trX)) then match equivocators_trace_project final_descriptors trX with | Some (trX, initial_descriptors) => Some (equivocators_state_project IM initial_descriptors sX, trX) | None => None end else None) = Some (sY, trY)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
X:= free_composite_vlsm (equivocator_IM IM): VLSM message
partial_trace_project:= equivocators_partial_trace_project final_descriptors: composite_state (equivocator_IM IM) * list (composite_transition_item (equivocator_IM IM)) → option (composite_state IM * list (composite_transition_item IM))
sX: composite_state (equivocator_IM IM)
trX: list (composite_transition_item (equivocator_IM IM))
sY: composite_state IM
trY: list (composite_transition_item IM)

(if decide (not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last sX trX)) then match equivocators_trace_project final_descriptors trX with | Some (trX, initial_descriptors) => Some (equivocators_state_project IM initial_descriptors sX, trX) | None => None end else None) = Some (sY, trY) → not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last sX trX) ∧ ( initial_descriptors : equivocator_descriptors IM, equivocators_trace_project final_descriptors trX = Some (trY, initial_descriptors) ∧ equivocators_state_project IM initial_descriptors sX = sY)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
X:= free_composite_vlsm (equivocator_IM IM): VLSM message
partial_trace_project:= equivocators_partial_trace_project final_descriptors: composite_state (equivocator_IM IM) * list (composite_transition_item (equivocator_IM IM)) → option (composite_state IM * list (composite_transition_item IM))
sX: composite_state (equivocator_IM IM)
trX: list (composite_transition_item (equivocator_IM IM))
sY: composite_state IM
trY: list (composite_transition_item IM)
Hpr_tr: (if decide (not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last sX trX)) then match equivocators_trace_project final_descriptors trX with | Some (trX, initial_descriptors) => Some (equivocators_state_project IM initial_descriptors sX, trX) | None => None end else None) = Some (sY, trY)

not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last sX trX) ∧ ( initial_descriptors : equivocator_descriptors IM, equivocators_trace_project final_descriptors trX = Some (trY, initial_descriptors) ∧ equivocators_state_project IM initial_descriptors sX = sY)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
X:= free_composite_vlsm (equivocator_IM IM): VLSM message
partial_trace_project:= equivocators_partial_trace_project final_descriptors: composite_state (equivocator_IM IM) * list (composite_transition_item (equivocator_IM IM)) → option (composite_state IM * list (composite_transition_item IM))
sX: composite_state (equivocator_IM IM)
trX: list (composite_transition_item (equivocator_IM IM))
sY: composite_state IM
trY: list (composite_transition_item IM)
H1: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last sX trX)
Hpr_tr: match equivocators_trace_project final_descriptors trX with | Some (trX, initial_descriptors) => Some (equivocators_state_project IM initial_descriptors sX, trX) | None => None end = Some (sY, trY)

not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last sX trX) ∧ ( initial_descriptors : equivocator_descriptors IM, equivocators_trace_project final_descriptors trX = Some (trY, initial_descriptors) ∧ equivocators_state_project IM initial_descriptors sX = sY)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
X:= free_composite_vlsm (equivocator_IM IM): VLSM message
partial_trace_project:= equivocators_partial_trace_project final_descriptors: composite_state (equivocator_IM IM) * list (composite_transition_item (equivocator_IM IM)) → option (composite_state IM * list (composite_transition_item IM))
sX: composite_state (equivocator_IM IM)
trX: list (composite_transition_item (equivocator_IM IM))
sY: composite_state IM
trY: list (composite_transition_item IM)
H1: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last sX trX)
_trY: list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project final_descriptors trX = Some (_trY, initial_descriptors)
Hpr_tr: Some (equivocators_state_project IM initial_descriptors sX, _trY) = Some (sY, trY)

not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last sX trX) ∧ ( initial_descriptors0 : equivocator_descriptors IM, Some (_trY, initial_descriptors) = Some (trY, initial_descriptors0) ∧ equivocators_state_project IM initial_descriptors0 sX = sY)
by inversion Hpr_tr; subst _trY; clear Hpr_tr; eauto.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
X:= free_composite_vlsm (equivocator_IM IM): VLSM message
partial_trace_project:= equivocators_partial_trace_project final_descriptors: composite_state (equivocator_IM IM) * list (composite_transition_item (equivocator_IM IM)) → option (composite_state IM * list (composite_transition_item IM))
sX: composite_state (equivocator_IM IM)
trX: list (composite_transition_item (equivocator_IM IM))
sY: composite_state IM
trY: list (composite_transition_item IM)

not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last sX trX) ∧ ( initial_descriptors : equivocator_descriptors IM, equivocators_trace_project final_descriptors trX = Some (trY, initial_descriptors) ∧ equivocators_state_project IM initial_descriptors sX = sY) → (if decide (not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last sX trX)) then match equivocators_trace_project final_descriptors trX with | Some (trX, initial_descriptors) => Some (equivocators_state_project IM initial_descriptors sX, trX) | None => None end else None) = Some (sY, trY)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
X:= free_composite_vlsm (equivocator_IM IM): VLSM message
partial_trace_project:= equivocators_partial_trace_project final_descriptors: composite_state (equivocator_IM IM) * list (composite_transition_item (equivocator_IM IM)) → option (composite_state IM * list (composite_transition_item IM))
sX: composite_state (equivocator_IM IM)
trX: list (composite_transition_item (equivocator_IM IM))
sY: composite_state IM
trY: list (composite_transition_item IM)
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last sX trX)
initial_descriptors: equivocator_descriptors IM
Hpr_tr: equivocators_trace_project final_descriptors trX = Some (trY, initial_descriptors)
Hpr_s: equivocators_state_project IM initial_descriptors sX = sY

(if decide (not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last sX trX)) then match equivocators_trace_project final_descriptors trX with | Some (trX, initial_descriptors) => Some (equivocators_state_project IM initial_descriptors sX, trX) | None => None end else None) = Some (sY, trY)
by rewrite decide_True, Hpr_tr; subst. Qed.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
X:= free_composite_vlsm (equivocator_IM IM): VLSM message
partial_trace_project:= equivocators_partial_trace_project final_descriptors: composite_state (equivocator_IM IM) * list (composite_transition_item (equivocator_IM IM)) → option (composite_state IM * list (composite_transition_item IM))
sX: composite_state (equivocator_IM IM)
trX: list (composite_transition_item (equivocator_IM IM))
sY: composite_state IM
trY: list (composite_transition_item IM)
Hpr_tr: partial_trace_project (sX, trX) = Some (sY, trY)

not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last sX trX) ∧ ( initial_descriptors : equivocator_descriptors IM, equivocators_trace_project final_descriptors trX = Some (trY, initial_descriptors) ∧ equivocators_state_project IM initial_descriptors sX = sY)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
X:= free_composite_vlsm (equivocator_IM IM): VLSM message
partial_trace_project:= equivocators_partial_trace_project final_descriptors: composite_state (equivocator_IM IM) * list (composite_transition_item (equivocator_IM IM)) → option (composite_state IM * list (composite_transition_item IM))
sX: composite_state (equivocator_IM IM)
trX: list (composite_transition_item (equivocator_IM IM))
sY: composite_state IM
trY: list (composite_transition_item IM)
Hpr_tr: partial_trace_project (sX, trX) = Some (sY, trY)

not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last sX trX) ∧ ( initial_descriptors : equivocator_descriptors IM, equivocators_trace_project final_descriptors trX = Some (trY, initial_descriptors) ∧ equivocators_state_project IM initial_descriptors sX = sY)
exact (proj1 (equivocators_partial_trace_project_characterization final_descriptors sX trX sY trY) Hpr_tr). Qed.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
X:= free_composite_vlsm (equivocator_IM IM): VLSM message
partial_trace_project:= equivocators_partial_trace_project final_descriptors: composite_state (equivocator_IM IM) * list (composite_transition_item (equivocator_IM IM)) → option (composite_state IM * list (composite_transition_item IM))
sX: state (free_composite_vlsm (equivocator_IM IM))
trX: list transition_item
sY: state (free_composite_vlsm IM)
trY: list (composite_transition_item IM)
Hed: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last sX trX) ∧ ( initial_descriptors : equivocator_descriptors IM, equivocators_trace_project final_descriptors trX = Some (trY, initial_descriptors) ∧ equivocators_state_project IM initial_descriptors sX = sY)

partial_trace_project (sX, trX) = Some (sY, trY)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
X:= free_composite_vlsm (equivocator_IM IM): VLSM message
partial_trace_project:= equivocators_partial_trace_project final_descriptors: composite_state (equivocator_IM IM) * list (composite_transition_item (equivocator_IM IM)) → option (composite_state IM * list (composite_transition_item IM))
sX: state (free_composite_vlsm (equivocator_IM IM))
trX: list transition_item
sY: state (free_composite_vlsm IM)
trY: list (composite_transition_item IM)
Hed: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last sX trX) ∧ ( initial_descriptors : equivocator_descriptors IM, equivocators_trace_project final_descriptors trX = Some (trY, initial_descriptors) ∧ equivocators_state_project IM initial_descriptors sX = sY)

partial_trace_project (sX, trX) = Some (sY, trY)
exact (proj2 (equivocators_partial_trace_project_characterization final_descriptors sX trX sY trY) Hed). Qed.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
X:= free_composite_vlsm (equivocator_IM IM): VLSM message
partial_trace_project:= equivocators_partial_trace_project final_descriptors: composite_state (equivocator_IM IM) * list (composite_transition_item (equivocator_IM IM)) → option (composite_state IM * list (composite_transition_item IM))

(sX : composite_state (equivocator_IM IM)) (trX : list (composite_transition_item (equivocator_IM IM))) (sY : composite_state IM) (trY : list (composite_transition_item IM)), partial_trace_project (sX, trX) = Some (sY, trY) → (s'X : state (composite_type (equivocator_IM IM))) (preX : list transition_item), finite_trace_last s'X preX = sX → finite_constrained_trace_from X s'X (preX ++ trX) → (s'Y : composite_state IM) (preY : list (composite_transition_item IM)), partial_trace_project (s'X, preX ++ trX) = Some (s'Y, preY ++ trY) ∧ finite_trace_last s'Y preY = sY
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
X:= free_composite_vlsm (equivocator_IM IM): VLSM message
partial_trace_project:= equivocators_partial_trace_project final_descriptors: composite_state (equivocator_IM IM) * list (composite_transition_item (equivocator_IM IM)) → option (composite_state IM * list (composite_transition_item IM))

(sX : composite_state (equivocator_IM IM)) (trX : list (composite_transition_item (equivocator_IM IM))) (sY : composite_state IM) (trY : list (composite_transition_item IM)), partial_trace_project (sX, trX) = Some (sY, trY) → (s'X : state (composite_type (equivocator_IM IM))) (preX : list transition_item), finite_trace_last s'X preX = sX → finite_constrained_trace_from X s'X (preX ++ trX) → (s'Y : composite_state IM) (preY : list (composite_transition_item IM)), partial_trace_project (s'X, preX ++ trX) = Some (s'Y, preY ++ trY) ∧ finite_trace_last s'Y preY = sY
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
X:= free_composite_vlsm (equivocator_IM IM): VLSM message
partial_trace_project:= equivocators_partial_trace_project final_descriptors: composite_state (equivocator_IM IM) * list (composite_transition_item (equivocator_IM IM)) → option (composite_state IM * list (composite_transition_item IM))
s: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
sX: composite_state IM
trX: list (composite_transition_item IM)
Hpr_tr: partial_trace_project (s, tr) = Some (sX, trX)
s_pre: state (composite_type (equivocator_IM IM))
pre: list transition_item
Hs_lst: finite_trace_last s_pre pre = s
Hpre_tr: finite_constrained_trace_from X s_pre (pre ++ tr)

(s'Y : composite_state IM) (preY : list (composite_transition_item IM)), partial_trace_project (s_pre, pre ++ tr) = Some (s'Y, preY ++ trX) ∧ finite_trace_last s'Y preY = sX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
X:= free_composite_vlsm (equivocator_IM IM): VLSM message
partial_trace_project:= equivocators_partial_trace_project final_descriptors: composite_state (equivocator_IM IM) * list (composite_transition_item (equivocator_IM IM)) → option (composite_state IM * list (composite_transition_item IM))
s: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
sX: composite_state IM
trX: list (composite_transition_item IM)
Hpr_tr: partial_trace_project (s, tr) = Some (sX, trX)
s_pre: state (composite_type (equivocator_IM IM))
pre: list transition_item
Hs_lst: finite_trace_last s_pre pre = s
Hpre_tr: finite_constrained_trace_from X s_pre (pre ++ tr)
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)
Hs_project: equivocators_state_project IM initial_descriptors s = sX

(s'Y : composite_state IM) (preY : list (composite_transition_item IM)), partial_trace_project (s_pre, pre ++ tr) = Some (s'Y, preY ++ trX) ∧ finite_trace_last s'Y preY = sX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
X:= free_composite_vlsm (equivocator_IM IM): VLSM message
partial_trace_project:= equivocators_partial_trace_project final_descriptors: composite_state (equivocator_IM IM) * list (composite_transition_item (equivocator_IM IM)) → option (composite_state IM * list (composite_transition_item IM))
s: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
sX: composite_state IM
trX: list (composite_transition_item IM)
Hpr_tr: partial_trace_project (s, tr) = Some (sX, trX)
s_pre: state (composite_type (equivocator_IM IM))
pre: list transition_item
Hs_lst: finite_trace_last s_pre pre = s
Hpre_tr: finite_valid_trace_from PreFreeE s_pre pre ∧ finite_valid_trace_from PreFreeE (finite_trace_last s_pre pre) tr
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)
Hs_project: equivocators_state_project IM initial_descriptors s = sX

(s'Y : composite_state IM) (preY : list (composite_transition_item IM)), partial_trace_project (s_pre, pre ++ tr) = Some (s'Y, preY ++ trX) ∧ finite_trace_last s'Y preY = sX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
X:= free_composite_vlsm (equivocator_IM IM): VLSM message
partial_trace_project:= equivocators_partial_trace_project final_descriptors: composite_state (equivocator_IM IM) * list (composite_transition_item (equivocator_IM IM)) → option (composite_state IM * list (composite_transition_item IM))
s: composite_state (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
sX: composite_state IM
trX: list (composite_transition_item IM)
Hpr_tr: partial_trace_project (s, tr) = Some (sX, trX)
s_pre: state (composite_type (equivocator_IM IM))
pre: list transition_item
Hs_lst: finite_trace_last s_pre pre = s
Hpre: finite_valid_trace_from PreFreeE s_pre pre
Htr: finite_valid_trace_from PreFreeE (finite_trace_last s_pre pre) tr
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)
Hs_project: equivocators_state_project IM initial_descriptors s = sX

(s'Y : composite_state IM) (preY : list (composite_transition_item IM)), partial_trace_project (s_pre, pre ++ tr) = Some (s'Y, preY ++ trX) ∧ finite_trace_last s'Y preY = sX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
X:= free_composite_vlsm (equivocator_IM IM): VLSM message
partial_trace_project:= equivocators_partial_trace_project final_descriptors: composite_state (equivocator_IM IM) * list (composite_transition_item (equivocator_IM IM)) → option (composite_state IM * list (composite_transition_item IM))
tr: list (composite_transition_item (equivocator_IM IM))
trX: list (composite_transition_item IM)
s_pre: state (composite_type (equivocator_IM IM))
pre: list transition_item
initial_descriptors: equivocator_descriptors IM
Hpr_tr: partial_trace_project (finite_trace_last s_pre pre, tr) = Some (equivocators_state_project IM initial_descriptors (finite_trace_last s_pre pre), trX)
Hpre: finite_valid_trace_from PreFreeE s_pre pre
Htr: finite_valid_trace_from PreFreeE (finite_trace_last s_pre pre) tr
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last (finite_trace_last s_pre pre) tr)
Htr_project: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)

(s'Y : composite_state IM) (preY : list (composite_transition_item IM)), partial_trace_project (s_pre, pre ++ tr) = Some (s'Y, preY ++ trX) ∧ finite_trace_last s'Y preY = equivocators_state_project IM initial_descriptors (finite_trace_last s_pre pre)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
X:= free_composite_vlsm (equivocator_IM IM): VLSM message
partial_trace_project:= equivocators_partial_trace_project final_descriptors: composite_state (equivocator_IM IM) * list (composite_transition_item (equivocator_IM IM)) → option (composite_state IM * list (composite_transition_item IM))
tr: list (composite_transition_item (equivocator_IM IM))
trX: list (composite_transition_item IM)
s_pre: state (composite_type (equivocator_IM IM))
pre: list transition_item
initial_descriptors: equivocator_descriptors IM
Hpr_tr: partial_trace_project (finite_trace_last s_pre pre, tr) = Some (equivocators_state_project IM initial_descriptors (finite_trace_last s_pre pre), trX)
Hpre: finite_valid_trace_from PreFreeE s_pre pre
Htr: finite_valid_trace_from PreFreeE (finite_trace_last s_pre pre) tr
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last (finite_trace_last s_pre pre) tr)
Htr_project: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last (finite_trace_last s_pre pre) tr)

(s'Y : composite_state IM) (preY : list (composite_transition_item IM)), partial_trace_project (s_pre, pre ++ tr) = Some (s'Y, preY ++ trX) ∧ finite_trace_last s'Y preY = equivocators_state_project IM initial_descriptors (finite_trace_last s_pre pre)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
X:= free_composite_vlsm (equivocator_IM IM): VLSM message
partial_trace_project:= equivocators_partial_trace_project final_descriptors: composite_state (equivocator_IM IM) * list (composite_transition_item (equivocator_IM IM)) → option (composite_state IM * list (composite_transition_item IM))
tr: list (composite_transition_item (equivocator_IM IM))
trX: list (composite_transition_item IM)
s_pre: state (composite_type (equivocator_IM IM))
pre: list transition_item
initial_descriptors: equivocator_descriptors IM
Hpr_tr: partial_trace_project (finite_trace_last s_pre pre, tr) = Some (equivocators_state_project IM initial_descriptors (finite_trace_last s_pre pre), trX)
Hpre: finite_valid_trace_from PreFreeE s_pre pre
Htr: finite_valid_trace_from PreFreeE (finite_trace_last s_pre pre) tr
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last (finite_trace_last s_pre pre) tr)
Htr_project: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last (finite_trace_last s_pre pre) tr)
Hinitial_descriptors: proper_equivocator_descriptors IM initial_descriptors (finite_trace_last s_pre pre)

(s'Y : composite_state IM) (preY : list (composite_transition_item IM)), partial_trace_project (s_pre, pre ++ tr) = Some (s'Y, preY ++ trX) ∧ finite_trace_last s'Y preY = equivocators_state_project IM initial_descriptors (finite_trace_last s_pre pre)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
X:= free_composite_vlsm (equivocator_IM IM): VLSM message
partial_trace_project:= equivocators_partial_trace_project final_descriptors: composite_state (equivocator_IM IM) * list (composite_transition_item (equivocator_IM IM)) → option (composite_state IM * list (composite_transition_item IM))
tr: list (composite_transition_item (equivocator_IM IM))
trX: list (composite_transition_item IM)
s_pre: state (composite_type (equivocator_IM IM))
pre: list transition_item
initial_descriptors: equivocator_descriptors IM
Hpr_tr: partial_trace_project (finite_trace_last s_pre pre, tr) = Some (equivocators_state_project IM initial_descriptors (finite_trace_last s_pre pre), trX)
Hpre: finite_valid_trace_from PreFreeE s_pre pre
Htr: finite_valid_trace_from PreFreeE (finite_trace_last s_pre pre) tr
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last (finite_trace_last s_pre pre) tr)
Htr_project: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last (finite_trace_last s_pre pre) tr)
Hinitial_descriptors: proper_equivocator_descriptors IM initial_descriptors (finite_trace_last s_pre pre)
preX: list (composite_transition_item IM)
pre_descriptors: equivocator_descriptors IM
Hpre_project: equivocators_trace_project initial_descriptors pre = Some (preX, pre_descriptors)
Hpre_desciptors: proper_equivocator_descriptors IM pre_descriptors s_pre
Hs_project: equivocators_state_project IM initial_descriptors (finite_trace_last s_pre pre) = finite_trace_last (equivocators_state_project IM pre_descriptors s_pre) preX

(s'Y : composite_state IM) (preY : list (composite_transition_item IM)), partial_trace_project (s_pre, pre ++ tr) = Some (s'Y, preY ++ trX) ∧ finite_trace_last s'Y preY = equivocators_state_project IM initial_descriptors (finite_trace_last s_pre pre)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
X:= free_composite_vlsm (equivocator_IM IM): VLSM message
partial_trace_project:= equivocators_partial_trace_project final_descriptors: composite_state (equivocator_IM IM) * list (composite_transition_item (equivocator_IM IM)) → option (composite_state IM * list (composite_transition_item IM))
tr: list (composite_transition_item (equivocator_IM IM))
trX: list (composite_transition_item IM)
s_pre: state (composite_type (equivocator_IM IM))
pre: list transition_item
initial_descriptors: equivocator_descriptors IM
Hpr_tr: partial_trace_project (finite_trace_last s_pre pre, tr) = Some (equivocators_state_project IM initial_descriptors (finite_trace_last s_pre pre), trX)
Hpre: finite_valid_trace_from PreFreeE s_pre pre
Htr: finite_valid_trace_from PreFreeE (finite_trace_last s_pre pre) tr
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last (finite_trace_last s_pre pre) tr)
Htr_project: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last (finite_trace_last s_pre pre) tr)
Hinitial_descriptors: proper_equivocator_descriptors IM initial_descriptors (finite_trace_last s_pre pre)
preX: list (composite_transition_item IM)
pre_descriptors: equivocator_descriptors IM
Hpre_project: equivocators_trace_project initial_descriptors pre = Some (preX, pre_descriptors)
Hpre_desciptors: proper_equivocator_descriptors IM pre_descriptors s_pre
Hs_project: equivocators_state_project IM initial_descriptors (finite_trace_last s_pre pre) = finite_trace_last (equivocators_state_project IM pre_descriptors s_pre) preX

partial_trace_project (s_pre, pre ++ tr) = Some (equivocators_state_project IM pre_descriptors s_pre, preX ++ trX) ∧ finite_trace_last (equivocators_state_project IM pre_descriptors s_pre) preX = equivocators_state_project IM initial_descriptors (finite_trace_last s_pre pre)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
X:= free_composite_vlsm (equivocator_IM IM): VLSM message
partial_trace_project:= equivocators_partial_trace_project final_descriptors: composite_state (equivocator_IM IM) * list (composite_transition_item (equivocator_IM IM)) → option (composite_state IM * list (composite_transition_item IM))
tr: list (composite_transition_item (equivocator_IM IM))
trX: list (composite_transition_item IM)
s_pre: state (composite_type (equivocator_IM IM))
pre: list transition_item
initial_descriptors: equivocator_descriptors IM
Hpr_tr: partial_trace_project (finite_trace_last s_pre pre, tr) = Some (equivocators_state_project IM initial_descriptors (finite_trace_last s_pre pre), trX)
Hpre: finite_valid_trace_from PreFreeE s_pre pre
Htr: finite_valid_trace_from PreFreeE (finite_trace_last s_pre pre) tr
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last (finite_trace_last s_pre pre) tr)
Htr_project: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last (finite_trace_last s_pre pre) tr)
Hinitial_descriptors: proper_equivocator_descriptors IM initial_descriptors (finite_trace_last s_pre pre)
preX: list (composite_transition_item IM)
pre_descriptors: equivocator_descriptors IM
Hpre_project: equivocators_trace_project initial_descriptors pre = Some (preX, pre_descriptors)
Hpre_desciptors: proper_equivocator_descriptors IM pre_descriptors s_pre
Hs_project: equivocators_state_project IM initial_descriptors (finite_trace_last s_pre pre) = finite_trace_last (equivocators_state_project IM pre_descriptors s_pre) preX

partial_trace_project (s_pre, pre ++ tr) = Some (equivocators_state_project IM pre_descriptors s_pre, preX ++ trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
X:= free_composite_vlsm (equivocator_IM IM): VLSM message
partial_trace_project:= equivocators_partial_trace_project final_descriptors: composite_state (equivocator_IM IM) * list (composite_transition_item (equivocator_IM IM)) → option (composite_state IM * list (composite_transition_item IM))
tr: list (composite_transition_item (equivocator_IM IM))
trX: list (composite_transition_item IM)
s_pre: state (composite_type (equivocator_IM IM))
pre: list transition_item
initial_descriptors: equivocator_descriptors IM
Hpr_tr: partial_trace_project (finite_trace_last s_pre pre, tr) = Some (equivocators_state_project IM initial_descriptors (finite_trace_last s_pre pre), trX)
Hpre: finite_valid_trace_from PreFreeE s_pre pre
Htr: finite_valid_trace_from PreFreeE (finite_trace_last s_pre pre) tr
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last (finite_trace_last s_pre pre) tr)
Htr_project: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last (finite_trace_last s_pre pre) tr)
Hinitial_descriptors: proper_equivocator_descriptors IM initial_descriptors (finite_trace_last s_pre pre)
preX: list (composite_transition_item IM)
pre_descriptors: equivocator_descriptors IM
Hpre_project: equivocators_trace_project initial_descriptors pre = Some (preX, pre_descriptors)
Hpre_desciptors: proper_equivocator_descriptors IM pre_descriptors s_pre
Hs_project: equivocators_state_project IM initial_descriptors (finite_trace_last s_pre pre) = finite_trace_last (equivocators_state_project IM pre_descriptors s_pre) preX

not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last s_pre (pre ++ tr)) ∧ ( initial_descriptors : equivocator_descriptors IM, equivocators_trace_project final_descriptors (pre ++ tr) = Some (preX ++ trX, initial_descriptors) ∧ equivocators_state_project IM initial_descriptors s_pre = equivocators_state_project IM pre_descriptors s_pre)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
X:= free_composite_vlsm (equivocator_IM IM): VLSM message
partial_trace_project:= equivocators_partial_trace_project final_descriptors: composite_state (equivocator_IM IM) * list (composite_transition_item (equivocator_IM IM)) → option (composite_state IM * list (composite_transition_item IM))
tr: list (composite_transition_item (equivocator_IM IM))
trX: list (composite_transition_item IM)
s_pre: state (composite_type (equivocator_IM IM))
pre: list transition_item
initial_descriptors: equivocator_descriptors IM
Hpr_tr: partial_trace_project (finite_trace_last s_pre pre, tr) = Some (equivocators_state_project IM initial_descriptors (finite_trace_last s_pre pre), trX)
Hpre: finite_valid_trace_from PreFreeE s_pre pre
Htr: finite_valid_trace_from PreFreeE (finite_trace_last s_pre pre) tr
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last (finite_trace_last s_pre pre) tr)
Htr_project: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last (finite_trace_last s_pre pre) tr)
Hinitial_descriptors: proper_equivocator_descriptors IM initial_descriptors (finite_trace_last s_pre pre)
preX: list (composite_transition_item IM)
pre_descriptors: equivocator_descriptors IM
Hpre_project: equivocators_trace_project initial_descriptors pre = Some (preX, pre_descriptors)
Hpre_desciptors: proper_equivocator_descriptors IM pre_descriptors s_pre
Hs_project: equivocators_state_project IM initial_descriptors (finite_trace_last s_pre pre) = finite_trace_last (equivocators_state_project IM pre_descriptors s_pre) preX

initial_descriptors : equivocator_descriptors IM, equivocators_trace_project final_descriptors (pre ++ tr) = Some (preX ++ trX, initial_descriptors) ∧ equivocators_state_project IM initial_descriptors s_pre = equivocators_state_project IM pre_descriptors s_pre
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
X:= free_composite_vlsm (equivocator_IM IM): VLSM message
partial_trace_project:= equivocators_partial_trace_project final_descriptors: composite_state (equivocator_IM IM) * list (composite_transition_item (equivocator_IM IM)) → option (composite_state IM * list (composite_transition_item IM))
tr: list (composite_transition_item (equivocator_IM IM))
trX: list (composite_transition_item IM)
s_pre: state (composite_type (equivocator_IM IM))
pre: list transition_item
initial_descriptors: equivocator_descriptors IM
Hpr_tr: partial_trace_project (finite_trace_last s_pre pre, tr) = Some (equivocators_state_project IM initial_descriptors (finite_trace_last s_pre pre), trX)
Hpre: finite_valid_trace_from PreFreeE s_pre pre
Htr: finite_valid_trace_from PreFreeE (finite_trace_last s_pre pre) tr
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last (finite_trace_last s_pre pre) tr)
Htr_project: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last (finite_trace_last s_pre pre) tr)
Hinitial_descriptors: proper_equivocator_descriptors IM initial_descriptors (finite_trace_last s_pre pre)
preX: list (composite_transition_item IM)
pre_descriptors: equivocator_descriptors IM
Hpre_project: equivocators_trace_project initial_descriptors pre = Some (preX, pre_descriptors)
Hpre_desciptors: proper_equivocator_descriptors IM pre_descriptors s_pre
Hs_project: equivocators_state_project IM initial_descriptors (finite_trace_last s_pre pre) = finite_trace_last (equivocators_state_project IM pre_descriptors s_pre) preX

equivocators_trace_project final_descriptors (pre ++ tr) = Some (preX ++ trX, pre_descriptors) ∧ equivocators_state_project IM pre_descriptors s_pre = equivocators_state_project IM pre_descriptors s_pre
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
X:= free_composite_vlsm (equivocator_IM IM): VLSM message
partial_trace_project:= equivocators_partial_trace_project final_descriptors: composite_state (equivocator_IM IM) * list (composite_transition_item (equivocator_IM IM)) → option (composite_state IM * list (composite_transition_item IM))
tr: list (composite_transition_item (equivocator_IM IM))
trX: list (composite_transition_item IM)
s_pre: state (composite_type (equivocator_IM IM))
pre: list transition_item
initial_descriptors: equivocator_descriptors IM
Hpr_tr: partial_trace_project (finite_trace_last s_pre pre, tr) = Some (equivocators_state_project IM initial_descriptors (finite_trace_last s_pre pre), trX)
Hpre: finite_valid_trace_from PreFreeE s_pre pre
Htr: finite_valid_trace_from PreFreeE (finite_trace_last s_pre pre) tr
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last (finite_trace_last s_pre pre) tr)
Htr_project: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last (finite_trace_last s_pre pre) tr)
Hinitial_descriptors: proper_equivocator_descriptors IM initial_descriptors (finite_trace_last s_pre pre)
preX: list (composite_transition_item IM)
pre_descriptors: equivocator_descriptors IM
Hpre_project: equivocators_trace_project initial_descriptors pre = Some (preX, pre_descriptors)
Hpre_desciptors: proper_equivocator_descriptors IM pre_descriptors s_pre
Hs_project: equivocators_state_project IM initial_descriptors (finite_trace_last s_pre pre) = finite_trace_last (equivocators_state_project IM pre_descriptors s_pre) preX

equivocators_trace_project final_descriptors (pre ++ tr) = Some (preX ++ trX, pre_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
X:= free_composite_vlsm (equivocator_IM IM): VLSM message
partial_trace_project:= equivocators_partial_trace_project final_descriptors: composite_state (equivocator_IM IM) * list (composite_transition_item (equivocator_IM IM)) → option (composite_state IM * list (composite_transition_item IM))
tr: list (composite_transition_item (equivocator_IM IM))
trX: list (composite_transition_item IM)
s_pre: state (composite_type (equivocator_IM IM))
pre: list transition_item
initial_descriptors: equivocator_descriptors IM
Hpr_tr: partial_trace_project (finite_trace_last s_pre pre, tr) = Some (equivocators_state_project IM initial_descriptors (finite_trace_last s_pre pre), trX)
Hpre: finite_valid_trace_from PreFreeE s_pre pre
Htr: finite_valid_trace_from PreFreeE (finite_trace_last s_pre pre) tr
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last (finite_trace_last s_pre pre) tr)
Htr_project: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last (finite_trace_last s_pre pre) tr)
Hinitial_descriptors: proper_equivocator_descriptors IM initial_descriptors (finite_trace_last s_pre pre)
preX: list (composite_transition_item IM)
pre_descriptors: equivocator_descriptors IM
Hpre_project: equivocators_trace_project initial_descriptors pre = Some (preX, pre_descriptors)
Hpre_desciptors: proper_equivocator_descriptors IM pre_descriptors s_pre
Hs_project: equivocators_state_project IM initial_descriptors (finite_trace_last s_pre pre) = finite_trace_last (equivocators_state_project IM pre_descriptors s_pre) preX

(preX0 sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), equivocators_trace_project final_descriptors tr = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' pre = Some (preX0, pre_descriptors) ∧ preX ++ trX = preX0 ++ sufX
by exists preX, trX, initial_descriptors. Qed.
The projection of an composite equivocator state using zero_descriptors which is guaranteed to always succeed.
Definition equivocators_total_state_project := equivocators_state_project IM (zero_descriptor IM).

Definition equivocators_total_label_project
  (l : composite_label (equivocator_IM IM)) : option (composite_label IM) :=
  let (i, li) := l in
  option_map (existT i) (equivocator_label_zero_project _ li).

Definition equivocators_total_trace_project
  (tr : list (composite_transition_item (equivocator_IM IM)))
  : list (composite_transition_item IM)
  :=
  from_option fst [] (equivocators_trace_project (zero_descriptor IM) tr).
The projection of an composite equivocator trace using zero_descriptors which is guaranteed to always succeed.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: state (preloaded_with_all_messages_vlsm FreeE)
tr: list transition_item
Hpre_tr: finite_constrained_trace_from FreeE s tr

equivocators_trace_project (zero_descriptor IM) tr = Some (equivocators_total_trace_project tr, zero_descriptor IM)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: state (preloaded_with_all_messages_vlsm FreeE)
tr: list transition_item
Hpre_tr: finite_constrained_trace_from FreeE s tr

equivocators_trace_project (zero_descriptor IM) tr = Some (equivocators_total_trace_project tr, zero_descriptor IM)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: state (preloaded_with_all_messages_vlsm FreeE)
tr: list transition_item
Hpre_tr: finite_constrained_trace_from FreeE s tr

equivocators_trace_project (zero_descriptor IM) tr = Some (from_option fst [] (equivocators_trace_project (zero_descriptor IM) tr), zero_descriptor IM)
by destruct (equivocators_trace_project_zero_descriptors _ _ Hpre_tr) as [_trX ->]. Qed.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
X:= FreeE: VLSM message
trace_project:= equivocators_total_trace_project: list (composite_transition_item (equivocator_IM IM)) → list (composite_transition_item IM)

tr1X tr2X : list transition_item, ( sX : state (preloaded_with_all_messages_vlsm X), finite_constrained_trace_from X sX (tr1X ++ tr2X)) → trace_project (tr1X ++ tr2X) = trace_project tr1X ++ trace_project tr2X
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
X:= FreeE: VLSM message
trace_project:= equivocators_total_trace_project: list (composite_transition_item (equivocator_IM IM)) → list (composite_transition_item IM)

tr1X tr2X : list transition_item, ( sX : state (preloaded_with_all_messages_vlsm X), finite_constrained_trace_from X sX (tr1X ++ tr2X)) → trace_project (tr1X ++ tr2X) = trace_project tr1X ++ trace_project tr2X
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
X:= FreeE: VLSM message
trace_project:= equivocators_total_trace_project: list (composite_transition_item (equivocator_IM IM)) → list (composite_transition_item IM)
tr1X, tr2X: list transition_item
sX: state (preloaded_with_all_messages_vlsm X)
Hpre_tr: finite_constrained_trace_from X sX (tr1X ++ tr2X)

trace_project (tr1X ++ tr2X) = trace_project tr1X ++ trace_project tr2X
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
X:= FreeE: VLSM message
trace_project:= equivocators_total_trace_project: list (composite_transition_item (equivocator_IM IM)) → list (composite_transition_item IM)
tr1X, tr2X: list transition_item
sX: state (preloaded_with_all_messages_vlsm X)
Hpre_tr: finite_constrained_trace_from X sX (tr1X ++ tr2X)
Htr12_pr: equivocators_trace_project (zero_descriptor IM) (tr1X ++ tr2X) = Some (equivocators_total_trace_project (tr1X ++ tr2X), zero_descriptor IM)

trace_project (tr1X ++ tr2X) = trace_project tr1X ++ trace_project tr2X
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
X:= FreeE: VLSM message
trace_project:= equivocators_total_trace_project: list (composite_transition_item (equivocator_IM IM)) → list (composite_transition_item IM)
tr1X, tr2X: list transition_item
sX: state (preloaded_with_all_messages_vlsm X)
Hpre_tr: finite_constrained_trace_from X sX (tr1X ++ tr2X)
Htr12_pr: (preX sufX : list (composite_transition_item IM)) (eqv_descriptors' : equivocator_descriptors IM), equivocators_trace_project (zero_descriptor IM) tr2X = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project eqv_descriptors' tr1X = Some (preX, zero_descriptor IM) ∧ equivocators_total_trace_project (tr1X ++ tr2X) = preX ++ sufX

trace_project (tr1X ++ tr2X) = trace_project tr1X ++ trace_project tr2X
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
X:= FreeE: VLSM message
trace_project:= equivocators_total_trace_project: list (composite_transition_item (equivocator_IM IM)) → list (composite_transition_item IM)
tr1X, tr2X: list transition_item
sX: state (preloaded_with_all_messages_vlsm X)
Hpre_tr: finite_constrained_trace_from X sX (tr1X ++ tr2X)
tr1Y, tr2Y: list (composite_transition_item IM)
descriptors: equivocator_descriptors IM
Htr2_pr: equivocators_trace_project (zero_descriptor IM) tr2X = Some (tr2Y, descriptors)
Htr1_pr: equivocators_trace_project descriptors tr1X = Some (tr1Y, zero_descriptor IM)
Htr12_eq: equivocators_total_trace_project (tr1X ++ tr2X) = tr1Y ++ tr2Y

trace_project (tr1X ++ tr2X) = trace_project tr1X ++ trace_project tr2X
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
X:= FreeE: VLSM message
trace_project:= equivocators_total_trace_project: list (composite_transition_item (equivocator_IM IM)) → list (composite_transition_item IM)
tr1X, tr2X: list transition_item
sX: state (preloaded_with_all_messages_vlsm X)
Hpre_tr: finite_valid_trace_from PreFreeE sX tr1X ∧ finite_valid_trace_from PreFreeE (finite_trace_last sX tr1X) tr2X
tr1Y, tr2Y: list (composite_transition_item IM)
descriptors: equivocator_descriptors IM
Htr2_pr: equivocators_trace_project (zero_descriptor IM) tr2X = Some (tr2Y, descriptors)
Htr1_pr: equivocators_trace_project descriptors tr1X = Some (tr1Y, zero_descriptor IM)
Htr12_eq: equivocators_total_trace_project (tr1X ++ tr2X) = tr1Y ++ tr2Y

trace_project (tr1X ++ tr2X) = trace_project tr1X ++ trace_project tr2X
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
X:= FreeE: VLSM message
trace_project:= equivocators_total_trace_project: list (composite_transition_item (equivocator_IM IM)) → list (composite_transition_item IM)
tr1X, tr2X: list transition_item
sX: state (preloaded_with_all_messages_vlsm X)
Hpre_tr1: finite_valid_trace_from PreFreeE sX tr1X
Hpre_tr2: finite_valid_trace_from PreFreeE (finite_trace_last sX tr1X) tr2X
tr1Y, tr2Y: list (composite_transition_item IM)
descriptors: equivocator_descriptors IM
Htr2_pr: equivocators_trace_project (zero_descriptor IM) tr2X = Some (tr2Y, descriptors)
Htr1_pr: equivocators_trace_project descriptors tr1X = Some (tr1Y, zero_descriptor IM)
Htr12_eq: equivocators_total_trace_project (tr1X ++ tr2X) = tr1Y ++ tr2Y

trace_project (tr1X ++ tr2X) = trace_project tr1X ++ trace_project tr2X
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
X:= FreeE: VLSM message
trace_project:= equivocators_total_trace_project: list (composite_transition_item (equivocator_IM IM)) → list (composite_transition_item IM)
tr1X, tr2X: list transition_item
sX: state (preloaded_with_all_messages_vlsm X)
Hpre_tr1: finite_valid_trace_from PreFreeE sX tr1X
Hpre_tr2: finite_valid_trace_from PreFreeE (finite_trace_last sX tr1X) tr2X
tr1Y, tr2Y: list (composite_transition_item IM)
descriptors: equivocator_descriptors IM
Htr2_pr: Some (equivocators_total_trace_project tr2X, zero_descriptor IM) = Some (tr2Y, descriptors)
Htr1_pr: equivocators_trace_project descriptors tr1X = Some (tr1Y, zero_descriptor IM)
Htr12_eq: equivocators_total_trace_project (tr1X ++ tr2X) = tr1Y ++ tr2Y

trace_project (tr1X ++ tr2X) = trace_project tr1X ++ trace_project tr2X
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
X:= FreeE: VLSM message
trace_project:= equivocators_total_trace_project: list (composite_transition_item (equivocator_IM IM)) → list (composite_transition_item IM)
tr1X, tr2X: list transition_item
sX: state (preloaded_with_all_messages_vlsm X)
Hpre_tr1: finite_valid_trace_from PreFreeE sX tr1X
Hpre_tr2: finite_valid_trace_from PreFreeE (finite_trace_last sX tr1X) tr2X
tr1Y, tr2Y: list (composite_transition_item IM)
descriptors: equivocator_descriptors IM
Htr2_pr: Some (equivocators_total_trace_project tr2X, zero_descriptor IM) = Some (tr2Y, descriptors)
Htr1_pr: equivocators_trace_project descriptors tr1X = Some (tr1Y, zero_descriptor IM)
Htr12_eq: equivocators_total_trace_project (tr1X ++ tr2X) = tr1Y ++ tr2Y
H2: equivocators_total_trace_project tr2X = tr2Y
H3: zero_descriptor IM = descriptors

trace_project (tr1X ++ tr2X) = trace_project tr1X ++ trace_project tr2X
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
X:= FreeE: VLSM message
trace_project:= equivocators_total_trace_project: list (composite_transition_item (equivocator_IM IM)) → list (composite_transition_item IM)
tr1X, tr2X: list transition_item
sX: state (preloaded_with_all_messages_vlsm X)
Hpre_tr1: finite_valid_trace_from PreFreeE sX tr1X
Hpre_tr2: finite_valid_trace_from PreFreeE (finite_trace_last sX tr1X) tr2X
tr1Y: list (composite_transition_item IM)
Htr1_pr: equivocators_trace_project (zero_descriptor IM) tr1X = Some (tr1Y, zero_descriptor IM)
Htr2_pr: Some (equivocators_total_trace_project tr2X, zero_descriptor IM) = Some (equivocators_total_trace_project tr2X, zero_descriptor IM)
Htr12_eq: equivocators_total_trace_project (tr1X ++ tr2X) = tr1Y ++ equivocators_total_trace_project tr2X

trace_project (tr1X ++ tr2X) = trace_project tr1X ++ trace_project tr2X
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
X:= FreeE: VLSM message
trace_project:= equivocators_total_trace_project: list (composite_transition_item (equivocator_IM IM)) → list (composite_transition_item IM)
tr1X, tr2X: list transition_item
sX: state (preloaded_with_all_messages_vlsm X)
Hpre_tr1: finite_valid_trace_from PreFreeE sX tr1X
Hpre_tr2: finite_valid_trace_from PreFreeE (finite_trace_last sX tr1X) tr2X
tr1Y: list (composite_transition_item IM)
Htr1_pr: equivocators_trace_project (zero_descriptor IM) tr1X = Some (tr1Y, zero_descriptor IM)
Htr12_eq: equivocators_total_trace_project (tr1X ++ tr2X) = tr1Y ++ equivocators_total_trace_project tr2X

trace_project (tr1X ++ tr2X) = trace_project tr1X ++ trace_project tr2X
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
X:= FreeE: VLSM message
trace_project:= equivocators_total_trace_project: list (composite_transition_item (equivocator_IM IM)) → list (composite_transition_item IM)
tr1X, tr2X: list transition_item
sX: state (preloaded_with_all_messages_vlsm X)
Hpre_tr1: finite_valid_trace_from PreFreeE sX tr1X
Hpre_tr2: finite_valid_trace_from PreFreeE (finite_trace_last sX tr1X) tr2X
tr1Y: list (composite_transition_item IM)
Htr1_pr: Some (equivocators_total_trace_project tr1X, zero_descriptor IM) = Some (tr1Y, zero_descriptor IM)
Htr12_eq: equivocators_total_trace_project (tr1X ++ tr2X) = tr1Y ++ equivocators_total_trace_project tr2X

trace_project (tr1X ++ tr2X) = trace_project tr1X ++ trace_project tr2X
by inversion Htr1_pr; subst. Qed.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: state (preloaded_with_all_messages_vlsm FreeE)
tr: list transition_item
Hpre_tr: finite_constrained_trace_from FreeE s tr

pre_VLSM_projection_finite_trace_project PreFreeE (composite_type IM) equivocators_total_label_project equivocators_total_state_project tr = equivocators_total_trace_project tr
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: state (preloaded_with_all_messages_vlsm FreeE)
tr: list transition_item
Hpre_tr: finite_constrained_trace_from FreeE s tr

pre_VLSM_projection_finite_trace_project PreFreeE (composite_type IM) equivocators_total_label_project equivocators_total_state_project tr = equivocators_total_trace_project tr
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: state (preloaded_with_all_messages_vlsm FreeE)
x: transition_item
tr: list transition_item
Hpre_tr: finite_constrained_trace_from FreeE s (tr ++ [x])
IHtr: finite_constrained_trace_from FreeE s tr → pre_VLSM_projection_finite_trace_project PreFreeE (composite_type IM) equivocators_total_label_project equivocators_total_state_project tr = equivocators_total_trace_project tr

pre_VLSM_projection_finite_trace_project PreFreeE (composite_type IM) equivocators_total_label_project equivocators_total_state_project (tr ++ [x]) = equivocators_total_trace_project (tr ++ [x])
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: state (preloaded_with_all_messages_vlsm FreeE)
x: transition_item
tr: list transition_item
Hpre_tr: finite_constrained_trace_from FreeE s (tr ++ [x])
IHtr: finite_constrained_trace_from FreeE s tr → pre_VLSM_projection_finite_trace_project PreFreeE (composite_type IM) equivocators_total_label_project equivocators_total_state_project tr = equivocators_total_trace_project tr

pre_VLSM_projection_finite_trace_project PreFreeE (composite_type IM) equivocators_total_label_project equivocators_total_state_project (tr ++ [x]) = equivocators_total_trace_project tr ++ equivocators_total_trace_project [x]
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: state (preloaded_with_all_messages_vlsm FreeE)
x: transition_item
tr: list transition_item
Hpre_tr: finite_constrained_trace_from FreeE s (tr ++ [x])
IHtr: finite_constrained_trace_from FreeE s tr → pre_VLSM_projection_finite_trace_project PreFreeE (composite_type IM) equivocators_total_label_project equivocators_total_state_project tr = equivocators_total_trace_project tr

pre_VLSM_projection_finite_trace_project (preloaded_with_all_messages_vlsm FreeE) (composite_type IM) equivocators_total_label_project equivocators_total_state_project tr ++ pre_VLSM_projection_finite_trace_project (preloaded_with_all_messages_vlsm FreeE) (composite_type IM) equivocators_total_label_project equivocators_total_state_project [x] = equivocators_total_trace_project tr ++ equivocators_total_trace_project [x]
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: state (preloaded_with_all_messages_vlsm FreeE)
x: transition_item
tr: list transition_item
Hpre_tr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s tr
Hpre_x: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last s tr) [x]
IHtr: finite_constrained_trace_from FreeE s tr → pre_VLSM_projection_finite_trace_project PreFreeE (composite_type IM) equivocators_total_label_project equivocators_total_state_project tr = equivocators_total_trace_project tr

pre_VLSM_projection_finite_trace_project (preloaded_with_all_messages_vlsm FreeE) (composite_type IM) equivocators_total_label_project equivocators_total_state_project tr ++ pre_VLSM_projection_finite_trace_project (preloaded_with_all_messages_vlsm FreeE) (composite_type IM) equivocators_total_label_project equivocators_total_state_project [x] = equivocators_total_trace_project tr ++ equivocators_total_trace_project [x]
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: state (preloaded_with_all_messages_vlsm FreeE)
x: transition_item
tr: list transition_item
Hpre_tr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s tr
Hpre_x: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last s tr) [x]
IHtr: pre_VLSM_projection_finite_trace_project PreFreeE (composite_type IM) equivocators_total_label_project equivocators_total_state_project tr = equivocators_total_trace_project tr

pre_VLSM_projection_finite_trace_project (preloaded_with_all_messages_vlsm FreeE) (composite_type IM) equivocators_total_label_project equivocators_total_state_project tr ++ pre_VLSM_projection_finite_trace_project (preloaded_with_all_messages_vlsm FreeE) (composite_type IM) equivocators_total_label_project equivocators_total_state_project [x] = equivocators_total_trace_project tr ++ equivocators_total_trace_project [x]
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: state (preloaded_with_all_messages_vlsm FreeE)
x: transition_item
tr: list transition_item
Hpre_tr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s tr
Hpre_x: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last s tr) [x]
IHtr: pre_VLSM_projection_finite_trace_project (preloaded_with_all_messages_vlsm FreeE) (composite_type IM) equivocators_total_label_project equivocators_total_state_project tr = equivocators_total_trace_project tr

equivocators_total_trace_project tr ++ pre_VLSM_projection_finite_trace_project (preloaded_with_all_messages_vlsm FreeE) (composite_type IM) equivocators_total_label_project equivocators_total_state_project [x] = equivocators_total_trace_project tr ++ equivocators_total_trace_project [x]
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: state (preloaded_with_all_messages_vlsm FreeE)
x: transition_item
tr: list transition_item
Hpre_tr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s tr
Hpre_x: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last s tr) [x]
IHtr: pre_VLSM_projection_finite_trace_project (preloaded_with_all_messages_vlsm FreeE) (composite_type IM) equivocators_total_label_project equivocators_total_state_project tr = equivocators_total_trace_project tr

pre_VLSM_projection_finite_trace_project (preloaded_with_all_messages_vlsm FreeE) (composite_type IM) equivocators_total_label_project equivocators_total_state_project [x] = equivocators_total_trace_project [x]
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: state (preloaded_with_all_messages_vlsm FreeE)
x: transition_item
tr: list transition_item
Hpre_tr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s tr
Hpre_x: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last s tr) [x]
IHtr: pre_VLSM_projection_finite_trace_project (preloaded_with_all_messages_vlsm FreeE) (composite_type IM) equivocators_total_label_project equivocators_total_state_project tr = equivocators_total_trace_project tr
s0: state (preloaded_with_all_messages_vlsm FreeE)
tl: list transition_item
s': state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s0 []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last s tr, iom) ( s0, oom)
H1: s' = finite_trace_last s tr
H3: {| l := l; input := iom; destination := s0; output := oom |} = x
H4: tl = []

pre_VLSM_projection_finite_trace_project (preloaded_with_all_messages_vlsm FreeE) (composite_type IM) equivocators_total_label_project equivocators_total_state_project [{| l := l; input := iom; destination := s0; output := oom |}] = equivocators_total_trace_project [{| l := l; input := iom; destination := s0; output := oom |}]
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: state (preloaded_with_all_messages_vlsm FreeE)
tr: list transition_item
Hpre_tr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s tr
s0: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
Hpre_x: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last s tr) [{| l := l; input := iom; destination := s0; output := oom |}]
IHtr: pre_VLSM_projection_finite_trace_project (preloaded_with_all_messages_vlsm FreeE) (composite_type IM) equivocators_total_label_project equivocators_total_state_project tr = equivocators_total_trace_project tr
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s0 []
Ht: input_valid_transition (preloaded_with_all_messages_vlsm FreeE) l (finite_trace_last s tr, iom) ( s0, oom)

pre_VLSM_projection_finite_trace_project (preloaded_with_all_messages_vlsm FreeE) (composite_type IM) equivocators_total_label_project equivocators_total_state_project [{| l := l; input := iom; destination := s0; output := oom |}] = equivocators_total_trace_project [{| l := l; input := iom; destination := s0; output := oom |}]
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: state (preloaded_with_all_messages_vlsm FreeE)
tr: list transition_item
Hpre_tr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s tr
s0: state (preloaded_with_all_messages_vlsm FreeE)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm FreeE)
Hpre_x: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last s tr) [{| l := l; input := iom; destination := s0; output := oom |}]
IHtr: pre_VLSM_projection_finite_trace_project (preloaded_with_all_messages_vlsm FreeE) (composite_type IM) equivocators_total_label_project equivocators_total_state_project tr = equivocators_total_trace_project tr
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s0 []
Hv: valid l (finite_trace_last s tr, iom)
Ht: transition l (finite_trace_last s tr, iom) = (s0, oom)

pre_VLSM_projection_finite_trace_project (preloaded_with_all_messages_vlsm FreeE) (composite_type IM) equivocators_total_label_project equivocators_total_state_project [{| l := l; input := iom; destination := s0; output := oom |}] = equivocators_total_trace_project [{| l := l; input := iom; destination := s0; output := oom |}]
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: composite_state (equivocator_IM IM)
tr: list transition_item
Hpre_tr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s tr
s0: composite_state (equivocator_IM IM)
iom, oom: option message
i: index
sn: state (IM i)
Hpre_x: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last s tr) [{| l := existT i (Spawn sn); input := iom; destination := s0; output := oom |}]
IHtr: pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (composite_type IM) equivocators_total_label_project equivocators_total_state_project tr = equivocators_total_trace_project tr
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s0 []
Hv: initial_state_prop sn ∧ iom = None
Ht: (state_update (equivocator_IM IM) (finite_trace_last s tr) i (equivocator_state_extend (finite_trace_last s tr i) sn), None) = (s0, oom)

[] = from_option fst [] match match (if decide (0 = equivocator_state_last (s0 i)) then Some (None, NewMachine sn) else Some (None, Existing 0)) with | Some (Some item', deqv') => Some (Some {| l := existT i (l item'); input := iom; destination := equivocators_state_project IM (zero_descriptor IM) s0; output := oom |}, equivocator_descriptors_update IM (zero_descriptor IM) i deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM (zero_descriptor IM) i deqv') | None => None end with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: composite_state (equivocator_IM IM)
tr: list transition_item
Hpre_tr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s tr
s0: composite_state (equivocator_IM IM)
iom, oom: option message
i: index
ji: nat
li: label (IM i)
Hpre_x: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last s tr) [{| l := existT i (ContinueWith ji li); input := iom; destination := s0; output := oom |}]
IHtr: pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (composite_type IM) equivocators_total_label_project equivocators_total_state_project tr = equivocators_total_trace_project tr
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s0 []
Hv: match equivocator_state_project (finite_trace_last s tr i) ji with | Some si => valid li (si, iom) | None => False end
Ht: (let (si', om') := match equivocator_state_project (finite_trace_last s tr i) ji with | Some si => let (si', om') := transition li (si, iom) in (equivocator_state_update (finite_trace_last s tr i) ji si', om') | None => (finite_trace_last s tr i, iom) end in (state_update (equivocator_IM IM) (finite_trace_last s tr) i si', om')) = (s0, oom)
match pre_VLSM_projection_transition_item_project (composite_type (equivocator_IM IM)) (composite_type IM) equivocators_total_label_project equivocators_total_state_project {| l := existT i (ContinueWith ji li); input := iom; destination := s0; output := oom |} with | Some y => [y] | None => [] end = from_option fst [] match match (if decide (ji = 0) then Some (Some {| l := li; input := iom; destination := equivocator_state_zero (s0 i); output := oom |}, Existing ji) else Some (None, Existing 0)) with | Some (Some item', deqv') => Some (Some {| l := existT i (l item'); input := iom; destination := equivocators_state_project IM (zero_descriptor IM) s0; output := oom |}, equivocator_descriptors_update IM (zero_descriptor IM) i deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM (zero_descriptor IM) i deqv') | None => None end with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: composite_state (equivocator_IM IM)
tr: list transition_item
Hpre_tr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s tr
s0: composite_state (equivocator_IM IM)
iom, oom: option message
i: index
ji: nat
li: label (IM i)
Hpre_x: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last s tr) [{| l := existT i (ForkWith ji li); input := iom; destination := s0; output := oom |}]
IHtr: pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (composite_type IM) equivocators_total_label_project equivocators_total_state_project tr = equivocators_total_trace_project tr
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s0 []
Hv: match equivocator_state_project (finite_trace_last s tr i) ji with | Some si => valid li (si, iom) | None => False end
Ht: (let (si', om') := match equivocator_state_project (finite_trace_last s tr i) ji with | Some si => let (si', om') := transition li (si, iom) in (equivocator_state_extend (finite_trace_last s tr i) si', om') | None => (finite_trace_last s tr i, iom) end in (state_update (equivocator_IM IM) (finite_trace_last s tr) i si', om')) = (s0, oom)
[] = from_option fst [] match match (if decide (0 = equivocator_state_last (s0 i)) then Some (Some {| l := li; input := iom; destination := equivocator_state_zero (s0 i); output := oom |}, Existing ji) else Some (None, Existing 0)) with | Some (Some item', deqv') => Some (Some {| l := existT i (l item'); input := iom; destination := equivocators_state_project IM (zero_descriptor IM) s0; output := oom |}, equivocator_descriptors_update IM (zero_descriptor IM) i deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM (zero_descriptor IM) i deqv') | None => None end with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: composite_state (equivocator_IM IM)
tr: list transition_item
Hpre_tr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s tr
s0: composite_state (equivocator_IM IM)
iom, oom: option message
i: index
sn: state (IM i)
Hpre_x: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last s tr) [{| l := existT i (Spawn sn); input := iom; destination := s0; output := oom |}]
IHtr: pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (composite_type IM) equivocators_total_label_project equivocators_total_state_project tr = equivocators_total_trace_project tr
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s0 []
Hv: initial_state_prop sn ∧ iom = None
Ht: (state_update (equivocator_IM IM) (finite_trace_last s tr) i (equivocator_state_extend (finite_trace_last s tr i) sn), None) = (s0, oom)

[] = from_option fst [] match match (if decide (0 = equivocator_state_last (s0 i)) then Some (None, NewMachine sn) else Some (None, Existing 0)) with | Some (Some item', deqv') => Some (Some {| l := existT i (l item'); input := iom; destination := equivocators_state_project IM (zero_descriptor IM) s0; output := oom |}, equivocator_descriptors_update IM (zero_descriptor IM) i deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM (zero_descriptor IM) i deqv') | None => None end with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: composite_state (equivocator_IM IM)
tr: list transition_item
Hpre_tr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s tr
s0: composite_state (equivocator_IM IM)
iom, oom: option message
i: index
sn: state (IM i)
Hpre_x: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last s tr) [{| l := existT i (Spawn sn); input := iom; destination := s0; output := oom |}]
IHtr: pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (composite_type IM) equivocators_total_label_project equivocators_total_state_project tr = equivocators_total_trace_project tr
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s0 []
Hv: initial_state_prop sn ∧ iom = None

[] = from_option fst [] match match (if decide (0 = equivocator_state_last (state_update (equivocator_IM IM) (finite_trace_last s tr) i (equivocator_state_extend (finite_trace_last s tr i) sn) i)) then Some (None, NewMachine sn) else Some (None, Existing 0)) with | Some (Some item', deqv') => Some (Some {| l := existT i (l item'); input := iom; destination := equivocators_state_project IM (zero_descriptor IM) (state_update (equivocator_IM IM) (finite_trace_last s tr) i (equivocator_state_extend (finite_trace_last s tr i) sn)); output := None |}, equivocator_descriptors_update IM (zero_descriptor IM) i deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM (zero_descriptor IM) i deqv') | None => None end with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: composite_state (equivocator_IM IM)
tr: list transition_item
Hpre_tr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s tr
s0: composite_state (equivocator_IM IM)
iom, oom: option message
i: index
sn: state (IM i)
Hpre_x: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last s tr) [{| l := existT i (Spawn sn); input := iom; destination := s0; output := oom |}]
IHtr: pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (composite_type IM) equivocators_total_label_project equivocators_total_state_project tr = equivocators_total_trace_project tr
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s0 []
Hv: initial_state_prop sn ∧ iom = None

0 ≠ equivocator_state_last (state_update (equivocator_IM IM) (finite_trace_last s tr) i (equivocator_state_extend (finite_trace_last s tr i) sn) i)
by state_update_simpl; cbn.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: composite_state (equivocator_IM IM)
tr: list transition_item
Hpre_tr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s tr
s0: composite_state (equivocator_IM IM)
iom, oom: option message
i: index
ji: nat
li: label (IM i)
Hpre_x: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last s tr) [{| l := existT i (ContinueWith ji li); input := iom; destination := s0; output := oom |}]
IHtr: pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (composite_type IM) equivocators_total_label_project equivocators_total_state_project tr = equivocators_total_trace_project tr
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s0 []
Hv: match equivocator_state_project (finite_trace_last s tr i) ji with | Some si => valid li (si, iom) | None => False end
Ht: (let (si', om') := match equivocator_state_project (finite_trace_last s tr i) ji with | Some si => let (si', om') := transition li (si, iom) in (equivocator_state_update (finite_trace_last s tr i) ji si', om') | None => (finite_trace_last s tr i, iom) end in (state_update (equivocator_IM IM) (finite_trace_last s tr) i si', om')) = (s0, oom)

match pre_VLSM_projection_transition_item_project (composite_type (equivocator_IM IM)) (composite_type IM) equivocators_total_label_project equivocators_total_state_project {| l := existT i (ContinueWith ji li); input := iom; destination := s0; output := oom |} with | Some y => [y] | None => [] end = from_option fst [] match match (if decide (ji = 0) then Some (Some {| l := li; input := iom; destination := equivocator_state_zero (s0 i); output := oom |}, Existing ji) else Some (None, Existing 0)) with | Some (Some item', deqv') => Some (Some {| l := existT i (l item'); input := iom; destination := equivocators_state_project IM (zero_descriptor IM) s0; output := oom |}, equivocator_descriptors_update IM (zero_descriptor IM) i deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM (zero_descriptor IM) i deqv') | None => None end with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: composite_state (equivocator_IM IM)
tr: list transition_item
Hpre_tr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s tr
s0: composite_state (equivocator_IM IM)
iom, oom: option message
i: index
ji: nat
li: label (IM i)
Hpre_x: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last s tr) [{| l := existT i (ContinueWith ji li); input := iom; destination := s0; output := oom |}]
IHtr: pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (composite_type IM) equivocators_total_label_project equivocators_total_state_project tr = equivocators_total_trace_project tr
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s0 []
s_i: state (IM i)
Hv: valid li (s_i, iom)
Ht: (let (si', om') := let (si', om') := transition li (s_i, iom) in (equivocator_state_update (finite_trace_last s tr i) ji si', om') in (state_update (equivocator_IM IM) (finite_trace_last s tr) i si', om')) = (s0, oom)

match pre_VLSM_projection_transition_item_project (composite_type (equivocator_IM IM)) (composite_type IM) equivocators_total_label_project equivocators_total_state_project {| l := existT i (ContinueWith ji li); input := iom; destination := s0; output := oom |} with | Some y => [y] | None => [] end = from_option fst [] match match (if decide (ji = 0) then Some (Some {| l := li; input := iom; destination := equivocator_state_zero (s0 i); output := oom |}, Existing ji) else Some (None, Existing 0)) with | Some (Some item', deqv') => Some (Some {| l := existT i (l item'); input := iom; destination := equivocators_state_project IM (zero_descriptor IM) s0; output := oom |}, equivocator_descriptors_update IM (zero_descriptor IM) i deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM (zero_descriptor IM) i deqv') | None => None end with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: composite_state (equivocator_IM IM)
tr: list transition_item
Hpre_tr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s tr
s0: composite_state (equivocator_IM IM)
iom, oom: option message
i: index
ji: nat
li: label (IM i)
Hpre_x: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last s tr) [{| l := existT i (ContinueWith ji li); input := iom; destination := s0; output := oom |}]
IHtr: pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (composite_type IM) equivocators_total_label_project equivocators_total_state_project tr = equivocators_total_trace_project tr
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s0 []
s_i: state (IM i)
Hv: valid li (s_i, iom)
si': state (IM i)
_om': option message
Ht: (state_update (equivocator_IM IM) (finite_trace_last s tr) i (equivocator_state_update (finite_trace_last s tr i) ji si'), _om') = (s0, oom)

match pre_VLSM_projection_transition_item_project (composite_type (equivocator_IM IM)) (composite_type IM) equivocators_total_label_project equivocators_total_state_project {| l := existT i (ContinueWith ji li); input := iom; destination := s0; output := oom |} with | Some y => [y] | None => [] end = from_option fst [] match match (if decide (ji = 0) then Some (Some {| l := li; input := iom; destination := equivocator_state_zero (s0 i); output := oom |}, Existing ji) else Some (None, Existing 0)) with | Some (Some item', deqv') => Some (Some {| l := existT i (l item'); input := iom; destination := equivocators_state_project IM (zero_descriptor IM) s0; output := oom |}, equivocator_descriptors_update IM (zero_descriptor IM) i deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM (zero_descriptor IM) i deqv') | None => None end with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: composite_state (equivocator_IM IM)
tr: list transition_item
Hpre_tr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s tr
s0: composite_state (equivocator_IM IM)
iom, oom: option message
i: index
ji: nat
li: label (IM i)
Hpre_x: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last s tr) [{| l := existT i (ContinueWith ji li); input := iom; destination := s0; output := oom |}]
IHtr: pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (composite_type IM) equivocators_total_label_project equivocators_total_state_project tr = equivocators_total_trace_project tr
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s0 []
s_i: state (IM i)
Hv: valid li (s_i, iom)
si': state (IM i)
_om': option message

match pre_VLSM_projection_transition_item_project (composite_type (equivocator_IM IM)) (composite_type IM) equivocators_total_label_project equivocators_total_state_project {| l := existT i (ContinueWith ji li); input := iom; destination := state_update (equivocator_IM IM) (finite_trace_last s tr) i (equivocator_state_update (finite_trace_last s tr i) ji si'); output := oom |} with | Some y => [y] | None => [] end = from_option fst [] match match (if decide (ji = 0) then Some (Some {| l := li; input := iom; destination := equivocator_state_zero (state_update (equivocator_IM IM) (finite_trace_last s tr) i (equivocator_state_update (finite_trace_last s tr i) ji si') i); output := oom |}, Existing ji) else Some (None, Existing 0)) with | Some (Some item', deqv') => Some (Some {| l := existT i (l item'); input := iom; destination := equivocators_state_project IM (zero_descriptor IM) (state_update (equivocator_IM IM) (finite_trace_last s tr) i (equivocator_state_update (finite_trace_last s tr i) ji si')); output := oom |}, equivocator_descriptors_update IM (zero_descriptor IM) i deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM (zero_descriptor IM) i deqv') | None => None end with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: composite_state (equivocator_IM IM)
tr: list transition_item
Hpre_tr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s tr
s0: composite_state (equivocator_IM IM)
iom, oom: option message
i: index
li: label (IM i)
Hpre_x: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last s tr) [{| l := existT i (ContinueWith 0 li); input := iom; destination := s0; output := oom |}]
IHtr: pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (composite_type IM) equivocators_total_label_project equivocators_total_state_project tr = equivocators_total_trace_project tr
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s0 []
s_i: state (IM i)
Hv: valid li (s_i, iom)
si': state (IM i)
_om': option message

match pre_VLSM_projection_transition_item_project (composite_type (equivocator_IM IM)) (composite_type IM) equivocators_total_label_project equivocators_total_state_project {| l := existT i (ContinueWith 0 li); input := iom; destination := state_update (equivocator_IM IM) (finite_trace_last s tr) i (equivocator_state_update (finite_trace_last s tr i) 0 si'); output := oom |} with | Some y => [y] | None => [] end = from_option fst [] match match (if decide (0 = 0) then Some (Some {| l := li; input := iom; destination := equivocator_state_zero (state_update (equivocator_IM IM) (finite_trace_last s tr) i (equivocator_state_update (finite_trace_last s tr i) 0 si') i); output := oom |}, Existing 0) else Some (None, Existing 0)) with | Some (Some item', deqv') => Some (Some {| l := existT i (l item'); input := iom; destination := equivocators_state_project IM (zero_descriptor IM) (state_update (equivocator_IM IM) (finite_trace_last s tr) i (equivocator_state_update (finite_trace_last s tr i) 0 si')); output := oom |}, equivocator_descriptors_update IM (zero_descriptor IM) i deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM (zero_descriptor IM) i deqv') | None => None end with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: composite_state (equivocator_IM IM)
tr: list transition_item
Hpre_tr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s tr
s0: composite_state (equivocator_IM IM)
iom, oom: option message
i: index
ji: nat
li: label (IM i)
Hpre_x: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last s tr) [{| l := existT i (ContinueWith (S ji) li); input := iom; destination := s0; output := oom |}]
IHtr: pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (composite_type IM) equivocators_total_label_project equivocators_total_state_project tr = equivocators_total_trace_project tr
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s0 []
s_i: state (IM i)
Hv: valid li (s_i, iom)
si': state (IM i)
_om': option message
match pre_VLSM_projection_transition_item_project (composite_type (equivocator_IM IM)) (composite_type IM) equivocators_total_label_project equivocators_total_state_project {| l := existT i (ContinueWith (S ji) li); input := iom; destination := state_update (equivocator_IM IM) (finite_trace_last s tr) i (equivocator_state_update (finite_trace_last s tr i) (S ji) si'); output := oom |} with | Some y => [y] | None => [] end = from_option fst [] match match (if decide (S ji = 0) then Some (Some {| l := li; input := iom; destination := equivocator_state_zero (state_update (equivocator_IM IM) (finite_trace_last s tr) i (equivocator_state_update (finite_trace_last s tr i) (S ji) si') i); output := oom |}, Existing (S ji)) else Some (None, Existing 0)) with | Some (Some item', deqv') => Some (Some {| l := existT i (l item'); input := iom; destination := equivocators_state_project IM (zero_descriptor IM) (state_update (equivocator_IM IM) (finite_trace_last s tr) i (equivocator_state_update (finite_trace_last s tr i) (S ji) si')); output := oom |}, equivocator_descriptors_update IM (zero_descriptor IM) i deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM (zero_descriptor IM) i deqv') | None => None end with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: composite_state (equivocator_IM IM)
tr: list transition_item
Hpre_tr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s tr
s0: composite_state (equivocator_IM IM)
iom, oom: option message
i: index
li: label (IM i)
Hpre_x: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last s tr) [{| l := existT i (ContinueWith 0 li); input := iom; destination := s0; output := oom |}]
IHtr: pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (composite_type IM) equivocators_total_label_project equivocators_total_state_project tr = equivocators_total_trace_project tr
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s0 []
s_i: state (IM i)
Hv: valid li (s_i, iom)
si': state (IM i)
_om': option message

match pre_VLSM_projection_transition_item_project (composite_type (equivocator_IM IM)) (composite_type IM) equivocators_total_label_project equivocators_total_state_project {| l := existT i (ContinueWith 0 li); input := iom; destination := state_update (equivocator_IM IM) (finite_trace_last s tr) i (equivocator_state_update (finite_trace_last s tr i) 0 si'); output := oom |} with | Some y => [y] | None => [] end = from_option fst [] match match (if decide (0 = 0) then Some (Some {| l := li; input := iom; destination := equivocator_state_zero (state_update (equivocator_IM IM) (finite_trace_last s tr) i (equivocator_state_update (finite_trace_last s tr i) 0 si') i); output := oom |}, Existing 0) else Some (None, Existing 0)) with | Some (Some item', deqv') => Some (Some {| l := existT i (l item'); input := iom; destination := equivocators_state_project IM (zero_descriptor IM) (state_update (equivocator_IM IM) (finite_trace_last s tr) i (equivocator_state_update (finite_trace_last s tr i) 0 si')); output := oom |}, equivocator_descriptors_update IM (zero_descriptor IM) i deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM (zero_descriptor IM) i deqv') | None => None end with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end
by rewrite decide_True.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: composite_state (equivocator_IM IM)
tr: list transition_item
Hpre_tr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s tr
s0: composite_state (equivocator_IM IM)
iom, oom: option message
i: index
ji: nat
li: label (IM i)
Hpre_x: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last s tr) [{| l := existT i (ContinueWith (S ji) li); input := iom; destination := s0; output := oom |}]
IHtr: pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (composite_type IM) equivocators_total_label_project equivocators_total_state_project tr = equivocators_total_trace_project tr
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s0 []
s_i: state (IM i)
Hv: valid li (s_i, iom)
si': state (IM i)
_om': option message

match pre_VLSM_projection_transition_item_project (composite_type (equivocator_IM IM)) (composite_type IM) equivocators_total_label_project equivocators_total_state_project {| l := existT i (ContinueWith (S ji) li); input := iom; destination := state_update (equivocator_IM IM) (finite_trace_last s tr) i (equivocator_state_update (finite_trace_last s tr i) (S ji) si'); output := oom |} with | Some y => [y] | None => [] end = from_option fst [] match match (if decide (S ji = 0) then Some (Some {| l := li; input := iom; destination := equivocator_state_zero (state_update (equivocator_IM IM) (finite_trace_last s tr) i (equivocator_state_update (finite_trace_last s tr i) (S ji) si') i); output := oom |}, Existing (S ji)) else Some (None, Existing 0)) with | Some (Some item', deqv') => Some (Some {| l := existT i (l item'); input := iom; destination := equivocators_state_project IM (zero_descriptor IM) (state_update (equivocator_IM IM) (finite_trace_last s tr) i (equivocator_state_update (finite_trace_last s tr i) (S ji) si')); output := oom |}, equivocator_descriptors_update IM (zero_descriptor IM) i deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM (zero_descriptor IM) i deqv') | None => None end with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end
by rewrite decide_False.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: composite_state (equivocator_IM IM)
tr: list transition_item
Hpre_tr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s tr
s0: composite_state (equivocator_IM IM)
iom, oom: option message
i: index
ji: nat
li: label (IM i)
Hpre_x: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last s tr) [{| l := existT i (ForkWith ji li); input := iom; destination := s0; output := oom |}]
IHtr: pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (composite_type IM) equivocators_total_label_project equivocators_total_state_project tr = equivocators_total_trace_project tr
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s0 []
Hv: match equivocator_state_project (finite_trace_last s tr i) ji with | Some si => valid li (si, iom) | None => False end
Ht: (let (si', om') := match equivocator_state_project (finite_trace_last s tr i) ji with | Some si => let (si', om') := transition li (si, iom) in (equivocator_state_extend (finite_trace_last s tr i) si', om') | None => (finite_trace_last s tr i, iom) end in (state_update (equivocator_IM IM) (finite_trace_last s tr) i si', om')) = (s0, oom)

[] = from_option fst [] match match (if decide (0 = equivocator_state_last (s0 i)) then Some (Some {| l := li; input := iom; destination := equivocator_state_zero (s0 i); output := oom |}, Existing ji) else Some (None, Existing 0)) with | Some (Some item', deqv') => Some (Some {| l := existT i (l item'); input := iom; destination := equivocators_state_project IM (zero_descriptor IM) s0; output := oom |}, equivocator_descriptors_update IM (zero_descriptor IM) i deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM (zero_descriptor IM) i deqv') | None => None end with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: composite_state (equivocator_IM IM)
tr: list transition_item
Hpre_tr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s tr
s0: composite_state (equivocator_IM IM)
iom, oom: option message
i: index
ji: nat
li: label (IM i)
Hpre_x: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last s tr) [{| l := existT i (ForkWith ji li); input := iom; destination := s0; output := oom |}]
IHtr: pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (composite_type IM) equivocators_total_label_project equivocators_total_state_project tr = equivocators_total_trace_project tr
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s0 []
s_i: state (IM i)
Hv: valid li (s_i, iom)
Ht: (let (si', om') := let (si', om') := transition li (s_i, iom) in (equivocator_state_extend (finite_trace_last s tr i) si', om') in (state_update (equivocator_IM IM) (finite_trace_last s tr) i si', om')) = (s0, oom)

[] = from_option fst [] match match (if decide (0 = equivocator_state_last (s0 i)) then Some (Some {| l := li; input := iom; destination := equivocator_state_zero (s0 i); output := oom |}, Existing ji) else Some (None, Existing 0)) with | Some (Some item', deqv') => Some (Some {| l := existT i (l item'); input := iom; destination := equivocators_state_project IM (zero_descriptor IM) s0; output := oom |}, equivocator_descriptors_update IM (zero_descriptor IM) i deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM (zero_descriptor IM) i deqv') | None => None end with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: composite_state (equivocator_IM IM)
tr: list transition_item
Hpre_tr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s tr
s0: composite_state (equivocator_IM IM)
iom, oom: option message
i: index
ji: nat
li: label (IM i)
Hpre_x: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last s tr) [{| l := existT i (ForkWith ji li); input := iom; destination := s0; output := oom |}]
IHtr: pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (composite_type IM) equivocators_total_label_project equivocators_total_state_project tr = equivocators_total_trace_project tr
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s0 []
s_i: state (IM i)
Hv: valid li (s_i, iom)
si': state (IM i)
_om': option message
Ht: (state_update (equivocator_IM IM) (finite_trace_last s tr) i (equivocator_state_extend (finite_trace_last s tr i) si'), _om') = (s0, oom)

[] = from_option fst [] match match (if decide (0 = equivocator_state_last (s0 i)) then Some (Some {| l := li; input := iom; destination := equivocator_state_zero (s0 i); output := oom |}, Existing ji) else Some (None, Existing 0)) with | Some (Some item', deqv') => Some (Some {| l := existT i (l item'); input := iom; destination := equivocators_state_project IM (zero_descriptor IM) s0; output := oom |}, equivocator_descriptors_update IM (zero_descriptor IM) i deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM (zero_descriptor IM) i deqv') | None => None end with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
s: composite_state (equivocator_IM IM)
tr: list transition_item
Hpre_tr: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s tr
s0: composite_state (equivocator_IM IM)
iom, oom: option message
i: index
ji: nat
li: label (IM i)
Hpre_x: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) (finite_trace_last s tr) [{| l := existT i (ForkWith ji li); input := iom; destination := s0; output := oom |}]
IHtr: pre_VLSM_projection_finite_trace_project (composite_type (equivocator_IM IM)) (composite_type IM) equivocators_total_label_project equivocators_total_state_project tr = equivocators_total_trace_project tr
Htl: finite_valid_trace_from (preloaded_with_all_messages_vlsm FreeE) s0 []
s_i: state (IM i)
Hv: valid li (s_i, iom)
si': state (IM i)
_om': option message

[] = from_option fst [] match match (if decide (0 = equivocator_state_last (state_update (equivocator_IM IM) (finite_trace_last s tr) i (equivocator_state_extend (finite_trace_last s tr i) si') i)) then Some (Some {| l := li; input := iom; destination := equivocator_state_zero (state_update (equivocator_IM IM) (finite_trace_last s tr) i (equivocator_state_extend (finite_trace_last s tr i) si') i); output := oom |}, Existing ji) else Some (None, Existing 0)) with | Some (Some item', deqv') => Some (Some {| l := existT i (l item'); input := iom; destination := equivocators_state_project IM (zero_descriptor IM) (state_update (equivocator_IM IM) (finite_trace_last s tr) i (equivocator_state_extend (finite_trace_last s tr i) si')); output := oom |}, equivocator_descriptors_update IM (zero_descriptor IM) i deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM (zero_descriptor IM) i deqv') | None => None end with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end
by state_update_simpl; cbn; rewrite decide_False. Qed.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
X:= FreeE: VLSM message
state_project:= equivocators_total_state_project: state (free_composite_vlsm (equivocator_IM IM)) → state (free_composite_vlsm IM)
trace_project:= equivocators_total_trace_project: list (composite_transition_item (equivocator_IM IM)) → list (composite_transition_item IM)

(sX : state (preloaded_with_all_messages_vlsm X)) (trX : list transition_item), finite_constrained_trace_from X sX trX → state_project (finite_trace_last sX trX) = finite_trace_last (state_project sX) (trace_project trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
X:= FreeE: VLSM message
state_project:= equivocators_total_state_project: state (free_composite_vlsm (equivocator_IM IM)) → state (free_composite_vlsm IM)
trace_project:= equivocators_total_trace_project: list (composite_transition_item (equivocator_IM IM)) → list (composite_transition_item IM)

(sX : state (preloaded_with_all_messages_vlsm X)) (trX : list transition_item), finite_constrained_trace_from X sX trX → state_project (finite_trace_last sX trX) = finite_trace_last (state_project sX) (trace_project trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
X:= FreeE: VLSM message
state_project:= equivocators_total_state_project: state (free_composite_vlsm (equivocator_IM IM)) → state (free_composite_vlsm IM)
trace_project:= equivocators_total_trace_project: list (composite_transition_item (equivocator_IM IM)) → list (composite_transition_item IM)
sX: state (preloaded_with_all_messages_vlsm X)
trX: list transition_item
Hpre_tr: finite_constrained_trace_from X sX trX

state_project (finite_trace_last sX trX) = finite_trace_last (state_project sX) (trace_project trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
X:= FreeE: VLSM message
state_project:= equivocators_total_state_project: state (free_composite_vlsm (equivocator_IM IM)) → state (free_composite_vlsm IM)
trace_project:= equivocators_total_trace_project: list (composite_transition_item (equivocator_IM IM)) → list (composite_transition_item IM)
sX: state (preloaded_with_all_messages_vlsm X)
trX: list transition_item
Hpre_tr: finite_constrained_trace_from X sX trX
Htr_pr: equivocators_trace_project (zero_descriptor IM) trX = Some (equivocators_total_trace_project trX, zero_descriptor IM)

state_project (finite_trace_last sX trX) = finite_trace_last (state_project sX) (trace_project trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
X:= FreeE: VLSM message
state_project:= equivocators_total_state_project: state (free_composite_vlsm (equivocator_IM IM)) → state (free_composite_vlsm IM)
trace_project:= equivocators_total_trace_project: list (composite_transition_item (equivocator_IM IM)) → list (composite_transition_item IM)
sX: state (preloaded_with_all_messages_vlsm X)
trX: list transition_item
Hpre_tr: finite_constrained_trace_from X sX trX
Htr_pr: equivocators_trace_project (zero_descriptor IM) trX = Some (equivocators_total_trace_project trX, zero_descriptor IM)
Hproject: let final_state := finite_trace_last sX trX in proper_equivocator_descriptors IM (zero_descriptor IM) final_state → finite_constrained_trace_from FreeE sX trX → (trX0 : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project (zero_descriptor IM) trX = Some (trX0, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors sX ∧ equivocators_state_project IM (zero_descriptor IM) (finite_trace_last sX trX) = finite_trace_last (equivocators_state_project IM initial_descriptors sX) trX0

state_project (finite_trace_last sX trX) = finite_trace_last (state_project sX) (trace_project trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
X:= FreeE: VLSM message
state_project:= equivocators_total_state_project: state (free_composite_vlsm (equivocator_IM IM)) → state (free_composite_vlsm IM)
trace_project:= equivocators_total_trace_project: list (composite_transition_item (equivocator_IM IM)) → list (composite_transition_item IM)
sX: state (preloaded_with_all_messages_vlsm X)
trX: list transition_item
Hpre_tr: finite_constrained_trace_from X sX trX
Htr_pr: equivocators_trace_project (zero_descriptor IM) trX = Some (equivocators_total_trace_project trX, zero_descriptor IM)
Hproject: finite_constrained_trace_from FreeE sX trX → (trX0 : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project (zero_descriptor IM) trX = Some (trX0, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors sX ∧ equivocators_state_project IM (zero_descriptor IM) (finite_trace_last sX trX) = finite_trace_last (equivocators_state_project IM initial_descriptors sX) trX0

state_project (finite_trace_last sX trX) = finite_trace_last (state_project sX) (trace_project trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
X:= FreeE: VLSM message
state_project:= equivocators_total_state_project: state (free_composite_vlsm (equivocator_IM IM)) → state (free_composite_vlsm IM)
trace_project:= equivocators_total_trace_project: list (composite_transition_item (equivocator_IM IM)) → list (composite_transition_item IM)
sX: state (preloaded_with_all_messages_vlsm X)
trX: list transition_item
Hpre_tr: finite_constrained_trace_from X sX trX
Htr_pr: equivocators_trace_project (zero_descriptor IM) trX = Some (equivocators_total_trace_project trX, zero_descriptor IM)
Hproject: (trX0 : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), equivocators_trace_project (zero_descriptor IM) trX = Some (trX0, initial_descriptors) ∧ proper_equivocator_descriptors IM initial_descriptors sX ∧ equivocators_state_project IM (zero_descriptor IM) (finite_trace_last sX trX) = finite_trace_last (equivocators_state_project IM initial_descriptors sX) trX0

state_project (finite_trace_last sX trX) = finite_trace_last (state_project sX) (trace_project trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
X:= FreeE: VLSM message
state_project:= equivocators_total_state_project: state (free_composite_vlsm (equivocator_IM IM)) → state (free_composite_vlsm IM)
trace_project:= equivocators_total_trace_project: list (composite_transition_item (equivocator_IM IM)) → list (composite_transition_item IM)
sX: state (preloaded_with_all_messages_vlsm X)
trX: list transition_item
Hpre_tr: finite_constrained_trace_from X sX trX
Htr_pr: equivocators_trace_project (zero_descriptor IM) trX = Some (equivocators_total_trace_project trX, zero_descriptor IM)
_trX: list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
_Htr_pr: equivocators_trace_project (zero_descriptor IM) trX = Some (_trX, initial_descriptors)
Hlst: equivocators_state_project IM (zero_descriptor IM) (finite_trace_last sX trX) = finite_trace_last (equivocators_state_project IM initial_descriptors sX) _trX

state_project (finite_trace_last sX trX) = finite_trace_last (state_project sX) (trace_project trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
X:= FreeE: VLSM message
state_project:= equivocators_total_state_project: state (free_composite_vlsm (equivocator_IM IM)) → state (free_composite_vlsm IM)
trace_project:= equivocators_total_trace_project: list (composite_transition_item (equivocator_IM IM)) → list (composite_transition_item IM)
sX: state (preloaded_with_all_messages_vlsm X)
trX: list transition_item
Hpre_tr: finite_constrained_trace_from X sX trX
Htr_pr: equivocators_trace_project (zero_descriptor IM) trX = Some (equivocators_total_trace_project trX, zero_descriptor IM)
_trX: list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
_Htr_pr: Some (equivocators_total_trace_project trX, zero_descriptor IM) = Some (_trX, initial_descriptors)
Hlst: equivocators_state_project IM (zero_descriptor IM) (finite_trace_last sX trX) = finite_trace_last (equivocators_state_project IM initial_descriptors sX) _trX

state_project (finite_trace_last sX trX) = finite_trace_last (state_project sX) (trace_project trX)
by inversion _Htr_pr; subst. Qed.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM

VLSM_partial_projection PreFreeE PreFree (equivocators_partial_trace_project final_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM

VLSM_partial_projection PreFreeE PreFree (equivocators_partial_trace_project final_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM

(sX : state PreFreeE) (trX : list transition_item) (sY : state PreFree) (trY : list transition_item), equivocators_partial_trace_project final_descriptors (sX, trX) = Some (sY, trY) → finite_valid_trace PreFreeE sX trX → finite_valid_trace PreFree sY trY
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state PreFreeE
tr: list transition_item
sX: state PreFree
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project final_descriptors (s, tr) = Some (sX, trX)
Htr: finite_valid_trace PreFreeE s tr

finite_valid_trace PreFree sX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state PreFreeE
tr: list transition_item
sX: state PreFree
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project final_descriptors (s, tr) = Some (sX, trX)
Htr: finite_valid_trace PreFreeE s tr
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)
Hs_project: equivocators_state_project IM initial_descriptors s = sX

finite_valid_trace PreFree sX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state PreFreeE
tr: list transition_item
sX: state PreFree
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project final_descriptors (s, tr) = Some (sX, trX)
Htr: finite_valid_trace_init_to PreFreeE s (finite_trace_last s tr) tr
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)
Hs_project: equivocators_state_project IM initial_descriptors s = sX

finite_valid_trace PreFree sX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state PreFreeE
tr: list transition_item
sX: state PreFree
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project final_descriptors (s, tr) = Some (sX, trX)
Htr: finite_valid_trace_init_to PreFreeE s (finite_trace_last s tr) tr
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)
Hs_project: equivocators_state_project IM initial_descriptors s = sX
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)

finite_valid_trace PreFree sX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state PreFreeE
tr: list transition_item
sX: state PreFree
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project final_descriptors (s, tr) = Some (sX, trX)
Htr: finite_valid_trace_init_to PreFreeE s (finite_trace_last s tr) tr
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)
Hs_project: equivocators_state_project IM initial_descriptors s = sX
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
_initial_descriptors: equivocator_descriptors IM
_trX: list (composite_transition_item IM)
_Htr_project: equivocators_trace_project final_descriptors tr = Some (_trX, _initial_descriptors)
HtrX: finite_constrained_trace_init_to Free (equivocators_state_project IM _initial_descriptors s) (equivocators_state_project IM final_descriptors (finite_trace_last s tr)) _trX

finite_valid_trace PreFree sX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state PreFreeE
tr: list transition_item
sX: state PreFree
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project final_descriptors (s, tr) = Some (sX, trX)
Htr: finite_valid_trace_init_to PreFreeE s (finite_trace_last s tr) tr
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project final_descriptors tr = Some (trX, initial_descriptors)
Hs_project: equivocators_state_project IM initial_descriptors s = sX
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
_initial_descriptors: equivocator_descriptors IM
_trX: list (composite_transition_item IM)
_Htr_project: Some (trX, initial_descriptors) = Some (_trX, _initial_descriptors)
HtrX: finite_constrained_trace_init_to Free (equivocators_state_project IM _initial_descriptors s) (equivocators_state_project IM final_descriptors (finite_trace_last s tr)) _trX

finite_valid_trace PreFree sX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state PreFreeE
tr: list transition_item
_trX: list (composite_transition_item IM)
_initial_descriptors: equivocator_descriptors IM
Hpr_tr: equivocators_partial_trace_project final_descriptors (s, tr) = Some (equivocators_state_project IM _initial_descriptors s, _trX)
_Htr_project: Some (_trX, _initial_descriptors) = Some (_trX, _initial_descriptors)
Htr: finite_valid_trace_init_to PreFreeE s (finite_trace_last s tr) tr
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
Htr_project: equivocators_trace_project final_descriptors tr = Some (_trX, _initial_descriptors)
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
HtrX: finite_constrained_trace_init_to Free (equivocators_state_project IM _initial_descriptors s) (equivocators_state_project IM final_descriptors (finite_trace_last s tr)) _trX

finite_valid_trace PreFree (equivocators_state_project IM _initial_descriptors s) _trX
by red in HtrX; apply valid_trace_forget_last in HtrX. Qed. End sec_equivocators_composition_projections. Section sec_equivocators_composition_sub_projections. Context {message : Type} `{finite.Finite index} (IM : index -> VLSM message) `{forall i : index, HasBeenSentCapability (IM i)} (selection : list index) .
A generalization of equivocators_trace_project_finite_trace_projection_list_commute to projections over a set of indices.
We can project a trace over the composition of equivocators in two ways:
The results below (fist for a single item, then for the full trace say that the two ways lead to the same result.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
Hpr_item: equivocators_trace_project IM final_descriptors [item] = Some (pr_item, final_descriptors')
pr_sub_item: list (composite_transition_item (sub_IM IM selection))
final_sub_descriptors': equivocator_descriptors (sub_IM IM selection)
Hpr_sub_item: equivocators_trace_project (sub_IM IM selection) final_sub_descriptors (finite_trace_sub_projection (equivocator_IM IM) selection [item]) = Some (pr_sub_item, final_sub_descriptors')

final_sub_descriptors' = (λ i : sub_index selection, final_descriptors' (`i)) ∧ finite_trace_sub_projection IM selection pr_item = pr_sub_item
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
Hpr_item: equivocators_trace_project IM final_descriptors [item] = Some (pr_item, final_descriptors')
pr_sub_item: list (composite_transition_item (sub_IM IM selection))
final_sub_descriptors': equivocator_descriptors (sub_IM IM selection)
Hpr_sub_item: equivocators_trace_project (sub_IM IM selection) final_sub_descriptors (finite_trace_sub_projection (equivocator_IM IM) selection [item]) = Some (pr_sub_item, final_sub_descriptors')

final_sub_descriptors' = (λ i : sub_index selection, final_descriptors' (`i)) ∧ finite_trace_sub_projection IM selection pr_item = pr_sub_item
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
Hpr_item: foldr (equivocators_trace_project_folder IM) (Some ([], final_descriptors)) [item] = Some (pr_item, final_descriptors')
pr_sub_item: list (composite_transition_item (sub_IM IM selection))
final_sub_descriptors': equivocator_descriptors (sub_IM IM selection)
Hpr_sub_item: equivocators_trace_project (sub_IM IM selection) final_sub_descriptors (finite_trace_sub_projection (equivocator_IM IM) selection [item]) = Some (pr_sub_item, final_sub_descriptors')

final_sub_descriptors' = (λ i : sub_index selection, final_descriptors' (`i)) ∧ finite_trace_sub_projection IM selection pr_item = pr_sub_item
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
Hpr_item: foldr (equivocators_trace_project_folder IM) (Some ([], final_descriptors)) [item] = Some (pr_item, final_descriptors')
pr_sub_item: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
final_sub_descriptors': equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
Hpr_sub_item: equivocators_trace_project (λ ei : sub_index selection, IM (`ei)) final_sub_descriptors (finite_trace_sub_projection (equivocator_IM IM) selection [item]) = Some (pr_sub_item, final_sub_descriptors')

final_sub_descriptors' = (λ i : sub_index selection, final_descriptors' (`i)) ∧ finite_trace_sub_projection IM selection pr_item = pr_sub_item
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
Hpr_item: match equivocators_transition_item_project IM final_descriptors item with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (pr_item, final_descriptors')
pr_sub_item: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
final_sub_descriptors': equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
Hpr_sub_item: equivocators_trace_project (λ ei : sub_index selection, IM (`ei)) final_sub_descriptors match pre_VLSM_projection_transition_item_project (composite_type (equivocator_IM IM)) (composite_type (sub_IM (equivocator_IM IM) selection)) (composite_label_sub_projection_option (equivocator_IM IM) selection) (composite_state_sub_projection (equivocator_IM IM) selection) item with | Some y => [y] | None => [] end = Some (pr_sub_item, final_sub_descriptors')

final_sub_descriptors' = (λ i : sub_index selection, final_descriptors' (`i)) ∧ finite_trace_sub_projection IM selection pr_item = pr_sub_item
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
Hpr_item_x: equivocators_transition_item_project IM final_descriptors item = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
pr_sub_item: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
final_sub_descriptors': equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
Hpr_sub_item: equivocators_trace_project (λ ei : sub_index selection, IM (`ei)) final_sub_descriptors match pre_VLSM_projection_transition_item_project (composite_type (equivocator_IM IM)) (composite_type (sub_IM (equivocator_IM IM) selection)) (composite_label_sub_projection_option (equivocator_IM IM) selection) (composite_state_sub_projection (equivocator_IM IM) selection) item with | Some y => [y] | None => [] end = Some (pr_sub_item, final_sub_descriptors')

final_sub_descriptors' = (λ i : sub_index selection, final_descriptors' (`i)) ∧ finite_trace_sub_projection IM selection pr_item = pr_sub_item
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
Hpr_item_x: match equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM IM) item) (final_descriptors (projT1 (l item))) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) deqv') | None => None end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
pr_sub_item: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
final_sub_descriptors': equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
Hpr_sub_item: equivocators_trace_project (λ ei : sub_index selection, IM (`ei)) final_sub_descriptors match pre_VLSM_projection_transition_item_project (composite_type (equivocator_IM IM)) (composite_type (sub_IM (equivocator_IM IM) selection)) (composite_label_sub_projection_option (equivocator_IM IM) selection) (composite_state_sub_projection (equivocator_IM IM) selection) item with | Some y => [y] | None => [] end = Some (pr_sub_item, final_sub_descriptors')

final_sub_descriptors' = (λ i : sub_index selection, final_descriptors' (`i)) ∧ finite_trace_sub_projection IM selection pr_item = pr_sub_item
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
Hpr_item_x: match equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection_from_eq (equivocator_IM IM) item (projT1 (l item)) eq_refl) (final_descriptors (projT1 (l item))) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) deqv') | None => None end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
pr_sub_item: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
final_sub_descriptors': equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
Hpr_sub_item: equivocators_trace_project (λ ei : sub_index selection, IM (`ei)) final_sub_descriptors match pre_VLSM_projection_transition_item_project (composite_type (equivocator_IM IM)) (composite_type (sub_IM (equivocator_IM IM) selection)) (composite_label_sub_projection_option (equivocator_IM IM) selection) (composite_state_sub_projection (equivocator_IM IM) selection) item with | Some y => [y] | None => [] end = Some (pr_sub_item, final_sub_descriptors')

final_sub_descriptors' = (λ i : sub_index selection, final_descriptors' (`i)) ∧ finite_trace_sub_projection IM selection pr_item = pr_sub_item
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
pr_item_x: option (option transition_item * MachineDescriptor (IM (projT1 (l item))))
Heqpr_item_x: pr_item_x = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection_from_eq (equivocator_IM IM) item (projT1 (l item)) eq_refl) (final_descriptors (projT1 (l item)))
Hpr_item_x: match pr_item_x with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) deqv') | None => None end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
pr_sub_item: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
final_sub_descriptors': equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
Hpr_sub_item: equivocators_trace_project (λ ei : sub_index selection, IM (`ei)) final_sub_descriptors match pre_VLSM_projection_transition_item_project (composite_type (equivocator_IM IM)) (composite_type (sub_IM (equivocator_IM IM) selection)) (composite_label_sub_projection_option (equivocator_IM IM) selection) (composite_state_sub_projection (equivocator_IM IM) selection) item with | Some y => [y] | None => [] end = Some (pr_sub_item, final_sub_descriptors')

final_sub_descriptors' = (λ i : sub_index selection, final_descriptors' (`i)) ∧ finite_trace_sub_projection IM selection pr_item = pr_sub_item
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Heqpr_item_x: Some (oitem', descriptor') = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection_from_eq (equivocator_IM IM) item (projT1 (l item)) eq_refl) (final_descriptors (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
pr_sub_item: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
final_sub_descriptors': equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
Hpr_sub_item: equivocators_trace_project (λ ei : sub_index selection, IM (`ei)) final_sub_descriptors match pre_VLSM_projection_transition_item_project (composite_type (equivocator_IM IM)) (composite_type (sub_IM (equivocator_IM IM) selection)) (composite_label_sub_projection_option (equivocator_IM IM) selection) (composite_state_sub_projection (equivocator_IM IM) selection) item with | Some y => [y] | None => [] end = Some (pr_sub_item, final_sub_descriptors')

final_sub_descriptors' = (λ i : sub_index selection, final_descriptors' (`i)) ∧ finite_trace_sub_projection IM selection pr_item = pr_sub_item
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Heqpr_item_x: Some (oitem', descriptor') = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := eq_rect_r (λ n : index, label (equivocator_IM IM n)) (projT2 (l item)) eq_refl; input := input item; destination := destination item (projT1 (l item)); output := output item |} (final_descriptors (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
pr_sub_item: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
final_sub_descriptors': equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
Hpr_sub_item: equivocators_trace_project (λ ei : sub_index selection, IM (`ei)) final_sub_descriptors match pre_VLSM_projection_transition_item_project (composite_type (equivocator_IM IM)) (composite_type (sub_IM (equivocator_IM IM) selection)) (composite_label_sub_projection_option (equivocator_IM IM) selection) (composite_state_sub_projection (equivocator_IM IM) selection) item with | Some y => [y] | None => [] end = Some (pr_sub_item, final_sub_descriptors')

final_sub_descriptors' = (λ i : sub_index selection, final_descriptors' (`i)) ∧ finite_trace_sub_projection IM selection pr_item = pr_sub_item
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Heqpr_item_x: Some (oitem', descriptor') = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := eq_rect (projT1 (l item)) (λ y : index, label (equivocator_IM IM y)) (projT2 (l item)) (projT1 (l item)) (eq_sym eq_refl); input := input item; destination := destination item (projT1 (l item)); output := output item |} (final_descriptors (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
pr_sub_item: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
final_sub_descriptors': equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
Hpr_sub_item: equivocators_trace_project (λ ei : sub_index selection, IM (`ei)) final_sub_descriptors match pre_VLSM_projection_transition_item_project (composite_type (equivocator_IM IM)) (composite_type (sub_IM (equivocator_IM IM) selection)) (composite_label_sub_projection_option (equivocator_IM IM) selection) (composite_state_sub_projection (equivocator_IM IM) selection) item with | Some y => [y] | None => [] end = Some (pr_sub_item, final_sub_descriptors')

final_sub_descriptors' = (λ i : sub_index selection, final_descriptors' (`i)) ∧ finite_trace_sub_projection IM selection pr_item = pr_sub_item
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Heqpr_item_x: Some (oitem', descriptor') = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (final_descriptors (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
pr_sub_item: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
final_sub_descriptors': equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
Hpr_sub_item: equivocators_trace_project (λ ei : sub_index selection, IM (`ei)) final_sub_descriptors match pre_VLSM_projection_transition_item_project (composite_type (equivocator_IM IM)) (composite_type (sub_IM (equivocator_IM IM) selection)) (composite_label_sub_projection_option (equivocator_IM IM) selection) (composite_state_sub_projection (equivocator_IM IM) selection) item with | Some y => [y] | None => [] end = Some (pr_sub_item, final_sub_descriptors')

final_sub_descriptors' = (λ i : sub_index selection, final_descriptors' (`i)) ∧ finite_trace_sub_projection IM selection pr_item = pr_sub_item
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Heqpr_item_x: Some (oitem', descriptor') = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (final_descriptors (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
pr_sub_item: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
final_sub_descriptors': equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
Hpr_sub_item: equivocators_trace_project (λ ei : sub_index selection, IM (`ei)) final_sub_descriptors match match match decide (projT1 (l item) ∈ selection) with | left i_in => Some (composite_label_sub_projection (equivocator_IM IM) selection (l item) i_in) | right _ => None end with | Some lY => Some {| l := lY; input := input item; destination := composite_state_sub_projection (equivocator_IM IM) selection (destination item); output := output item |} | None => None end with | Some y => [y] | None => [] end = Some (pr_sub_item, final_sub_descriptors')

final_sub_descriptors' = (λ i : sub_index selection, final_descriptors' (`i)) ∧ finite_trace_sub_projection IM selection pr_item = pr_sub_item
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Heqpr_item_x: Some (oitem', descriptor') = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (final_descriptors (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
pr_sub_item: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
final_sub_descriptors': equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
Hl: projT1 (l item) ∈ selection
Hpr_sub_item: equivocators_trace_project (λ ei : sub_index selection, IM (`ei)) final_sub_descriptors [{| l := composite_label_sub_projection (equivocator_IM IM) selection (l item) Hl; input := input item; destination := composite_state_sub_projection (equivocator_IM IM) selection (destination item); output := output item |}] = Some (pr_sub_item, final_sub_descriptors')

final_sub_descriptors' = (λ i : sub_index selection, final_descriptors' (`i)) ∧ finite_trace_sub_projection IM selection pr_item = pr_sub_item
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Heqpr_item_x: Some (oitem', descriptor') = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (final_descriptors (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
pr_sub_item: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
final_sub_descriptors': equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
Hl: projT1 (l item) ∉ selection
Hpr_sub_item: equivocators_trace_project (λ ei : sub_index selection, IM (`ei)) final_sub_descriptors [] = Some (pr_sub_item, final_sub_descriptors')
final_sub_descriptors' = (λ i : sub_index selection, final_descriptors' (`i)) ∧ finite_trace_sub_projection IM selection pr_item = pr_sub_item
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Heqpr_item_x: Some (oitem', descriptor') = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (final_descriptors (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
pr_sub_item: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
final_sub_descriptors': equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
Hl: projT1 (l item) ∈ selection
Hpr_sub_item: equivocators_trace_project (λ ei : sub_index selection, IM (`ei)) final_sub_descriptors [{| l := composite_label_sub_projection (equivocator_IM IM) selection (l item) Hl; input := input item; destination := composite_state_sub_projection (equivocator_IM IM) selection (destination item); output := output item |}] = Some (pr_sub_item, final_sub_descriptors')

final_sub_descriptors' = (λ i : sub_index selection, final_descriptors' (`i)) ∧ finite_trace_sub_projection IM selection pr_item = pr_sub_item
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Heqpr_item_x: Some (oitem', descriptor') = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (final_descriptors (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
pr_sub_item: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
final_sub_descriptors': equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
Hl: projT1 (l item) ∈ selection
Hpr_sub_item: match equivocators_transition_item_project (λ ei : sub_index selection, IM (`ei)) final_sub_descriptors {| l := composite_label_sub_projection (equivocator_IM IM) selection (l item) Hl; input := input item; destination := composite_state_sub_projection (equivocator_IM IM) selection (destination item); output := output item |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (pr_sub_item, final_sub_descriptors')

final_sub_descriptors' = (λ i : sub_index selection, final_descriptors' (`i)) ∧ finite_trace_sub_projection IM selection pr_item = pr_sub_item
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Heqpr_item_x: Some (oitem', descriptor') = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (final_descriptors (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
pr_sub_item: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
final_sub_descriptors': equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
Hl: projT1 (l item) ∈ selection
Hpr_sub_item: match equivocators_transition_item_project (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) {| l := composite_label_sub_projection (equivocator_IM IM) selection (l item) Hl; input := input item; destination := composite_state_sub_projection (equivocator_IM IM) selection (destination item); output := output item |} with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (pr_sub_item, final_sub_descriptors')

final_sub_descriptors' = (λ i : sub_index selection, final_descriptors' (`i)) ∧ finite_trace_sub_projection IM selection pr_item = pr_sub_item
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Heqpr_item_x: Some (oitem', descriptor') = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (final_descriptors (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
pr_sub_item: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
final_sub_descriptors': equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
Hl: projT1 (l item) ∈ selection
Hpr_sub_item: match match equivocator_vlsm_transition_item_project (IM (`(projT1 (l {| l := composite_label_sub_projection (equivocator_IM IM) selection (l item) Hl; input := input item; destination := composite_state_sub_projection (equivocator_IM IM) selection (destination item); output := output item |})))) (composite_transition_item_projection (equivocator_IM (λ ei : sub_index selection, IM (`ei))) {| l := composite_label_sub_projection (equivocator_IM IM) selection (l item) Hl; input := input item; destination := composite_state_sub_projection (equivocator_IM IM) selection (destination item); output := output item |}) (final_descriptors (`(projT1 (l {| l := composite_label_sub_projection (equivocator_IM IM) selection (l item) Hl; input := input item; destination := composite_state_sub_projection (equivocator_IM IM) selection (destination item); output := output item |})))) with | Some (Some item', deqv') => Some (Some {| l := existT (projT1 (l {| l := composite_label_sub_projection (equivocator_IM IM) selection (l item) Hl; input := input item; destination := composite_state_sub_projection (equivocator_IM IM) selection (destination item); output := output item |})) (l item'); input := input {| l := composite_label_sub_projection (equivocator_IM IM) selection (l item) Hl; input := input item; destination := composite_state_sub_projection (equivocator_IM IM) selection (destination item); output := output item |}; destination := equivocators_state_project (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (destination {| l := composite_label_sub_projection (equivocator_IM IM) selection (l item) Hl; input := input item; destination := composite_state_sub_projection (equivocator_IM IM) selection (destination item); output := output item |}); output := output {| l := composite_label_sub_projection (equivocator_IM IM) selection (l item) Hl; input := input item; destination := composite_state_sub_projection (equivocator_IM IM) selection (destination item); output := output item |} |}, equivocator_descriptors_update (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (projT1 (l {| l := composite_label_sub_projection (equivocator_IM IM) selection (l item) Hl; input := input item; destination := composite_state_sub_projection (equivocator_IM IM) selection (destination item); output := output item |})) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (projT1 (l {| l := composite_label_sub_projection (equivocator_IM IM) selection (l item) Hl; input := input item; destination := composite_state_sub_projection (equivocator_IM IM) selection (destination item); output := output item |})) deqv') | None => None end with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (pr_sub_item, final_sub_descriptors')

final_sub_descriptors' = (λ i : sub_index selection, final_descriptors' (`i)) ∧ finite_trace_sub_projection IM selection pr_item = pr_sub_item
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Heqpr_item_x: Some (oitem', descriptor') = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (final_descriptors (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
pr_sub_item: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
final_sub_descriptors': equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
Hl: projT1 (l item) ∈ selection
Hpr_sub_item: match match equivocator_vlsm_transition_item_project (IM (projT1 (l item))) (composite_transition_item_projection (equivocator_IM (λ ei : sub_index selection, IM (`ei))) {| l := composite_label_sub_projection (equivocator_IM IM) selection (l item) Hl; input := input item; destination := composite_state_sub_projection (equivocator_IM IM) selection (destination item); output := output item |}) (final_descriptors (projT1 (l item))) with | Some (Some item', deqv') => Some (Some {| l := existT (dexist (projT1 (l item)) Hl) (l item'); input := input item; destination := equivocators_state_project (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (composite_state_sub_projection (equivocator_IM IM) selection (destination item)); output := output item |}, equivocator_descriptors_update (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (dexist (projT1 (l item)) Hl) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (dexist (projT1 (l item)) Hl) deqv') | None => None end with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (pr_sub_item, final_sub_descriptors')

final_sub_descriptors' = (λ i : sub_index selection, final_descriptors' (`i)) ∧ finite_trace_sub_projection IM selection pr_item = pr_sub_item
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Heqpr_item_x: Some (oitem', descriptor') = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (final_descriptors (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
pr_sub_item: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
final_sub_descriptors': equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
Hl: projT1 (l item) ∈ selection
Hpr_sub_item: match match equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := eq_rect (projT1 (l {| l := composite_label_sub_projection (equivocator_IM IM) selection (l item) Hl; input := input item; destination := λ subi : sub_index selection, destination item (`subi); output := output item |})) (λ y : sub_index selection, label (equivocator_IM (λ ei : sub_index selection, IM (`ei)) y)) (projT2 (l {| l := composite_label_sub_projection (equivocator_IM IM) selection (l item) Hl; input := input item; destination := λ subi : sub_index selection, destination item (`subi); output := output item |})) (projT1 (l {| l := composite_label_sub_projection (equivocator_IM IM) selection (l item) Hl; input := input item; destination := λ subi : sub_index selection, destination item (`subi); output := output item |})) (eq_sym eq_refl); input := input {| l := composite_label_sub_projection (equivocator_IM IM) selection (l item) Hl; input := input item; destination := λ subi : sub_index selection, destination item (`subi); output := output item |}; destination := destination {| l := composite_label_sub_projection (equivocator_IM IM) selection (l item) Hl; input := input item; destination := λ subi : sub_index selection, destination item (`subi); output := output item |} (projT1 (l {| l := composite_label_sub_projection (equivocator_IM IM) selection (l item) Hl; input := input item; destination := λ subi : sub_index selection, destination item (`subi); output := output item |})); output := output {| l := composite_label_sub_projection (equivocator_IM IM) selection (l item) Hl; input := input item; destination := λ subi : sub_index selection, destination item (`subi); output := output item |} |} (final_descriptors (projT1 (l item))) with | Some (Some item', deqv') => Some (Some {| l := existT (dexist (projT1 (l item)) Hl) (l item'); input := input item; destination := equivocators_state_project (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (λ subi : sub_index selection, destination item (`subi)); output := output item |}, equivocator_descriptors_update (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (dexist (projT1 (l item)) Hl) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (dexist (projT1 (l item)) Hl) deqv') | None => None end with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (pr_sub_item, final_sub_descriptors')

final_sub_descriptors' = (λ i : sub_index selection, final_descriptors' (`i)) ∧ finite_trace_sub_projection IM selection pr_item = pr_sub_item
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Heqpr_item_x: Some (oitem', descriptor') = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (final_descriptors (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
pr_sub_item: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
final_sub_descriptors': equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
Hl: projT1 (l item) ∈ selection
Hpr_sub_item: match match equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (final_descriptors (projT1 (l item))) with | Some (Some item', deqv') => Some (Some {| l := existT (dexist (projT1 (l item)) Hl) (l item'); input := input item; destination := equivocators_state_project (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (λ subi : sub_index selection, destination item (`subi)); output := output item |}, equivocator_descriptors_update (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (dexist (projT1 (l item)) Hl) deqv') | Some (None, deqv') => Some (None, equivocator_descriptors_update (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (dexist (projT1 (l item)) Hl) deqv') | None => None end with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (pr_sub_item, final_sub_descriptors')

final_sub_descriptors' = (λ i : sub_index selection, final_descriptors' (`i)) ∧ finite_trace_sub_projection IM selection pr_item = pr_sub_item
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Heqpr_item_x: Some (oitem', descriptor') = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (final_descriptors (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
pr_sub_item: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
final_sub_descriptors': equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
Hl: projT1 (l item) ∈ selection
Hpr_sub_item: match match oitem' with | Some item' => Some (Some {| l := existT (dexist (projT1 (l item)) Hl) (l item'); input := input item; destination := equivocators_state_project (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (λ subi : sub_index selection, destination item (`subi)); output := output item |}, equivocator_descriptors_update (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (dexist (projT1 (l item)) Hl) descriptor') | None => Some (None, equivocator_descriptors_update (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (dexist (projT1 (l item)) Hl) descriptor') end with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (pr_sub_item, final_sub_descriptors')

final_sub_descriptors' = (λ i : sub_index selection, final_descriptors' (`i)) ∧ finite_trace_sub_projection IM selection pr_item = pr_sub_item
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
pr_sub_item: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
final_sub_descriptors': equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
Hl: projT1 (l item) ∈ selection
Hpr_sub_item: match match oitem' with | Some item' => Some (Some {| l := existT (dexist (projT1 (l item)) Hl) (l item'); input := input item; destination := equivocators_state_project (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (λ subi : sub_index selection, destination item (`subi)); output := output item |}, equivocator_descriptors_update (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (dexist (projT1 (l item)) Hl) descriptor') | None => Some (None, equivocator_descriptors_update (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (dexist (projT1 (l item)) Hl) descriptor') end with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (pr_sub_item, final_sub_descriptors')

final_sub_descriptors' = (λ i : sub_index selection, final_descriptors' (`i)) ∧ finite_trace_sub_projection IM selection pr_item = pr_sub_item
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
pr_sub_item: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
final_sub_descriptors': equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
Hl: projT1 (l item) ∈ selection
Hpr_sub_item: match match oitem' with | Some item' => Some (Some {| l := existT (dexist (projT1 (l item)) Hl) (l item'); input := input item; destination := equivocators_state_project (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (λ subi : sub_index selection, destination item (`subi)); output := output item |}, equivocator_descriptors_update (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (dexist (projT1 (l item)) Hl) descriptor') | None => Some (None, equivocator_descriptors_update (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (dexist (projT1 (l item)) Hl) descriptor') end with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (pr_sub_item, final_sub_descriptors')

final_sub_descriptors' = (λ i : sub_index selection, final_descriptors' (`i))
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
pr_sub_item: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
final_sub_descriptors': equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
Hl: projT1 (l item) ∈ selection
Hpr_sub_item: match match oitem' with | Some item' => Some (Some {| l := existT (dexist (projT1 (l item)) Hl) (l item'); input := input item; destination := equivocators_state_project (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (λ subi : sub_index selection, destination item (`subi)); output := output item |}, equivocator_descriptors_update (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (dexist (projT1 (l item)) Hl) descriptor') | None => Some (None, equivocator_descriptors_update (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (dexist (projT1 (l item)) Hl) descriptor') end with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (pr_sub_item, final_sub_descriptors')
finite_trace_sub_projection IM selection pr_item = pr_sub_item
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
pr_sub_item: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
final_sub_descriptors': equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
Hl: projT1 (l item) ∈ selection
Hpr_sub_item: match match oitem' with | Some item' => Some (Some {| l := existT (dexist (projT1 (l item)) Hl) (l item'); input := input item; destination := equivocators_state_project (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (λ subi : sub_index selection, destination item (`subi)); output := output item |}, equivocator_descriptors_update (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (dexist (projT1 (l item)) Hl) descriptor') | None => Some (None, equivocator_descriptors_update (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (dexist (projT1 (l item)) Hl) descriptor') end with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (pr_sub_item, final_sub_descriptors')

final_sub_descriptors' = (λ i : sub_index selection, final_descriptors' (`i))
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
pr_sub_item: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
final_sub_descriptors': equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
Hl: projT1 (l item) ∈ selection
Hpr_sub_item: match match oitem' with | Some item' => Some (Some {| l := existT (dexist (projT1 (l item)) Hl) (l item'); input := input item; destination := equivocators_state_project (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (λ subi : sub_index selection, destination item (`subi)); output := output item |}, equivocator_descriptors_update (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (dexist (projT1 (l item)) Hl) descriptor') | None => Some (None, equivocator_descriptors_update (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (dexist (projT1 (l item)) Hl) descriptor') end with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (pr_sub_item, final_sub_descriptors')
i: sub_index selection

final_sub_descriptors' i = final_descriptors' (`i)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
item': transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Hl: projT1 (l item) ∈ selection
i: sub_index selection
e: `i = projT1 (l item)

equivocator_descriptors_update (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (dexist (projT1 (l item)) Hl) descriptor' i = equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor' (`i)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
item': transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Hl: projT1 (l item) ∈ selection
i: sub_index selection
n: `i ≠ projT1 (l item)
equivocator_descriptors_update (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (dexist (projT1 (l item)) Hl) descriptor' i = equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor' (`i)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
descriptor': MachineDescriptor (IM (projT1 (l item)))
Hl: projT1 (l item) ∈ selection
i: sub_index selection
e: `i = projT1 (l item)
equivocator_descriptors_update (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (dexist (projT1 (l item)) Hl) descriptor' i = equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor' (`i)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
descriptor': MachineDescriptor (IM (projT1 (l item)))
Hl: projT1 (l item) ∈ selection
i: sub_index selection
n: `i ≠ projT1 (l item)
equivocator_descriptors_update (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (dexist (projT1 (l item)) Hl) descriptor' i = equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor' (`i)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
item': transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Hl: projT1 (l item) ∈ selection
i: sub_index selection
e: `i = projT1 (l item)

equivocator_descriptors_update (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (dexist (projT1 (l item)) Hl) descriptor' i = equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor' (`i)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
item': transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Hl: projT1 (l item) ∈ selection
i: sub_index selection
e: `i = projT1 (l item)

equivocator_descriptors_update (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (dexist (projT1 (l item)) Hl) descriptor' i = eq_rect_r (λ i : index, MachineDescriptor (IM i)) descriptor' e
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
item': transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Hl: projT1 (l item) ∈ selection
i: sub_index selection
e: `i = projT1 (l item)
e1: i = dexist (projT1 (l item)) Hl

equivocator_descriptors_update (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (dexist (projT1 (l item)) Hl) descriptor' i = eq_rect_r (λ i : index, MachineDescriptor (IM i)) descriptor' e
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
item': transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Hl: projT1 (l item) ∈ selection
e: `(dexist (projT1 (l item)) Hl) = projT1 (l item)

equivocator_descriptors_update (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (dexist (projT1 (l item)) Hl) descriptor' (dexist (projT1 (l item)) Hl) = eq_rect_r (λ i : index, MachineDescriptor (IM i)) descriptor' e
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
item': transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Hl: projT1 (l item) ∈ selection
e: `(dexist (projT1 (l item)) Hl) = projT1 (l item)

eq_rect_r (λ i : sub_index selection, MachineDescriptor (IM (`i))) descriptor' eq_refl = eq_rect_r (λ i : index, MachineDescriptor (IM i)) descriptor' e
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
item': transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Hl: projT1 (l item) ∈ selection
e: projT1 (l item) = projT1 (l item)

eq_rect_r (λ i : sub_index selection, MachineDescriptor (IM (`i))) descriptor' eq_refl = eq_rect_r (λ i : index, MachineDescriptor (IM i)) descriptor' e
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
item': transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Hl: projT1 (l item) ∈ selection
e: projT1 (l item) = projT1 (l item)

eq_refl = e
by apply Eqdep_dec.UIP_dec.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
item': transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Hl: projT1 (l item) ∈ selection
i: sub_index selection
n: `i ≠ projT1 (l item)

equivocator_descriptors_update (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (dexist (projT1 (l item)) Hl) descriptor' i = equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor' (`i)
by rewrite! equivocator_descriptors_update_neq; [| | intros ->].
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
descriptor': MachineDescriptor (IM (projT1 (l item)))
Hl: projT1 (l item) ∈ selection
i: sub_index selection
e: `i = projT1 (l item)

equivocator_descriptors_update (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (dexist (projT1 (l item)) Hl) descriptor' i = equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor' (`i)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
descriptor': MachineDescriptor (IM (projT1 (l item)))
Hl: projT1 (l item) ∈ selection
i: sub_index selection
e: `i = projT1 (l item)

equivocator_descriptors_update (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (dexist (projT1 (l item)) Hl) descriptor' i = eq_rect_r (λ i : index, MachineDescriptor (IM i)) descriptor' e
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
descriptor': MachineDescriptor (IM (projT1 (l item)))
Hl: projT1 (l item) ∈ selection
i: sub_index selection
e: `i = projT1 (l item)
e1: i = dexist (projT1 (l item)) Hl

equivocator_descriptors_update (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (dexist (projT1 (l item)) Hl) descriptor' i = eq_rect_r (λ i : index, MachineDescriptor (IM i)) descriptor' e
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
descriptor': MachineDescriptor (IM (projT1 (l item)))
Hl: projT1 (l item) ∈ selection
e: `(dexist (projT1 (l item)) Hl) = projT1 (l item)

equivocator_descriptors_update (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (dexist (projT1 (l item)) Hl) descriptor' (dexist (projT1 (l item)) Hl) = eq_rect_r (λ i : index, MachineDescriptor (IM i)) descriptor' e
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
descriptor': MachineDescriptor (IM (projT1 (l item)))
Hl: projT1 (l item) ∈ selection
e: `(dexist (projT1 (l item)) Hl) = projT1 (l item)

eq_rect_r (λ i : sub_index selection, MachineDescriptor (IM (`i))) descriptor' eq_refl = eq_rect_r (λ i : index, MachineDescriptor (IM i)) descriptor' e
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
descriptor': MachineDescriptor (IM (projT1 (l item)))
Hl: projT1 (l item) ∈ selection
e: projT1 (l item) = projT1 (l item)

eq_rect_r (λ i : sub_index selection, MachineDescriptor (IM (`i))) descriptor' eq_refl = eq_rect_r (λ i : index, MachineDescriptor (IM i)) descriptor' e
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
descriptor': MachineDescriptor (IM (projT1 (l item)))
Hl: projT1 (l item) ∈ selection
e: projT1 (l item) = projT1 (l item)

eq_refl = e
by apply Eqdep_dec.UIP_dec.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
descriptor': MachineDescriptor (IM (projT1 (l item)))
Hl: projT1 (l item) ∈ selection
i: sub_index selection
n: `i ≠ projT1 (l item)

equivocator_descriptors_update (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (dexist (projT1 (l item)) Hl) descriptor' i = equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor' (`i)
by rewrite! equivocator_descriptors_update_neq; [| | intros ->].
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
pr_sub_item: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
final_sub_descriptors': equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
Hl: projT1 (l item) ∈ selection
Hpr_sub_item: match match oitem' with | Some item' => Some (Some {| l := existT (dexist (projT1 (l item)) Hl) (l item'); input := input item; destination := equivocators_state_project (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (λ subi : sub_index selection, destination item (`subi)); output := output item |}, equivocator_descriptors_update (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (dexist (projT1 (l item)) Hl) descriptor') | None => Some (None, equivocator_descriptors_update (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (dexist (projT1 (l item)) Hl) descriptor') end with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (pr_sub_item, final_sub_descriptors')

finite_trace_sub_projection IM selection pr_item = pr_sub_item
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
item': transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Hl: projT1 (l item) ∈ selection

match pre_VLSM_projection_transition_item_project (composite_type IM) (composite_type (sub_IM IM selection)) (composite_label_sub_projection_option IM selection) (composite_state_sub_projection IM selection) {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |} with | Some y => [y] | None => [] end = [{| l := existT (dexist (projT1 (l item)) Hl) (l item'); input := input item; destination := equivocators_state_project (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (λ subi : sub_index selection, destination item (`subi)); output := output item |}]
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
item': transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Hl: projT1 (l item) ∈ selection

match match match decide (projT1 (l {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}) ∈ selection) with | left i_in => Some (composite_label_sub_projection IM selection (l {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}) i_in) | right _ => None end with | Some lY => Some {| l := lY; input := input {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}; destination := composite_state_sub_projection IM selection (destination {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}); output := output {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |} |} | None => None end with | Some y => [y] | None => [] end = [{| l := existT (dexist (projT1 (l item)) Hl) (l item'); input := input item; destination := equivocators_state_project (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (λ subi : sub_index selection, destination item (`subi)); output := output item |}]
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
item': transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Hl: projT1 (l item) ∈ selection

match match match decide (projT1 (l item) ∈ selection) with | left i_in => Some (composite_label_sub_projection IM selection (existT (projT1 (l item)) (l item')) i_in) | right _ => None end with | Some lY => Some {| l := lY; input := input item; destination := composite_state_sub_projection IM selection (equivocators_state_project IM final_descriptors (destination item)); output := output item |} | None => None end with | Some y => [y] | None => [] end = [{| l := existT (dexist (projT1 (l item)) Hl) (l item'); input := input item; destination := equivocators_state_project (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (λ subi : sub_index selection, destination item (`subi)); output := output item |}]
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
item': transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Hl, _Hl: projT1 (l item) ∈ selection

[{| l := composite_label_sub_projection IM selection (existT (projT1 (l item)) (l item')) _Hl; input := input item; destination := composite_state_sub_projection IM selection (equivocators_state_project IM final_descriptors (destination item)); output := output item |}] = [{| l := existT (dexist (projT1 (l item)) Hl) (l item'); input := input item; destination := equivocators_state_project (λ ei : sub_index selection, IM (`ei)) (λ i : sub_index selection, final_descriptors (`i)) (λ subi : sub_index selection, destination item (`subi)); output := output item |}]
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
item': transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Hl, _Hl: projT1 (l item) ∈ selection

composite_label_sub_projection IM selection (existT (projT1 (l item)) (l item')) _Hl = existT (dexist (projT1 (l item)) Hl) (l item')
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
item': transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Hl, _Hl: projT1 (l item) ∈ selection

existT (dexist (projT1 (existT (projT1 (l item)) (l item'))) _Hl) (projT2 (existT (projT1 (l item)) (l item'))) = existT (dexist (projT1 (l item)) Hl) (l item')
by apply (@dec_sig_sigT_eq _ (sub_index_prop selection) (sub_index_prop_dec selection) (fun n => label (IM n)) (projT1 (l item)) (l item') (l item') _Hl Hl).
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Heqpr_item_x: Some (oitem', descriptor') = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (final_descriptors (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
pr_sub_item: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
final_sub_descriptors': equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
Hl: projT1 (l item) ∉ selection
Hpr_sub_item: equivocators_trace_project (λ ei : sub_index selection, IM (`ei)) final_sub_descriptors [] = Some (pr_sub_item, final_sub_descriptors')

final_sub_descriptors' = (λ i : sub_index selection, final_descriptors' (`i)) ∧ finite_trace_sub_projection IM selection pr_item = pr_sub_item
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Heqpr_item_x: Some (oitem', descriptor') = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (final_descriptors (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
pr_sub_item: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
final_sub_descriptors': equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
Hl: projT1 (l item) ∉ selection
Hpr_sub_item: Some ([], final_sub_descriptors) = Some (pr_sub_item, final_sub_descriptors')

final_sub_descriptors' = (λ i : sub_index selection, final_descriptors' (`i)) ∧ finite_trace_sub_projection IM selection pr_item = pr_sub_item
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Heqpr_item_x: Some (oitem', descriptor') = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (final_descriptors (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
pr_sub_item: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
final_sub_descriptors': equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
Hl: projT1 (l item) ∉ selection
Hpr_sub_item: Some ([], λ i : sub_index selection, final_descriptors (`i)) = Some (pr_sub_item, final_sub_descriptors')

final_sub_descriptors' = (λ i : sub_index selection, final_descriptors' (`i)) ∧ finite_trace_sub_projection IM selection pr_item = pr_sub_item
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Heqpr_item_x: Some (oitem', descriptor') = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (final_descriptors (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
pr_sub_item: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
final_sub_descriptors': equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
Hl: projT1 (l item) ∉ selection
Hpr_sub_item: Some ([], λ i : sub_index selection, final_descriptors (`i)) = Some (pr_sub_item, final_sub_descriptors')
H2: [] = pr_sub_item
H3: (λ i : sub_index selection, final_descriptors (`i)) = final_sub_descriptors'

(λ i : sub_index selection, final_descriptors (`i)) = (λ i : sub_index selection, final_descriptors' (`i)) ∧ finite_trace_sub_projection IM selection pr_item = []
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Heqpr_item_x: Some (oitem', descriptor') = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (final_descriptors (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
Hl: projT1 (l item) ∉ selection
Hpr_sub_item: Some ([], λ i : sub_index selection, final_descriptors (`i)) = Some ([], λ i : sub_index selection, final_descriptors (`i))

(λ i : sub_index selection, final_descriptors (`i)) = (λ i : sub_index selection, final_descriptors' (`i)) ∧ finite_trace_sub_projection IM selection pr_item = []
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Heqpr_item_x: Some (oitem', descriptor') = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (final_descriptors (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
Hl: projT1 (l item) ∉ selection

(λ i : sub_index selection, final_descriptors (`i)) = (λ i : sub_index selection, final_descriptors' (`i)) ∧ finite_trace_sub_projection IM selection pr_item = []
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Heqpr_item_x: Some (oitem', descriptor') = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (final_descriptors (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
Hl: projT1 (l item) ∉ selection

(λ i : sub_index selection, final_descriptors (`i)) = (λ i : sub_index selection, final_descriptors' (`i))
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Heqpr_item_x: Some (oitem', descriptor') = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (final_descriptors (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
Hl: projT1 (l item) ∉ selection
finite_trace_sub_projection IM selection pr_item = []
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Heqpr_item_x: Some (oitem', descriptor') = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (final_descriptors (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
Hl: projT1 (l item) ∉ selection

(λ i : sub_index selection, final_descriptors (`i)) = (λ i : sub_index selection, final_descriptors' (`i))
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Heqpr_item_x: Some (oitem', descriptor') = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (final_descriptors (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
Hl: projT1 (l item) ∉ selection
i: sub_index selection

final_descriptors (`i) = final_descriptors' (`i)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Heqpr_item_x: Some (oitem', descriptor') = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (final_descriptors (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
Hl: projT1 (l item) ∉ selection
i: sub_index selection

`i ≠ projT1 (l item)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Heqpr_item_x: Some (oitem', descriptor') = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (final_descriptors (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
Hl: projT1 (l item) ∉ selection
i: sub_index selection
Hnot: `i ≠ projT1 (l item)
final_descriptors (`i) = final_descriptors' (`i)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Heqpr_item_x: Some (oitem', descriptor') = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (final_descriptors (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
Hl: projT1 (l item) ∉ selection
i: sub_index selection

`i ≠ projT1 (l item)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Heqpr_item_x: Some (oitem', descriptor') = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (final_descriptors (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
Hl: projT1 (l item) ∉ selection
i: sub_index selection
Hnot: `i = projT1 (l item)

False
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Heqpr_item_x: Some (oitem', descriptor') = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (final_descriptors (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
i: sub_index selection
Hnot: `i = projT1 (l item)

projT1 (l item) ∈ selection
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Heqpr_item_x: Some (oitem', descriptor') = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (final_descriptors (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
x: index
i: bool_decide (sub_index_prop selection x)
Hnot: `(x ↾ i) = projT1 (l item)

projT1 (l item) ∈ selection
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Heqpr_item_x: Some (oitem', descriptor') = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (final_descriptors (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
x: index
i: bool_decide (sub_index_prop selection x)
Hnot: x = projT1 (l item)

projT1 (l item) ∈ selection
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Heqpr_item_x: Some (oitem', descriptor') = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (final_descriptors (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
i: bool_decide (sub_index_prop selection (projT1 (l item)))

projT1 (l item) ∈ selection
by apply bool_decide_spec in i.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Heqpr_item_x: Some (oitem', descriptor') = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (final_descriptors (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
Hl: projT1 (l item) ∉ selection
i: sub_index selection
Hnot: `i ≠ projT1 (l item)

final_descriptors (`i) = final_descriptors' (`i)
by destruct oitem' as [item' |] ; inversion Hpr_item_x; subst; clear Hpr_item_x ; inversion Hpr_item; subst; clear Hpr_item ; state_update_simpl.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors', final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
pr_item: list (composite_transition_item IM)
ox: option (composite_transition_item IM)
final': equivocator_descriptors IM
oitem': option transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Heqpr_item_x: Some (oitem', descriptor') = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (final_descriptors (projT1 (l item)))
Hpr_item_x: match oitem' with | Some item' => Some (Some {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') | None => Some (None, equivocator_descriptors_update IM final_descriptors (projT1 (l item)) descriptor') end = Some (ox, final')
Hpr_item: match ox with | Some item' => Some ([item'], final') | None => Some ([], final') end = Some (pr_item, final_descriptors')
Hl: projT1 (l item) ∉ selection

finite_trace_sub_projection IM selection pr_item = []
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
item': transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Heqpr_item_x: Some (Some item', descriptor') = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (final_descriptors (projT1 (l item)))
Hl: projT1 (l item) ∉ selection

match pre_VLSM_projection_transition_item_project (composite_type IM) (composite_type (sub_IM IM selection)) (composite_label_sub_projection_option IM selection) (composite_state_sub_projection IM selection) {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |} with | Some y => [y] | None => [] end = []
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
item': transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Heqpr_item_x: Some (Some item', descriptor') = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (final_descriptors (projT1 (l item)))
Hl: projT1 (l item) ∉ selection

match pre_VLSM_projection_transition_item_project (composite_type IM) (composite_type (sub_IM IM selection)) (composite_label_sub_projection_option IM selection) (composite_state_sub_projection IM selection) {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |} with | Some y => [y] | None => [] end = []
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
item': transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Heqpr_item_x: Some (Some item', descriptor') = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (final_descriptors (projT1 (l item)))
Hl: projT1 (l item) ∉ selection

match pre_VLSM_projection_transition_item_project (composite_type IM) (composite_type (sub_IM IM selection)) (composite_label_sub_projection_option IM selection) (composite_state_sub_projection IM selection) {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |} with | Some y => [y] | None => [] end = []
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
item: composite_transition_item (equivocator_IM IM)
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
item': transition_item
descriptor': MachineDescriptor (IM (projT1 (l item)))
Heqpr_item_x: Some (Some item', descriptor') = equivocator_vlsm_transition_item_project (IM (projT1 (l item))) {| l := projT2 (l item); input := input item; destination := destination item (projT1 (l item)); output := output item |} (final_descriptors (projT1 (l item)))
Hl: projT1 (l item) ∉ selection

match match match decide (projT1 (l {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}) ∈ selection) with | left i_in => Some (composite_label_sub_projection IM selection (l {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}) i_in) | right _ => None end with | Some lY => Some {| l := lY; input := input {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}; destination := composite_state_sub_projection IM selection (destination {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |}); output := output {| l := existT (projT1 (l item)) (l item'); input := input item; destination := equivocators_state_project IM final_descriptors (destination item); output := output item |} |} | None => None end with | Some y => [y] | None => [] end = []
by case_decide. Qed.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
final_descriptors, initial_descriptors: equivocator_descriptors IM
initial_sub_descriptors: equivocator_descriptors (sub_IM IM selection)
tr: list (composite_transition_item (equivocator_IM IM))
trX: list (composite_transition_item IM)
tr_subX: list (composite_transition_item (sub_IM IM selection))
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
Hproject_tr: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)
Hproject_sub_tr: equivocators_trace_project (sub_IM IM selection) final_sub_descriptors (finite_trace_sub_projection (equivocator_IM IM) selection tr) = Some (tr_subX, initial_sub_descriptors)

initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i)) ∧ finite_trace_sub_projection IM selection trX = tr_subX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
final_descriptors, initial_descriptors: equivocator_descriptors IM
initial_sub_descriptors: equivocator_descriptors (sub_IM IM selection)
tr: list (composite_transition_item (equivocator_IM IM))
trX: list (composite_transition_item IM)
tr_subX: list (composite_transition_item (sub_IM IM selection))
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
Hproject_tr: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)
Hproject_sub_tr: equivocators_trace_project (sub_IM IM selection) final_sub_descriptors (finite_trace_sub_projection (equivocator_IM IM) selection tr) = Some (tr_subX, initial_sub_descriptors)

initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i)) ∧ finite_trace_sub_projection IM selection trX = tr_subX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
final_descriptors, initial_descriptors: equivocator_descriptors IM
initial_sub_descriptors: equivocator_descriptors (sub_IM IM selection)
tr: list (composite_transition_item (equivocator_IM IM))
trX: list (composite_transition_item IM)
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
Hproject_tr: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)

tr_subX : list (composite_transition_item (sub_IM IM selection)), equivocators_trace_project (sub_IM IM selection) final_sub_descriptors (finite_trace_sub_projection (equivocator_IM IM) selection tr) = Some (tr_subX, initial_sub_descriptors) → initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i)) ∧ finite_trace_sub_projection IM selection trX = tr_subX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
final_descriptors, initial_descriptors: equivocator_descriptors IM
initial_sub_descriptors: equivocator_descriptors (sub_IM IM selection)
tr: list (composite_transition_item (equivocator_IM IM))
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))

trX : list (composite_transition_item IM), equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors) → tr_subX : list (composite_transition_item (sub_IM IM selection)), equivocators_trace_project (sub_IM IM selection) final_sub_descriptors (finite_trace_sub_projection (equivocator_IM IM) selection tr) = Some (tr_subX, initial_sub_descriptors) → initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i)) ∧ finite_trace_sub_projection IM selection trX = tr_subX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
initial_descriptors: equivocator_descriptors IM
initial_sub_descriptors: equivocator_descriptors (sub_IM IM selection)
tr: list (composite_transition_item (equivocator_IM IM))

(final_descriptors : equivocator_descriptors IM) (final_sub_descriptors := λ i : sub_index selection, final_descriptors (`i)) (trX : list (composite_transition_item IM)), equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors) → tr_subX : list (composite_transition_item (sub_IM IM selection)), equivocators_trace_project (sub_IM IM selection) final_sub_descriptors (finite_trace_sub_projection (equivocator_IM IM) selection tr) = Some (tr_subX, initial_sub_descriptors) → initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i)) ∧ finite_trace_sub_projection IM selection trX = tr_subX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
initial_descriptors: equivocator_descriptors IM
initial_sub_descriptors: equivocator_descriptors (sub_IM IM selection)
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
trX: list (composite_transition_item IM)
Hproject_tr: equivocators_trace_project IM final_descriptors [] = Some (trX, initial_descriptors)
tr_subX: list (composite_transition_item (sub_IM IM selection))
Hproject_sub_tr: equivocators_trace_project (sub_IM IM selection) final_sub_descriptors (finite_trace_sub_projection (equivocator_IM IM) selection []) = Some (tr_subX, initial_sub_descriptors)

initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i)) ∧ finite_trace_sub_projection IM selection trX = tr_subX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
initial_descriptors: equivocator_descriptors IM
initial_sub_descriptors: equivocator_descriptors (sub_IM IM selection)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
IHtr: (final_descriptors : equivocator_descriptors IM) (final_sub_descriptors := λ i : sub_index selection, final_descriptors (`i)) (trX : list (composite_transition_item IM)), equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors) → tr_subX : list (composite_transition_item (sub_IM IM selection)), equivocators_trace_project (sub_IM IM selection) final_sub_descriptors (finite_trace_sub_projection (equivocator_IM IM) selection tr) = Some (tr_subX, initial_sub_descriptors) → initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i)) ∧ finite_trace_sub_projection IM selection trX = tr_subX
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
trX: list (composite_transition_item IM)
Hproject_tr: equivocators_trace_project IM final_descriptors (tr ++ [x]) = Some (trX, initial_descriptors)
tr_subX: list (composite_transition_item (sub_IM IM selection))
Hproject_sub_tr: equivocators_trace_project (sub_IM IM selection) final_sub_descriptors (finite_trace_sub_projection (equivocator_IM IM) selection (tr ++ [x])) = Some (tr_subX, initial_sub_descriptors)
initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i)) ∧ finite_trace_sub_projection IM selection trX = tr_subX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
initial_descriptors: equivocator_descriptors IM
initial_sub_descriptors: equivocator_descriptors (sub_IM IM selection)
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
trX: list (composite_transition_item IM)
Hproject_tr: equivocators_trace_project IM final_descriptors [] = Some (trX, initial_descriptors)
tr_subX: list (composite_transition_item (sub_IM IM selection))
Hproject_sub_tr: equivocators_trace_project (sub_IM IM selection) final_sub_descriptors (finite_trace_sub_projection (equivocator_IM IM) selection []) = Some (tr_subX, initial_sub_descriptors)

initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i)) ∧ finite_trace_sub_projection IM selection trX = tr_subX
by inversion Hproject_tr; inversion Hproject_sub_tr; subst.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
initial_descriptors: equivocator_descriptors IM
initial_sub_descriptors: equivocator_descriptors (sub_IM IM selection)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
IHtr: (final_descriptors : equivocator_descriptors IM) (final_sub_descriptors := λ i : sub_index selection, final_descriptors (`i)) (trX : list (composite_transition_item IM)), equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors) → tr_subX : list (composite_transition_item (sub_IM IM selection)), equivocators_trace_project (sub_IM IM selection) final_sub_descriptors (finite_trace_sub_projection (equivocator_IM IM) selection tr) = Some (tr_subX, initial_sub_descriptors) → initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i)) ∧ finite_trace_sub_projection IM selection trX = tr_subX
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
trX: list (composite_transition_item IM)
Hproject_tr: equivocators_trace_project IM final_descriptors (tr ++ [x]) = Some (trX, initial_descriptors)
tr_subX: list (composite_transition_item (sub_IM IM selection))
Hproject_sub_tr: equivocators_trace_project (sub_IM IM selection) final_sub_descriptors (finite_trace_sub_projection (equivocator_IM IM) selection (tr ++ [x])) = Some (tr_subX, initial_sub_descriptors)

initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i)) ∧ finite_trace_sub_projection IM selection trX = tr_subX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
initial_descriptors: equivocator_descriptors IM
initial_sub_descriptors: equivocator_descriptors (sub_IM IM selection)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
IHtr: (final_descriptors : equivocator_descriptors IM) (final_sub_descriptors := λ i : sub_index selection, final_descriptors (`i)) (trX : list (composite_transition_item IM)), equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors) → tr_subX : list (composite_transition_item (sub_IM IM selection)), equivocators_trace_project (sub_IM IM selection) final_sub_descriptors (finite_trace_sub_projection (equivocator_IM IM) selection tr) = Some (tr_subX, initial_sub_descriptors) → initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i)) ∧ finite_trace_sub_projection IM selection trX = tr_subX
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
trX: list (composite_transition_item IM)
Hproject_tr: foldr (equivocators_trace_project_folder IM) (Some ([], final_descriptors)) (tr ++ [x]) = Some (trX, initial_descriptors)
tr_subX: list (composite_transition_item (sub_IM IM selection))
Hproject_sub_tr: equivocators_trace_project (sub_IM IM selection) final_sub_descriptors (finite_trace_sub_projection (equivocator_IM IM) selection (tr ++ [x])) = Some (tr_subX, initial_sub_descriptors)

initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i)) ∧ finite_trace_sub_projection IM selection trX = tr_subX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
initial_descriptors: equivocator_descriptors IM
initial_sub_descriptors: equivocator_descriptors (sub_IM IM selection)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
IHtr: (final_descriptors : equivocator_descriptors IM) (final_sub_descriptors := λ i : sub_index selection, final_descriptors (`i)) (trX : list (composite_transition_item IM)), equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors) → tr_subX : list (composite_transition_item (sub_IM IM selection)), equivocators_trace_project (sub_IM IM selection) final_sub_descriptors (finite_trace_sub_projection (equivocator_IM IM) selection tr) = Some (tr_subX, initial_sub_descriptors) → initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i)) ∧ finite_trace_sub_projection IM selection trX = tr_subX
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
trX: list (composite_transition_item IM)
Hproject_tr: foldr (equivocators_trace_project_folder IM) (foldr (equivocators_trace_project_folder IM) (Some ([], final_descriptors)) [x]) tr = Some (trX, initial_descriptors)
tr_subX: list (composite_transition_item (sub_IM IM selection))
Hproject_sub_tr: equivocators_trace_project (sub_IM IM selection) final_sub_descriptors (finite_trace_sub_projection (equivocator_IM IM) selection (tr ++ [x])) = Some (tr_subX, initial_sub_descriptors)

initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i)) ∧ finite_trace_sub_projection IM selection trX = tr_subX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
initial_descriptors: equivocator_descriptors IM
initial_sub_descriptors: equivocator_descriptors (sub_IM IM selection)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
IHtr: (final_descriptors : equivocator_descriptors IM) (final_sub_descriptors := λ i : sub_index selection, final_descriptors (`i)) (trX : list (composite_transition_item IM)), equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors) → tr_subX : list (composite_transition_item (sub_IM IM selection)), equivocators_trace_project (sub_IM IM selection) final_sub_descriptors (finite_trace_sub_projection (equivocator_IM IM) selection tr) = Some (tr_subX, initial_sub_descriptors) → initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i)) ∧ finite_trace_sub_projection IM selection trX = tr_subX
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
trX, projectx: list (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hproject_x: foldr (equivocators_trace_project_folder IM) (Some ([], final_descriptors)) [x] = Some (projectx, final_descriptors')
Hproject_tr: foldr (equivocators_trace_project_folder IM) (Some (projectx, final_descriptors')) tr = Some (trX, initial_descriptors)
tr_subX: list (composite_transition_item (sub_IM IM selection))
Hproject_sub_tr: equivocators_trace_project (sub_IM IM selection) final_sub_descriptors (finite_trace_sub_projection (equivocator_IM IM) selection (tr ++ [x])) = Some (tr_subX, initial_sub_descriptors)

initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i)) ∧ finite_trace_sub_projection IM selection trX = tr_subX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
initial_descriptors: equivocator_descriptors IM
initial_sub_descriptors: equivocator_descriptors (sub_IM IM selection)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
IHtr: (final_descriptors : equivocator_descriptors IM) (final_sub_descriptors := λ i : sub_index selection, final_descriptors (`i)) (trX : list (composite_transition_item IM)), equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors) → tr_subX : list (composite_transition_item (sub_IM IM selection)), equivocators_trace_project (sub_IM IM selection) final_sub_descriptors (finite_trace_sub_projection (equivocator_IM IM) selection tr) = Some (tr_subX, initial_sub_descriptors) → initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i)) ∧ finite_trace_sub_projection IM selection trX = tr_subX
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
trX, projectx: list (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hproject_x: foldr (equivocators_trace_project_folder IM) (Some ([], final_descriptors)) [x] = Some (projectx, final_descriptors')
Hproject_tr: trX0 : list (composite_transition_item IM), foldr (equivocators_trace_project_folder IM) (Some ([], final_descriptors')) tr = Some (trX0, initial_descriptors) ∧ trX = trX0 ++ projectx
tr_subX: list (composite_transition_item (sub_IM IM selection))
Hproject_sub_tr: equivocators_trace_project (sub_IM IM selection) final_sub_descriptors (finite_trace_sub_projection (equivocator_IM IM) selection (tr ++ [x])) = Some (tr_subX, initial_sub_descriptors)

initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i)) ∧ finite_trace_sub_projection IM selection trX = tr_subX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
initial_descriptors: equivocator_descriptors IM
initial_sub_descriptors: equivocator_descriptors (sub_IM IM selection)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
IHtr: (final_descriptors : equivocator_descriptors IM) (final_sub_descriptors := λ i : sub_index selection, final_descriptors (`i)) (trX : list (composite_transition_item IM)), equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors) → tr_subX : list (composite_transition_item (sub_IM IM selection)), equivocators_trace_project (sub_IM IM selection) final_sub_descriptors (finite_trace_sub_projection (equivocator_IM IM) selection tr) = Some (tr_subX, initial_sub_descriptors) → initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i)) ∧ finite_trace_sub_projection IM selection trX = tr_subX
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
trX, projectx: list (composite_transition_item IM)
final_descriptors': equivocator_descriptors IM
Hproject_x: foldr (equivocators_trace_project_folder IM) (Some ([], final_descriptors)) [x] = Some (projectx, final_descriptors')
trX0: list (composite_transition_item IM)
HtrX0: foldr (equivocators_trace_project_folder IM) (Some ([], final_descriptors')) tr = Some (trX0, initial_descriptors)
HtrX: trX = trX0 ++ projectx
tr_subX: list (composite_transition_item (sub_IM IM selection))
Hproject_sub_tr: equivocators_trace_project (sub_IM IM selection) final_sub_descriptors (finite_trace_sub_projection (equivocator_IM IM) selection (tr ++ [x])) = Some (tr_subX, initial_sub_descriptors)

initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i)) ∧ finite_trace_sub_projection IM selection trX = tr_subX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
initial_descriptors: equivocator_descriptors IM
initial_sub_descriptors: equivocator_descriptors (sub_IM IM selection)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors': equivocator_descriptors IM
trX0: list (composite_transition_item IM)
IHtr: tr_subX : list (composite_transition_item (sub_IM IM selection)), equivocators_trace_project (sub_IM IM selection) (λ i : sub_index selection, final_descriptors' (`i)) (finite_trace_sub_projection (equivocator_IM IM) selection tr) = Some (tr_subX, initial_sub_descriptors) → initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i)) ∧ finite_trace_sub_projection IM selection trX0 = tr_subX
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
trX, projectx: list (composite_transition_item IM)
Hproject_x: foldr (equivocators_trace_project_folder IM) (Some ([], final_descriptors)) [x] = Some (projectx, final_descriptors')
HtrX0: foldr (equivocators_trace_project_folder IM) (Some ([], final_descriptors')) tr = Some (trX0, initial_descriptors)
HtrX: trX = trX0 ++ projectx
tr_subX: list (composite_transition_item (sub_IM IM selection))
Hproject_sub_tr: equivocators_trace_project (sub_IM IM selection) final_sub_descriptors (finite_trace_sub_projection (equivocator_IM IM) selection (tr ++ [x])) = Some (tr_subX, initial_sub_descriptors)

initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i)) ∧ finite_trace_sub_projection IM selection trX = tr_subX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
initial_descriptors: equivocator_descriptors IM
initial_sub_descriptors: equivocator_descriptors (sub_IM IM selection)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors': equivocator_descriptors IM
trX0: list (composite_transition_item IM)
IHtr: tr_subX : list (composite_transition_item (sub_IM IM selection)), equivocators_trace_project (sub_IM IM selection) (λ i : sub_index selection, final_descriptors' (`i)) (finite_trace_sub_projection (equivocator_IM IM) selection tr) = Some (tr_subX, initial_sub_descriptors) → initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i)) ∧ finite_trace_sub_projection IM selection trX0 = tr_subX
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
trX, projectx: list (composite_transition_item IM)
Hproject_x: foldr (equivocators_trace_project_folder IM) (Some ([], final_descriptors)) [x] = Some (projectx, final_descriptors')
HtrX0: foldr (equivocators_trace_project_folder IM) (Some ([], final_descriptors')) tr = Some (trX0, initial_descriptors)
HtrX: trX = trX0 ++ projectx
tr_subX: list (composite_transition_item (sub_IM IM selection))
Hproject_sub_tr: equivocators_trace_project (sub_IM IM selection) final_sub_descriptors (finite_trace_sub_projection (equivocator_IM IM) selection tr ++ finite_trace_sub_projection (equivocator_IM IM) selection [x]) = Some (tr_subX, initial_sub_descriptors)

initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i)) ∧ finite_trace_sub_projection IM selection trX = tr_subX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
initial_descriptors: equivocator_descriptors IM
initial_sub_descriptors: equivocator_descriptors (sub_IM IM selection)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors': equivocator_descriptors IM
trX0: list (composite_transition_item IM)
IHtr: tr_subX : list (composite_transition_item (sub_IM IM selection)), equivocators_trace_project (sub_IM IM selection) (λ i : sub_index selection, final_descriptors' (`i)) (finite_trace_sub_projection (equivocator_IM IM) selection tr) = Some (tr_subX, initial_sub_descriptors) → initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i)) ∧ finite_trace_sub_projection IM selection trX0 = tr_subX
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
trX, projectx: list (composite_transition_item IM)
Hproject_x: foldr (equivocators_trace_project_folder IM) (Some ([], final_descriptors)) [x] = Some (projectx, final_descriptors')
HtrX0: foldr (equivocators_trace_project_folder IM) (Some ([], final_descriptors')) tr = Some (trX0, initial_descriptors)
HtrX: trX = trX0 ++ projectx
tr_subX: list (composite_transition_item (sub_IM IM selection))
Hproject_sub_tr: (preX sufX : list (composite_transition_item (λ i : sub_index selection, IM (`i)))) (eqv_descriptors' : equivocator_descriptors (λ i : sub_index selection, IM (`i))), equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_sub_descriptors (finite_trace_sub_projection (equivocator_IM IM) selection [x]) = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project (λ i : sub_index selection, IM (`i)) eqv_descriptors' (finite_trace_sub_projection (equivocator_IM IM) selection tr) = Some (preX, initial_sub_descriptors) ∧ tr_subX = preX ++ sufX

initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i)) ∧ finite_trace_sub_projection IM selection trX = tr_subX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
initial_descriptors: equivocator_descriptors IM
initial_sub_descriptors: equivocator_descriptors (sub_IM IM selection)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors': equivocator_descriptors IM
trX0: list (composite_transition_item IM)
IHtr: tr_subX : list (composite_transition_item (sub_IM IM selection)), equivocators_trace_project (sub_IM IM selection) (λ i : sub_index selection, final_descriptors' (`i)) (finite_trace_sub_projection (equivocator_IM IM) selection tr) = Some (tr_subX, initial_sub_descriptors) → initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i)) ∧ finite_trace_sub_projection IM selection trX0 = tr_subX
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
trX, projectx: list (composite_transition_item IM)
Hproject_x: foldr (equivocators_trace_project_folder IM) (Some ([], final_descriptors)) [x] = Some (projectx, final_descriptors')
HtrX0: foldr (equivocators_trace_project_folder IM) (Some ([], final_descriptors')) tr = Some (trX0, initial_descriptors)
HtrX: trX = trX0 ++ projectx
tr_subX: list (composite_transition_item (sub_IM IM selection))
tr_subX', project_sub_x: list (composite_transition_item (λ i : sub_index selection, IM (`i)))
final_sub_descriptors': equivocator_descriptors (λ i : sub_index selection, IM (`i))
Hproject_sub_x: equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_sub_descriptors (finite_trace_sub_projection (equivocator_IM IM) selection [x]) = Some (project_sub_x, final_sub_descriptors')
Htr_subX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_sub_descriptors' (finite_trace_sub_projection (equivocator_IM IM) selection tr) = Some (tr_subX', initial_sub_descriptors)
Heqtr_subX: tr_subX = tr_subX' ++ project_sub_x

initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i)) ∧ finite_trace_sub_projection IM selection trX = tr_subX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
initial_descriptors: equivocator_descriptors IM
initial_sub_descriptors: equivocator_descriptors (sub_IM IM selection)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors': equivocator_descriptors IM
trX0: list (composite_transition_item IM)
IHtr: tr_subX : list (composite_transition_item (sub_IM IM selection)), equivocators_trace_project (sub_IM IM selection) (λ i : sub_index selection, final_descriptors' (`i)) (finite_trace_sub_projection (equivocator_IM IM) selection tr) = Some (tr_subX, initial_sub_descriptors) → initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i)) ∧ finite_trace_sub_projection IM selection trX0 = tr_subX
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
trX, projectx: list (composite_transition_item IM)
Hproject_x: foldr (equivocators_trace_project_folder IM) (Some ([], final_descriptors)) [x] = Some (projectx, final_descriptors')
HtrX0: foldr (equivocators_trace_project_folder IM) (Some ([], final_descriptors')) tr = Some (trX0, initial_descriptors)
HtrX: trX = trX0 ++ projectx
tr_subX: list (composite_transition_item (sub_IM IM selection))
tr_subX', project_sub_x: list (composite_transition_item (λ i : sub_index selection, IM (`i)))
final_sub_descriptors': equivocator_descriptors (λ i : sub_index selection, IM (`i))
Hproject_sub_x: equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_sub_descriptors (finite_trace_sub_projection (equivocator_IM IM) selection [x]) = Some (project_sub_x, final_sub_descriptors')
Htr_subX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_sub_descriptors' (finite_trace_sub_projection (equivocator_IM IM) selection tr) = Some (tr_subX', initial_sub_descriptors)
Heqtr_subX: tr_subX = tr_subX' ++ project_sub_x
Hfinal_sub': final_sub_descriptors' = (λ i : sub_index selection, final_descriptors' (`i)) ∧ finite_trace_sub_projection IM selection projectx = project_sub_x

initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i)) ∧ finite_trace_sub_projection IM selection trX = tr_subX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
initial_descriptors: equivocator_descriptors IM
initial_sub_descriptors: equivocator_descriptors (sub_IM IM selection)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors': equivocator_descriptors IM
trX0: list (composite_transition_item IM)
IHtr: tr_subX : list (composite_transition_item (sub_IM IM selection)), equivocators_trace_project (sub_IM IM selection) (λ i : sub_index selection, final_descriptors' (`i)) (finite_trace_sub_projection (equivocator_IM IM) selection tr) = Some (tr_subX, initial_sub_descriptors) → initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i)) ∧ finite_trace_sub_projection IM selection trX0 = tr_subX
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
trX, projectx: list (composite_transition_item IM)
Hproject_x: foldr (equivocators_trace_project_folder IM) (Some ([], final_descriptors)) [x] = Some (projectx, final_descriptors')
HtrX0: foldr (equivocators_trace_project_folder IM) (Some ([], final_descriptors')) tr = Some (trX0, initial_descriptors)
HtrX: trX = trX0 ++ projectx
tr_subX: list (composite_transition_item (sub_IM IM selection))
tr_subX', project_sub_x: list (composite_transition_item (λ i : sub_index selection, IM (`i)))
final_sub_descriptors': equivocator_descriptors (λ i : sub_index selection, IM (`i))
Hproject_sub_x: equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_sub_descriptors (finite_trace_sub_projection (equivocator_IM IM) selection [x]) = Some (project_sub_x, final_sub_descriptors')
Htr_subX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_sub_descriptors' (finite_trace_sub_projection (equivocator_IM IM) selection tr) = Some (tr_subX', initial_sub_descriptors)
Heqtr_subX: tr_subX = tr_subX' ++ project_sub_x
Hfinal_sub': final_sub_descriptors' = (λ i : sub_index selection, final_descriptors' (`i))
Hpr_sub_x: finite_trace_sub_projection IM selection projectx = project_sub_x

initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i)) ∧ finite_trace_sub_projection IM selection trX = tr_subX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
initial_descriptors: equivocator_descriptors IM
initial_sub_descriptors: equivocator_descriptors (sub_IM IM selection)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors': equivocator_descriptors IM
trX0: list (composite_transition_item IM)
IHtr: tr_subX : list (composite_transition_item (sub_IM IM selection)), equivocators_trace_project (sub_IM IM selection) (λ i : sub_index selection, final_descriptors' (`i)) (finite_trace_sub_projection (equivocator_IM IM) selection tr) = Some (tr_subX, initial_sub_descriptors) → initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i)) ∧ finite_trace_sub_projection IM selection trX0 = tr_subX
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
trX, projectx: list (composite_transition_item IM)
Hproject_x: foldr (equivocators_trace_project_folder IM) (Some ([], final_descriptors)) [x] = Some (projectx, final_descriptors')
HtrX0: foldr (equivocators_trace_project_folder IM) (Some ([], final_descriptors')) tr = Some (trX0, initial_descriptors)
HtrX: trX = trX0 ++ projectx
tr_subX: list (composite_transition_item (sub_IM IM selection))
tr_subX', project_sub_x: list (composite_transition_item (λ i : sub_index selection, IM (`i)))
Htr_subX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) (λ i : sub_index selection, final_descriptors' (`i)) (finite_trace_sub_projection (equivocator_IM IM) selection tr) = Some (tr_subX', initial_sub_descriptors)
Hproject_sub_x: equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_sub_descriptors (finite_trace_sub_projection (equivocator_IM IM) selection [x]) = Some (project_sub_x, λ i : sub_index selection, final_descriptors' (`i))
Heqtr_subX: tr_subX = tr_subX' ++ project_sub_x
Hpr_sub_x: finite_trace_sub_projection IM selection projectx = project_sub_x

initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i)) ∧ finite_trace_sub_projection IM selection trX = tr_subX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
initial_descriptors: equivocator_descriptors IM
initial_sub_descriptors: equivocator_descriptors (sub_IM IM selection)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors': equivocator_descriptors IM
trX0: list (composite_transition_item IM)
tr_subX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
IHtr: initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i)) ∧ finite_trace_sub_projection IM selection trX0 = tr_subX'
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
trX, projectx: list (composite_transition_item IM)
Hproject_x: foldr (equivocators_trace_project_folder IM) (Some ([], final_descriptors)) [x] = Some (projectx, final_descriptors')
HtrX0: foldr (equivocators_trace_project_folder IM) (Some ([], final_descriptors')) tr = Some (trX0, initial_descriptors)
HtrX: trX = trX0 ++ projectx
tr_subX: list (composite_transition_item (sub_IM IM selection))
project_sub_x: list (composite_transition_item (λ i : sub_index selection, IM (`i)))
Htr_subX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) (λ i : sub_index selection, final_descriptors' (`i)) (finite_trace_sub_projection (equivocator_IM IM) selection tr) = Some (tr_subX', initial_sub_descriptors)
Hproject_sub_x: equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_sub_descriptors (finite_trace_sub_projection (equivocator_IM IM) selection [x]) = Some (project_sub_x, λ i : sub_index selection, final_descriptors' (`i))
Heqtr_subX: tr_subX = tr_subX' ++ project_sub_x
Hpr_sub_x: finite_trace_sub_projection IM selection projectx = project_sub_x

initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i)) ∧ finite_trace_sub_projection IM selection trX = tr_subX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
initial_descriptors: equivocator_descriptors IM
initial_sub_descriptors: equivocator_descriptors (sub_IM IM selection)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors': equivocator_descriptors IM
trX0: list (composite_transition_item IM)
tr_subX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
Heqv_initial: initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i))
Hpr_trXi': finite_trace_sub_projection IM selection trX0 = tr_subX'
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
trX, projectx: list (composite_transition_item IM)
Hproject_x: foldr (equivocators_trace_project_folder IM) (Some ([], final_descriptors)) [x] = Some (projectx, final_descriptors')
HtrX0: foldr (equivocators_trace_project_folder IM) (Some ([], final_descriptors')) tr = Some (trX0, initial_descriptors)
HtrX: trX = trX0 ++ projectx
tr_subX: list (composite_transition_item (sub_IM IM selection))
project_sub_x: list (composite_transition_item (λ i : sub_index selection, IM (`i)))
Htr_subX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) (λ i : sub_index selection, final_descriptors' (`i)) (finite_trace_sub_projection (equivocator_IM IM) selection tr) = Some (tr_subX', initial_sub_descriptors)
Hproject_sub_x: equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_sub_descriptors (finite_trace_sub_projection (equivocator_IM IM) selection [x]) = Some (project_sub_x, λ i : sub_index selection, final_descriptors' (`i))
Heqtr_subX: tr_subX = tr_subX' ++ project_sub_x
Hpr_sub_x: finite_trace_sub_projection IM selection projectx = project_sub_x

initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i)) ∧ finite_trace_sub_projection IM selection trX = tr_subX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
initial_descriptors: equivocator_descriptors IM
initial_sub_descriptors: equivocator_descriptors (sub_IM IM selection)
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors': equivocator_descriptors IM
trX0: list (composite_transition_item IM)
tr_subX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
Heqv_initial: initial_sub_descriptors = (λ i : sub_index selection, initial_descriptors (`i))
Hpr_trXi': finite_trace_sub_projection IM selection trX0 = tr_subX'
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
trX, projectx: list (composite_transition_item IM)
Hproject_x: foldr (equivocators_trace_project_folder IM) (Some ([], final_descriptors)) [x] = Some (projectx, final_descriptors')
HtrX0: foldr (equivocators_trace_project_folder IM) (Some ([], final_descriptors')) tr = Some (trX0, initial_descriptors)
HtrX: trX = trX0 ++ projectx
tr_subX: list (composite_transition_item (sub_IM IM selection))
project_sub_x: list (composite_transition_item (λ i : sub_index selection, IM (`i)))
Htr_subX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) (λ i : sub_index selection, final_descriptors' (`i)) (finite_trace_sub_projection (equivocator_IM IM) selection tr) = Some (tr_subX', initial_sub_descriptors)
Hproject_sub_x: equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_sub_descriptors (finite_trace_sub_projection (equivocator_IM IM) selection [x]) = Some (project_sub_x, λ i : sub_index selection, final_descriptors' (`i))
Heqtr_subX: tr_subX = tr_subX' ++ project_sub_x
Hpr_sub_x: finite_trace_sub_projection IM selection projectx = project_sub_x

finite_trace_sub_projection IM selection trX = tr_subX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
initial_descriptors: equivocator_descriptors IM
x: composite_transition_item (equivocator_IM IM)
tr: list (composite_transition_item (equivocator_IM IM))
final_descriptors': equivocator_descriptors IM
trX0: list (composite_transition_item IM)
final_descriptors: equivocator_descriptors IM
final_sub_descriptors:= λ i : sub_index selection, final_descriptors (`i): i : sub_index selection, MachineDescriptor (IM (`i))
projectx: list (composite_transition_item IM)
Hproject_x: foldr (equivocators_trace_project_folder IM) (Some ([], final_descriptors)) [x] = Some (projectx, final_descriptors')
HtrX0: foldr (equivocators_trace_project_folder IM) (Some ([], final_descriptors')) tr = Some (trX0, initial_descriptors)
Htr_subX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) (λ i : sub_index selection, final_descriptors' (`i)) (finite_trace_sub_projection (equivocator_IM IM) selection tr) = Some (finite_trace_sub_projection IM selection trX0, λ i : sub_index selection, initial_descriptors (`i))
Hproject_sub_x: equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_sub_descriptors (finite_trace_sub_projection (equivocator_IM IM) selection [x]) = Some (finite_trace_sub_projection IM selection projectx, λ i : sub_index selection, final_descriptors' (`i))

finite_trace_sub_projection IM selection (trX0 ++ projectx) = finite_trace_sub_projection IM selection trX0 ++ finite_trace_sub_projection IM selection projectx
by apply finite_trace_sub_projection_app. Qed. Section sec_seeded_equivocators_valid_trace_project. Context (seed : message -> Prop) (SeededXE := seeded_equivocators_no_equivocation_vlsm IM selection seed) (SubFreeE := free_composite_vlsm (sub_IM (equivocator_IM IM) selection)) (SubPreFreeE := preloaded_with_all_messages_vlsm SubFreeE) (SubFree := free_composite_vlsm (sub_IM IM selection)) (SeededX := preloaded_vlsm SubFree seed) .
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
m: message
Hem: initial_message_prop m

initial_message_prop m
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
m: message
Hem: initial_message_prop m

initial_message_prop m
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
m: message
eqv: sub_index selection
emi: initial_message (sub_IM (equivocator_IM IM) selection eqv)
Hem: `emi = m

initial_message_prop m
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
m: message
Hseed: seed m
initial_message_prop m
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
m: message
eqv: sub_index selection
emi: initial_message (sub_IM (equivocator_IM IM) selection eqv)
Hem: `emi = m

initial_message_prop m
by left; exists eqv, emi.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
m: message
Hseed: seed m

initial_message_prop m
by right. Qed.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message

VLSM_incl SeededXE SubPreFreeE
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message

VLSM_incl SeededXE SubPreFreeE
by apply seeded_no_equivocation_incl_preloaded. Qed.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
tr: list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
Htr: finite_valid_trace SeededXE is tr
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state

(trX : list (composite_transition_item IM')) (initial_descriptors : equivocator_descriptors IM'), let isX := equivocators_state_project IM' initial_descriptors is in let final_stateX := finite_trace_last isX trX in proper_equivocator_descriptors IM' initial_descriptors is ∧ equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) ∧ equivocators_state_project IM' final_descriptors final_state = final_stateX ∧ finite_valid_trace SeededX isX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
tr: list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
Htr: finite_valid_trace SeededXE is tr
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state

(trX : list (composite_transition_item IM')) (initial_descriptors : equivocator_descriptors IM'), let isX := equivocators_state_project IM' initial_descriptors is in let final_stateX := finite_trace_last isX trX in proper_equivocator_descriptors IM' initial_descriptors is ∧ equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) ∧ equivocators_state_project IM' final_descriptors final_state = final_stateX ∧ finite_valid_trace SeededX isX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
tr: list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
Htr: finite_valid_trace SeededXE is tr
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state

finite_valid_trace_init_to SeededXE is final_state tr
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
tr: list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
Htr: finite_valid_trace SeededXE is tr
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state
Htr_to: finite_valid_trace_init_to SeededXE is final_state tr
(trX : list (composite_transition_item IM')) (initial_descriptors : equivocator_descriptors IM'), let isX := equivocators_state_project IM' initial_descriptors is in let final_stateX := finite_trace_last isX trX in proper_equivocator_descriptors IM' initial_descriptors is ∧ equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) ∧ equivocators_state_project IM' final_descriptors final_state = final_stateX ∧ finite_valid_trace SeededX isX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
tr: list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
Htr: finite_valid_trace SeededXE is tr
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state

finite_valid_trace_init_to SeededXE is final_state tr
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
tr: list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
Htr: finite_valid_trace_from SeededXE is tr
Hinit: initial_state_prop is
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state

finite_valid_trace_init_to SeededXE is final_state tr
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
tr: list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
Htr: finite_valid_trace_from SeededXE is tr
Hinit: initial_state_prop is
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state

finite_valid_trace_from_to SeededXE is final_state tr
by apply finite_valid_trace_from_add_last.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
tr: list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
Htr: finite_valid_trace SeededXE is tr
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state
Htr_to: finite_valid_trace_init_to SeededXE is final_state tr

(trX : list (composite_transition_item IM')) (initial_descriptors : equivocator_descriptors IM'), let isX := equivocators_state_project IM' initial_descriptors is in let final_stateX := finite_trace_last isX trX in proper_equivocator_descriptors IM' initial_descriptors is ∧ equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) ∧ equivocators_state_project IM' final_descriptors final_state = final_stateX ∧ finite_valid_trace SeededX isX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
tr: list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
Htr: finite_valid_trace SeededXE is tr
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state
Htr_to: finite_valid_trace_init_to SeededXE is final_state tr

finite_constrained_trace_init_to SubFreeE is final_state tr
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
tr: list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
Htr: finite_valid_trace SeededXE is tr
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state
Htr_to: finite_valid_trace_init_to SeededXE is final_state tr
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is final_state tr
(trX : list (composite_transition_item IM')) (initial_descriptors : equivocator_descriptors IM'), let isX := equivocators_state_project IM' initial_descriptors is in let final_stateX := finite_trace_last isX trX in proper_equivocator_descriptors IM' initial_descriptors is ∧ equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) ∧ equivocators_state_project IM' final_descriptors final_state = final_stateX ∧ finite_valid_trace SeededX isX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
tr: list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
Htr: finite_valid_trace SeededXE is tr
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state
Htr_to: finite_valid_trace_init_to SeededXE is final_state tr

finite_constrained_trace_init_to SubFreeE is final_state tr
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
tr: list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
Htr: finite_valid_trace SeededXE is tr
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state

VLSM_incl_part (preloaded_vlsm_machine (composite_vlsm (sub_IM (equivocator_IM IM) selection) (no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed)) seed) (preloaded_vlsm_machine SubFreeE (λ _ : message, True))
by apply seeded_no_equivocation_incl_preloaded.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
tr: list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
Htr: finite_valid_trace SeededXE is tr
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state
Htr_to: finite_valid_trace_init_to SeededXE is final_state tr
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is final_state tr

(trX : list (composite_transition_item IM')) (initial_descriptors : equivocator_descriptors IM'), let isX := equivocators_state_project IM' initial_descriptors is in let final_stateX := finite_trace_last isX trX in proper_equivocator_descriptors IM' initial_descriptors is ∧ equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) ∧ equivocators_state_project IM' final_descriptors final_state = final_stateX ∧ finite_valid_trace SeededX isX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
tr: list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
Htr: finite_valid_trace SeededXE is tr
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state
Htr_to: finite_valid_trace_init_to SeededXE is final_state tr
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is final_state tr
Hex: initial_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' initial_descriptors is ∧ (let isX := equivocators_state_project IM' initial_descriptors is in let final_stateX := equivocators_state_project IM' final_descriptors final_state in trX : list (composite_transition_item IM'), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to (free_composite_vlsm IM') isX final_stateX trX)

(trX : list (composite_transition_item IM')) (initial_descriptors : equivocator_descriptors IM'), let isX := equivocators_state_project IM' initial_descriptors is in let final_stateX := finite_trace_last isX trX in proper_equivocator_descriptors IM' initial_descriptors is ∧ equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) ∧ equivocators_state_project IM' final_descriptors final_state = final_stateX ∧ finite_valid_trace SeededX isX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
tr: list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
Htr: finite_valid_trace SeededXE is tr
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state
Htr_to: finite_valid_trace_init_to SeededXE is final_state tr
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is final_state tr
initial_descriptors: equivocator_descriptors IM'
Hproper_initial: proper_equivocator_descriptors IM' initial_descriptors is
trX: list (composite_transition_item IM')
Hpr_trX: equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors)
Hpre_trX: finite_constrained_trace_init_to (free_composite_vlsm IM') (equivocators_state_project IM' initial_descriptors is) (equivocators_state_project IM' final_descriptors final_state) trX

(trX : list (composite_transition_item IM')) (initial_descriptors : equivocator_descriptors IM'), let isX := equivocators_state_project IM' initial_descriptors is in let final_stateX := finite_trace_last isX trX in proper_equivocator_descriptors IM' initial_descriptors is ∧ equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) ∧ equivocators_state_project IM' final_descriptors final_state = final_stateX ∧ finite_valid_trace SeededX isX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
tr: list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
Htr: finite_valid_trace SeededXE is tr
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state
Htr_to: finite_valid_trace_init_to SeededXE is final_state tr
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is final_state tr
initial_descriptors: equivocator_descriptors IM'
Hproper_initial: proper_equivocator_descriptors IM' initial_descriptors is
trX: list (composite_transition_item IM')
Hpr_trX: equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors)
Hpre_trX: finite_constrained_trace_init_to (free_composite_vlsm IM') (equivocators_state_project IM' initial_descriptors is) (equivocators_state_project IM' final_descriptors final_state) trX

let isX := equivocators_state_project IM' initial_descriptors is in let final_stateX := finite_trace_last isX trX in proper_equivocator_descriptors IM' initial_descriptors is ∧ equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) ∧ equivocators_state_project IM' final_descriptors final_state = final_stateX ∧ finite_valid_trace SeededX isX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
tr: list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
Htr: finite_valid_trace SeededXE is tr
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state
Htr_to: finite_valid_trace_init_to SeededXE is final_state tr
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is final_state tr
initial_descriptors: equivocator_descriptors IM'
Hproper_initial: proper_equivocator_descriptors IM' initial_descriptors is
trX: list (composite_transition_item IM')
Hpr_trX: equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors)
Hpre_trX: finite_constrained_trace_init_to (free_composite_vlsm IM') (equivocators_state_project IM' initial_descriptors is) (equivocators_state_project IM' final_descriptors final_state) trX

equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) ∧ equivocators_state_project IM' final_descriptors final_state = finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX ∧ finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
tr: list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
Htr: finite_valid_trace SeededXE is tr
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state
Htr_to: finite_valid_trace_init_to SeededXE is final_state tr
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is final_state tr
initial_descriptors: equivocator_descriptors IM'
Hproper_initial: proper_equivocator_descriptors IM' initial_descriptors is
trX: list (composite_transition_item IM')
Hpr_trX: equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors)
Hpre_trX: finite_constrained_trace_init_to (free_composite_vlsm IM') (equivocators_state_project IM' initial_descriptors is) (equivocators_state_project IM' final_descriptors final_state) trX

equivocators_state_project IM' final_descriptors final_state = finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX ∧ finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
tr: list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
Htr: finite_valid_trace SeededXE is tr
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state
Htr_to: finite_valid_trace_init_to SeededXE is final_state tr
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is final_state tr
initial_descriptors: equivocator_descriptors IM'
Hproper_initial: proper_equivocator_descriptors IM' initial_descriptors is
trX: list (composite_transition_item IM')
Hpr_trX: equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors)
Hpre_trX: finite_constrained_trace_init_to (free_composite_vlsm IM') (equivocators_state_project IM' initial_descriptors is) (equivocators_state_project IM' final_descriptors final_state) trX
Hfinal_stateX: finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX = equivocators_state_project IM' final_descriptors final_state

equivocators_state_project IM' final_descriptors final_state = finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX ∧ finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
tr: list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
Htr: finite_valid_trace SeededXE is tr
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state
Htr_to: finite_valid_trace_init_to SeededXE is final_state tr
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is final_state tr
initial_descriptors: equivocator_descriptors IM'
Hproper_initial: proper_equivocator_descriptors IM' initial_descriptors is
trX: list (composite_transition_item IM')
Hpr_trX: equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors)
Hpre_trX: finite_constrained_trace_init_to (free_composite_vlsm IM') (equivocators_state_project IM' initial_descriptors is) (equivocators_state_project IM' final_descriptors final_state) trX
Hfinal_stateX: equivocators_state_project IM' final_descriptors final_state = finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX

equivocators_state_project IM' final_descriptors final_state = finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX ∧ finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
tr: list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
Htr: finite_valid_trace SeededXE is tr
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state
Htr_to: finite_valid_trace_init_to SeededXE is final_state tr
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is final_state tr
initial_descriptors: equivocator_descriptors IM'
Hproper_initial: proper_equivocator_descriptors IM' initial_descriptors is
trX: list (composite_transition_item IM')
Hpr_trX: equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors)
Hpre_trX: finite_constrained_trace_init_to (free_composite_vlsm IM') (equivocators_state_project IM' initial_descriptors is) (equivocators_state_project IM' final_descriptors final_state) trX
Hfinal_stateX: equivocators_state_project IM' final_descriptors final_state = finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
tr: list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
Htr: finite_valid_trace SeededXE is tr
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state
initial_descriptors: equivocator_descriptors IM'
trX: list (composite_transition_item IM')
Hpr_trX: equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors)

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
tr: list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
Htr: finite_valid_trace SeededXE is tr
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state
initial_descriptors: equivocator_descriptors IM'
trX: list (composite_transition_item IM')
Hpr_trX: equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors)
len_tr: nat
Heqlen_tr: len_tr = length tr

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
tr: list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
Htr: finite_valid_trace SeededXE is tr
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state
initial_descriptors: equivocator_descriptors IM'
len_tr: nat
Heqlen_tr: len_tr = length tr

trX : list (composite_transition_item IM'), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
tr: list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
Htr: finite_valid_trace SeededXE is tr
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state
len_tr: nat
Heqlen_tr: len_tr = length tr

(initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
tr: list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
Htr: finite_valid_trace SeededXE is tr
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
len_tr: nat
Heqlen_tr: len_tr = length tr

final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
len_tr: nat

tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in len_tr = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
len_tr: nat
H: y : nat, y < len_tr → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
tr: list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
Htr: finite_valid_trace SeededXE is tr
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
Heqlen_tr: len_tr = length tr
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state
initial_descriptors: equivocator_descriptors IM'
trX: list (composite_transition_item IM')
Hpr_trX: equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors)

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr: list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
H: y : nat, y < length tr → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace SeededXE is tr
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state
initial_descriptors: equivocator_descriptors IM'
trX: list (composite_transition_item IM')
Hpr_trX: equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors)

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr: list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
H: y : nat, y < length [] → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace SeededXE is []
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state
initial_descriptors: equivocator_descriptors IM'
trX: list (composite_transition_item IM')
Hpr_trX: equivocators_trace_project IM' final_descriptors [] = Some (trX, initial_descriptors)
Htr_lst: tr = []

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr, tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
lst: composite_transition_item (sub_IM (equivocator_IM IM) selection)
H: y : nat, y < length (tr' ++ [lst]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace SeededXE is (tr' ++ [lst])
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state
initial_descriptors: equivocator_descriptors IM'
trX: list (composite_transition_item IM')
Hpr_trX: equivocators_trace_project IM' final_descriptors (tr' ++ [lst]) = Some (trX, initial_descriptors)
Htr_lst: tr = tr' ++ [lst]
finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr: list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
H: y : nat, y < length [] → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace SeededXE is []
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state
initial_descriptors: equivocator_descriptors IM'
trX: list (composite_transition_item IM')
Hpr_trX: equivocators_trace_project IM' final_descriptors [] = Some (trX, initial_descriptors)
Htr_lst: tr = []

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr: list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
Htr: finite_valid_trace SeededXE is []
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state
initial_descriptors: equivocator_descriptors IM'
trX: list (composite_transition_item IM')
Hpr_trX: equivocators_trace_project IM' final_descriptors [] = Some (trX, initial_descriptors)
Htr_lst: tr = []

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
Htr: finite_valid_trace SeededXE is []
final_state:= finite_trace_last is []: state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state
initial_descriptors: equivocator_descriptors IM'
trX: list (composite_transition_item IM')
Hpr_trX: equivocators_trace_project IM' final_descriptors [] = Some (trX, initial_descriptors)

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
Htr: finite_valid_trace SeededXE is []
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is [])
initial_descriptors: equivocator_descriptors IM'
trX: list (composite_transition_item IM')
Hpr_trX: equivocators_trace_project IM' final_descriptors [] = Some (trX, initial_descriptors)

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
Htr: finite_valid_trace SeededXE is []
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is [])
initial_descriptors: equivocator_descriptors IM'
trX: list (composite_transition_item IM')
Hpr_trX: Some ([], final_descriptors) = Some (trX, initial_descriptors)

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
Htr: finite_valid_trace SeededXE is []
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is [])
initial_descriptors: equivocator_descriptors IM'
trX: list (composite_transition_item IM')
Hpr_trX: Some ([], final_descriptors) = Some (trX, initial_descriptors)
H1: [] = trX
H2: final_descriptors = initial_descriptors

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) []
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
Htr: finite_valid_trace SeededXE is []
initial_descriptors: equivocator_descriptors IM'
Hpr_trX: Some ([], initial_descriptors) = Some ([], initial_descriptors)
Hproper: proper_equivocator_descriptors IM' initial_descriptors (finite_trace_last is [])

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) []
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
Htr: finite_valid_trace SeededXE is []
initial_descriptors: equivocator_descriptors IM'
Hpr_trX: Some ([], initial_descriptors) = Some ([], initial_descriptors)
Hproper: proper_equivocator_descriptors IM' initial_descriptors (finite_trace_last is [])

initial_state_prop (equivocators_state_project IM' initial_descriptors is) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) []
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
Htr: finite_valid_trace SeededXE is []
initial_descriptors: equivocator_descriptors IM'
Hpr_trX: Some ([], initial_descriptors) = Some ([], initial_descriptors)
Hproper: proper_equivocator_descriptors IM' initial_descriptors (finite_trace_last is [])
initial_state_prop (equivocators_state_project IM' initial_descriptors is)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
Htr: finite_valid_trace SeededXE is []
initial_descriptors: equivocator_descriptors IM'
Hpr_trX: Some ([], initial_descriptors) = Some ([], initial_descriptors)
Hproper: proper_equivocator_descriptors IM' initial_descriptors (finite_trace_last is [])

initial_state_prop (equivocators_state_project IM' initial_descriptors is) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) []
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
Htr: finite_valid_trace SeededXE is []
initial_descriptors: equivocator_descriptors IM'
Hpr_trX: Some ([], initial_descriptors) = Some ([], initial_descriptors)
Hproper: proper_equivocator_descriptors IM' initial_descriptors (finite_trace_last is [])
H: initial_state_prop (equivocators_state_project IM' initial_descriptors is)

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) []
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
Htr: finite_valid_trace SeededXE is []
initial_descriptors: equivocator_descriptors IM'
Hpr_trX: Some ([], initial_descriptors) = Some ([], initial_descriptors)
Hproper: proper_equivocator_descriptors IM' initial_descriptors (finite_trace_last is [])
H: initial_state_prop (equivocators_state_project IM' initial_descriptors is)

finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) []
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
Htr: finite_valid_trace SeededXE is []
initial_descriptors: equivocator_descriptors IM'
Hpr_trX: Some ([], initial_descriptors) = Some ([], initial_descriptors)
Hproper: proper_equivocator_descriptors IM' initial_descriptors (finite_trace_last is [])
H: initial_state_prop (equivocators_state_project IM' initial_descriptors is)

valid_state_prop SeededX (equivocators_state_project IM' initial_descriptors is)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
Htr: finite_valid_trace SeededXE is []
initial_descriptors: equivocator_descriptors IM'
Hpr_trX: Some ([], initial_descriptors) = Some ([], initial_descriptors)
Hproper: proper_equivocator_descriptors IM' initial_descriptors (finite_trace_last is [])
H: initial_state_prop (equivocators_state_project IM' initial_descriptors is)

( is0 : initial_state SeededX, equivocators_state_project IM' initial_descriptors is = `is0) ∨ ( (l : label SeededX) (som : state SeededX * option message) (om' : option message), input_valid_transition SeededX l som (equivocators_state_project IM' initial_descriptors is, om'))
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
Htr: finite_valid_trace SeededXE is []
initial_descriptors: equivocator_descriptors IM'
Hpr_trX: Some ([], initial_descriptors) = Some ([], initial_descriptors)
Hproper: proper_equivocator_descriptors IM' initial_descriptors (finite_trace_last is [])
H: initial_state_prop (equivocators_state_project IM' initial_descriptors is)

is0 : initial_state SeededX, equivocators_state_project IM' initial_descriptors is = `is0
by exists (exist _ _ H).
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
Htr: finite_valid_trace SeededXE is []
initial_descriptors: equivocator_descriptors IM'
Hpr_trX: Some ([], initial_descriptors) = Some ([], initial_descriptors)
Hproper: proper_equivocator_descriptors IM' initial_descriptors (finite_trace_last is [])

initial_state_prop (equivocators_state_project IM' initial_descriptors is)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
Htr: finite_valid_trace SeededXE is []
initial_descriptors: equivocator_descriptors IM'
Hpr_trX: Some ([], initial_descriptors) = Some ([], initial_descriptors)
Hproper: proper_equivocator_descriptors IM' initial_descriptors (finite_trace_last is [])

initial_state_prop is
by apply Htr.
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr, tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
lst: composite_transition_item (sub_IM (equivocator_IM IM) selection)
H: y : nat, y < length (tr' ++ [lst]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace SeededXE is (tr' ++ [lst])
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state
initial_descriptors: equivocator_descriptors IM'
trX: list (composite_transition_item IM')
Hpr_trX: equivocators_trace_project IM' final_descriptors (tr' ++ [lst]) = Some (trX, initial_descriptors)
Htr_lst: tr = tr' ++ [lst]

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr, tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
lst: composite_transition_item (sub_IM (equivocator_IM IM) selection)
H: y : nat, y < length (tr' ++ [lst]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace SeededXE is (tr' ++ [lst])
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state
initial_descriptors: equivocator_descriptors IM'
trX: list (composite_transition_item IM')
Hpr_trX: equivocators_trace_project IM' final_descriptors (tr' ++ [lst]) = Some (trX, initial_descriptors)
Htr_lst: tr = tr' ++ [lst]
H': length tr' < length (tr' ++ [lst]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in length tr' = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr, tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
lst: composite_transition_item (sub_IM (equivocator_IM IM) selection)
H: y : nat, y < length (tr' ++ [lst]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace SeededXE is (tr' ++ [lst])
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state
initial_descriptors: equivocator_descriptors IM'
trX: list (composite_transition_item IM')
Hpr_trX: equivocators_trace_project IM' final_descriptors (tr' ++ [lst]) = Some (trX, initial_descriptors)
Htr_lst: tr = tr' ++ [lst]
H': tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in length tr' = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr, tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
lst: composite_transition_item (sub_IM (equivocator_IM IM) selection)
H: y : nat, y < length (tr' ++ [lst]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is (tr' ++ [lst])
Hinit: initial_state_prop is
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state
initial_descriptors: equivocator_descriptors IM'
trX: list (composite_transition_item IM')
Hpr_trX: equivocators_trace_project IM' final_descriptors (tr' ++ [lst]) = Some (trX, initial_descriptors)
Htr_lst: tr = tr' ++ [lst]
H': tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in length tr' = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr, tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
lst: composite_transition_item (sub_IM (equivocator_IM IM) selection)
H: y : nat, y < length (tr' ++ [lst]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr' ∧ finite_valid_trace_from SeededXE (finite_trace_last is tr') [lst]
Hinit: initial_state_prop is
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state
initial_descriptors: equivocator_descriptors IM'
trX: list (composite_transition_item IM')
Hpr_trX: equivocators_trace_project IM' final_descriptors (tr' ++ [lst]) = Some (trX, initial_descriptors)
Htr_lst: tr = tr' ++ [lst]
H': tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in length tr' = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr, tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
lst: composite_transition_item (sub_IM (equivocator_IM IM) selection)
H: y : nat, y < length (tr' ++ [lst]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [lst]
Hinit: initial_state_prop is
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state
initial_descriptors: equivocator_descriptors IM'
trX: list (composite_transition_item IM')
Hpr_trX: equivocators_trace_project IM' final_descriptors (tr' ++ [lst]) = Some (trX, initial_descriptors)
Htr_lst: tr = tr' ++ [lst]
H': tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in length tr' = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr, tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
lst: composite_transition_item (sub_IM (equivocator_IM IM) selection)
H: y : nat, y < length (tr' ++ [lst]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [lst]
Hinit: initial_state_prop is
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state
initial_descriptors: equivocator_descriptors IM'
trX: list (composite_transition_item IM')
Hpr_trX: equivocators_trace_project IM' final_descriptors (tr' ++ [lst]) = Some (trX, initial_descriptors)
Htr_lst: tr = tr' ++ [lst]
H': final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr') → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr' = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr, tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
lst: composite_transition_item (sub_IM (equivocator_IM IM) selection)
H: y : nat, y < length (tr' ++ [lst]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [lst]
Hinit: initial_state_prop is
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors final_state
initial_descriptors: equivocator_descriptors IM'
trX: list (composite_transition_item IM')
Hpr_trX: equivocators_trace_project IM' final_descriptors (tr' ++ [lst]) = Some (trX, initial_descriptors)
Htr_lst: tr = tr' ++ [lst]
H': final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr') → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr' = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Hproperx: proper_equivocator_descriptors IM' final_descriptors (destination lst) → (oitem : option (composite_transition_item IM')) (eqv_descriptors' : equivocator_descriptors IM'), equivocators_transition_item_project IM' final_descriptors lst = Some (oitem, eqv_descriptors') ∧ match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM' (projT1 (l lst))) (projT2 (l lst)), existT (projT1 (l lst)) (existing_equivocator_label_extract (IM' (projT1 (l lst))) (projT2 (l lst)) Hex) = l itemx) ∧ input lst = input itemx ∧ output lst = output itemx ∧ equivocators_state_project IM' final_descriptors (destination lst) = destination itemx ∧ eqv_descriptors' (projT1 (l lst)) = equivocator_label_descriptor (projT2 (l lst)) | None => True end ∧ ( s : composite_state (equivocator_IM IM'), composite_valid (equivocator_IM IM') (l lst) (s, input lst) → composite_transition (equivocator_IM IM') (l lst) ( s, input lst) = (destination lst, output lst) → proper_equivocator_descriptors IM' eqv_descriptors' s ∧ eqv_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 (l lst)) (eqv_descriptors' (projT1 (l lst))) ∧ s = state_update (equivocator_IM IM') (destination lst) (projT1 (l lst)) (s (projT1 (l lst))) ∧ previous_state_descriptor_prop (IM' (projT1 (l lst))) (final_descriptors (projT1 (l lst))) (s (projT1 (l lst))) (eqv_descriptors' (projT1 (l lst))) ∧ match oitem with | Some itemx => sx : composite_state IM', sx = equivocators_state_project IM' eqv_descriptors' s → composite_valid IM' (l itemx) (sx, input itemx) ∧ composite_transition IM' (l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM' final_descriptors (destination lst) = equivocators_state_project IM' eqv_descriptors' s end)

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr, tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
lst: composite_transition_item (sub_IM (equivocator_IM IM) selection)
H: y : nat, y < length (tr' ++ [lst]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [lst]
Hinit: initial_state_prop is
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr)
initial_descriptors: equivocator_descriptors IM'
trX: list (composite_transition_item IM')
Hpr_trX: equivocators_trace_project IM' final_descriptors (tr' ++ [lst]) = Some (trX, initial_descriptors)
Htr_lst: tr = tr' ++ [lst]
H': final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr') → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr' = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Hproperx: proper_equivocator_descriptors IM' final_descriptors (destination lst) → (oitem : option (composite_transition_item IM')) (eqv_descriptors' : equivocator_descriptors IM'), equivocators_transition_item_project IM' final_descriptors lst = Some (oitem, eqv_descriptors') ∧ match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM' (projT1 (l lst))) (projT2 (l lst)), existT (projT1 (l lst)) (existing_equivocator_label_extract (IM' (projT1 (l lst))) (projT2 (l lst)) Hex) = l itemx) ∧ input lst = input itemx ∧ output lst = output itemx ∧ equivocators_state_project IM' final_descriptors (destination lst) = destination itemx ∧ eqv_descriptors' (projT1 (l lst)) = equivocator_label_descriptor (projT2 (l lst)) | None => True end ∧ ( s : composite_state (equivocator_IM IM'), composite_valid (equivocator_IM IM') (l lst) (s, input lst) → composite_transition (equivocator_IM IM') (l lst) ( s, input lst) = (destination lst, output lst) → proper_equivocator_descriptors IM' eqv_descriptors' s ∧ eqv_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 (l lst)) (eqv_descriptors' (projT1 (l lst))) ∧ s = state_update (equivocator_IM IM') (destination lst) (projT1 (l lst)) (s (projT1 (l lst))) ∧ previous_state_descriptor_prop (IM' (projT1 (l lst))) (final_descriptors (projT1 (l lst))) (s (projT1 (l lst))) (eqv_descriptors' (projT1 (l lst))) ∧ match oitem with | Some itemx => sx : composite_state IM', sx = equivocators_state_project IM' eqv_descriptors' s → composite_valid IM' (l itemx) (sx, input itemx) ∧ composite_transition IM' (l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM' final_descriptors (destination lst) = equivocators_state_project IM' eqv_descriptors' s end)

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr, tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
lst: composite_transition_item (sub_IM (equivocator_IM IM) selection)
H: y : nat, y < length (tr' ++ [lst]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [lst]
Hinit: initial_state_prop is
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is (tr' ++ [lst]))
initial_descriptors: equivocator_descriptors IM'
trX: list (composite_transition_item IM')
Hpr_trX: equivocators_trace_project IM' final_descriptors (tr' ++ [lst]) = Some (trX, initial_descriptors)
Htr_lst: tr = tr' ++ [lst]
H': final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr') → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr' = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Hproperx: proper_equivocator_descriptors IM' final_descriptors (destination lst) → (oitem : option (composite_transition_item IM')) (eqv_descriptors' : equivocator_descriptors IM'), equivocators_transition_item_project IM' final_descriptors lst = Some (oitem, eqv_descriptors') ∧ match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM' (projT1 (l lst))) (projT2 (l lst)), existT (projT1 (l lst)) (existing_equivocator_label_extract (IM' (projT1 (l lst))) (projT2 (l lst)) Hex) = l itemx) ∧ input lst = input itemx ∧ output lst = output itemx ∧ equivocators_state_project IM' final_descriptors (destination lst) = destination itemx ∧ eqv_descriptors' (projT1 (l lst)) = equivocator_label_descriptor (projT2 (l lst)) | None => True end ∧ ( s : composite_state (equivocator_IM IM'), composite_valid (equivocator_IM IM') (l lst) (s, input lst) → composite_transition (equivocator_IM IM') (l lst) ( s, input lst) = (destination lst, output lst) → proper_equivocator_descriptors IM' eqv_descriptors' s ∧ eqv_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 (l lst)) (eqv_descriptors' (projT1 (l lst))) ∧ s = state_update (equivocator_IM IM') (destination lst) (projT1 (l lst)) (s (projT1 (l lst))) ∧ previous_state_descriptor_prop (IM' (projT1 (l lst))) (final_descriptors (projT1 (l lst))) (s (projT1 (l lst))) (eqv_descriptors' (projT1 (l lst))) ∧ match oitem with | Some itemx => sx : composite_state IM', sx = equivocators_state_project IM' eqv_descriptors' s → composite_valid IM' (l itemx) (sx, input itemx) ∧ composite_transition IM' (l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM' final_descriptors (destination lst) = equivocators_state_project IM' eqv_descriptors' s end)

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr, tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
lst: composite_transition_item (sub_IM (equivocator_IM IM) selection)
H: y : nat, y < length (tr' ++ [lst]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [lst]
Hinit: initial_state_prop is
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors (destination lst)
initial_descriptors: equivocator_descriptors IM'
trX: list (composite_transition_item IM')
Hpr_trX: equivocators_trace_project IM' final_descriptors (tr' ++ [lst]) = Some (trX, initial_descriptors)
Htr_lst: tr = tr' ++ [lst]
H': final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr') → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr' = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Hproperx: proper_equivocator_descriptors IM' final_descriptors (destination lst) → (oitem : option (composite_transition_item IM')) (eqv_descriptors' : equivocator_descriptors IM'), equivocators_transition_item_project IM' final_descriptors lst = Some (oitem, eqv_descriptors') ∧ match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM' (projT1 (l lst))) (projT2 (l lst)), existT (projT1 (l lst)) (existing_equivocator_label_extract (IM' (projT1 (l lst))) (projT2 (l lst)) Hex) = l itemx) ∧ input lst = input itemx ∧ output lst = output itemx ∧ equivocators_state_project IM' final_descriptors (destination lst) = destination itemx ∧ eqv_descriptors' (projT1 (l lst)) = equivocator_label_descriptor (projT2 (l lst)) | None => True end ∧ ( s : composite_state (equivocator_IM IM'), composite_valid (equivocator_IM IM') (l lst) (s, input lst) → composite_transition (equivocator_IM IM') (l lst) ( s, input lst) = (destination lst, output lst) → proper_equivocator_descriptors IM' eqv_descriptors' s ∧ eqv_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 (l lst)) (eqv_descriptors' (projT1 (l lst))) ∧ s = state_update (equivocator_IM IM') (destination lst) (projT1 (l lst)) (s (projT1 (l lst))) ∧ previous_state_descriptor_prop (IM' (projT1 (l lst))) (final_descriptors (projT1 (l lst))) (s (projT1 (l lst))) (eqv_descriptors' (projT1 (l lst))) ∧ match oitem with | Some itemx => sx : composite_state IM', sx = equivocators_state_project IM' eqv_descriptors' s → composite_valid IM' (l itemx) (sx, input itemx) ∧ composite_transition IM' (l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM' final_descriptors (destination lst) = equivocators_state_project IM' eqv_descriptors' s end)

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr, tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
lst: composite_transition_item (sub_IM (equivocator_IM IM) selection)
H: y : nat, y < length (tr' ++ [lst]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [lst]
Hinit: initial_state_prop is
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors (destination lst)
initial_descriptors: equivocator_descriptors IM'
trX: list (composite_transition_item IM')
Hpr_trX: equivocators_trace_project IM' final_descriptors (tr' ++ [lst]) = Some (trX, initial_descriptors)
Htr_lst: tr = tr' ++ [lst]
H': final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr') → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr' = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Hproperx: (oitem : option (composite_transition_item IM')) (eqv_descriptors' : equivocator_descriptors IM'), equivocators_transition_item_project IM' final_descriptors lst = Some (oitem, eqv_descriptors') ∧ match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM' (projT1 (l lst))) (projT2 (l lst)), existT (projT1 (l lst)) (existing_equivocator_label_extract (IM' (projT1 (l lst))) (projT2 (l lst)) Hex) = l itemx) ∧ input lst = input itemx ∧ output lst = output itemx ∧ equivocators_state_project IM' final_descriptors (destination lst) = destination itemx ∧ eqv_descriptors' (projT1 (l lst)) = equivocator_label_descriptor (projT2 (l lst)) | None => True end ∧ ( s : composite_state (equivocator_IM IM'), composite_valid (equivocator_IM IM') (l lst) (s, input lst) → composite_transition (equivocator_IM IM') (l lst) (s, input lst) = (destination lst, output lst) → proper_equivocator_descriptors IM' eqv_descriptors' s ∧ eqv_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 (l lst)) (eqv_descriptors' (projT1 (l lst))) ∧ s = state_update (equivocator_IM IM') (destination lst) (projT1 (l lst)) (s (projT1 (l lst))) ∧ previous_state_descriptor_prop (IM' (projT1 (l lst))) (final_descriptors (projT1 (l lst))) (s (projT1 (l lst))) (eqv_descriptors' (projT1 (l lst))) ∧ match oitem with | Some itemx => sx : composite_state IM', sx = equivocators_state_project IM' eqv_descriptors' s → composite_valid IM' (l itemx) (sx, input itemx) ∧ composite_transition IM' (l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM' final_descriptors (destination lst) = equivocators_state_project IM' eqv_descriptors' s end)

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr, tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
lst: composite_transition_item (sub_IM (equivocator_IM IM) selection)
H: y : nat, y < length (tr' ++ [lst]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [lst]
Hinit: initial_state_prop is
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors (destination lst)
initial_descriptors: equivocator_descriptors IM'
trX: list (composite_transition_item IM')
Hpr_trX: equivocators_trace_project IM' final_descriptors (tr' ++ [lst]) = Some (trX, initial_descriptors)
Htr_lst: tr = tr' ++ [lst]
H': final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr') → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr' = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
oitem: option (composite_transition_item IM')
final_descriptors': equivocator_descriptors IM'
Hprojectx: equivocators_transition_item_project IM' final_descriptors lst = Some (oitem, final_descriptors')
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM' (projT1 (l lst))) (projT2 (l lst)), existT (projT1 (l lst)) (existing_equivocator_label_extract (IM' (projT1 (l lst))) (projT2 (l lst)) Hex) = l itemx) ∧ input lst = input itemx ∧ output lst = output itemx ∧ equivocators_state_project IM' final_descriptors (destination lst) = destination itemx ∧ final_descriptors' (projT1 (l lst)) = equivocator_label_descriptor (projT2 (l lst)) | None => True end
Hproperx: s : composite_state (equivocator_IM IM'), composite_valid (equivocator_IM IM') (l lst) (s, input lst) → composite_transition (equivocator_IM IM') (l lst) (s, input lst) = (destination lst, output lst) → proper_equivocator_descriptors IM' final_descriptors' s ∧ final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 (l lst)) (final_descriptors' (projT1 (l lst))) ∧ s = state_update (equivocator_IM IM') (destination lst) (projT1 (l lst)) (s (projT1 (l lst))) ∧ previous_state_descriptor_prop (IM' (projT1 (l lst))) (final_descriptors (projT1 (l lst))) (s (projT1 (l lst))) (final_descriptors' (projT1 (l lst))) ∧ match oitem with | Some itemx => sx : composite_state IM', sx = equivocators_state_project IM' final_descriptors' s → composite_valid IM' (l itemx) (sx, input itemx) ∧ composite_transition IM' (l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM' final_descriptors (destination lst) = equivocators_state_project IM' final_descriptors' s end

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr, tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
lst: composite_transition_item (sub_IM (equivocator_IM IM) selection)
H: y : nat, y < length (tr' ++ [lst]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [lst]
Hinit: initial_state_prop is
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors (destination lst)
initial_descriptors: equivocator_descriptors IM'
trX: list (composite_transition_item IM')
Hpr_trX: equivocators_trace_project IM' final_descriptors (tr' ++ [lst]) = Some (trX, initial_descriptors)
Htr_lst: tr = tr' ++ [lst]
H': final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr') → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr' = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
oitem: option (composite_transition_item IM')
final_descriptors': equivocator_descriptors IM'
Hprojectx: equivocators_transition_item_project IM' final_descriptors lst = Some (oitem, final_descriptors')
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM' (projT1 (l lst))) (projT2 (l lst)), existT (projT1 (l lst)) (existing_equivocator_label_extract (IM' (projT1 (l lst))) (projT2 (l lst)) Hex) = l itemx) ∧ input lst = input itemx ∧ output lst = output itemx ∧ equivocators_state_project IM' final_descriptors (destination lst) = destination itemx ∧ final_descriptors' (projT1 (l lst)) = equivocator_label_descriptor (projT2 (l lst)) | None => True end
Hproperx: composite_valid (equivocator_IM IM') (l lst) (finite_trace_last is tr', input lst) → composite_transition (equivocator_IM IM') (l lst) (finite_trace_last is tr', input lst) = (destination lst, output lst) → proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr') ∧ final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 (l lst)) (final_descriptors' (projT1 (l lst))) ∧ finite_trace_last is tr' = state_update (equivocator_IM IM') (destination lst) (projT1 (l lst)) (finite_trace_last is tr' (projT1 (l lst))) ∧ previous_state_descriptor_prop (IM' (projT1 (l lst))) (final_descriptors (projT1 (l lst))) (finite_trace_last is tr' (projT1 (l lst))) (final_descriptors' (projT1 (l lst))) ∧ match oitem with | Some itemx => sx : composite_state IM', sx = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') → composite_valid IM' (l itemx) ( sx, input itemx) ∧ composite_transition IM' (l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM' final_descriptors (destination lst) = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') end

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr, tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
lst: composite_transition_item (sub_IM (equivocator_IM IM) selection)
H: y : nat, y < length (tr' ++ [lst]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [lst]
Hinit: initial_state_prop is
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors (destination lst)
initial_descriptors: equivocator_descriptors IM'
trX: list (composite_transition_item IM')
Hpr_trX: (preX sufX : list (composite_transition_item (λ i : sub_index selection, IM (`i)))) (eqv_descriptors' : equivocator_descriptors (λ i : sub_index selection, IM (`i))), equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors [lst] = Some (sufX, eqv_descriptors') ∧ equivocators_trace_project (λ i : sub_index selection, IM (`i)) eqv_descriptors' tr' = Some (preX, initial_descriptors) ∧ trX = preX ++ sufX
Htr_lst: tr = tr' ++ [lst]
H': final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr') → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr' = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
oitem: option (composite_transition_item IM')
final_descriptors': equivocator_descriptors IM'
Hprojectx: equivocators_transition_item_project IM' final_descriptors lst = Some (oitem, final_descriptors')
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM' (projT1 (l lst))) (projT2 (l lst)), existT (projT1 (l lst)) (existing_equivocator_label_extract (IM' (projT1 (l lst))) (projT2 (l lst)) Hex) = l itemx) ∧ input lst = input itemx ∧ output lst = output itemx ∧ equivocators_state_project IM' final_descriptors (destination lst) = destination itemx ∧ final_descriptors' (projT1 (l lst)) = equivocator_label_descriptor (projT2 (l lst)) | None => True end
Hproperx: composite_valid (equivocator_IM IM') (l lst) (finite_trace_last is tr', input lst) → composite_transition (equivocator_IM IM') (l lst) (finite_trace_last is tr', input lst) = (destination lst, output lst) → proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr') ∧ final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 (l lst)) (final_descriptors' (projT1 (l lst))) ∧ finite_trace_last is tr' = state_update (equivocator_IM IM') (destination lst) (projT1 (l lst)) (finite_trace_last is tr' (projT1 (l lst))) ∧ previous_state_descriptor_prop (IM' (projT1 (l lst))) (final_descriptors (projT1 (l lst))) (finite_trace_last is tr' (projT1 (l lst))) (final_descriptors' (projT1 (l lst))) ∧ match oitem with | Some itemx => sx : composite_state IM', sx = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') → composite_valid IM' (l itemx) ( sx, input itemx) ∧ composite_transition IM' (l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM' final_descriptors (destination lst) = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') end

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr, tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
lst: composite_transition_item (sub_IM (equivocator_IM IM) selection)
H: y : nat, y < length (tr' ++ [lst]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [lst]
Hinit: initial_state_prop is
final_state:= finite_trace_last is tr: state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors (destination lst)
initial_descriptors: equivocator_descriptors IM'
trX: list (composite_transition_item IM')
trX', lstX: list (composite_transition_item (λ i : sub_index selection, IM (`i)))
_final_descriptors': equivocator_descriptors (λ i : sub_index selection, IM (`i))
_Hprojectx: equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors [lst] = Some (lstX, _final_descriptors')
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) _final_descriptors' tr' = Some (trX', initial_descriptors)
Heq_trX: trX = trX' ++ lstX
Htr_lst: tr = tr' ++ [lst]
H': final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr') → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr' = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
oitem: option (composite_transition_item IM')
final_descriptors': equivocator_descriptors IM'
Hprojectx: equivocators_transition_item_project IM' final_descriptors lst = Some (oitem, final_descriptors')
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM' (projT1 (l lst))) (projT2 (l lst)), existT (projT1 (l lst)) (existing_equivocator_label_extract (IM' (projT1 (l lst))) (projT2 (l lst)) Hex) = l itemx) ∧ input lst = input itemx ∧ output lst = output itemx ∧ equivocators_state_project IM' final_descriptors (destination lst) = destination itemx ∧ final_descriptors' (projT1 (l lst)) = equivocator_label_descriptor (projT2 (l lst)) | None => True end
Hproperx: composite_valid (equivocator_IM IM') (l lst) (finite_trace_last is tr', input lst) → composite_transition (equivocator_IM IM') (l lst) (finite_trace_last is tr', input lst) = (destination lst, output lst) → proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr') ∧ final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 (l lst)) (final_descriptors' (projT1 (l lst))) ∧ finite_trace_last is tr' = state_update (equivocator_IM IM') (destination lst) (projT1 (l lst)) (finite_trace_last is tr' (projT1 (l lst))) ∧ previous_state_descriptor_prop (IM' (projT1 (l lst))) (final_descriptors (projT1 (l lst))) (finite_trace_last is tr' (projT1 (l lst))) (final_descriptors' (projT1 (l lst))) ∧ match oitem with | Some itemx => sx : composite_state IM', sx = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') → composite_valid IM' (l itemx) ( sx, input itemx) ∧ composite_transition IM' (l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM' final_descriptors (destination lst) = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') end

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
lst: composite_transition_item (sub_IM (equivocator_IM IM) selection)
H: y : nat, y < length (tr' ++ [lst]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [lst]
Hinit: initial_state_prop is
final_state:= finite_trace_last is (tr' ++ [lst]): state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors (destination lst)
initial_descriptors: equivocator_descriptors IM'
trX', lstX: list (composite_transition_item (λ i : sub_index selection, IM (`i)))
_final_descriptors': equivocator_descriptors (λ i : sub_index selection, IM (`i))
_Hprojectx: equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors [lst] = Some (lstX, _final_descriptors')
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) _final_descriptors' tr' = Some (trX', initial_descriptors)
H': final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr') → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr' = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
oitem: option (composite_transition_item IM')
final_descriptors': equivocator_descriptors IM'
Hprojectx: equivocators_transition_item_project IM' final_descriptors lst = Some (oitem, final_descriptors')
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM' (projT1 (l lst))) (projT2 (l lst)), existT (projT1 (l lst)) (existing_equivocator_label_extract (IM' (projT1 (l lst))) (projT2 (l lst)) Hex) = l itemx) ∧ input lst = input itemx ∧ output lst = output itemx ∧ equivocators_state_project IM' final_descriptors (destination lst) = destination itemx ∧ final_descriptors' (projT1 (l lst)) = equivocator_label_descriptor (projT2 (l lst)) | None => True end
Hproperx: composite_valid (equivocator_IM IM') (l lst) (finite_trace_last is tr', input lst) → composite_transition (equivocator_IM IM') (l lst) (finite_trace_last is tr', input lst) = (destination lst, output lst) → proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr') ∧ final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 (l lst)) (final_descriptors' (projT1 (l lst))) ∧ finite_trace_last is tr' = state_update (equivocator_IM IM') (destination lst) (projT1 (l lst)) (finite_trace_last is tr' (projT1 (l lst))) ∧ previous_state_descriptor_prop (IM' (projT1 (l lst))) (final_descriptors (projT1 (l lst))) (finite_trace_last is tr' (projT1 (l lst))) (final_descriptors' (projT1 (l lst))) ∧ match oitem with | Some itemx => sx : composite_state IM', sx = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') → composite_valid IM' (l itemx) ( sx, input itemx) ∧ composite_transition IM' (l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM' final_descriptors (destination lst) = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') end

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) (trX' ++ lstX)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
lst: composite_transition_item (sub_IM (equivocator_IM IM) selection)
H: y : nat, y < length (tr' ++ [lst]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [lst]
Hinit: initial_state_prop is
final_state:= finite_trace_last is (tr' ++ [lst]): state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors (destination lst)
initial_descriptors: equivocator_descriptors IM'
trX', lstX: list (composite_transition_item (λ i : sub_index selection, IM (`i)))
_final_descriptors': equivocator_descriptors (λ i : sub_index selection, IM (`i))
_Hprojectx: match equivocators_transition_item_project (λ i : sub_index selection, IM (`i)) final_descriptors lst with | Some (Some item', odescriptor) => Some ([item'], odescriptor) | Some (None, odescriptor) => Some ([], odescriptor) | None => None end = Some (lstX, _final_descriptors')
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) _final_descriptors' tr' = Some (trX', initial_descriptors)
H': final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr') → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr' = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
oitem: option (composite_transition_item IM')
final_descriptors': equivocator_descriptors IM'
Hprojectx: equivocators_transition_item_project IM' final_descriptors lst = Some (oitem, final_descriptors')
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM' (projT1 (l lst))) (projT2 (l lst)), existT (projT1 (l lst)) (existing_equivocator_label_extract (IM' (projT1 (l lst))) (projT2 (l lst)) Hex) = l itemx) ∧ input lst = input itemx ∧ output lst = output itemx ∧ equivocators_state_project IM' final_descriptors (destination lst) = destination itemx ∧ final_descriptors' (projT1 (l lst)) = equivocator_label_descriptor (projT2 (l lst)) | None => True end
Hproperx: composite_valid (equivocator_IM IM') (l lst) (finite_trace_last is tr', input lst) → composite_transition (equivocator_IM IM') (l lst) (finite_trace_last is tr', input lst) = (destination lst, output lst) → proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr') ∧ final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 (l lst)) (final_descriptors' (projT1 (l lst))) ∧ finite_trace_last is tr' = state_update (equivocator_IM IM') (destination lst) (projT1 (l lst)) (finite_trace_last is tr' (projT1 (l lst))) ∧ previous_state_descriptor_prop (IM' (projT1 (l lst))) (final_descriptors (projT1 (l lst))) (finite_trace_last is tr' (projT1 (l lst))) (final_descriptors' (projT1 (l lst))) ∧ match oitem with | Some itemx => sx : composite_state IM', sx = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') → composite_valid IM' (l itemx) ( sx, input itemx) ∧ composite_transition IM' (l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM' final_descriptors (destination lst) = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') end

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) (trX' ++ lstX)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
lst: composite_transition_item (sub_IM (equivocator_IM IM) selection)
H: y : nat, y < length (tr' ++ [lst]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [lst]
Hinit: initial_state_prop is
final_state:= finite_trace_last is (tr' ++ [lst]): state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors (destination lst)
initial_descriptors: equivocator_descriptors IM'
trX', lstX: list (composite_transition_item (λ i : sub_index selection, IM (`i)))
_final_descriptors': equivocator_descriptors (λ i : sub_index selection, IM (`i))
oitem: option (composite_transition_item IM')
final_descriptors': equivocator_descriptors IM'
_Hprojectx: match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (lstX, _final_descriptors')
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) _final_descriptors' tr' = Some (trX', initial_descriptors)
H': final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr') → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr' = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Hprojectx: equivocators_transition_item_project IM' final_descriptors lst = Some (oitem, final_descriptors')
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM' (projT1 (l lst))) (projT2 (l lst)), existT (projT1 (l lst)) (existing_equivocator_label_extract (IM' (projT1 (l lst))) (projT2 (l lst)) Hex) = l itemx) ∧ input lst = input itemx ∧ output lst = output itemx ∧ equivocators_state_project IM' final_descriptors (destination lst) = destination itemx ∧ final_descriptors' (projT1 (l lst)) = equivocator_label_descriptor (projT2 (l lst)) | None => True end
Hproperx: composite_valid (equivocator_IM IM') (l lst) (finite_trace_last is tr', input lst) → composite_transition (equivocator_IM IM') (l lst) (finite_trace_last is tr', input lst) = (destination lst, output lst) → proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr') ∧ final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 (l lst)) (final_descriptors' (projT1 (l lst))) ∧ finite_trace_last is tr' = state_update (equivocator_IM IM') (destination lst) (projT1 (l lst)) (finite_trace_last is tr' (projT1 (l lst))) ∧ previous_state_descriptor_prop (IM' (projT1 (l lst))) (final_descriptors (projT1 (l lst))) (finite_trace_last is tr' (projT1 (l lst))) (final_descriptors' (projT1 (l lst))) ∧ match oitem with | Some itemx => sx : composite_state IM', sx = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') → composite_valid IM' (l itemx) ( sx, input itemx) ∧ composite_transition IM' (l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM' final_descriptors (destination lst) = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') end

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) (trX' ++ lstX)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
lst: composite_transition_item (sub_IM (equivocator_IM IM) selection)
H: y : nat, y < length (tr' ++ [lst]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [lst]
Hinit: initial_state_prop is
final_state:= finite_trace_last is (tr' ++ [lst]): state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors (destination lst)
initial_descriptors: equivocator_descriptors IM'
trX', lstX: list (composite_transition_item (λ i : sub_index selection, IM (`i)))
_final_descriptors': equivocator_descriptors (λ i : sub_index selection, IM (`i))
oitem: option (composite_transition_item IM')
final_descriptors': equivocator_descriptors IM'
_Hprojectx: match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (lstX, _final_descriptors')
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) _final_descriptors' tr' = Some (trX', initial_descriptors)
H': final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr') → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr' = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Hprojectx: equivocators_transition_item_project IM' final_descriptors lst = Some (oitem, final_descriptors')
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM' (projT1 (l lst))) (projT2 (l lst)), existT (projT1 (l lst)) (existing_equivocator_label_extract (IM' (projT1 (l lst))) (projT2 (l lst)) Hex) = l itemx) ∧ input lst = input itemx ∧ output lst = output itemx ∧ equivocators_state_project IM' final_descriptors (destination lst) = destination itemx ∧ final_descriptors' (projT1 (l lst)) = equivocator_label_descriptor (projT2 (l lst)) | None => True end
Hproperx: composite_valid (equivocator_IM IM') (l lst) (finite_trace_last is tr', input lst) → composite_transition (equivocator_IM IM') (l lst) (finite_trace_last is tr', input lst) = (destination lst, output lst) → proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr') ∧ final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 (l lst)) (final_descriptors' (projT1 (l lst))) ∧ finite_trace_last is tr' = state_update (equivocator_IM IM') (destination lst) (projT1 (l lst)) (finite_trace_last is tr' (projT1 (l lst))) ∧ previous_state_descriptor_prop (IM' (projT1 (l lst))) (final_descriptors (projT1 (l lst))) (finite_trace_last is tr' (projT1 (l lst))) (final_descriptors' (projT1 (l lst))) ∧ match oitem with | Some itemx => sx : composite_state IM', sx = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') → composite_valid IM' (l itemx) ( sx, input itemx) ∧ composite_transition IM' (l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM' final_descriptors (destination lst) = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') end
Heq_final_descriptors': final_descriptors' = _final_descriptors'

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) (trX' ++ lstX)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
lst: composite_transition_item (sub_IM (equivocator_IM IM) selection)
H: y : nat, y < length (tr' ++ [lst]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [lst]
Hinit: initial_state_prop is
final_state:= finite_trace_last is (tr' ++ [lst]): state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors (destination lst)
initial_descriptors: equivocator_descriptors IM'
trX', lstX: list (composite_transition_item (λ i : sub_index selection, IM (`i)))
oitem: option (composite_transition_item IM')
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
_Hprojectx: match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (lstX, final_descriptors')
H': final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr') → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr' = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Hprojectx: equivocators_transition_item_project IM' final_descriptors lst = Some (oitem, final_descriptors')
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM' (projT1 (l lst))) (projT2 (l lst)), existT (projT1 (l lst)) (existing_equivocator_label_extract (IM' (projT1 (l lst))) (projT2 (l lst)) Hex) = l itemx) ∧ input lst = input itemx ∧ output lst = output itemx ∧ equivocators_state_project IM' final_descriptors (destination lst) = destination itemx ∧ final_descriptors' (projT1 (l lst)) = equivocator_label_descriptor (projT2 (l lst)) | None => True end
Hproperx: composite_valid (equivocator_IM IM') (l lst) (finite_trace_last is tr', input lst) → composite_transition (equivocator_IM IM') (l lst) (finite_trace_last is tr', input lst) = (destination lst, output lst) → proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr') ∧ final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 (l lst)) (final_descriptors' (projT1 (l lst))) ∧ finite_trace_last is tr' = state_update (equivocator_IM IM') (destination lst) (projT1 (l lst)) (finite_trace_last is tr' (projT1 (l lst))) ∧ previous_state_descriptor_prop (IM' (projT1 (l lst))) (final_descriptors (projT1 (l lst))) (finite_trace_last is tr' (projT1 (l lst))) (final_descriptors' (projT1 (l lst))) ∧ match oitem with | Some itemx => sx : composite_state IM', sx = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') → composite_valid IM' (l itemx) ( sx, input itemx) ∧ composite_transition IM' (l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM' final_descriptors (destination lst) = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') end

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) (trX' ++ lstX)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
lst: composite_transition_item (sub_IM (equivocator_IM IM) selection)
H: y : nat, y < length (tr' ++ [lst]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [lst]
Hinit: initial_state_prop is
final_state:= finite_trace_last is (tr' ++ [lst]): state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors (destination lst)
initial_descriptors: equivocator_descriptors IM'
trX', lstX: list (composite_transition_item (λ i : sub_index selection, IM (`i)))
oitem: option (composite_transition_item IM')
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
_Hprojectx: match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (lstX, final_descriptors')
H': final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr') → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr' = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Hprojectx: equivocators_transition_item_project IM' final_descriptors lst = Some (oitem, final_descriptors')
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM' (projT1 (VLSM.l lst))) (projT2 (VLSM.l lst)), existT (projT1 (VLSM.l lst)) (existing_equivocator_label_extract (IM' (projT1 (VLSM.l lst))) (projT2 (VLSM.l lst)) Hex) = VLSM.l itemx) ∧ input lst = input itemx ∧ output lst = output itemx ∧ equivocators_state_project IM' final_descriptors (destination lst) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l lst)) = equivocator_label_descriptor (projT2 (VLSM.l lst)) | None => True end
Hproperx: composite_valid (equivocator_IM IM') (VLSM.l lst) (finite_trace_last is tr', input lst) → composite_transition (equivocator_IM IM') (VLSM.l lst) (finite_trace_last is tr', input lst) = (destination lst, output lst) → proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr') ∧ final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 (VLSM.l lst)) (final_descriptors' (projT1 (VLSM.l lst))) ∧ finite_trace_last is tr' = state_update (equivocator_IM IM') (destination lst) (projT1 (VLSM.l lst)) (finite_trace_last is tr' (projT1 (VLSM.l lst))) ∧ previous_state_descriptor_prop (IM' (projT1 (VLSM.l lst))) (final_descriptors (projT1 (VLSM.l lst))) (finite_trace_last is tr' (projT1 (VLSM.l lst))) (final_descriptors' (projT1 (VLSM.l lst))) ∧ match oitem with | Some itemx => sx : composite_state IM', sx = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') → composite_valid IM' (VLSM.l itemx) ( sx, input itemx) ∧ composite_transition IM' (VLSM.l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM' final_descriptors (destination lst) = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') end
s: state SeededXE
tl: list transition_item
s': state SeededXE
iom, oom: option message
l: label SeededXE
Htl: finite_valid_trace_from SeededXE s []
Ht: input_valid_transition SeededXE l (finite_trace_last is tr', iom) ( s, oom)
H1: s' = finite_trace_last is tr'
H3: {| l := l; input := iom; destination := s; output := oom |} = lst
H4: tl = []

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) (trX' ++ lstX)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: state SeededXE
iom, oom: option message
l: label SeededXE
H: y : nat, y < length (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := iom; destination := s; output := oom |}]
Hinit: initial_state_prop is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
initial_descriptors: equivocator_descriptors IM'
trX', lstX: list (composite_transition_item (λ i : sub_index selection, IM (`i)))
oitem: option (composite_transition_item IM')
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
_Hprojectx: match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (lstX, final_descriptors')
H': final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr') → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr' = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Hproperx: composite_valid (equivocator_IM IM') (VLSM.l {| l := l; input := iom; destination := s; output := oom |}) (finite_trace_last is tr', input {| l := l; input := iom; destination := s; output := oom |}) → composite_transition (equivocator_IM IM') (VLSM.l {| l := l; input := iom; destination := s; output := oom |}) (finite_trace_last is tr', input {| l := l; input := iom; destination := s; output := oom |}) = (destination {| l := l; input := iom; destination := s; output := oom |}, output {| l := l; input := iom; destination := s; output := oom |}) → proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr') ∧ final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ finite_trace_last is tr' = state_update (equivocator_IM IM') (destination {| l := l; input := iom; destination := s; output := oom |}) (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (finite_trace_last is tr' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ previous_state_descriptor_prop (IM' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (finite_trace_last is tr' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ match oitem with | Some itemx => sx : composite_state IM', sx = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') → composite_valid IM' (VLSM.l itemx) ( sx, input itemx) ∧ composite_transition IM' (VLSM.l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l itemx) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input itemx ∧ output {| l := l; input := iom; destination := s; output := oom |} = output itemx ∧ equivocators_state_project IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) | None => True end
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Ht: input_valid_transition SeededXE l (finite_trace_last is tr', iom) ( s, oom)

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) (trX' ++ lstX)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: state SeededXE
iom, oom: option message
l: label SeededXE
H: y : nat, y < length (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := iom; destination := s; output := oom |}]
Hinit: initial_state_prop is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
initial_descriptors: equivocator_descriptors IM'
trX', lstX: list (composite_transition_item (λ i : sub_index selection, IM (`i)))
oitem: option (composite_transition_item IM')
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
_Hprojectx: match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (lstX, final_descriptors')
H': final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr') → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr' = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Hproperx: composite_valid (equivocator_IM IM') (VLSM.l {| l := l; input := iom; destination := s; output := oom |}) (finite_trace_last is tr', input {| l := l; input := iom; destination := s; output := oom |}) → composite_transition (equivocator_IM IM') (VLSM.l {| l := l; input := iom; destination := s; output := oom |}) (finite_trace_last is tr', input {| l := l; input := iom; destination := s; output := oom |}) = (destination {| l := l; input := iom; destination := s; output := oom |}, output {| l := l; input := iom; destination := s; output := oom |}) → proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr') ∧ final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ finite_trace_last is tr' = state_update (equivocator_IM IM') (destination {| l := l; input := iom; destination := s; output := oom |}) (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (finite_trace_last is tr' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ previous_state_descriptor_prop (IM' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (finite_trace_last is tr' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ match oitem with | Some itemx => sx : composite_state IM', sx = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') → composite_valid IM' (VLSM.l itemx) ( sx, input itemx) ∧ composite_transition IM' (VLSM.l itemx) (sx, input itemx) = ( destination itemx, output itemx) | None => equivocators_state_project IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l itemx) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input itemx ∧ output {| l := l; input := iom; destination := s; output := oom |} = output itemx ∧ equivocators_state_project IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) | None => True end
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hiom: option_valid_message_prop SeededXE iom
Hv: valid l (finite_trace_last is tr', iom)
Hc: no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed l (finite_trace_last is tr', iom)
Ht: transition l (finite_trace_last is tr', iom) = (s, oom)

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) (trX' ++ lstX)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: state SeededXE
iom, oom: option message
l: label SeededXE
H: y : nat, y < length (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := iom; destination := s; output := oom |}]
Hinit: initial_state_prop is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
initial_descriptors: equivocator_descriptors IM'
trX', lstX: list (composite_transition_item (λ i : sub_index selection, IM (`i)))
oitem: option (composite_transition_item IM')
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
_Hprojectx: match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (lstX, final_descriptors')
H': final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr') → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr' = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Hproperx: proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr') ∧ final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ finite_trace_last is tr' = state_update (equivocator_IM IM') (destination {| l := l; input := iom; destination := s; output := oom |}) (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (finite_trace_last is tr' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ previous_state_descriptor_prop (IM' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (finite_trace_last is tr' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ match oitem with | Some itemx => sx : composite_state IM', sx = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') → composite_valid IM' (VLSM.l itemx) (sx, input itemx) ∧ composite_transition IM' (VLSM.l itemx) (sx, input itemx) = (destination itemx, output itemx) | None => equivocators_state_project IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l itemx) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input itemx ∧ output {| l := l; input := iom; destination := s; output := oom |} = output itemx ∧ equivocators_state_project IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) | None => True end
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hiom: option_valid_message_prop SeededXE iom
Hv: valid l (finite_trace_last is tr', iom)
Hc: no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed l (finite_trace_last is tr', iom)
Ht: transition l (finite_trace_last is tr', iom) = (s, oom)

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) (trX' ++ lstX)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: state SeededXE
iom, oom: option message
l: label SeededXE
H: y : nat, y < length (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := iom; destination := s; output := oom |}]
Hinit: initial_state_prop is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
initial_descriptors: equivocator_descriptors IM'
trX', lstX: list (composite_transition_item (λ i : sub_index selection, IM (`i)))
oitem: option (composite_transition_item IM')
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
_Hprojectx: match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (lstX, final_descriptors')
H': final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr') → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr' = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Hproperx: proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr') ∧ final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ finite_trace_last is tr' = state_update (equivocator_IM IM') (destination {| l := l; input := iom; destination := s; output := oom |}) (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (finite_trace_last is tr' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ previous_state_descriptor_prop (IM' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (finite_trace_last is tr' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) ∧ match oitem with | Some itemx => sx : composite_state IM', sx = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') → composite_valid IM' (VLSM.l itemx) (sx, input itemx) ∧ composite_transition IM' (VLSM.l itemx) (sx, input itemx) = (destination itemx, output itemx) | None => equivocators_state_project IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l itemx) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input itemx ∧ output {| l := l; input := iom; destination := s; output := oom |} = output itemx ∧ equivocators_state_project IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) | None => True end
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hiom: option_valid_message_prop SeededXE iom
Hc: no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed l (finite_trace_last is tr', iom)

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) (trX' ++ lstX)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: state SeededXE
iom, oom: option message
l: label SeededXE
H: y : nat, y < length (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := iom; destination := s; output := oom |}]
Hinit: initial_state_prop is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
initial_descriptors: equivocator_descriptors IM'
trX', lstX: list (composite_transition_item (λ i : sub_index selection, IM (`i)))
oitem: option (composite_transition_item IM')
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
_Hprojectx: match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (lstX, final_descriptors')
H': final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr') → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr' = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hx: match oitem with | Some itemx => sx : composite_state IM', sx = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') → composite_valid IM' (VLSM.l itemx) ( sx, input itemx) ∧ composite_transition IM' (VLSM.l itemx) ( sx, input itemx) = (destination itemx, output itemx) | None => equivocators_state_project IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l itemx) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input itemx ∧ output {| l := l; input := iom; destination := s; output := oom |} = output itemx ∧ equivocators_state_project IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) | None => True end
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hiom: option_valid_message_prop SeededXE iom
Hc: no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed l (finite_trace_last is tr', iom)

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) (trX' ++ lstX)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: state SeededXE
iom, oom: option message
l: label SeededXE
H: y : nat, y < length (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := iom; destination := s; output := oom |}]
Hinit: initial_state_prop is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
initial_descriptors: equivocator_descriptors IM'
trX', lstX: list (composite_transition_item (λ i : sub_index selection, IM (`i)))
oitem: option (composite_transition_item IM')
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
_Hprojectx: match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (lstX, final_descriptors')
H': finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX'
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hx: match oitem with | Some itemx => sx : composite_state IM', sx = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') → composite_valid IM' (VLSM.l itemx) ( sx, input itemx) ∧ composite_transition IM' (VLSM.l itemx) ( sx, input itemx) = (destination itemx, output itemx) | None => equivocators_state_project IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l itemx) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input itemx ∧ output {| l := l; input := iom; destination := s; output := oom |} = output itemx ∧ equivocators_state_project IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) | None => True end
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hiom: option_valid_message_prop SeededXE iom
Hc: no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed l (finite_trace_last is tr', iom)

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) (trX' ++ lstX)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: state SeededXE
iom, oom: option message
l: label SeededXE
H: y : nat, y < length (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := iom; destination := s; output := oom |}]
Hinit: initial_state_prop is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
initial_descriptors: equivocator_descriptors IM'
trX', lstX: list (composite_transition_item (λ i : sub_index selection, IM (`i)))
oitem: option (composite_transition_item IM')
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
_Hprojectx: match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (lstX, final_descriptors')
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: initial_state_prop (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hx: match oitem with | Some itemx => sx : composite_state IM', sx = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') → composite_valid IM' (VLSM.l itemx) ( sx, input itemx) ∧ composite_transition IM' (VLSM.l itemx) ( sx, input itemx) = (destination itemx, output itemx) | None => equivocators_state_project IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l itemx) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input itemx ∧ output {| l := l; input := iom; destination := s; output := oom |} = output itemx ∧ equivocators_state_project IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) | None => True end
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hiom: option_valid_message_prop SeededXE iom
Hc: no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed l (finite_trace_last is tr', iom)

finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) (trX' ++ lstX)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: state SeededXE
iom, oom: option message
l: label SeededXE
H: y : nat, y < length (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := iom; destination := s; output := oom |}]
Hinit: initial_state_prop is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
initial_descriptors: equivocator_descriptors IM'
trX', lstX: list (composite_transition_item (λ i : sub_index selection, IM (`i)))
oitem: option (composite_transition_item IM')
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
_Hprojectx: match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (lstX, final_descriptors')
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: initial_state_prop (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hx: match oitem with | Some itemx => sx : composite_state IM', sx = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') → composite_valid IM' (VLSM.l itemx) ( sx, input itemx) ∧ composite_transition IM' (VLSM.l itemx) ( sx, input itemx) = (destination itemx, output itemx) | None => equivocators_state_project IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l itemx) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input itemx ∧ output {| l := l; input := iom; destination := s; output := oom |} = output itemx ∧ equivocators_state_project IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) | None => True end
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hiom: option_valid_message_prop SeededXE iom
Hc: no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed l (finite_trace_last is tr', iom)

finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) (trX' ++ lstX)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: state SeededXE
iom, oom: option message
l: label SeededXE
H: y : nat, y < length (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := iom; destination := s; output := oom |}]
Hinit: initial_state_prop is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
initial_descriptors: equivocator_descriptors IM'
trX', lstX: list (composite_transition_item (λ i : sub_index selection, IM (`i)))
oitem: option (composite_transition_item IM')
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
_Hprojectx: match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (lstX, final_descriptors')
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: initial_state_prop (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hx: match oitem with | Some itemx => sx : composite_state IM', sx = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') → composite_valid IM' (VLSM.l itemx) ( sx, input itemx) ∧ composite_transition IM' (VLSM.l itemx) ( sx, input itemx) = (destination itemx, output itemx) | None => equivocators_state_project IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l itemx) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input itemx ∧ output {| l := l; input := iom; destination := s; output := oom |} = output itemx ∧ equivocators_state_project IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) | None => True end
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hiom: option_valid_message_prop SeededXE iom
Hc: no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed l (finite_trace_last is tr', iom)

finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX' ∧ finite_valid_trace_from SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX') lstX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: state SeededXE
iom, oom: option message
l: label SeededXE
H: y : nat, y < length (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := iom; destination := s; output := oom |}]
Hinit: initial_state_prop is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
initial_descriptors: equivocator_descriptors IM'
trX', lstX: list (composite_transition_item (λ i : sub_index selection, IM (`i)))
oitem: option (composite_transition_item IM')
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
_Hprojectx: match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (lstX, final_descriptors')
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: initial_state_prop (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hx: match oitem with | Some itemx => sx : composite_state IM', sx = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') → composite_valid IM' (VLSM.l itemx) ( sx, input itemx) ∧ composite_transition IM' (VLSM.l itemx) ( sx, input itemx) = (destination itemx, output itemx) | None => equivocators_state_project IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l itemx) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input itemx ∧ output {| l := l; input := iom; destination := s; output := oom |} = output itemx ∧ equivocators_state_project IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) | None => True end
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hiom: option_valid_message_prop SeededXE iom
Hc: no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed l (finite_trace_last is tr', iom)

finite_valid_trace_from SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX') lstX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: state SeededXE
iom, oom: option message
l: label SeededXE
H: y : nat, y < length (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := iom; destination := s; output := oom |}]
Hinit: initial_state_prop is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
initial_descriptors: equivocator_descriptors IM'
trX', lstX: list (composite_transition_item (λ i : sub_index selection, IM (`i)))
oitem: option (composite_transition_item IM')
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
_Hprojectx: match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (lstX, final_descriptors')
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: initial_state_prop (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hx: match oitem with | Some itemx => sx : composite_state IM', sx = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') → composite_valid IM' (VLSM.l itemx) ( sx, input itemx) ∧ composite_transition IM' (VLSM.l itemx) ( sx, input itemx) = (destination itemx, output itemx) | None => equivocators_state_project IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l itemx) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input itemx ∧ output {| l := l; input := iom; destination := s; output := oom |} = output itemx ∧ equivocators_state_project IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) | None => True end
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hiom: option_valid_message_prop SeededXE iom
Hc: no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed l (finite_trace_last is tr', iom)

valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: state SeededXE
iom, oom: option message
l: label SeededXE
H: y : nat, y < length (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := iom; destination := s; output := oom |}]
Hinit: initial_state_prop is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
initial_descriptors: equivocator_descriptors IM'
trX', lstX: list (composite_transition_item (λ i : sub_index selection, IM (`i)))
oitem: option (composite_transition_item IM')
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
_Hprojectx: match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (lstX, final_descriptors')
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: initial_state_prop (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hx: match oitem with | Some itemx => sx : composite_state IM', sx = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') → composite_valid IM' (VLSM.l itemx) ( sx, input itemx) ∧ composite_transition IM' (VLSM.l itemx) ( sx, input itemx) = (destination itemx, output itemx) | None => equivocators_state_project IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l itemx) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input itemx ∧ output {| l := l; input := iom; destination := s; output := oom |} = output itemx ∧ equivocators_state_project IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) | None => True end
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hiom: option_valid_message_prop SeededXE iom
Hc: no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed l (finite_trace_last is tr', iom)
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
finite_valid_trace_from SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX') lstX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: state SeededXE
iom, oom: option message
l: label SeededXE
H: y : nat, y < length (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := iom; destination := s; output := oom |}]
Hinit: initial_state_prop is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
initial_descriptors: equivocator_descriptors IM'
trX', lstX: list (composite_transition_item (λ i : sub_index selection, IM (`i)))
oitem: option (composite_transition_item IM')
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
_Hprojectx: match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (lstX, final_descriptors')
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: initial_state_prop (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hx: match oitem with | Some itemx => sx : composite_state IM', sx = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') → composite_valid IM' (VLSM.l itemx) ( sx, input itemx) ∧ composite_transition IM' (VLSM.l itemx) ( sx, input itemx) = (destination itemx, output itemx) | None => equivocators_state_project IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l itemx) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input itemx ∧ output {| l := l; input := iom; destination := s; output := oom |} = output itemx ∧ equivocators_state_project IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) | None => True end
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hiom: option_valid_message_prop SeededXE iom
Hc: no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed l (finite_trace_last is tr', iom)

valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
by apply (finite_valid_trace_last_pstate SeededX) in HtrX'.
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: state SeededXE
iom, oom: option message
l: label SeededXE
H: y : nat, y < length (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := iom; destination := s; output := oom |}]
Hinit: initial_state_prop is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
initial_descriptors: equivocator_descriptors IM'
trX', lstX: list (composite_transition_item (λ i : sub_index selection, IM (`i)))
oitem: option (composite_transition_item IM')
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
_Hprojectx: match oitem with | Some item' => Some ([item'], final_descriptors') | None => Some ([], final_descriptors') end = Some (lstX, final_descriptors')
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: initial_state_prop (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hx: match oitem with | Some itemx => sx : composite_state IM', sx = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') → composite_valid IM' (VLSM.l itemx) ( sx, input itemx) ∧ composite_transition IM' (VLSM.l itemx) ( sx, input itemx) = (destination itemx, output itemx) | None => equivocators_state_project IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') end
Hitemx: match oitem with | Some itemx => ( Hex : existing_equivocator_label (IM' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l itemx) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input itemx ∧ output {| l := l; input := iom; destination := s; output := oom |} = output itemx ∧ equivocators_state_project IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination itemx ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) | None => True end
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (oitem, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hiom: option_valid_message_prop SeededXE iom
Hc: no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed l (finite_trace_last is tr', iom)
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')

finite_valid_trace_from SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX') lstX
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: state SeededXE
iom, oom: option message
l: label SeededXE
H: y : nat, y < length (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := iom; destination := s; output := oom |}]
Hinit: initial_state_prop is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
item: composite_transition_item IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: initial_state_prop (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hx: sx : composite_state IM', sx = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') → composite_valid IM' (VLSM.l item) (sx, input item) ∧ composite_transition IM' (VLSM.l item) ( sx, input item) = (destination item, output item)
Hitemx: ( Hex : existing_equivocator_label (IM' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})), existT (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (existing_equivocator_label_extract (IM' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))) (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) Hex) = VLSM.l item) ∧ input {| l := l; input := iom; destination := s; output := oom |} = input item ∧ output {| l := l; input := iom; destination := s; output := oom |} = output item ∧ equivocators_state_project IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |}) = destination item ∧ final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) = equivocator_label_descriptor (projT2 (VLSM.l {| l := l; input := iom; destination := s; output := oom |}))
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (Some item, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hiom: option_valid_message_prop SeededXE iom
Hc: no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed l (finite_trace_last is tr', iom)
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')

finite_valid_trace_from SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX') [item]
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: state SeededXE
iom, oom: option message
l: label SeededXE
H: y : nat, y < length (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := iom; destination := s; output := oom |}]
Hinit: initial_state_prop is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
item: composite_transition_item IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: initial_state_prop (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hx: sx : composite_state IM', sx = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') → composite_valid IM' (VLSM.l item) (sx, input item) ∧ composite_transition IM' (VLSM.l item) ( sx, input item) = (destination item, output item)
Hitemx: ( Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = VLSM.l item) ∧ iom = input item ∧ oom = output item ∧ equivocators_state_project IM' final_descriptors s = destination item ∧ final_descriptors' (projT1 l) = equivocator_label_descriptor (projT2 l)
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (Some item, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hiom: option_valid_message_prop SeededXE iom
Hc: no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed l (finite_trace_last is tr', iom)
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')

finite_valid_trace_from SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX') [item]
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: state SeededXE
iom, oom: option message
l: label SeededXE
H: y : nat, y < length (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := iom; destination := s; output := oom |}]
Hinit: initial_state_prop is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
item: composite_transition_item IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: initial_state_prop (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hx: sx : composite_state IM', sx = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') → composite_valid IM' (VLSM.l item) (sx, input item) ∧ composite_transition IM' (VLSM.l item) ( sx, input item) = (destination item, output item)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = VLSM.l item
Hinput: iom = input item
Houtput: oom = output item
Hdestination: equivocators_state_project IM' final_descriptors s = destination item
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (Some item, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hiom: option_valid_message_prop SeededXE iom
Hc: no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed l (finite_trace_last is tr', iom)
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')

finite_valid_trace_from SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX') [item]
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: state SeededXE
iom, oom: option message
l: label SeededXE
H: y : nat, y < length (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := iom; destination := s; output := oom |}]
Hinit: initial_state_prop is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
item: composite_transition_item IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: initial_state_prop (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hx: composite_valid IM' (VLSM.l item) (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr'), input item) ∧ composite_transition IM' (VLSM.l item) (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr'), input item) = (destination item, output item)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = VLSM.l item
Hinput: iom = input item
Houtput: oom = output item
Hdestination: equivocators_state_project IM' final_descriptors s = destination item
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (Some item, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hiom: option_valid_message_prop SeededXE iom
Hc: no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed l (finite_trace_last is tr', iom)
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')

finite_valid_trace_from SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX') [item]
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: state SeededXE
iom, oom: option message
l: label SeededXE
H: y : nat, y < length (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := iom; destination := s; output := oom |}]
Hinit: initial_state_prop is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors (destination {| l := l; input := iom; destination := s; output := oom |})
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
item: composite_transition_item IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: initial_state_prop (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hvx: composite_valid IM' (VLSM.l item) (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr'), input item)
Htx: composite_transition IM' (VLSM.l item) (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr'), input item) = (destination item, output item)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = VLSM.l item
Hinput: iom = input item
Houtput: oom = output item
Hdestination: equivocators_state_project IM' final_descriptors s = destination item
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (Some item, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hiom: option_valid_message_prop SeededXE iom
Hc: no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed l (finite_trace_last is tr', iom)
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')

finite_valid_trace_from SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX') [item]
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: state SeededXE
iom, oom: option message
l: label SeededXE
H: y : nat, y < length (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → let final_state := finite_trace_last is tr in y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors final_state → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := iom; destination := s; output := oom |}]
Hinit: initial_state_prop is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]): state (composite_type (sub_IM (equivocator_IM IM) selection))
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors (VLSM.destination {| l := l; input := iom; destination := s; output := oom |})
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: label (composite_type IM')
input: option message
destination: state (composite_type IM')
output: option message
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: initial_state_prop (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})) (final_descriptors' (projT1 (VLSM.l {| l := l; input := iom; destination := s; output := oom |})))
Hvx: composite_valid IM' (VLSM.l {| l := l0; input := input; destination := destination; output := output |}) (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr'), VLSM.input {| l := l0; input := input; destination := destination; output := output |})
Htx: composite_transition IM' (VLSM.l {| l := l0; input := input; destination := destination; output := output |}) (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr'), VLSM.input {| l := l0; input := input; destination := destination; output := output |}) = (VLSM.destination {| l := l0; input := input; destination := destination; output := output |}, VLSM.output {| l := l0; input := input; destination := destination; output := output |})
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = VLSM.l {| l := l0; input := input; destination := destination; output := output |}
Hinput: iom = VLSM.input {| l := l0; input := input; destination := destination; output := output |}
Houtput: oom = VLSM.output {| l := l0; input := input; destination := destination; output := output |}
Hdestination: equivocators_state_project IM' final_descriptors s = VLSM.destination {| l := l0; input := input; destination := destination; output := output |}
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (Some {| l := l0; input := input; destination := destination; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hiom: option_valid_message_prop SeededXE iom
Hc: no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed l (finite_trace_last is tr', iom)
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')

finite_valid_trace_from SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX') [{| l := l0; input := input; destination := destination; output := output |}]
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
iom, oom: option message
l: composite_label (sub_IM (equivocator_IM IM) selection)
H: y : nat, y < length (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr) → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := iom; destination := s; output := oom |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := iom; destination := s; output := oom |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
input: option message
destination: composite_state IM'
output: option message
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') i, input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') i, input) in (state_update IM' (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')) i si', om')) = (destination, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hinput: iom = input
Houtput: oom = output
Hdestination: equivocators_state_project IM' final_descriptors s = destination
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := iom; destination := s; output := oom |} = Some (Some {| l := l0; input := input; destination := destination; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hiom: option_valid_message_prop SeededXE iom
Hc: no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed l (finite_trace_last is tr', iom)
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')

finite_valid_trace_from SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX') [{| l := l0; input := input; destination := destination; output := output |}]
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input, output: option message
H: y : nat, y < length (tr' ++ [{| l := l; input := input; destination := s; output := output |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr) → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') i, input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') i, input) in (state_update IM' (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')) i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := input; destination := s; output := output |} = Some (Some {| l := l0; input := input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hc: no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed l (finite_trace_last is tr', input)
Hiom: option_valid_message_prop SeededXE input
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')

finite_valid_trace_from SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX') [{| l := l0; input := input; destination := equivocators_state_project IM' final_descriptors s; output := output |}]
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input, output: option message
H: y : nat, y < length (tr' ++ [{| l := l; input := input; destination := s; output := output |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr) → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') i, input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') i, input) in (state_update IM' (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')) i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := input; destination := s; output := output |} = Some (Some {| l := l0; input := input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hc: no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed l (finite_trace_last is tr', input)
Hiom: option_valid_message_prop SeededXE input
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')

input_valid_transition SeededX l0 (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX', input) (equivocators_state_project IM' final_descriptors s, output)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input, output: option message
H: y : nat, y < length (tr' ++ [{| l := l; input := input; destination := s; output := output |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr) → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') i, input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') i, input) in (state_update IM' (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')) i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := input; destination := s; output := output |} = Some (Some {| l := l0; input := input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hc: no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed l (finite_trace_last is tr', input)
Hiom: option_valid_message_prop SeededXE input
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
Htr_to: finite_valid_trace_init_to SeededXE is (finite_trace_last is tr') tr'

input_valid_transition SeededX l0 (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX', input) (equivocators_state_project IM' final_descriptors s, output)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input, output: option message
H: y : nat, y < length (tr' ++ [{| l := l; input := input; destination := s; output := output |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr) → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') i, input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') i, input) in (state_update IM' (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')) i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := input; destination := s; output := output |} = Some (Some {| l := l0; input := input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hc: no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed l (finite_trace_last is tr', input)
Hiom: option_valid_message_prop SeededXE input
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
Htr_to: finite_valid_trace_init_to SeededXE is (finite_trace_last is tr') tr'

finite_constrained_trace_init_to SubFreeE is (finite_trace_last is tr') tr'
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input, output: option message
H: y : nat, y < length (tr' ++ [{| l := l; input := input; destination := s; output := output |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr) → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') i, input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') i, input) in (state_update IM' (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')) i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := input; destination := s; output := output |} = Some (Some {| l := l0; input := input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hc: no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed l (finite_trace_last is tr', input)
Hiom: option_valid_message_prop SeededXE input
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
Htr_to: finite_valid_trace_init_to SeededXE is (finite_trace_last is tr') tr'
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is (finite_trace_last is tr') tr'
input_valid_transition SeededX l0 (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX', input) (equivocators_state_project IM' final_descriptors s, output)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input, output: option message
H: y : nat, y < length (tr' ++ [{| l := l; input := input; destination := s; output := output |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr) → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') i, input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') i, input) in (state_update IM' (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')) i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := input; destination := s; output := output |} = Some (Some {| l := l0; input := input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hc: no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed l (finite_trace_last is tr', input)
Hiom: option_valid_message_prop SeededXE input
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
Htr_to: finite_valid_trace_init_to SeededXE is (finite_trace_last is tr') tr'

finite_constrained_trace_init_to SubFreeE is (finite_trace_last is tr') tr'
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input, output: option message
H: y : nat, y < length (tr' ++ [{| l := l; input := input; destination := s; output := output |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr) → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') i, input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') i, input) in (state_update IM' (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')) i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := input; destination := s; output := output |} = Some (Some {| l := l0; input := input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hc: no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed l (finite_trace_last is tr', input)
Hiom: option_valid_message_prop SeededXE input
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')

VLSM_incl_part (preloaded_vlsm_machine (composite_vlsm (sub_IM (equivocator_IM IM) selection) (no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed)) seed) (preloaded_vlsm_machine SubFreeE (λ _ : message, True))
by apply seeded_no_equivocation_incl_preloaded.
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input, output: option message
H: y : nat, y < length (tr' ++ [{| l := l; input := input; destination := s; output := output |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr) → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') i, input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') i, input) in (state_update IM' (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')) i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := input; destination := s; output := output |} = Some (Some {| l := l0; input := input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hc: no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed l (finite_trace_last is tr', input)
Hiom: option_valid_message_prop SeededXE input
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
Htr_to: finite_valid_trace_init_to SeededXE is (finite_trace_last is tr') tr'
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is (finite_trace_last is tr') tr'

input_valid_transition SeededX l0 (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX', input) (equivocators_state_project IM' final_descriptors s, output)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input, output: option message
H: y : nat, y < length (tr' ++ [{| l := l; input := input; destination := s; output := output |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr) → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') i, input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') i, input) in (state_update IM' (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')) i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := input; destination := s; output := output |} = Some (Some {| l := l0; input := input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hc: no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed l (finite_trace_last is tr', input)
Hiom: option_valid_message_prop SeededXE input
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
Htr_to: finite_valid_trace_init_to SeededXE is (finite_trace_last is tr') tr'
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is (finite_trace_last is tr') tr'
Hpr_tr': initial_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' initial_descriptors is ∧ (let isX := equivocators_state_project IM' initial_descriptors is in let final_stateX := equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') in trX : list (composite_transition_item IM'), equivocators_trace_project IM' final_descriptors' tr' = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to (free_composite_vlsm IM') isX final_stateX trX)

input_valid_transition SeededX l0 (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX', input) (equivocators_state_project IM' final_descriptors s, output)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input, output: option message
H: y : nat, y < length (tr' ++ [{| l := l; input := input; destination := s; output := output |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr) → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') i, input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') i, input) in (state_update IM' (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')) i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := input; destination := s; output := output |} = Some (Some {| l := l0; input := input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hc: no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed l (finite_trace_last is tr', input)
Hiom: option_valid_message_prop SeededXE input
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
Htr_to: finite_valid_trace_init_to SeededXE is (finite_trace_last is tr') tr'
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is (finite_trace_last is tr') tr'
_initial_descriptors: equivocator_descriptors IM'
_trX': list (composite_transition_item IM')
_Hpr_trX': equivocators_trace_project IM' final_descriptors' tr' = Some (_trX', _initial_descriptors)
Heq_final_stateX': finite_constrained_trace_init_to (free_composite_vlsm IM') (equivocators_state_project IM' _initial_descriptors is) (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')) _trX'

input_valid_transition SeededX l0 (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX', input) (equivocators_state_project IM' final_descriptors s, output)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input, output: option message
H: y : nat, y < length (tr' ++ [{| l := l; input := input; destination := s; output := output |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr) → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') i, input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') i, input) in (state_update IM' (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')) i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := input; destination := s; output := output |} = Some (Some {| l := l0; input := input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hc: no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed l (finite_trace_last is tr', input)
Hiom: option_valid_message_prop SeededXE input
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
Htr_to: finite_valid_trace_init_to SeededXE is (finite_trace_last is tr') tr'
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is (finite_trace_last is tr') tr'
_initial_descriptors: equivocator_descriptors IM'
_trX': list (composite_transition_item IM')
_Hpr_trX': Some (trX', initial_descriptors) = Some (_trX', _initial_descriptors)
Heq_final_stateX': finite_constrained_trace_init_to (free_composite_vlsm IM') (equivocators_state_project IM' _initial_descriptors is) (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')) _trX'

input_valid_transition SeededX l0 (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX', input) (equivocators_state_project IM' final_descriptors s, output)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input, output: option message
H: y : nat, y < length (tr' ++ [{| l := l; input := input; destination := s; output := output |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr) → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') i, input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') i, input) in (state_update IM' (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')) i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := input; destination := s; output := output |} = Some (Some {| l := l0; input := input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hc: no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed l (finite_trace_last is tr', input)
Hiom: option_valid_message_prop SeededXE input
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
Htr_to: finite_valid_trace_init_to SeededXE is (finite_trace_last is tr') tr'
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is (finite_trace_last is tr') tr'
_initial_descriptors: equivocator_descriptors IM'
_trX': list (composite_transition_item IM')
_Hpr_trX': Some (trX', initial_descriptors) = Some (_trX', _initial_descriptors)
Heq_final_stateX': finite_constrained_trace_init_to (free_composite_vlsm IM') (equivocators_state_project IM' _initial_descriptors is) (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')) _trX'
H2: trX' = _trX'
H3: initial_descriptors = _initial_descriptors

input_valid_transition SeededX l0 (finite_trace_last (equivocators_state_project IM' _initial_descriptors is) _trX', input) (equivocators_state_project IM' final_descriptors s, output)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input, output: option message
H: y : nat, y < length (tr' ++ [{| l := l; input := input; destination := s; output := output |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr) → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') i, input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') i, input) in (state_update IM' (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')) i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := input; destination := s; output := output |} = Some (Some {| l := l0; input := input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hc: no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed l (finite_trace_last is tr', input)
Hiom: option_valid_message_prop SeededXE input
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
Htr_to: finite_valid_trace_init_to SeededXE is (finite_trace_last is tr') tr'
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is (finite_trace_last is tr') tr'
_Hpr_trX': Some (trX', initial_descriptors) = Some (trX', initial_descriptors)
Heq_final_stateX': finite_constrained_trace_init_to (free_composite_vlsm IM') (equivocators_state_project IM' initial_descriptors is) (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')) trX'

input_valid_transition SeededX l0 (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX', input) (equivocators_state_project IM' final_descriptors s, output)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input, output: option message
H: y : nat, y < length (tr' ++ [{| l := l; input := input; destination := s; output := output |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr) → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') i, input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') i, input) in (state_update IM' (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')) i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := input; destination := s; output := output |} = Some (Some {| l := l0; input := input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hc: no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed l (finite_trace_last is tr', input)
Hiom: option_valid_message_prop SeededXE input
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
Htr_to: finite_valid_trace_init_to SeededXE is (finite_trace_last is tr') tr'
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is (finite_trace_last is tr') tr'
_Hpr_trX': Some (trX', initial_descriptors) = Some (trX', initial_descriptors)
Heq_final_stateX': finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')

input_valid_transition SeededX l0 (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX', input) (equivocators_state_project IM' final_descriptors s, output)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input, output: option message
H: y : nat, y < length (tr' ++ [{| l := l; input := input; destination := s; output := output |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr) → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') i, input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr') i, input) in (state_update IM' (equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')) i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := input; destination := s; output := output |} = Some (Some {| l := l0; input := input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hc: no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed l (finite_trace_last is tr', input)
Hiom: option_valid_message_prop SeededXE input
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
Htr_to: finite_valid_trace_init_to SeededXE is (finite_trace_last is tr') tr'
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is (finite_trace_last is tr') tr'
_Hpr_trX': Some (trX', initial_descriptors) = Some (trX', initial_descriptors)
Heq_final_stateX': finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')

input_valid_transition SeededX l0 (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX', input) (equivocators_state_project IM' final_descriptors s, output)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input, output: option message
H: y : nat, y < length (tr' ++ [{| l := l; input := input; destination := s; output := output |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr) → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, input) in (state_update IM' (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX') i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := input; destination := s; output := output |} = Some (Some {| l := l0; input := input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hc: no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed l (finite_trace_last is tr', input)
Hiom: option_valid_message_prop SeededXE input
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
Htr_to: finite_valid_trace_init_to SeededXE is (finite_trace_last is tr') tr'
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is (finite_trace_last is tr') tr'
_Hpr_trX': Some (trX', initial_descriptors) = Some (trX', initial_descriptors)
Heq_final_stateX': finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')

input_valid_transition SeededX l0 (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX', input) (equivocators_state_project IM' final_descriptors s, output)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input, output: option message
H: y : nat, y < length (tr' ++ [{| l := l; input := input; destination := s; output := output |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr) → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, input) in (state_update IM' (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX') i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := input; destination := s; output := output |} = Some (Some {| l := l0; input := input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hc: no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed l (finite_trace_last is tr', input)
Hiom: option_valid_message_prop SeededXE input
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
Htr_to: finite_valid_trace_init_to SeededXE is (finite_trace_last is tr') tr'
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is (finite_trace_last is tr') tr'
_Hpr_trX': Some (trX', initial_descriptors) = Some (trX', initial_descriptors)
Heq_final_stateX': finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')

option_valid_message_prop SeededX input
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input: message
output: option message
H: y : nat, y < length (tr' ++ [{| l := l; input := Some input; destination := s; output := output |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr) → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := Some input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := Some input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input) in (state_update IM' (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX') i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := Some input; destination := s; output := output |} = Some (Some {| l := l0; input := Some input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hc: no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed l (finite_trace_last is tr', Some input)
Hiom: option_valid_message_prop SeededXE (Some input)
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
Htr_to: finite_valid_trace_init_to SeededXE is (finite_trace_last is tr') tr'
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is (finite_trace_last is tr') tr'
_Hpr_trX': Some (trX', initial_descriptors) = Some (trX', initial_descriptors)
Heq_final_stateX': finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')

option_valid_message_prop SeededX (Some input)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input: message
output: option message
H: y : nat, y < length (tr' ++ [{| l := l; input := Some input; destination := s; output := output |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr) → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := Some input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := Some input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input) in (state_update IM' (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX') i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := Some input; destination := s; output := output |} = Some (Some {| l := l0; input := Some input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hc: composite_no_equivocations_except_from (sub_IM (equivocator_IM IM) selection) seed l (finite_trace_last is tr', Some input)
Hiom: option_valid_message_prop SeededXE (Some input)
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
Htr_to: finite_valid_trace_init_to SeededXE is (finite_trace_last is tr') tr'
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is (finite_trace_last is tr') tr'
_Hpr_trX': Some (trX', initial_descriptors) = Some (trX', initial_descriptors)
Heq_final_stateX': finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')

option_valid_message_prop SeededX (Some input)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input: message
output: option message
H: y : nat, y < length (tr' ++ [{| l := l; input := Some input; destination := s; output := output |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr) → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := Some input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := Some input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input) in (state_update IM' (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX') i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := Some input; destination := s; output := output |} = Some (Some {| l := l0; input := Some input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hc: composite_no_equivocations_except_from (sub_IM (equivocator_IM IM) selection) seed l (finite_trace_last is tr', Some input)
Hiom: option_valid_message_prop SeededXE (Some input)
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
Htr_to: finite_valid_trace_init_to SeededXE is (finite_trace_last is tr') tr'
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is (finite_trace_last is tr') tr'
_Hpr_trX': Some (trX', initial_descriptors) = Some (trX', initial_descriptors)
Heq_final_stateX': finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')

option_valid_message_prop SeededX (Some input)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input: message
output: option message
H: y : nat, y < length (tr' ++ [{| l := l; input := Some input; destination := s; output := output |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr) → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := Some input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := Some input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input) in (state_update IM' (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX') i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := Some input; destination := s; output := output |} = Some (Some {| l := l0; input := Some input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hc: seed input ∨ composite_has_been_sent (sub_IM (equivocator_IM IM) selection) (finite_trace_last is tr', Some input).1 input
Hiom: option_valid_message_prop SeededXE (Some input)
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
Htr_to: finite_valid_trace_init_to SeededXE is (finite_trace_last is tr') tr'
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is (finite_trace_last is tr') tr'
_Hpr_trX': Some (trX', initial_descriptors) = Some (trX', initial_descriptors)
Heq_final_stateX': finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')

option_valid_message_prop SeededX (Some input)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input: message
output: option message
H: y : nat, y < length (tr' ++ [{| l := l; input := Some input; destination := s; output := output |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr) → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := Some input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := Some input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input) in (state_update IM' (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX') i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := Some input; destination := s; output := output |} = Some (Some {| l := l0; input := Some input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hno_equiv: composite_has_been_sent (sub_IM (equivocator_IM IM) selection) (finite_trace_last is tr', Some input).1 input
Hiom: option_valid_message_prop SeededXE (Some input)
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
Htr_to: finite_valid_trace_init_to SeededXE is (finite_trace_last is tr') tr'
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is (finite_trace_last is tr') tr'
_Hpr_trX': Some (trX', initial_descriptors) = Some (trX', initial_descriptors)
Heq_final_stateX': finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')

option_valid_message_prop SeededX (Some input)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input: message
output: option message
H: y : nat, y < length (tr' ++ [{| l := l; input := Some input; destination := s; output := output |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr) → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := Some input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := Some input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input) in (state_update IM' (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX') i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := Some input; destination := s; output := output |} = Some (Some {| l := l0; input := Some input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hno_equiv: composite_has_been_sent (sub_IM (equivocator_IM IM) selection) (finite_trace_last is tr', Some input).1 input
Hiom: option_valid_message_prop SeededXE (Some input)
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
Htr_to: finite_valid_trace_init_to SeededXE is (finite_trace_last is tr') tr'
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is (finite_trace_last is tr') tr'
_Hpr_trX': Some (trX', initial_descriptors) = Some (trX', initial_descriptors)
Heq_final_stateX': finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')
Hs_free: constrained_state_prop SubFreeE (finite_trace_last is tr')

option_valid_message_prop SeededX (Some input)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input: message
output: option message
H: y : nat, y < length (tr' ++ [{| l := l; input := Some input; destination := s; output := output |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr) → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := Some input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := Some input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input) in (state_update IM' (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX') i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := Some input; destination := s; output := output |} = Some (Some {| l := l0; input := Some input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hno_equiv: selected_message_exists_in_all_preloaded_traces (free_composite_vlsm (sub_IM (equivocator_IM IM) selection)) (field_selector VLSM.output) (finite_trace_last is tr') input
Hiom: option_valid_message_prop SeededXE (Some input)
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
Htr_to: finite_valid_trace_init_to SeededXE is (finite_trace_last is tr') tr'
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is (finite_trace_last is tr') tr'
_Hpr_trX': Some (trX', initial_descriptors) = Some (trX', initial_descriptors)
Heq_final_stateX': finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')
Hs_free: constrained_state_prop SubFreeE (finite_trace_last is tr')

option_valid_message_prop SeededX (Some input)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input: message
output: option message
H: y : nat, y < length (tr' ++ [{| l := l; input := Some input; destination := s; output := output |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr) → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := Some input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := Some input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input) in (state_update IM' (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX') i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := Some input; destination := s; output := output |} = Some (Some {| l := l0; input := Some input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hno_equiv: trace_has_message (field_selector VLSM.output) input tr'
Hiom: option_valid_message_prop SeededXE (Some input)
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
Htr_to: finite_valid_trace_init_to SeededXE is (finite_trace_last is tr') tr'
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is (finite_trace_last is tr') tr'
_Hpr_trX': Some (trX', initial_descriptors) = Some (trX', initial_descriptors)
Heq_final_stateX': finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')
Hs_free: constrained_state_prop SubFreeE (finite_trace_last is tr')

option_valid_message_prop SeededX (Some input)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input: message
output: option message
H: y : nat, y < length (tr' ++ [{| l := l; input := Some input; destination := s; output := output |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr) → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := Some input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := Some input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input) in (state_update IM' (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX') i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := Some input; destination := s; output := output |} = Some (Some {| l := l0; input := Some input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hno_equiv: trace_has_message (field_selector VLSM.output) input tr'
Hiom: option_valid_message_prop SeededXE (Some input)
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
Htr_to: finite_valid_trace_init_to SeededXE is (finite_trace_last is tr') tr'
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is (finite_trace_last is tr') tr'
_Hpr_trX': Some (trX', initial_descriptors) = Some (trX', initial_descriptors)
Heq_final_stateX': finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')
Hs_free: constrained_state_prop SubFreeE (finite_trace_last is tr')
Hpre_tr: finite_valid_trace (preloaded_with_all_messages_vlsm SubFreeE) is tr'

option_valid_message_prop SeededX (Some input)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input: message
output: option message
H: y : nat, y < length (tr' ++ [{| l := l; input := Some input; destination := s; output := output |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → y = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr) → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := Some input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := Some input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input) in (state_update IM' (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX') i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := Some input; destination := s; output := output |} = Some (Some {| l := l0; input := Some input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hno_equiv: trace_has_message (field_selector VLSM.output) input tr'
Hiom: option_valid_message_prop SeededXE (Some input)
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
Htr_to: finite_valid_trace_init_to SeededXE is (finite_trace_last is tr') tr'
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is (finite_trace_last is tr') tr'
_Hpr_trX': Some (trX', initial_descriptors) = Some (trX', initial_descriptors)
Heq_final_stateX': finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')
Hs_free: constrained_state_prop SubFreeE (finite_trace_last is tr')
Hpre_tr: finite_valid_trace (preloaded_with_all_messages_vlsm SubFreeE) is tr'
final_descriptors_m, initial_descriptors_m: equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
trXm: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
Hfinal_descriptors_m: not_equivocating_equivocator_descriptors (λ ei : sub_index selection, IM (`ei)) final_descriptors_m (finite_trace_last is tr')
Hproject_trXm: equivocators_trace_project (λ ei : sub_index selection, IM (`ei)) final_descriptors_m tr' = Some (trXm, initial_descriptors_m)
Hex: Exists (field_selector VLSM.output input) trXm

option_valid_message_prop SeededX (Some input)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input: message
output: option message
H: length tr' < length (tr' ++ [{| l := l; input := Some input; destination := s; output := output |}]) → tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → length tr' = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr) → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := Some input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := Some input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input) in (state_update IM' (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX') i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := Some input; destination := s; output := output |} = Some (Some {| l := l0; input := Some input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hno_equiv: trace_has_message (field_selector VLSM.output) input tr'
Hiom: option_valid_message_prop SeededXE (Some input)
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
Htr_to: finite_valid_trace_init_to SeededXE is (finite_trace_last is tr') tr'
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is (finite_trace_last is tr') tr'
_Hpr_trX': Some (trX', initial_descriptors) = Some (trX', initial_descriptors)
Heq_final_stateX': finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')
Hs_free: constrained_state_prop SubFreeE (finite_trace_last is tr')
Hpre_tr: finite_valid_trace (preloaded_with_all_messages_vlsm SubFreeE) is tr'
final_descriptors_m, initial_descriptors_m: equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
trXm: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
Hfinal_descriptors_m: not_equivocating_equivocator_descriptors (λ ei : sub_index selection, IM (`ei)) final_descriptors_m (finite_trace_last is tr')
Hproject_trXm: equivocators_trace_project (λ ei : sub_index selection, IM (`ei)) final_descriptors_m tr' = Some (trXm, initial_descriptors_m)
Hex: Exists (field_selector VLSM.output input) trXm

option_valid_message_prop SeededX (Some input)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input: message
output: option message
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := Some input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := Some input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input) in (state_update IM' (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX') i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := Some input; destination := s; output := output |} = Some (Some {| l := l0; input := Some input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hno_equiv: trace_has_message (field_selector VLSM.output) input tr'
Hiom: option_valid_message_prop SeededXE (Some input)
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
Htr_to: finite_valid_trace_init_to SeededXE is (finite_trace_last is tr') tr'
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is (finite_trace_last is tr') tr'
_Hpr_trX': Some (trX', initial_descriptors) = Some (trX', initial_descriptors)
Heq_final_stateX': finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')
Hs_free: constrained_state_prop SubFreeE (finite_trace_last is tr')
Hpre_tr: finite_valid_trace (preloaded_with_all_messages_vlsm SubFreeE) is tr'
final_descriptors_m, initial_descriptors_m: equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
trXm: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
Hfinal_descriptors_m: not_equivocating_equivocator_descriptors (λ ei : sub_index selection, IM (`ei)) final_descriptors_m (finite_trace_last is tr')
Hproject_trXm: equivocators_trace_project (λ ei : sub_index selection, IM (`ei)) final_descriptors_m tr' = Some (trXm, initial_descriptors_m)
Hex: Exists (field_selector VLSM.output input) trXm
H: tr : list (composite_transition_item (sub_IM (equivocator_IM IM) selection)), finite_valid_trace SeededXE is tr → length tr' = length tr → final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr) → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX

option_valid_message_prop SeededX (Some input)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input: message
output: option message
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := Some input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := Some input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input) in (state_update IM' (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX') i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := Some input; destination := s; output := output |} = Some (Some {| l := l0; input := Some input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hno_equiv: trace_has_message (field_selector VLSM.output) input tr'
Hiom: option_valid_message_prop SeededXE (Some input)
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
Htr_to: finite_valid_trace_init_to SeededXE is (finite_trace_last is tr') tr'
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is (finite_trace_last is tr') tr'
_Hpr_trX': Some (trX', initial_descriptors) = Some (trX', initial_descriptors)
Heq_final_stateX': finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')
Hs_free: constrained_state_prop SubFreeE (finite_trace_last is tr')
Hpre_tr: finite_valid_trace (preloaded_with_all_messages_vlsm SubFreeE) is tr'
final_descriptors_m, initial_descriptors_m: equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
trXm: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
Hfinal_descriptors_m: not_equivocating_equivocator_descriptors (λ ei : sub_index selection, IM (`ei)) final_descriptors_m (finite_trace_last is tr')
Hproject_trXm: equivocators_trace_project (λ ei : sub_index selection, IM (`ei)) final_descriptors_m tr' = Some (trXm, initial_descriptors_m)
Hex: Exists (field_selector VLSM.output input) trXm
H: final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr') → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr' = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX

option_valid_message_prop SeededX (Some input)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input: message
output: option message
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := Some input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := Some input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input) in (state_update IM' (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX') i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := Some input; destination := s; output := output |} = Some (Some {| l := l0; input := Some input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hno_equiv: trace_has_message (field_selector VLSM.output) input tr'
Hiom: option_valid_message_prop SeededXE (Some input)
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
Htr_to: finite_valid_trace_init_to SeededXE is (finite_trace_last is tr') tr'
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is (finite_trace_last is tr') tr'
_Hpr_trX': Some (trX', initial_descriptors) = Some (trX', initial_descriptors)
Heq_final_stateX': finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')
Hs_free: constrained_state_prop SubFreeE (finite_trace_last is tr')
Hpre_tr: finite_valid_trace (preloaded_with_all_messages_vlsm SubFreeE) is tr'
final_descriptors_m, initial_descriptors_m: equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
trXm: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
Hfinal_descriptors_m: not_equivocating_equivocator_descriptors (λ ei : sub_index selection, IM (`ei)) final_descriptors_m (finite_trace_last is tr')
Hproject_trXm: equivocators_trace_project (λ ei : sub_index selection, IM (`ei)) final_descriptors_m tr' = Some (trXm, initial_descriptors_m)
Hex: Exists (field_selector VLSM.output input) trXm
H: final_descriptors : equivocator_descriptors IM', proper_equivocator_descriptors IM' final_descriptors (finite_trace_last is tr') → (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors tr' = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Hfinal_descriptors_m_proper: proper_equivocator_descriptors (λ ei : sub_index selection, IM (`ei)) final_descriptors_m (finite_trace_last is tr')

option_valid_message_prop SeededX (Some input)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input: message
output: option message
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := Some input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := Some input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input) in (state_update IM' (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX') i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := Some input; destination := s; output := output |} = Some (Some {| l := l0; input := Some input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hno_equiv: trace_has_message (field_selector VLSM.output) input tr'
Hiom: option_valid_message_prop SeededXE (Some input)
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
Htr_to: finite_valid_trace_init_to SeededXE is (finite_trace_last is tr') tr'
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is (finite_trace_last is tr') tr'
_Hpr_trX': Some (trX', initial_descriptors) = Some (trX', initial_descriptors)
Heq_final_stateX': finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')
Hs_free: constrained_state_prop SubFreeE (finite_trace_last is tr')
Hpre_tr: finite_valid_trace (preloaded_with_all_messages_vlsm SubFreeE) is tr'
final_descriptors_m, initial_descriptors_m: equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
trXm: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
Hfinal_descriptors_m: not_equivocating_equivocator_descriptors (λ ei : sub_index selection, IM (`ei)) final_descriptors_m (finite_trace_last is tr')
Hproject_trXm: equivocators_trace_project (λ ei : sub_index selection, IM (`ei)) final_descriptors_m tr' = Some (trXm, initial_descriptors_m)
Hex: Exists (field_selector VLSM.output input) trXm
H: (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors_m tr' = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Hfinal_descriptors_m_proper: proper_equivocator_descriptors (λ ei : sub_index selection, IM (`ei)) final_descriptors_m (finite_trace_last is tr')

option_valid_message_prop SeededX (Some input)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input: message
output: option message
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := Some input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := Some input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input) in (state_update IM' (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX') i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := Some input; destination := s; output := output |} = Some (Some {| l := l0; input := Some input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hno_equiv: trace_has_message (field_selector VLSM.output) input tr'
Hiom: option_valid_message_prop SeededXE (Some input)
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
Htr_to: finite_valid_trace_init_to SeededXE is (finite_trace_last is tr') tr'
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is (finite_trace_last is tr') tr'
_Hpr_trX': Some (trX', initial_descriptors) = Some (trX', initial_descriptors)
Heq_final_stateX': finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')
Hs_free: constrained_state_prop SubFreeE (finite_trace_last is tr')
Hpre_tr: finite_valid_trace (preloaded_with_all_messages_vlsm SubFreeE) is tr'
final_descriptors_m, initial_descriptors_m: equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
trXm: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
Hfinal_descriptors_m: not_equivocating_equivocator_descriptors (λ ei : sub_index selection, IM (`ei)) final_descriptors_m (finite_trace_last is tr')
Hproject_trXm: equivocators_trace_project (λ ei : sub_index selection, IM (`ei)) final_descriptors_m tr' = Some (trXm, initial_descriptors_m)
Hex: Exists (field_selector VLSM.output input) trXm
H: (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors_m tr' = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Hfinal_descriptors_m_proper: proper_equivocator_descriptors (λ ei : sub_index selection, IM (`ei)) final_descriptors_m (finite_trace_last is tr')
Hpr_tr': initial_descriptors : equivocator_descriptors (λ ei : sub_index selection, IM (`ei)), proper_equivocator_descriptors (λ ei : sub_index selection, IM (`ei)) initial_descriptors is ∧ (let isX := equivocators_state_project (λ ei : sub_index selection, IM (`ei)) initial_descriptors is in let final_stateX := equivocators_state_project (λ ei : sub_index selection, IM (`ei)) final_descriptors_m (finite_trace_last is tr') in trX : list (composite_transition_item (λ ei : sub_index selection, IM (`ei))), equivocators_trace_project (λ ei : sub_index selection, IM (`ei)) final_descriptors_m tr' = Some (trX, initial_descriptors) ∧ finite_constrained_trace_init_to (free_composite_vlsm (λ ei : sub_index selection, IM (`ei))) isX final_stateX trX)

option_valid_message_prop SeededX (Some input)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input: message
output: option message
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := Some input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := Some input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input) in (state_update IM' (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX') i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := Some input; destination := s; output := output |} = Some (Some {| l := l0; input := Some input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hno_equiv: trace_has_message (field_selector VLSM.output) input tr'
Hiom: option_valid_message_prop SeededXE (Some input)
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
Htr_to: finite_valid_trace_init_to SeededXE is (finite_trace_last is tr') tr'
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is (finite_trace_last is tr') tr'
_Hpr_trX': Some (trX', initial_descriptors) = Some (trX', initial_descriptors)
Heq_final_stateX': finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')
Hs_free: constrained_state_prop SubFreeE (finite_trace_last is tr')
Hpre_tr: finite_valid_trace (preloaded_with_all_messages_vlsm SubFreeE) is tr'
final_descriptors_m, initial_descriptors_m: equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
trXm: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
Hfinal_descriptors_m: not_equivocating_equivocator_descriptors (λ ei : sub_index selection, IM (`ei)) final_descriptors_m (finite_trace_last is tr')
Hproject_trXm: equivocators_trace_project (λ ei : sub_index selection, IM (`ei)) final_descriptors_m tr' = Some (trXm, initial_descriptors_m)
Hex: Exists (field_selector VLSM.output input) trXm
H: (initial_descriptors : equivocator_descriptors IM') (trX : list (composite_transition_item IM')), equivocators_trace_project IM' final_descriptors_m tr' = Some (trX, initial_descriptors) → finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors is) trX
Hfinal_descriptors_m_proper: proper_equivocator_descriptors (λ ei : sub_index selection, IM (`ei)) final_descriptors_m (finite_trace_last is tr')
initial_descriptors_m': equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
Hproper_initial_m: proper_equivocator_descriptors (λ ei : sub_index selection, IM (`ei)) initial_descriptors_m' is
trXm': list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
Hproject_trXm': equivocators_trace_project (λ ei : sub_index selection, IM (`ei)) final_descriptors_m tr' = Some (trXm', initial_descriptors_m')
HtrXm: finite_constrained_trace_init_to (free_composite_vlsm (λ ei : sub_index selection, IM (`ei))) (equivocators_state_project (λ ei : sub_index selection, IM (`ei)) initial_descriptors_m' is) (equivocators_state_project (λ ei : sub_index selection, IM (`ei)) final_descriptors_m (finite_trace_last is tr')) trXm'

option_valid_message_prop SeededX (Some input)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input: message
output: option message
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := Some input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := Some input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input) in (state_update IM' (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX') i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := Some input; destination := s; output := output |} = Some (Some {| l := l0; input := Some input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hno_equiv: trace_has_message (field_selector VLSM.output) input tr'
Hiom: option_valid_message_prop SeededXE (Some input)
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
Htr_to: finite_valid_trace_init_to SeededXE is (finite_trace_last is tr') tr'
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is (finite_trace_last is tr') tr'
_Hpr_trX': Some (trX', initial_descriptors) = Some (trX', initial_descriptors)
Heq_final_stateX': finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')
Hs_free: constrained_state_prop SubFreeE (finite_trace_last is tr')
Hpre_tr: finite_valid_trace (preloaded_with_all_messages_vlsm SubFreeE) is tr'
final_descriptors_m, initial_descriptors_m: equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
trXm: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
Hfinal_descriptors_m: not_equivocating_equivocator_descriptors (λ ei : sub_index selection, IM (`ei)) final_descriptors_m (finite_trace_last is tr')
Hproject_trXm: equivocators_trace_project (λ ei : sub_index selection, IM (`ei)) final_descriptors_m tr' = Some (trXm, initial_descriptors_m)
Hex: Exists (field_selector VLSM.output input) trXm
initial_descriptors_m': equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
trXm': list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
H: finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors_m' is) trXm'
Hfinal_descriptors_m_proper: proper_equivocator_descriptors (λ ei : sub_index selection, IM (`ei)) final_descriptors_m (finite_trace_last is tr')
Hproper_initial_m: proper_equivocator_descriptors (λ ei : sub_index selection, IM (`ei)) initial_descriptors_m' is
Hproject_trXm': equivocators_trace_project (λ ei : sub_index selection, IM (`ei)) final_descriptors_m tr' = Some (trXm', initial_descriptors_m')
HtrXm: finite_constrained_trace_init_to (free_composite_vlsm (λ ei : sub_index selection, IM (`ei))) (equivocators_state_project (λ ei : sub_index selection, IM (`ei)) initial_descriptors_m' is) (equivocators_state_project (λ ei : sub_index selection, IM (`ei)) final_descriptors_m (finite_trace_last is tr')) trXm'

option_valid_message_prop SeededX (Some input)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input: message
output: option message
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := Some input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := Some input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input) in (state_update IM' (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX') i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := Some input; destination := s; output := output |} = Some (Some {| l := l0; input := Some input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hno_equiv: trace_has_message (field_selector VLSM.output) input tr'
Hiom: option_valid_message_prop SeededXE (Some input)
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
Htr_to: finite_valid_trace_init_to SeededXE is (finite_trace_last is tr') tr'
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is (finite_trace_last is tr') tr'
_Hpr_trX': Some (trX', initial_descriptors) = Some (trX', initial_descriptors)
Heq_final_stateX': finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')
Hs_free: constrained_state_prop SubFreeE (finite_trace_last is tr')
Hpre_tr: finite_valid_trace (preloaded_with_all_messages_vlsm SubFreeE) is tr'
final_descriptors_m, initial_descriptors_m: equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
trXm: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
Hfinal_descriptors_m: not_equivocating_equivocator_descriptors (λ ei : sub_index selection, IM (`ei)) final_descriptors_m (finite_trace_last is tr')
Hproject_trXm: equivocators_trace_project (λ ei : sub_index selection, IM (`ei)) final_descriptors_m tr' = Some (trXm, initial_descriptors_m)
Hex: Exists (field_selector VLSM.output input) trXm
initial_descriptors_m': equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
trXm': list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
H: finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors_m' is) trXm'
Hfinal_descriptors_m_proper: proper_equivocator_descriptors (λ ei : sub_index selection, IM (`ei)) final_descriptors_m (finite_trace_last is tr')
Hproper_initial_m: proper_equivocator_descriptors (λ ei : sub_index selection, IM (`ei)) initial_descriptors_m' is
Hproject_trXm': equivocators_trace_project (λ ei : sub_index selection, IM (`ei)) final_descriptors_m tr' = Some (trXm', initial_descriptors_m')
HtrXm: finite_constrained_trace_init_to (free_composite_vlsm (λ ei : sub_index selection, IM (`ei))) (equivocators_state_project (λ ei : sub_index selection, IM (`ei)) initial_descriptors_m' is) (equivocators_state_project (λ ei : sub_index selection, IM (`ei)) final_descriptors_m (finite_trace_last is tr')) trXm'

option_valid_message_prop SeededX (Some input)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input: message
output: option message
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := Some input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := Some input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input) in (state_update IM' (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX') i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := Some input; destination := s; output := output |} = Some (Some {| l := l0; input := Some input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hno_equiv: trace_has_message (field_selector VLSM.output) input tr'
Hiom: option_valid_message_prop SeededXE (Some input)
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
Htr_to: finite_valid_trace_init_to SeededXE is (finite_trace_last is tr') tr'
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is (finite_trace_last is tr') tr'
_Hpr_trX': Some (trX', initial_descriptors) = Some (trX', initial_descriptors)
Heq_final_stateX': finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')
Hs_free: constrained_state_prop SubFreeE (finite_trace_last is tr')
Hpre_tr: finite_valid_trace (preloaded_with_all_messages_vlsm SubFreeE) is tr'
final_descriptors_m, initial_descriptors_m: equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
trXm: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
Hfinal_descriptors_m: not_equivocating_equivocator_descriptors (λ ei : sub_index selection, IM (`ei)) final_descriptors_m (finite_trace_last is tr')
Hproject_trXm: equivocators_trace_project (λ ei : sub_index selection, IM (`ei)) final_descriptors_m tr' = Some (trXm, initial_descriptors_m)
Hex: Exists (field_selector VLSM.output input) trXm
initial_descriptors_m': equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
trXm': list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
H: finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors_m' is) trXm'
Hfinal_descriptors_m_proper: proper_equivocator_descriptors (λ ei : sub_index selection, IM (`ei)) final_descriptors_m (finite_trace_last is tr')
Hproper_initial_m: proper_equivocator_descriptors (λ ei : sub_index selection, IM (`ei)) initial_descriptors_m' is
Hproject_trXm': Some (trXm, initial_descriptors_m) = Some (trXm', initial_descriptors_m')
HtrXm: finite_constrained_trace_init_to (free_composite_vlsm (λ ei : sub_index selection, IM (`ei))) (equivocators_state_project (λ ei : sub_index selection, IM (`ei)) initial_descriptors_m' is) (equivocators_state_project (λ ei : sub_index selection, IM (`ei)) final_descriptors_m (finite_trace_last is tr')) trXm'

option_valid_message_prop SeededX (Some input)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input: message
output: option message
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := Some input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := Some input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input) in (state_update IM' (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX') i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := Some input; destination := s; output := output |} = Some (Some {| l := l0; input := Some input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hno_equiv: trace_has_message (field_selector VLSM.output) input tr'
Hiom: option_valid_message_prop SeededXE (Some input)
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
Htr_to: finite_valid_trace_init_to SeededXE is (finite_trace_last is tr') tr'
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is (finite_trace_last is tr') tr'
_Hpr_trX': Some (trX', initial_descriptors) = Some (trX', initial_descriptors)
Heq_final_stateX': finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')
Hs_free: constrained_state_prop SubFreeE (finite_trace_last is tr')
Hpre_tr: finite_valid_trace (preloaded_with_all_messages_vlsm SubFreeE) is tr'
final_descriptors_m, initial_descriptors_m: equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
trXm: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
Hfinal_descriptors_m: not_equivocating_equivocator_descriptors (λ ei : sub_index selection, IM (`ei)) final_descriptors_m (finite_trace_last is tr')
Hproject_trXm: equivocators_trace_project (λ ei : sub_index selection, IM (`ei)) final_descriptors_m tr' = Some (trXm, initial_descriptors_m)
Hex: Exists (field_selector VLSM.output input) trXm
initial_descriptors_m': equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
trXm': list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
H: finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors_m' is) trXm'
Hfinal_descriptors_m_proper: proper_equivocator_descriptors (λ ei : sub_index selection, IM (`ei)) final_descriptors_m (finite_trace_last is tr')
Hproper_initial_m: proper_equivocator_descriptors (λ ei : sub_index selection, IM (`ei)) initial_descriptors_m' is
Hproject_trXm': Some (trXm, initial_descriptors_m) = Some (trXm', initial_descriptors_m')
HtrXm: finite_constrained_trace_init_to (free_composite_vlsm (λ ei : sub_index selection, IM (`ei))) (equivocators_state_project (λ ei : sub_index selection, IM (`ei)) initial_descriptors_m' is) (equivocators_state_project (λ ei : sub_index selection, IM (`ei)) final_descriptors_m (finite_trace_last is tr')) trXm'
H2: trXm = trXm'
H3: initial_descriptors_m = initial_descriptors_m'

option_valid_message_prop SeededX (Some input)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input: message
output: option message
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := Some input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := Some input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input) in (state_update IM' (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX') i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := Some input; destination := s; output := output |} = Some (Some {| l := l0; input := Some input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hno_equiv: trace_has_message (field_selector VLSM.output) input tr'
Hiom: option_valid_message_prop SeededXE (Some input)
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
Htr_to: finite_valid_trace_init_to SeededXE is (finite_trace_last is tr') tr'
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is (finite_trace_last is tr') tr'
_Hpr_trX': Some (trX', initial_descriptors) = Some (trX', initial_descriptors)
Heq_final_stateX': finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')
Hs_free: constrained_state_prop SubFreeE (finite_trace_last is tr')
Hpre_tr: finite_valid_trace (preloaded_with_all_messages_vlsm SubFreeE) is tr'
final_descriptors_m, initial_descriptors_m: equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
trXm: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
Hfinal_descriptors_m: not_equivocating_equivocator_descriptors (λ ei : sub_index selection, IM (`ei)) final_descriptors_m (finite_trace_last is tr')
Hproject_trXm: equivocators_trace_project (λ ei : sub_index selection, IM (`ei)) final_descriptors_m tr' = Some (trXm, initial_descriptors_m)
Hex: Exists (field_selector VLSM.output input) trXm
H: finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors_m is) trXm
Hfinal_descriptors_m_proper: proper_equivocator_descriptors (λ ei : sub_index selection, IM (`ei)) final_descriptors_m (finite_trace_last is tr')
Hproject_trXm': Some (trXm, initial_descriptors_m) = Some (trXm, initial_descriptors_m)
HtrXm: finite_constrained_trace_init_to (free_composite_vlsm (λ ei : sub_index selection, IM (`ei))) (equivocators_state_project (λ ei : sub_index selection, IM (`ei)) initial_descriptors_m is) (equivocators_state_project (λ ei : sub_index selection, IM (`ei)) final_descriptors_m (finite_trace_last is tr')) trXm
Hproper_initial_m: proper_equivocator_descriptors (λ ei : sub_index selection, IM (`ei)) initial_descriptors_m is

option_valid_message_prop SeededX (Some input)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input: message
output: option message
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := Some input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := Some input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input) in (state_update IM' (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX') i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := Some input; destination := s; output := output |} = Some (Some {| l := l0; input := Some input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hno_equiv: trace_has_message (field_selector VLSM.output) input tr'
Hiom: option_valid_message_prop SeededXE (Some input)
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
Htr_to: finite_valid_trace_init_to SeededXE is (finite_trace_last is tr') tr'
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is (finite_trace_last is tr') tr'
_Hpr_trX': Some (trX', initial_descriptors) = Some (trX', initial_descriptors)
Heq_final_stateX': finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')
Hs_free: constrained_state_prop SubFreeE (finite_trace_last is tr')
Hpre_tr: finite_valid_trace (preloaded_with_all_messages_vlsm SubFreeE) is tr'
final_descriptors_m, initial_descriptors_m: equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
trXm: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
Hfinal_descriptors_m: not_equivocating_equivocator_descriptors (λ ei : sub_index selection, IM (`ei)) final_descriptors_m (finite_trace_last is tr')
Hproject_trXm: equivocators_trace_project (λ ei : sub_index selection, IM (`ei)) final_descriptors_m tr' = Some (trXm, initial_descriptors_m)
Hex: Exists (field_selector VLSM.output input) trXm
H: finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors_m is) trXm
Hfinal_descriptors_m_proper: proper_equivocator_descriptors (λ ei : sub_index selection, IM (`ei)) final_descriptors_m (finite_trace_last is tr')
HtrXm: finite_constrained_trace_init_to (free_composite_vlsm (λ ei : sub_index selection, IM (`ei))) (equivocators_state_project (λ ei : sub_index selection, IM (`ei)) initial_descriptors_m is) (equivocators_state_project (λ ei : sub_index selection, IM (`ei)) final_descriptors_m (finite_trace_last is tr')) trXm
Hproper_initial_m: proper_equivocator_descriptors (λ ei : sub_index selection, IM (`ei)) initial_descriptors_m is

option_valid_message_prop SeededX (Some input)
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
is: composite_state (sub_IM (equivocator_IM IM) selection)
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
tr': list (composite_transition_item (sub_IM (equivocator_IM IM) selection))
s: composite_state (sub_IM (equivocator_IM IM) selection)
l: composite_label (sub_IM (equivocator_IM IM) selection)
input: message
output: option message
Htr: finite_valid_trace_from SeededXE is tr'
Hlst: finite_valid_trace_from SeededXE (finite_trace_last is tr') [{| l := l; input := Some input; destination := s; output := output |}]
Hinit: composite_initial_state_prop (sub_IM (equivocator_IM IM) selection) is
final_state:= finite_trace_last is (tr' ++ [{| l := l; input := Some input; destination := s; output := output |}]): composite_state (sub_IM (equivocator_IM IM) selection)
final_descriptors: equivocator_descriptors IM'
Hproper: proper_equivocator_descriptors IM' final_descriptors s
initial_descriptors: equivocator_descriptors IM'
trX': list (composite_transition_item (λ i : sub_index selection, IM (`i)))
l0: composite_label IM'
final_descriptors': equivocator_descriptors IM'
Hpr_trX': equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors' tr' = Some (trX', initial_descriptors)
HtrX': finite_valid_trace_from SeededX (equivocators_state_project IM' initial_descriptors is) trX'
HinitX: composite_initial_state_prop (sub_IM IM selection) (equivocators_state_project IM' initial_descriptors is)
Hproper': proper_equivocator_descriptors IM' final_descriptors' (finite_trace_last is tr')
Heq_final_descriptors': final_descriptors' = equivocator_descriptors_update IM' final_descriptors (projT1 l) (final_descriptors' (projT1 l))
Hvx: let (i, li) := l0 in valid li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input)
Htx: (let (i, li) := l0 in let (si', om') := transition li (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' i, Some input) in (state_update IM' (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX') i si', om')) = (equivocators_state_project IM' final_descriptors s, output)
Hl: Hex : existing_equivocator_label (IM' (projT1 l)) (projT2 l), existT (projT1 l) (existing_equivocator_label_extract (IM' (projT1 l)) (projT2 l) Hex) = l0
Hprojectx: equivocators_transition_item_project IM' final_descriptors {| l := l; input := Some input; destination := s; output := output |} = Some (Some {| l := l0; input := Some input; destination := equivocators_state_project IM' final_descriptors s; output := output |}, final_descriptors')
Htl: finite_valid_trace_from SeededXE s []
Hs: valid_state_prop SeededXE (finite_trace_last is tr')
Hno_equiv: trace_has_message (field_selector VLSM.output) input tr'
Hiom: option_valid_message_prop SeededXE (Some input)
Hlst_trX': valid_state_prop SeededX (finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX')
Htr_to: finite_valid_trace_init_to SeededXE is (finite_trace_last is tr') tr'
Hpre_tr_to: finite_constrained_trace_init_to SubFreeE is (finite_trace_last is tr') tr'
_Hpr_trX': Some (trX', initial_descriptors) = Some (trX', initial_descriptors)
Heq_final_stateX': finite_trace_last (equivocators_state_project IM' initial_descriptors is) trX' = equivocators_state_project IM' final_descriptors' (finite_trace_last is tr')
Hs_free: constrained_state_prop SubFreeE (finite_trace_last is tr')
Hpre_tr: finite_valid_trace (preloaded_with_all_messages_vlsm SubFreeE) is tr'
final_descriptors_m, initial_descriptors_m: equivocator_descriptors (λ ei : sub_index selection, IM (`ei))
trXm: list (composite_transition_item (λ ei : sub_index selection, IM (`ei)))
Hfinal_descriptors_m: not_equivocating_equivocator_descriptors (λ ei : sub_index selection, IM (`ei)) final_descriptors_m (finite_trace_last is tr')
Hproject_trXm: equivocators_trace_project (λ ei : sub_index selection, IM (`ei)) final_descriptors_m tr' = Some (trXm, initial_descriptors_m)
Hex: Exists (field_selector VLSM.output input) trXm
H: finite_valid_trace SeededX (equivocators_state_project IM' initial_descriptors_m is) trXm
Hfinal_descriptors_m_proper: proper_equivocator_descriptors (λ ei : sub_index selection, IM (`ei)) final_descriptors_m (finite_trace_last is tr')
HtrXm: finite_constrained_trace_init_to (free_composite_vlsm (λ ei : sub_index selection, IM (`ei))) (equivocators_state_project (λ ei : sub_index selection, IM (`ei)) initial_descriptors_m is) (equivocators_state_project (λ ei : sub_index selection, IM (`ei)) final_descriptors_m (finite_trace_last is tr')) trXm
Hproper_initial_m: proper_equivocator_descriptors (λ ei : sub_index selection, IM (`ei)) initial_descriptors_m is

valid_message_prop SeededX input
by apply (valid_trace_output_is_valid _ _ _ (proj1 H) _ Hex). Qed.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message

VLSM_incl SeededXE SubPreFreeE
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message

VLSM_incl SeededXE SubPreFreeE
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message

strong_incl_initial_state_preservation (preloaded_vlsm_machine (composite_vlsm (sub_IM (equivocator_IM IM) selection) (no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed)) seed) (preloaded_vlsm_machine SubFreeE (λ _ : message, True))
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
strong_incl_initial_message_preservation (preloaded_vlsm_machine (composite_vlsm (sub_IM (equivocator_IM IM) selection) (no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed)) seed) (preloaded_vlsm_machine SubFreeE (λ _ : message, True))
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
strong_incl_valid_preservation (preloaded_vlsm_machine (composite_vlsm (sub_IM (equivocator_IM IM) selection) (no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed)) seed) (preloaded_vlsm_machine SubFreeE (λ _ : message, True))
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
strong_incl_transition_preservation (preloaded_vlsm_machine (composite_vlsm (sub_IM (equivocator_IM IM) selection) (no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed)) seed) (preloaded_vlsm_machine SubFreeE (λ _ : message, True))
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message

strong_incl_initial_state_preservation (preloaded_vlsm_machine (composite_vlsm (sub_IM (equivocator_IM IM) selection) (no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed)) seed) (preloaded_vlsm_machine SubFreeE (λ _ : message, True))
by intros s Hn n; itauto.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message

strong_incl_initial_message_preservation (preloaded_vlsm_machine (composite_vlsm (sub_IM (equivocator_IM IM) selection) (no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed)) seed) (preloaded_vlsm_machine SubFreeE (λ _ : message, True))
by cbv; itauto.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message

strong_incl_valid_preservation (preloaded_vlsm_machine (composite_vlsm (sub_IM (equivocator_IM IM) selection) (no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed)) seed) (preloaded_vlsm_machine SubFreeE (λ _ : message, True))
by destruct 1.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message

strong_incl_transition_preservation (preloaded_vlsm_machine (composite_vlsm (sub_IM (equivocator_IM IM) selection) (no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed)) seed) (preloaded_vlsm_machine SubFreeE (λ _ : message, True))
by cbv; itauto. Qed.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message

VLSM_incl (preloaded_with_all_messages_vlsm SeededXE) SubPreFreeE
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message

VLSM_incl (preloaded_with_all_messages_vlsm SeededXE) SubPreFreeE
by apply basic_VLSM_incl_preloaded; [intro | inversion 1 | intro]. Qed.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'

VLSM_partial_projection SeededXE SeededX (equivocators_partial_trace_project IM' final_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'

VLSM_partial_projection SeededXE SeededX (equivocators_partial_trace_project IM' final_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'

(sX : state SeededXE) (trX : list transition_item) (sY : state SeededX) (trY : list transition_item), equivocators_partial_trace_project IM' final_descriptors (sX, trX) = Some (sY, trY) → (s'X : state SeededXE) (preX : list transition_item), finite_trace_last s'X preX = sX → finite_valid_trace_from SeededXE s'X (preX ++ trX) → (s'Y : state SeededX) (preY : list transition_item), equivocators_partial_trace_project IM' final_descriptors (s'X, preX ++ trX) = Some (s'Y, preY ++ trY) ∧ finite_trace_last s'Y preY = sY
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'
(sX : state SeededXE) (trX : list transition_item) (sY : state SeededX) (trY : list transition_item), equivocators_partial_trace_project IM' final_descriptors ( sX, trX) = Some (sY, trY) → finite_valid_trace SeededXE sX trX → finite_valid_trace SeededX sY trY
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'

(sX : state SeededXE) (trX : list transition_item) (sY : state SeededX) (trY : list transition_item), equivocators_partial_trace_project IM' final_descriptors (sX, trX) = Some (sY, trY) → (s'X : state SeededXE) (preX : list transition_item), finite_trace_last s'X preX = sX → finite_valid_trace_from SeededXE s'X (preX ++ trX) → (s'Y : state SeededX) (preY : list transition_item), equivocators_partial_trace_project IM' final_descriptors (s'X, preX ++ trX) = Some (s'Y, preY ++ trY) ∧ finite_trace_last s'Y preY = sY
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'
s: state SeededXE
tr: list transition_item
sX: state SeededX
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM' final_descriptors (s, tr) = Some (sX, trX)
s_pre: state SeededXE
pre: list transition_item
Hs_lst: finite_trace_last s_pre pre = s
Hpre_tr: finite_valid_trace_from SeededXE s_pre (pre ++ tr)

(s'Y : state SeededX) (preY : list transition_item), equivocators_partial_trace_project IM' final_descriptors (s_pre, pre ++ tr) = Some (s'Y, preY ++ trX) ∧ finite_trace_last s'Y preY = sX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'
s: state SeededXE
tr: list transition_item
sX: state SeededX
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM' final_descriptors (s, tr) = Some (sX, trX)
s_pre: state SeededXE
pre: list transition_item
Hs_lst: finite_trace_last s_pre pre = s
Hpre_tr: finite_valid_trace_from SeededXE s_pre (pre ++ tr)

finite_constrained_trace_from SubFreeE s_pre (pre ++ tr)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'
s: state SeededXE
tr: list transition_item
sX: state SeededX
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM' final_descriptors (s, tr) = Some (sX, trX)
s_pre: state SeededXE
pre: list transition_item
Hs_lst: finite_trace_last s_pre pre = s
Hpre_tr: finite_valid_trace_from SeededXE s_pre (pre ++ tr)
HPreFree_pre_tr: finite_constrained_trace_from SubFreeE s_pre (pre ++ tr)
(s'Y : state SeededX) (preY : list transition_item), equivocators_partial_trace_project IM' final_descriptors ( s_pre, pre ++ tr) = Some (s'Y, preY ++ trX) ∧ finite_trace_last s'Y preY = sX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'
s: state SeededXE
tr: list transition_item
sX: state SeededX
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM' final_descriptors (s, tr) = Some (sX, trX)
s_pre: state SeededXE
pre: list transition_item
Hs_lst: finite_trace_last s_pre pre = s
Hpre_tr: finite_valid_trace_from SeededXE s_pre (pre ++ tr)

finite_constrained_trace_from SubFreeE s_pre (pre ++ tr)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'
s: state SeededXE
tr: list transition_item
sX: state SeededX
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM' final_descriptors (s, tr) = Some (sX, trX)
s_pre: state SeededXE
pre: list transition_item
Hs_lst: finite_trace_last s_pre pre = s

VLSM_incl_part (preloaded_vlsm_machine (composite_vlsm (sub_IM (equivocator_IM IM) selection) (no_equivocations_additional_constraint_with_preloaded (sub_IM (equivocator_IM IM) selection) (free_constraint (sub_IM (equivocator_IM IM) selection)) seed)) seed) (preloaded_vlsm_machine SubFreeE (λ _ : message, True))
by apply SeededXE_incl_PreFreeE.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'
s: state SeededXE
tr: list transition_item
sX: state SeededX
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM' final_descriptors (s, tr) = Some (sX, trX)
s_pre: state SeededXE
pre: list transition_item
Hs_lst: finite_trace_last s_pre pre = s
Hpre_tr: finite_valid_trace_from SeededXE s_pre (pre ++ tr)
HPreFree_pre_tr: finite_constrained_trace_from SubFreeE s_pre (pre ++ tr)

(s'Y : state SeededX) (preY : list transition_item), equivocators_partial_trace_project IM' final_descriptors (s_pre, pre ++ tr) = Some (s'Y, preY ++ trX) ∧ finite_trace_last s'Y preY = sX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'
s: state SeededXE
tr: list transition_item
sX: state SeededX
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM' final_descriptors (s, tr) = Some (sX, trX)
s_pre: state SeededXE
pre: list transition_item
Hs_lst: finite_trace_last s_pre pre = s
HPreFree_pre_tr: finite_constrained_trace_from SubFreeE s_pre (pre ++ tr)

(s'Y : state SeededX) (preY : list transition_item), equivocators_partial_trace_project IM' final_descriptors (s_pre, pre ++ tr) = Some (s'Y, preY ++ trX) ∧ finite_trace_last s'Y preY = sX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'

(s : state SeededXE) (tr : list transition_item) (sX : state SeededX) (trX : list transition_item), equivocators_partial_trace_project IM' final_descriptors (s, tr) = Some (sX, trX) → (s_pre : state SeededXE) (pre : list transition_item), finite_trace_last s_pre pre = s → finite_constrained_trace_from SubFreeE s_pre (pre ++ tr) → (s'Y : state SeededX) (preY : list transition_item), equivocators_partial_trace_project IM' final_descriptors (s_pre, pre ++ tr) = Some (s'Y, preY ++ trX) ∧ finite_trace_last s'Y preY = sX
by apply equivocators_partial_trace_project_extends_left.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'

(sX : state SeededXE) (trX : list transition_item) (sY : state SeededX) (trY : list transition_item), equivocators_partial_trace_project IM' final_descriptors (sX, trX) = Some (sY, trY) → finite_valid_trace SeededXE sX trX → finite_valid_trace SeededX sY trY
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'
s: state SeededXE
tr: list transition_item
sX: state SeededX
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM' final_descriptors (s, tr) = Some (sX, trX)
Htr: finite_valid_trace SeededXE s tr

finite_valid_trace SeededX sX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'
s: state SeededXE
tr: list transition_item
sX: state SeededX
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM' final_descriptors (s, tr) = Some (sX, trX)
Htr: finite_valid_trace SeededXE s tr
Hnot_equiv: not_equivocating_equivocator_descriptors (sub_IM IM selection) final_descriptors (finite_trace_last s tr)
initial_descriptors: equivocator_descriptors (sub_IM IM selection)
Htr_project: equivocators_trace_project (sub_IM IM selection) final_descriptors tr = Some (trX, initial_descriptors)
Hs_project: equivocators_state_project (sub_IM IM selection) initial_descriptors s = sX

finite_valid_trace SeededX sX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'
s: state SeededXE
tr: list transition_item
sX: state SeededX
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM' final_descriptors (s, tr) = Some (sX, trX)
Htr: finite_valid_trace SeededXE s tr
Hnot_equiv: not_equivocating_equivocator_descriptors (sub_IM IM selection) final_descriptors (finite_trace_last s tr)
initial_descriptors: equivocator_descriptors (sub_IM IM selection)
Htr_project: equivocators_trace_project (sub_IM IM selection) final_descriptors tr = Some (trX, initial_descriptors)
Hs_project: equivocators_state_project (sub_IM IM selection) initial_descriptors s = sX
Hproper: proper_equivocator_descriptors (sub_IM IM selection) final_descriptors (finite_trace_last s tr)

finite_valid_trace SeededX sX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
selection: list index
seed: message → Prop
SeededXE:= seeded_equivocators_no_equivocation_vlsm IM selection seed: VLSM message
SubFreeE:= free_composite_vlsm (sub_IM (equivocator_IM IM) selection): VLSM message
SubPreFreeE:= preloaded_with_all_messages_vlsm SubFreeE: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM selection): VLSM message
SeededX:= preloaded_vlsm SubFree seed: VLSM message
IM':= λ i : sub_index selection, IM (`i): sub_index selection → VLSM message
final_descriptors: equivocator_descriptors IM'
s: state SeededXE
tr: list transition_item
sX: state SeededX
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM' final_descriptors (s, tr) = Some (sX, trX)
Htr: finite_valid_trace SeededXE s tr
Hnot_equiv: not_equivocating_equivocator_descriptors (sub_IM IM selection) final_descriptors (finite_trace_last s tr)
initial_descriptors: equivocator_descriptors (sub_IM IM selection)
Htr_project: equivocators_trace_project (sub_IM IM selection) final_descriptors tr = Some (trX, initial_descriptors)
Hs_project: equivocators_state_project (sub_IM IM selection) initial_descriptors s = sX
Hproper: proper_equivocator_descriptors (sub_IM IM selection) final_descriptors (finite_trace_last s tr)
_trX: list (composite_transition_item (λ i : sub_index selection, IM (`i)))
_initial_descriptors: equivocator_descriptors (λ i : sub_index selection, IM (`i))
_Htr_project: equivocators_trace_project (λ i : sub_index selection, IM (`i)) final_descriptors tr = Some (_trX, _initial_descriptors)
HtrX: finite_valid_trace SeededX (equivocators_state_project (λ i : sub_index selection, IM (`i)) _initial_descriptors s) _trX

finite_valid_trace SeededX sX trX
by unfold sub_IM in *; congruence. Qed. End sec_seeded_equivocators_valid_trace_project. End sec_equivocators_composition_sub_projections. Section sec_equivocators_composition_vlsm_projection. Context {message : Type} `{finite.Finite index} (IM : index -> VLSM message) `{forall i : index, HasBeenSentCapability (IM i)} (FreeE := free_composite_vlsm (equivocator_IM IM)) (PreFreeE := preloaded_with_all_messages_vlsm FreeE) (Free := free_composite_vlsm IM) (PreFree := preloaded_with_all_messages_vlsm Free) . Definition free_sub_free_equivocator_descriptors (descriptors : equivocator_descriptors IM) : equivocator_descriptors (sub_IM IM (finite.enum index)) := fun i => descriptors (proj1_sig i).
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM

VLSM_partial_projection (equivocators_no_equivocations_vlsm IM) Free (equivocators_partial_trace_project IM final_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM

VLSM_partial_projection (equivocators_no_equivocations_vlsm IM) Free (equivocators_partial_trace_project IM final_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM

(sX : state (equivocators_no_equivocations_vlsm IM)) (trX : list transition_item) (sY : state Free) (trY : list transition_item), equivocators_partial_trace_project IM final_descriptors (sX, trX) = Some (sY, trY) → (s'X : state (equivocators_no_equivocations_vlsm IM)) (preX : list transition_item), finite_trace_last s'X preX = sX → finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) s'X (preX ++ trX) → (s'Y : state Free) (preY : list transition_item), equivocators_partial_trace_project IM final_descriptors (s'X, preX ++ trX) = Some (s'Y, preY ++ trY) ∧ finite_trace_last s'Y preY = sY
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
(sX : state (equivocators_no_equivocations_vlsm IM)) (trX : list transition_item) (sY : state Free) (trY : list transition_item), equivocators_partial_trace_project IM final_descriptors ( sX, trX) = Some (sY, trY) → finite_valid_trace (equivocators_no_equivocations_vlsm IM) sX trX → finite_valid_trace Free sY trY
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM

(sX : state (equivocators_no_equivocations_vlsm IM)) (trX : list transition_item) (sY : state Free) (trY : list transition_item), equivocators_partial_trace_project IM final_descriptors (sX, trX) = Some (sY, trY) → (s'X : state (equivocators_no_equivocations_vlsm IM)) (preX : list transition_item), finite_trace_last s'X preX = sX → finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) s'X (preX ++ trX) → (s'Y : state Free) (preY : list transition_item), equivocators_partial_trace_project IM final_descriptors (s'X, preX ++ trX) = Some (s'Y, preY ++ trY) ∧ finite_trace_last s'Y preY = sY
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state (equivocators_no_equivocations_vlsm IM)
tr: list transition_item
sX: state Free
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM final_descriptors (s, tr) = Some (sX, trX)
s_pre: state (equivocators_no_equivocations_vlsm IM)
pre: list transition_item
Hs_lst: finite_trace_last s_pre pre = s
Hpre_tr: finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) s_pre (pre ++ tr)

(s'Y : state Free) (preY : list transition_item), equivocators_partial_trace_project IM final_descriptors (s_pre, pre ++ tr) = Some (s'Y, preY ++ trX) ∧ finite_trace_last s'Y preY = sX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state (equivocators_no_equivocations_vlsm IM)
tr: list transition_item
sX: state Free
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM final_descriptors (s, tr) = Some (sX, trX)
s_pre: state (equivocators_no_equivocations_vlsm IM)
pre: list transition_item
Hs_lst: finite_trace_last s_pre pre = s
Hpre_tr: finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) s_pre (pre ++ tr)

finite_constrained_trace_from FreeE s_pre (pre ++ tr)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state (equivocators_no_equivocations_vlsm IM)
tr: list transition_item
sX: state Free
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM final_descriptors (s, tr) = Some (sX, trX)
s_pre: state (equivocators_no_equivocations_vlsm IM)
pre: list transition_item
Hs_lst: finite_trace_last s_pre pre = s
Hpre_tr: finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) s_pre (pre ++ tr)
HPreFree_pre_tr: finite_constrained_trace_from FreeE s_pre (pre ++ tr)
(s'Y : state Free) (preY : list transition_item), equivocators_partial_trace_project IM final_descriptors ( s_pre, pre ++ tr) = Some (s'Y, preY ++ trX) ∧ finite_trace_last s'Y preY = sX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state (equivocators_no_equivocations_vlsm IM)
tr: list transition_item
sX: state Free
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM final_descriptors (s, tr) = Some (sX, trX)
s_pre: state (equivocators_no_equivocations_vlsm IM)
pre: list transition_item
Hs_lst: finite_trace_last s_pre pre = s
Hpre_tr: finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) s_pre (pre ++ tr)

finite_constrained_trace_from FreeE s_pre (pre ++ tr)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state (equivocators_no_equivocations_vlsm IM)
tr: list transition_item
sX: state Free
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM final_descriptors (s, tr) = Some (sX, trX)
s_pre: state (equivocators_no_equivocations_vlsm IM)
pre: list transition_item
Hs_lst: finite_trace_last s_pre pre = s
Hpre_tr: finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) s_pre (pre ++ tr)

VLSM_incl_part (constrained_vlsm_machine (free_composite_vlsm (equivocator_IM IM)) (equivocators_no_equivocations_constraint IM)) (preloaded_vlsm_machine FreeE (λ _ : message, True))
by apply constrained_preloaded_incl.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state (equivocators_no_equivocations_vlsm IM)
tr: list transition_item
sX: state Free
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM final_descriptors (s, tr) = Some (sX, trX)
s_pre: state (equivocators_no_equivocations_vlsm IM)
pre: list transition_item
Hs_lst: finite_trace_last s_pre pre = s
Hpre_tr: finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) s_pre (pre ++ tr)
HPreFree_pre_tr: finite_constrained_trace_from FreeE s_pre (pre ++ tr)

(s'Y : state Free) (preY : list transition_item), equivocators_partial_trace_project IM final_descriptors (s_pre, pre ++ tr) = Some (s'Y, preY ++ trX) ∧ finite_trace_last s'Y preY = sX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state (equivocators_no_equivocations_vlsm IM)
tr: list transition_item
sX: state Free
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM final_descriptors (s, tr) = Some (sX, trX)
s_pre: state (equivocators_no_equivocations_vlsm IM)
pre: list transition_item
Hs_lst: finite_trace_last s_pre pre = s
HPreFree_pre_tr: finite_constrained_trace_from FreeE s_pre (pre ++ tr)

(s'Y : state Free) (preY : list transition_item), equivocators_partial_trace_project IM final_descriptors (s_pre, pre ++ tr) = Some (s'Y, preY ++ trX) ∧ finite_trace_last s'Y preY = sX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM

(s : state (equivocators_no_equivocations_vlsm IM)) (tr : list transition_item) (sX : state Free) (trX : list transition_item), equivocators_partial_trace_project IM final_descriptors (s, tr) = Some (sX, trX) → (s_pre : state (equivocators_no_equivocations_vlsm IM)) (pre : list transition_item), finite_trace_last s_pre pre = s → finite_constrained_trace_from FreeE s_pre (pre ++ tr) → (s'Y : state Free) (preY : list transition_item), equivocators_partial_trace_project IM final_descriptors (s_pre, pre ++ tr) = Some (s'Y, preY ++ trX) ∧ finite_trace_last s'Y preY = sX
by apply equivocators_partial_trace_project_extends_left.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM

(sX : state (equivocators_no_equivocations_vlsm IM)) (trX : list transition_item) (sY : state Free) (trY : list transition_item), equivocators_partial_trace_project IM final_descriptors (sX, trX) = Some (sY, trY) → finite_valid_trace (equivocators_no_equivocations_vlsm IM) sX trX → finite_valid_trace Free sY trY
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state (equivocators_no_equivocations_vlsm IM)
tr: list transition_item
sX: state Free
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM final_descriptors (s, tr) = Some (sX, trX)
Htr: finite_valid_trace (equivocators_no_equivocations_vlsm IM) s tr

finite_valid_trace Free sX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state (equivocators_no_equivocations_vlsm IM)
tr: list transition_item
sX: state Free
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM final_descriptors (s, tr) = Some (sX, trX)
Htr: finite_valid_trace (equivocators_no_equivocations_vlsm IM) s tr
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)
Hs_project: equivocators_state_project IM initial_descriptors s = sX

finite_valid_trace Free sX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state (equivocators_no_equivocations_vlsm IM)
tr: list transition_item
sX: state Free
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM final_descriptors (s, tr) = Some (sX, trX)
Htr: finite_valid_trace (equivocators_no_equivocations_vlsm IM) s tr
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)
Hs_project: equivocators_state_project IM initial_descriptors s = sX
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)

finite_valid_trace Free sX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state (equivocators_no_equivocations_vlsm IM)
tr: list transition_item
sX: state Free
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM final_descriptors (s, tr) = Some (sX, trX)
Htr: finite_valid_trace (equivocators_no_equivocations_vlsm IM) s tr
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)
Hs_project: equivocators_state_project IM initial_descriptors s = sX
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
Hproj: VLSM_embedding (composite_vlsm (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (free_sub_free_label (equivocator_IM IM)) (composite_state_sub_projection (equivocator_IM IM) (enum index))

finite_valid_trace Free sX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state (equivocators_no_equivocations_vlsm IM)
tr: list transition_item
sX: state Free
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM final_descriptors (s, tr) = Some (sX, trX)
Hproj: VLSM_embedding (composite_vlsm (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (free_sub_free_label (equivocator_IM IM)) (composite_state_sub_projection (equivocator_IM IM) (enum index))
Htr: finite_valid_trace (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)
Hs_project: equivocators_state_project IM initial_descriptors s = sX
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)

finite_valid_trace Free sX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state (equivocators_no_equivocations_vlsm IM)
tr: list transition_item
sX: state Free
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM final_descriptors (s, tr) = Some (sX, trX)
Hproj: VLSM_embedding (composite_vlsm (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (free_sub_free_label (equivocator_IM IM)) (composite_state_sub_projection (equivocator_IM IM) (enum index))
Htr: finite_valid_trace (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)
Hs_project: equivocators_state_project IM initial_descriptors s = sX
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
Heq: VLSM_eq (composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (no_equivocations_additional_constraint (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index)))))

finite_valid_trace Free sX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state (equivocators_no_equivocations_vlsm IM)
tr: list transition_item
sX: state Free
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM final_descriptors (s, tr) = Some (sX, trX)
Hproj: VLSM_embedding (composite_vlsm (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (free_sub_free_label (equivocator_IM IM)) (composite_state_sub_projection (equivocator_IM IM) (enum index))
Htr: finite_valid_trace (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)
Hs_project: equivocators_state_project IM initial_descriptors s = sX
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
Heq: VLSM_eq (composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (no_equivocations_additional_constraint (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index)))))

finite_valid_trace (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (no_equivocations_additional_constraint (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))))) (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state (equivocators_no_equivocations_vlsm IM)
tr: list transition_item
sX: state Free
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM final_descriptors (s, tr) = Some (sX, trX)
Hproj: VLSM_embedding (composite_vlsm (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (free_sub_free_label (equivocator_IM IM)) (composite_state_sub_projection (equivocator_IM IM) (enum index))
Htr: finite_valid_trace (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)
Hs_project: equivocators_state_project IM initial_descriptors s = sX
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
Heq: VLSM_eq (composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (no_equivocations_additional_constraint (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index)))))
Htr': finite_valid_trace (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (no_equivocations_additional_constraint (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))))) (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)
finite_valid_trace Free sX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state (equivocators_no_equivocations_vlsm IM)
tr: list transition_item
sX: state Free
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM final_descriptors (s, tr) = Some (sX, trX)
Hproj: VLSM_embedding (composite_vlsm (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (free_sub_free_label (equivocator_IM IM)) (composite_state_sub_projection (equivocator_IM IM) (enum index))
Htr: finite_valid_trace (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)
Hs_project: equivocators_state_project IM initial_descriptors s = sX
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
Heq: VLSM_eq (composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (no_equivocations_additional_constraint (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index)))))

finite_valid_trace (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (no_equivocations_additional_constraint (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))))) (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state (equivocators_no_equivocations_vlsm IM)
tr: list transition_item
sX: state Free
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM final_descriptors (s, tr) = Some (sX, trX)
Hproj: VLSM_embedding (composite_vlsm (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (free_sub_free_label (equivocator_IM IM)) (composite_state_sub_projection (equivocator_IM IM) (enum index))
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)
Hs_project: equivocators_state_project IM initial_descriptors s = sX
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
Heq: VLSM_eq (composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (no_equivocations_additional_constraint (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index)))))

finite_valid_trace (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr) → finite_valid_trace (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (no_equivocations_additional_constraint (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))))) (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state (equivocators_no_equivocations_vlsm IM)
tr: list transition_item
sX: state Free
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM final_descriptors (s, tr) = Some (sX, trX)
Hproj: VLSM_embedding (composite_vlsm (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (free_sub_free_label (equivocator_IM IM)) (composite_state_sub_projection (equivocator_IM IM) (enum index))
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)
Hs_project: equivocators_state_project IM initial_descriptors s = sX
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
Heq: VLSM_eq (composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (no_equivocations_additional_constraint (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index)))))

VLSM_incl_part (constrained_vlsm_machine (free_composite_vlsm (sub_IM (equivocator_IM IM) (enum index))) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (constrained_vlsm_machine (free_composite_vlsm (sub_IM (equivocator_IM IM) (enum index))) (no_equivocations_additional_constraint (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index)))))
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)

VLSM_incl_part (constrained_vlsm_machine (free_composite_vlsm (sub_IM (equivocator_IM IM) (enum index))) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (constrained_vlsm_machine (free_composite_vlsm (sub_IM (equivocator_IM IM) (enum index))) (no_equivocations_additional_constraint (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index)))))
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)

input_valid_constraint_subsumption (free_composite_vlsm (sub_IM (equivocator_IM IM) (enum index))) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (no_equivocations_additional_constraint (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))))
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)

preloaded_constraint_subsumption (free_composite_vlsm (sub_IM (equivocator_IM IM) (enum index))) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (no_equivocations_additional_constraint (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))))
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)

strong_constraint_subsumption (free_composite_vlsm (sub_IM (equivocator_IM IM) (enum index))) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (no_equivocations_additional_constraint (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))))
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
i: sub_index (enum index)
li: label (sub_IM (equivocator_IM IM) (enum index) i)
s: state (free_composite_vlsm (sub_IM (equivocator_IM IM) (enum index)))
om: option message

free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM) (existT i li) (s, om) → no_equivocations_additional_constraint (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (existT i li) (s, om)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
i: sub_index (enum index)
li: label (sub_IM (equivocator_IM IM) (enum index) i)
s: state (free_composite_vlsm (sub_IM (equivocator_IM IM) (enum index)))
om: option message

equivocators_no_equivocations_constraint IM (existT (`(projT1 (existT i li))) (projT2 (existT i li))) (λ i : index, s (dexist i (SubProjectionTraces.free_sub_free_index_obligation_1 i)), om) → no_equivocations_additional_constraint (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (existT i li) (s, om)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
i: sub_index (enum index)
li: label (sub_IM (equivocator_IM IM) (enum index) i)
s: state (free_composite_vlsm (sub_IM (equivocator_IM IM) (enum index)))
om: option message

no_equivocations_additional_constraint (equivocator_IM IM) (free_constraint (equivocator_IM IM)) (existT (`(projT1 (existT i li))) (projT2 (existT i li))) (λ i : index, s (dexist i (SubProjectionTraces.free_sub_free_index_obligation_1 i)), om) → no_equivocations_additional_constraint (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (existT i li) (s, om)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
i: sub_index (enum index)
li: label (sub_IM (equivocator_IM IM) (enum index) i)
s: state (free_composite_vlsm (sub_IM (equivocator_IM IM) (enum index)))
om: option message
Hno_equiv: composite_no_equivocations (equivocator_IM IM) (existT (`(projT1 (existT i li))) (projT2 (existT i li))) (λ i : index, s (dexist i (SubProjectionTraces.free_sub_free_index_obligation_1 i)), om)

no_equivocations_additional_constraint (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (existT i li) (s, om)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
i: sub_index (enum index)
li: label (sub_IM (equivocator_IM IM) (enum index) i)
s: state (free_composite_vlsm (sub_IM (equivocator_IM IM) (enum index)))
om: option message
Hno_equiv: composite_no_equivocations (equivocator_IM IM) (existT (`(projT1 (existT i li))) (projT2 (existT i li))) (λ i : index, s (dexist i (SubProjectionTraces.free_sub_free_index_obligation_1 i)), om)

composite_no_equivocations (sub_IM (equivocator_IM IM) (enum index)) (existT i li) (s, om)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
i: sub_index (enum index)
li: label (sub_IM (equivocator_IM IM) (enum index) i)
s: state (free_composite_vlsm (sub_IM (equivocator_IM IM) (enum index)))
m: message
Hno_equiv: composite_no_equivocations (equivocator_IM IM) (existT (`(projT1 (existT i li))) (projT2 (existT i li))) (λ i : index, s (dexist i (SubProjectionTraces.free_sub_free_index_obligation_1 i)), Some m)

composite_no_equivocations (sub_IM (equivocator_IM IM) (enum index)) (existT i li) (s, Some m)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
i: sub_index (enum index)
li: label (sub_IM (equivocator_IM IM) (enum index) i)
s: state (free_composite_vlsm (sub_IM (equivocator_IM IM) (enum index)))
m: message
Hno_equiv: composite_no_equivocations (equivocator_IM IM) (existT (`(projT1 (existT i li))) (projT2 (existT i li))) (λ i : index, s (dexist i (SubProjectionTraces.free_sub_free_index_obligation_1 i)), Some m)

composite_has_been_sent (sub_IM (equivocator_IM IM) (enum index)) (s, Some m).1 m
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
i: sub_index (enum index)
li: label (sub_IM (equivocator_IM IM) (enum index) i)
s: state (free_composite_vlsm (sub_IM (equivocator_IM IM) (enum index)))
m: message
Hno_equiv: composite_has_been_sent (equivocator_IM IM) (λ i : index, s (dexist i (SubProjectionTraces.free_sub_free_index_obligation_1 i)), Some m).1 m

composite_has_been_sent (sub_IM (equivocator_IM IM) (enum index)) (s, Some m).1 m
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
i: sub_index (enum index)
li: label (sub_IM (equivocator_IM IM) (enum index) i)
s: state (free_composite_vlsm (sub_IM (equivocator_IM IM) (enum index)))
m: message
eqv: index
Hno_equiv: has_been_sent (equivocator_IM IM eqv) ((λ i : index, s (dexist i (SubProjectionTraces.free_sub_free_index_obligation_1 i)), Some m).1 eqv) m

composite_has_been_sent (sub_IM (equivocator_IM IM) (enum index)) (s, Some m).1 m
by exists (dexist eqv (SubProjectionTraces.free_sub_free_index_obligation_1 eqv)).
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state (equivocators_no_equivocations_vlsm IM)
tr: list transition_item
sX: state Free
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM final_descriptors (s, tr) = Some (sX, trX)
Hproj: VLSM_embedding (composite_vlsm (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (free_sub_free_label (equivocator_IM IM)) (composite_state_sub_projection (equivocator_IM IM) (enum index))
Htr: finite_valid_trace (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)
Hs_project: equivocators_state_project IM initial_descriptors s = sX
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
Heq: VLSM_eq (composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (no_equivocations_additional_constraint (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index)))))
Htr': finite_valid_trace (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (no_equivocations_additional_constraint (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))))) (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)

finite_valid_trace Free sX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state (equivocators_no_equivocations_vlsm IM)
tr: list transition_item
sX: state Free
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM final_descriptors (s, tr) = Some (sX, trX)
Hproj: VLSM_embedding (composite_vlsm (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (free_sub_free_label (equivocator_IM IM)) (composite_state_sub_projection (equivocator_IM IM) (enum index))
Htr: finite_valid_trace (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)
Hs_project: equivocators_state_project IM initial_descriptors s = sX
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
Heq: VLSM_eq (composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (no_equivocations_additional_constraint (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index)))))
Htr': finite_valid_trace {| vlsm_type := composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False); vlsm_machine := composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False) |} (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)

finite_valid_trace Free sX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state (equivocators_no_equivocations_vlsm IM)
tr: list transition_item
sX: state Free
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM final_descriptors (s, tr) = Some (sX, trX)
Hproj: VLSM_embedding (composite_vlsm (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (free_sub_free_label (equivocator_IM IM)) (composite_state_sub_projection (equivocator_IM IM) (enum index))
Htr: finite_valid_trace (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)
Hs_project: equivocators_state_project IM initial_descriptors s = sX
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
Heq: VLSM_eq (composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (no_equivocations_additional_constraint (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index)))))
Htr': finite_valid_trace {| vlsm_type := composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False); vlsm_machine := composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False) |} (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)
Hproject: proper_equivocator_descriptors (λ i : sub_index (enum index), IM (`i)) (free_sub_free_equivocator_descriptors final_descriptors) (finite_trace_last (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)) → (trX : list (composite_transition_item (λ i : sub_index (enum index), IM (`i)))) (initial_descriptors : equivocator_descriptors (λ i : sub_index (enum index), IM (`i))), let isX := equivocators_state_project (λ i : sub_index (enum index), IM (`i)) initial_descriptors (composite_state_sub_projection (equivocator_IM IM) (enum index) s) in let final_stateX := finite_trace_last isX trX in proper_equivocator_descriptors (λ i : sub_index (enum index), IM (`i)) initial_descriptors (composite_state_sub_projection (equivocator_IM IM) (enum index) s) ∧ equivocators_trace_project (λ i : sub_index (enum index), IM (`i)) (free_sub_free_equivocator_descriptors final_descriptors) (VLSM_embedding_finite_trace_project Hproj tr) = Some (trX, initial_descriptors) ∧ equivocators_state_project (λ i : sub_index (enum index), IM (`i)) (free_sub_free_equivocator_descriptors final_descriptors) (finite_trace_last (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)) = final_stateX ∧ finite_valid_trace (preloaded_vlsm (free_composite_vlsm (sub_IM IM (enum index))) (λ _ : message, False)) isX trX

finite_valid_trace Free sX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state (equivocators_no_equivocations_vlsm IM)
tr: list transition_item
sX: state Free
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM final_descriptors (s, tr) = Some (sX, trX)
Hproj: VLSM_embedding (composite_vlsm (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (free_sub_free_label (equivocator_IM IM)) (composite_state_sub_projection (equivocator_IM IM) (enum index))
Htr: finite_valid_trace (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)
Hs_project: equivocators_state_project IM initial_descriptors s = sX
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
Heq: VLSM_eq (composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (no_equivocations_additional_constraint (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index)))))
Htr': finite_valid_trace {| vlsm_type := composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False); vlsm_machine := composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False) |} (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)
Hproject: proper_equivocator_descriptors (λ i : sub_index (enum index), IM (`i)) (free_sub_free_equivocator_descriptors final_descriptors) (finite_trace_last (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)) → (trX : list (composite_transition_item (λ i : sub_index (enum index), IM (`i)))) (initial_descriptors : equivocator_descriptors (λ i : sub_index (enum index), IM (`i))), let isX := equivocators_state_project (λ i : sub_index (enum index), IM (`i)) initial_descriptors (composite_state_sub_projection (equivocator_IM IM) (enum index) s) in let final_stateX := finite_trace_last isX trX in proper_equivocator_descriptors (λ i : sub_index (enum index), IM (`i)) initial_descriptors (composite_state_sub_projection (equivocator_IM IM) (enum index) s) ∧ equivocators_trace_project (λ i : sub_index (enum index), IM (`i)) (free_sub_free_equivocator_descriptors final_descriptors) (VLSM_embedding_finite_trace_project Hproj tr) = Some (trX, initial_descriptors) ∧ equivocators_state_project (λ i : sub_index (enum index), IM (`i)) (free_sub_free_equivocator_descriptors final_descriptors) (finite_trace_last (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)) = final_stateX ∧ finite_valid_trace (preloaded_vlsm (free_composite_vlsm (sub_IM IM (enum index))) (λ _ : message, False)) isX trX

proper_equivocator_descriptors (λ i : sub_index (enum index), IM (`i)) (free_sub_free_equivocator_descriptors final_descriptors) (finite_trace_last (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr))
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state (equivocators_no_equivocations_vlsm IM)
tr: list transition_item
sX: state Free
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM final_descriptors (s, tr) = Some (sX, trX)
Hproj: VLSM_embedding (composite_vlsm (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (free_sub_free_label (equivocator_IM IM)) (composite_state_sub_projection (equivocator_IM IM) (enum index))
Htr: finite_valid_trace (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)
Hs_project: equivocators_state_project IM initial_descriptors s = sX
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
Heq: VLSM_eq (composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (no_equivocations_additional_constraint (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index)))))
Htr': finite_valid_trace {| vlsm_type := composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False); vlsm_machine := composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False) |} (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)
Hproject: (trX : list (composite_transition_item (λ i : sub_index (enum index), IM (`i)))) (initial_descriptors : equivocator_descriptors (λ i : sub_index (enum index), IM (`i))), let isX := equivocators_state_project (λ i : sub_index (enum index), IM (`i)) initial_descriptors (composite_state_sub_projection (equivocator_IM IM) (enum index) s) in let final_stateX := finite_trace_last isX trX in proper_equivocator_descriptors (λ i : sub_index (enum index), IM (`i)) initial_descriptors (composite_state_sub_projection (equivocator_IM IM) (enum index) s) ∧ equivocators_trace_project (λ i : sub_index (enum index), IM (`i)) (free_sub_free_equivocator_descriptors final_descriptors) (VLSM_embedding_finite_trace_project Hproj tr) = Some (trX, initial_descriptors) ∧ equivocators_state_project (λ i : sub_index (enum index), IM (`i)) (free_sub_free_equivocator_descriptors final_descriptors) (finite_trace_last (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)) = final_stateX ∧ finite_valid_trace (preloaded_vlsm (free_composite_vlsm (sub_IM IM (enum index))) (λ _ : message, False)) isX trX
finite_valid_trace Free sX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state (equivocators_no_equivocations_vlsm IM)
tr: list transition_item
sX: state Free
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM final_descriptors (s, tr) = Some (sX, trX)
Hproj: VLSM_embedding (composite_vlsm (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (free_sub_free_label (equivocator_IM IM)) (composite_state_sub_projection (equivocator_IM IM) (enum index))
Htr: finite_valid_trace (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)
Hs_project: equivocators_state_project IM initial_descriptors s = sX
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
Heq: VLSM_eq (composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (no_equivocations_additional_constraint (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index)))))
Htr': finite_valid_trace {| vlsm_type := composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False); vlsm_machine := composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False) |} (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)
Hproject: proper_equivocator_descriptors (λ i : sub_index (enum index), IM (`i)) (free_sub_free_equivocator_descriptors final_descriptors) (finite_trace_last (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)) → (trX : list (composite_transition_item (λ i : sub_index (enum index), IM (`i)))) (initial_descriptors : equivocator_descriptors (λ i : sub_index (enum index), IM (`i))), let isX := equivocators_state_project (λ i : sub_index (enum index), IM (`i)) initial_descriptors (composite_state_sub_projection (equivocator_IM IM) (enum index) s) in let final_stateX := finite_trace_last isX trX in proper_equivocator_descriptors (λ i : sub_index (enum index), IM (`i)) initial_descriptors (composite_state_sub_projection (equivocator_IM IM) (enum index) s) ∧ equivocators_trace_project (λ i : sub_index (enum index), IM (`i)) (free_sub_free_equivocator_descriptors final_descriptors) (VLSM_embedding_finite_trace_project Hproj tr) = Some (trX, initial_descriptors) ∧ equivocators_state_project (λ i : sub_index (enum index), IM (`i)) (free_sub_free_equivocator_descriptors final_descriptors) (finite_trace_last (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)) = final_stateX ∧ finite_valid_trace (preloaded_vlsm (free_composite_vlsm (sub_IM IM (enum index))) (λ _ : message, False)) isX trX

proper_equivocator_descriptors (λ i : sub_index (enum index), IM (`i)) (free_sub_free_equivocator_descriptors final_descriptors) (finite_trace_last (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr))
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
final_descriptors: equivocator_descriptors IM
s: state (equivocators_no_equivocations_vlsm IM)
tr: list transition_item
Hproj: VLSM_embedding (composite_vlsm (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (free_sub_free_label (equivocator_IM IM)) (composite_state_sub_projection (equivocator_IM IM) (enum index))
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)

proper_equivocator_descriptors (λ i : sub_index (enum index), IM (`i)) (free_sub_free_equivocator_descriptors final_descriptors) (finite_trace_last (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr))
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
final_descriptors: equivocator_descriptors IM
s: state (equivocators_no_equivocations_vlsm IM)
tr: list transition_item
Hproj: VLSM_embedding (composite_vlsm (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (free_sub_free_label (equivocator_IM IM)) (composite_state_sub_projection (equivocator_IM IM) (enum index))
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
sub_i: sub_index (enum index)

proper_descriptor (IM (`sub_i)) (free_sub_free_equivocator_descriptors final_descriptors sub_i) (finite_trace_last (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr) sub_i)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
final_descriptors: equivocator_descriptors IM
s: state (equivocators_no_equivocations_vlsm IM)
tr: list transition_item
Hproj: VLSM_embedding (composite_vlsm (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (free_sub_free_label (equivocator_IM IM)) (composite_state_sub_projection (equivocator_IM IM) (enum index))
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
sub_i: sub_index (enum index)
i: index
Hi: sub_index_prop (enum index) i
Heqsub_i: sub_i = dexist i Hi

proper_descriptor (IM (`sub_i)) (free_sub_free_equivocator_descriptors final_descriptors sub_i) (finite_trace_last (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr) sub_i)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
final_descriptors: equivocator_descriptors IM
s: state (equivocators_no_equivocations_vlsm IM)
tr: list transition_item
Hproj: VLSM_embedding (composite_vlsm (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (free_sub_free_label (equivocator_IM IM)) (composite_state_sub_projection (equivocator_IM IM) (enum index))
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
i: index
Hi: sub_index_prop (enum index) i

proper_descriptor (IM (`(dexist i Hi))) (free_sub_free_equivocator_descriptors final_descriptors (dexist i Hi)) (finite_trace_last (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr) (dexist i Hi))
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
final_descriptors: equivocator_descriptors IM
s: state (equivocators_no_equivocations_vlsm IM)
tr: list transition_item
Hproj: VLSM_embedding (composite_vlsm (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (free_sub_free_label (equivocator_IM IM)) (composite_state_sub_projection (equivocator_IM IM) (enum index))
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
i: index
Hi: sub_index_prop (enum index) i

proper_descriptor (IM (`(dexist i Hi))) (free_sub_free_equivocator_descriptors final_descriptors (dexist i Hi)) (composite_state_sub_projection (equivocator_IM IM) (enum index) (finite_trace_last s tr) (dexist i Hi))
by apply Hproper.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state (equivocators_no_equivocations_vlsm IM)
tr: list transition_item
sX: state Free
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM final_descriptors (s, tr) = Some (sX, trX)
Hproj: VLSM_embedding (composite_vlsm (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (free_sub_free_label (equivocator_IM IM)) (composite_state_sub_projection (equivocator_IM IM) (enum index))
Htr: finite_valid_trace (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)
Hs_project: equivocators_state_project IM initial_descriptors s = sX
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
Heq: VLSM_eq (composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (no_equivocations_additional_constraint (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index)))))
Htr': finite_valid_trace {| vlsm_type := composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False); vlsm_machine := composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False) |} (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)
Hproject: (trX : list (composite_transition_item (λ i : sub_index (enum index), IM (`i)))) (initial_descriptors : equivocator_descriptors (λ i : sub_index (enum index), IM (`i))), let isX := equivocators_state_project (λ i : sub_index (enum index), IM (`i)) initial_descriptors (composite_state_sub_projection (equivocator_IM IM) (enum index) s) in let final_stateX := finite_trace_last isX trX in proper_equivocator_descriptors (λ i : sub_index (enum index), IM (`i)) initial_descriptors (composite_state_sub_projection (equivocator_IM IM) (enum index) s) ∧ equivocators_trace_project (λ i : sub_index (enum index), IM (`i)) (free_sub_free_equivocator_descriptors final_descriptors) (VLSM_embedding_finite_trace_project Hproj tr) = Some (trX, initial_descriptors) ∧ equivocators_state_project (λ i : sub_index (enum index), IM (`i)) (free_sub_free_equivocator_descriptors final_descriptors) (finite_trace_last (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)) = final_stateX ∧ finite_valid_trace (preloaded_vlsm (free_composite_vlsm (sub_IM IM (enum index))) (λ _ : message, False)) isX trX

finite_valid_trace Free sX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state (equivocators_no_equivocations_vlsm IM)
tr: list transition_item
sX: state Free
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM final_descriptors (s, tr) = Some (sX, trX)
Hproj: VLSM_embedding (composite_vlsm (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (free_sub_free_label (equivocator_IM IM)) (composite_state_sub_projection (equivocator_IM IM) (enum index))
Htr: finite_valid_trace (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)
Hs_project: equivocators_state_project IM initial_descriptors s = sX
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
Heq: VLSM_eq (composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (no_equivocations_additional_constraint (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index)))))
Htr': finite_valid_trace {| vlsm_type := composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False); vlsm_machine := composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False) |} (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)
_trX: list (composite_transition_item (λ i : sub_index (enum index), IM (`i)))
_initial_descriptors: equivocator_descriptors (λ i : sub_index (enum index), IM (`i))
_Htr_project: equivocators_trace_project (λ i : sub_index (enum index), IM (`i)) (free_sub_free_equivocator_descriptors final_descriptors) (VLSM_embedding_finite_trace_project Hproj tr) = Some (_trX, _initial_descriptors)
HtrX: finite_valid_trace (preloaded_vlsm (free_composite_vlsm (sub_IM IM (enum index))) (λ _ : message, False)) (equivocators_state_project (λ i : sub_index (enum index), IM (`i)) _initial_descriptors (composite_state_sub_projection (equivocator_IM IM) (enum index) s)) _trX

finite_valid_trace Free sX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state (equivocators_no_equivocations_vlsm IM)
tr: list transition_item
sX: state Free
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM final_descriptors (s, tr) = Some (sX, trX)
Hproj: VLSM_embedding (composite_vlsm (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (free_sub_free_label (equivocator_IM IM)) (composite_state_sub_projection (equivocator_IM IM) (enum index))
Htr: finite_valid_trace (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)
Hs_project: equivocators_state_project IM initial_descriptors s = sX
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
Heq: VLSM_eq (composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (no_equivocations_additional_constraint (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index)))))
Htr': finite_valid_trace {| vlsm_type := composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False); vlsm_machine := composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False) |} (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)
_trX: list (composite_transition_item (λ i : sub_index (enum index), IM (`i)))
_initial_descriptors: equivocator_descriptors (λ i : sub_index (enum index), IM (`i))
_Htr_project: equivocators_trace_project (λ i : sub_index (enum index), IM (`i)) (free_sub_free_equivocator_descriptors final_descriptors) (VLSM_embedding_finite_trace_project Hproj tr) = Some (_trX, _initial_descriptors)
HtrX: finite_valid_trace (preloaded_vlsm (free_composite_vlsm (sub_IM IM (enum index))) (λ _ : message, False)) (equivocators_state_project (λ i : sub_index (enum index), IM (`i)) _initial_descriptors (composite_state_sub_projection (equivocator_IM IM) (enum index) s)) _trX
Hcommute: equivocators_trace_project (sub_IM IM (enum index)) (λ i : sub_index (enum index), final_descriptors (`i)) (finite_trace_sub_projection (equivocator_IM IM) (enum index) tr) = Some (_trX, _initial_descriptors) → _initial_descriptors = (λ i : sub_index (enum index), initial_descriptors (`i)) ∧ finite_trace_sub_projection IM (enum index) trX = _trX

finite_valid_trace Free sX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state (equivocators_no_equivocations_vlsm IM)
tr: list transition_item
sX: state Free
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM final_descriptors (s, tr) = Some (sX, trX)
Hproj: VLSM_embedding (composite_vlsm (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (free_sub_free_label (equivocator_IM IM)) (composite_state_sub_projection (equivocator_IM IM) (enum index))
Htr: finite_valid_trace (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)
Hs_project: equivocators_state_project IM initial_descriptors s = sX
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
Heq: VLSM_eq (composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (no_equivocations_additional_constraint (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index)))))
Htr': finite_valid_trace {| vlsm_type := composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False); vlsm_machine := composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False) |} (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)
_trX: list (composite_transition_item (λ i : sub_index (enum index), IM (`i)))
_initial_descriptors: equivocator_descriptors (λ i : sub_index (enum index), IM (`i))
_Htr_project: equivocators_trace_project (λ i : sub_index (enum index), IM (`i)) (free_sub_free_equivocator_descriptors final_descriptors) (VLSM_embedding_finite_trace_project Hproj tr) = Some (_trX, _initial_descriptors)
HtrX: finite_valid_trace (preloaded_vlsm (free_composite_vlsm (sub_IM IM (enum index))) (λ _ : message, False)) (equivocators_state_project (λ i : sub_index (enum index), IM (`i)) _initial_descriptors (composite_state_sub_projection (equivocator_IM IM) (enum index) s)) _trX
Hcommute: equivocators_trace_project (sub_IM IM (enum index)) (λ i : sub_index (enum index), final_descriptors (`i)) (finite_trace_sub_projection (equivocator_IM IM) (enum index) tr) = Some (_trX, _initial_descriptors) → _initial_descriptors = (λ i : sub_index (enum index), initial_descriptors (`i)) ∧ finite_trace_sub_projection IM (enum index) trX = _trX

equivocators_trace_project (sub_IM IM (enum index)) (λ i : sub_index (enum index), final_descriptors (`i)) (finite_trace_sub_projection (equivocator_IM IM) (enum index) tr) = Some (_trX, _initial_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state (equivocators_no_equivocations_vlsm IM)
tr: list transition_item
sX: state Free
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM final_descriptors (s, tr) = Some (sX, trX)
Hproj: VLSM_embedding (composite_vlsm (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (free_sub_free_label (equivocator_IM IM)) (composite_state_sub_projection (equivocator_IM IM) (enum index))
Htr: finite_valid_trace (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)
Hs_project: equivocators_state_project IM initial_descriptors s = sX
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
Heq: VLSM_eq (composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (no_equivocations_additional_constraint (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index)))))
Htr': finite_valid_trace {| vlsm_type := composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False); vlsm_machine := composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False) |} (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)
_trX: list (composite_transition_item (λ i : sub_index (enum index), IM (`i)))
_initial_descriptors: equivocator_descriptors (λ i : sub_index (enum index), IM (`i))
_Htr_project: equivocators_trace_project (λ i : sub_index (enum index), IM (`i)) (free_sub_free_equivocator_descriptors final_descriptors) (VLSM_embedding_finite_trace_project Hproj tr) = Some (_trX, _initial_descriptors)
HtrX: finite_valid_trace (preloaded_vlsm (free_composite_vlsm (sub_IM IM (enum index))) (λ _ : message, False)) (equivocators_state_project (λ i : sub_index (enum index), IM (`i)) _initial_descriptors (composite_state_sub_projection (equivocator_IM IM) (enum index) s)) _trX
Hcommute: _initial_descriptors = (λ i : sub_index (enum index), initial_descriptors (`i)) ∧ finite_trace_sub_projection IM (enum index) trX = _trX
finite_valid_trace Free sX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state (equivocators_no_equivocations_vlsm IM)
tr: list transition_item
sX: state Free
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM final_descriptors (s, tr) = Some (sX, trX)
Hproj: VLSM_embedding (composite_vlsm (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (free_sub_free_label (equivocator_IM IM)) (composite_state_sub_projection (equivocator_IM IM) (enum index))
Htr: finite_valid_trace (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)
Hs_project: equivocators_state_project IM initial_descriptors s = sX
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
Heq: VLSM_eq (composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (no_equivocations_additional_constraint (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index)))))
Htr': finite_valid_trace {| vlsm_type := composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False); vlsm_machine := composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False) |} (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)
_trX: list (composite_transition_item (λ i : sub_index (enum index), IM (`i)))
_initial_descriptors: equivocator_descriptors (λ i : sub_index (enum index), IM (`i))
_Htr_project: equivocators_trace_project (λ i : sub_index (enum index), IM (`i)) (free_sub_free_equivocator_descriptors final_descriptors) (VLSM_embedding_finite_trace_project Hproj tr) = Some (_trX, _initial_descriptors)
HtrX: finite_valid_trace (preloaded_vlsm (free_composite_vlsm (sub_IM IM (enum index))) (λ _ : message, False)) (equivocators_state_project (λ i : sub_index (enum index), IM (`i)) _initial_descriptors (composite_state_sub_projection (equivocator_IM IM) (enum index) s)) _trX
Hcommute: equivocators_trace_project (sub_IM IM (enum index)) (λ i : sub_index (enum index), final_descriptors (`i)) (finite_trace_sub_projection (equivocator_IM IM) (enum index) tr) = Some (_trX, _initial_descriptors) → _initial_descriptors = (λ i : sub_index (enum index), initial_descriptors (`i)) ∧ finite_trace_sub_projection IM (enum index) trX = _trX

equivocators_trace_project (sub_IM IM (enum index)) (λ i : sub_index (enum index), final_descriptors (`i)) (finite_trace_sub_projection (equivocator_IM IM) (enum index) tr) = Some (_trX, _initial_descriptors)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state (equivocators_no_equivocations_vlsm IM)
tr: list transition_item
sX: state Free
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM final_descriptors (s, tr) = Some (sX, trX)
Hproj: VLSM_embedding (composite_vlsm (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (free_sub_free_label (equivocator_IM IM)) (composite_state_sub_projection (equivocator_IM IM) (enum index))
Htr: finite_valid_trace (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)
Hs_project: equivocators_state_project IM initial_descriptors s = sX
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
Heq: VLSM_eq (composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (no_equivocations_additional_constraint (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index)))))
Htr': finite_valid_trace {| vlsm_type := composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False); vlsm_machine := composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False) |} (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)
_trX: list (composite_transition_item (λ i : sub_index (enum index), IM (`i)))
_initial_descriptors: equivocator_descriptors (λ i : sub_index (enum index), IM (`i))
_Htr_project: equivocators_trace_project (λ i : sub_index (enum index), IM (`i)) (free_sub_free_equivocator_descriptors final_descriptors) (VLSM_embedding_finite_trace_project Hproj tr) = Some (_trX, _initial_descriptors)
HtrX: finite_valid_trace (preloaded_vlsm (free_composite_vlsm (sub_IM IM (enum index))) (λ _ : message, False)) (equivocators_state_project (λ i : sub_index (enum index), IM (`i)) _initial_descriptors (composite_state_sub_projection (equivocator_IM IM) (enum index) s)) _trX
Hcommute: equivocators_trace_project (sub_IM IM (enum index)) (λ i : sub_index (enum index), final_descriptors (`i)) (finite_trace_sub_projection (equivocator_IM IM) (enum index) tr) = Some (_trX, _initial_descriptors) → _initial_descriptors = (λ i : sub_index (enum index), initial_descriptors (`i)) ∧ finite_trace_sub_projection IM (enum index) trX = _trX

VLSM_embedding_finite_trace_project Hproj tr = finite_trace_sub_projection (equivocator_IM IM) (enum index) tr
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
tr: list transition_item
Hproj: VLSM_embedding (composite_vlsm (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (free_sub_free_label (equivocator_IM IM)) (composite_state_sub_projection (equivocator_IM IM) (enum index))

VLSM_embedding_finite_trace_project Hproj tr = finite_trace_sub_projection (equivocator_IM IM) (enum index) tr
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
a: transition_item
tr: list transition_item
Hproj: VLSM_embedding (composite_vlsm (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (free_sub_free_label (equivocator_IM IM)) (composite_state_sub_projection (equivocator_IM IM) (enum index))
IHtr: VLSM_embedding_finite_trace_project Hproj tr = finite_trace_sub_projection (equivocator_IM IM) (enum index) tr

VLSM_embedding_finite_trace_project Hproj (a :: tr) = finite_trace_sub_projection (equivocator_IM IM) (enum index) (a :: tr)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
a: transition_item
tr: list transition_item
Hproj: VLSM_embedding (composite_vlsm (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (free_sub_free_label (equivocator_IM IM)) (composite_state_sub_projection (equivocator_IM IM) (enum index))
IHtr: VLSM_embedding_finite_trace_project Hproj tr = finite_trace_sub_projection (equivocator_IM IM) (enum index) tr

pre_VLSM_embedding_transition_item_project (composite_type (equivocator_IM IM)) (composite_type (sub_IM (equivocator_IM IM) (enum index))) (free_sub_free_label (equivocator_IM IM)) (composite_state_sub_projection (equivocator_IM IM) (enum index)) a :: VLSM_embedding_finite_trace_project Hproj tr = match pre_VLSM_projection_transition_item_project (composite_type (equivocator_IM IM)) (composite_type (sub_IM (equivocator_IM IM) (enum index))) (composite_label_sub_projection_option (equivocator_IM IM) (enum index)) (composite_state_sub_projection (equivocator_IM IM) (enum index)) a with | Some y => y :: finite_trace_sub_projection (equivocator_IM IM) (enum index) tr | None => finite_trace_sub_projection (equivocator_IM IM) (enum index) tr end
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
a: transition_item
tr: list transition_item
Hproj: VLSM_embedding (composite_vlsm (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (free_sub_free_label (equivocator_IM IM)) (composite_state_sub_projection (equivocator_IM IM) (enum index))
IHtr: VLSM_embedding_finite_trace_project Hproj tr = finite_trace_sub_projection (equivocator_IM IM) (enum index) tr

{| l := free_sub_free_label (equivocator_IM IM) (l a); input := input a; destination := composite_state_sub_projection (equivocator_IM IM) (enum index) (destination a); output := output a |} :: VLSM_embedding_finite_trace_project Hproj tr = match match match decide (projT1 (l a) ∈ enum index) with | left i_in => Some (composite_label_sub_projection (equivocator_IM IM) (enum index) (l a) i_in) | right _ => None end with | Some lY => Some {| l := lY; input := input a; destination := composite_state_sub_projection (equivocator_IM IM) (enum index) (destination a); output := output a |} | None => None end with | Some y => y :: finite_trace_sub_projection (equivocator_IM IM) (enum index) tr | None => finite_trace_sub_projection (equivocator_IM IM) (enum index) tr end
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
a: transition_item
tr: list transition_item
Hproj: VLSM_embedding (composite_vlsm (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (free_sub_free_label (equivocator_IM IM)) (composite_state_sub_projection (equivocator_IM IM) (enum index))
IHtr: VLSM_embedding_finite_trace_project Hproj tr = finite_trace_sub_projection (equivocator_IM IM) (enum index) tr

{| l := free_sub_free_label (equivocator_IM IM) (l a); input := input a; destination := composite_state_sub_projection (equivocator_IM IM) (enum index) (destination a); output := output a |} :: VLSM_embedding_finite_trace_project Hproj tr = match match match decide (projT1 (l a) ∈ enum index) with | left i_in => Some (composite_label_sub_projection (equivocator_IM IM) (enum index) (l a) i_in) | right _ => None end with | Some lY => Some {| l := lY; input := input a; destination := composite_state_sub_projection (equivocator_IM IM) (enum index) (destination a); output := output a |} | None => None end with | Some y => y :: finite_trace_sub_projection (equivocator_IM IM) (enum index) tr | None => finite_trace_sub_projection (equivocator_IM IM) (enum index) tr end
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
a: transition_item
tr: list transition_item
Hproj: VLSM_embedding (composite_vlsm (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (free_sub_free_label (equivocator_IM IM)) (composite_state_sub_projection (equivocator_IM IM) (enum index))
IHtr: VLSM_embedding_finite_trace_project Hproj tr = finite_trace_sub_projection (equivocator_IM IM) (enum index) tr
Hla: projT1 (l a) ∈ enum index

{| l := free_sub_free_label (equivocator_IM IM) (l a); input := input a; destination := composite_state_sub_projection (equivocator_IM IM) (enum index) (destination a); output := output a |} :: VLSM_embedding_finite_trace_project Hproj tr = {| l := composite_label_sub_projection (equivocator_IM IM) (enum index) (l a) Hla; input := input a; destination := composite_state_sub_projection (equivocator_IM IM) (enum index) (destination a); output := output a |} :: finite_trace_sub_projection (equivocator_IM IM) (enum index) tr
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
a: transition_item
tr: list transition_item
Hproj: VLSM_embedding (composite_vlsm (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (free_sub_free_label (equivocator_IM IM)) (composite_state_sub_projection (equivocator_IM IM) (enum index))
IHtr: VLSM_embedding_finite_trace_project Hproj tr = finite_trace_sub_projection (equivocator_IM IM) (enum index) tr
Hla: projT1 (l a) ∈ enum index

{| l := free_sub_free_label (equivocator_IM IM) (l a); input := input a; destination := composite_state_sub_projection (equivocator_IM IM) (enum index) (destination a); output := output a |} = {| l := composite_label_sub_projection (equivocator_IM IM) (enum index) (l a) Hla; input := input a; destination := composite_state_sub_projection (equivocator_IM IM) (enum index) (destination a); output := output a |}
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
i: index
li: label (equivocator_IM IM i)
input: option message
destination: state (equivocators_no_equivocations_vlsm IM)
output: option message
tr: list transition_item
Hproj: VLSM_embedding (composite_vlsm (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (free_sub_free_label (equivocator_IM IM)) (composite_state_sub_projection (equivocator_IM IM) (enum index))
IHtr: VLSM_embedding_finite_trace_project Hproj tr = finite_trace_sub_projection (equivocator_IM IM) (enum index) tr
Hla: projT1 (l {| l := existT i li; input := input; destination := destination; output := output |}) ∈ enum index

existT (free_sub_free_index i) li = composite_label_sub_projection (equivocator_IM IM) (enum index) (existT i li) Hla
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
i: index
li: label (equivocator_IM IM i)
input: option message
destination: state (equivocators_no_equivocations_vlsm IM)
output: option message
tr: list transition_item
Hproj: VLSM_embedding (composite_vlsm (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (free_sub_free_label (equivocator_IM IM)) (composite_state_sub_projection (equivocator_IM IM) (enum index))
IHtr: VLSM_embedding_finite_trace_project Hproj tr = finite_trace_sub_projection (equivocator_IM IM) (enum index) tr
Hla: projT1 (l {| l := existT i li; input := input; destination := destination; output := output |}) ∈ enum index

existT (dexist i (SubProjectionTraces.free_sub_free_index_obligation_1 i)) li = existT (dexist i Hla) li
by apply (@dec_sig_sigT_eq _ _ (sub_index_prop_dec (enum index)) (fun n => label (EquivocatorsComposition.equivocator_IM IM n)) i li li).
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state (equivocators_no_equivocations_vlsm IM)
tr: list transition_item
sX: state Free
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM final_descriptors (s, tr) = Some (sX, trX)
Hproj: VLSM_embedding (composite_vlsm (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (free_sub_free_label (equivocator_IM IM)) (composite_state_sub_projection (equivocator_IM IM) (enum index))
Htr: finite_valid_trace (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)
Hs_project: equivocators_state_project IM initial_descriptors s = sX
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
Heq: VLSM_eq (composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (no_equivocations_additional_constraint (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index)))))
Htr': finite_valid_trace {| vlsm_type := composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False); vlsm_machine := composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False) |} (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)
_trX: list (composite_transition_item (λ i : sub_index (enum index), IM (`i)))
_initial_descriptors: equivocator_descriptors (λ i : sub_index (enum index), IM (`i))
_Htr_project: equivocators_trace_project (λ i : sub_index (enum index), IM (`i)) (free_sub_free_equivocator_descriptors final_descriptors) (VLSM_embedding_finite_trace_project Hproj tr) = Some (_trX, _initial_descriptors)
HtrX: finite_valid_trace (preloaded_vlsm (free_composite_vlsm (sub_IM IM (enum index))) (λ _ : message, False)) (equivocators_state_project (λ i : sub_index (enum index), IM (`i)) _initial_descriptors (composite_state_sub_projection (equivocator_IM IM) (enum index) s)) _trX
Hcommute: _initial_descriptors = (λ i : sub_index (enum index), initial_descriptors (`i)) ∧ finite_trace_sub_projection IM (enum index) trX = _trX

finite_valid_trace Free sX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state (equivocators_no_equivocations_vlsm IM)
tr: list transition_item
sX: state Free
trX: list transition_item
Hpr_tr: equivocators_partial_trace_project IM final_descriptors (s, tr) = Some (sX, trX)
Hproj: VLSM_embedding (composite_vlsm (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (free_sub_free_label (equivocator_IM IM)) (composite_state_sub_projection (equivocator_IM IM) (enum index))
Htr: finite_valid_trace (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)
Hs_project: equivocators_state_project IM initial_descriptors s = sX
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
Heq: VLSM_eq (composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (no_equivocations_additional_constraint (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index)))))
Htr': finite_valid_trace {| vlsm_type := composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False); vlsm_machine := composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False) |} (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)
_trX: list (composite_transition_item (λ i : sub_index (enum index), IM (`i)))
_initial_descriptors: equivocator_descriptors (λ i : sub_index (enum index), IM (`i))
_Htr_project: equivocators_trace_project (λ i : sub_index (enum index), IM (`i)) (free_sub_free_equivocator_descriptors final_descriptors) (VLSM_embedding_finite_trace_project Hproj tr) = Some (_trX, _initial_descriptors)
HtrX: finite_valid_trace (preloaded_vlsm (free_composite_vlsm (sub_IM IM (enum index))) (λ _ : message, False)) (equivocators_state_project (λ i : sub_index (enum index), IM (`i)) _initial_descriptors (composite_state_sub_projection (equivocator_IM IM) (enum index) s)) _trX
Heq_initial: _initial_descriptors = (λ i : sub_index (enum index), initial_descriptors (`i))
Heq_trX: finite_trace_sub_projection IM (enum index) trX = _trX

finite_valid_trace Free sX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
s: state (equivocators_no_equivocations_vlsm IM)
tr, trX: list transition_item
initial_descriptors: equivocator_descriptors IM
Hpr_tr: equivocators_partial_trace_project IM final_descriptors (s, tr) = Some (equivocators_state_project IM initial_descriptors s, trX)
Hproj: VLSM_embedding (composite_vlsm (equivocator_IM IM) (equivocators_no_equivocations_constraint IM)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (free_sub_free_label (equivocator_IM IM)) (composite_state_sub_projection (equivocator_IM IM) (enum index))
Htr: finite_valid_trace (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (free_sub_free_constraint (equivocator_IM IM) (equivocators_no_equivocations_constraint IM))) (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)
Hnot_equiv: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
Htr_project: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last s tr)
Heq: VLSM_eq (composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False)) (composite_vlsm (sub_IM (equivocator_IM IM) (enum index)) (no_equivocations_additional_constraint (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index)))))
Htr': finite_valid_trace {| vlsm_type := composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False); vlsm_machine := composite_no_equivocation_vlsm_with_preloaded (sub_IM (equivocator_IM IM) (enum index)) (free_constraint (sub_IM (equivocator_IM IM) (enum index))) (λ _ : message, False) |} (composite_state_sub_projection (equivocator_IM IM) (enum index) s) (VLSM_embedding_finite_trace_project Hproj tr)
_Htr_project: equivocators_trace_project (λ i : sub_index (enum index), IM (`i)) (free_sub_free_equivocator_descriptors final_descriptors) (VLSM_embedding_finite_trace_project Hproj tr) = Some (finite_trace_sub_projection IM (enum index) trX, λ i : sub_index (enum index), initial_descriptors (`i))
HtrX: finite_valid_trace (preloaded_vlsm (free_composite_vlsm (sub_IM IM (enum index))) (λ _ : message, False)) (equivocators_state_project (λ i : sub_index (enum index), IM (`i)) (λ i : sub_index (enum index), initial_descriptors (`i)) (composite_state_sub_projection (equivocator_IM IM) (enum index) s)) (finite_trace_sub_projection IM (enum index) trX)

finite_valid_trace Free (equivocators_state_project IM initial_descriptors s) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
initial_descriptors: equivocator_descriptors IM
HtrX: finite_valid_trace (preloaded_vlsm (free_composite_vlsm (sub_IM IM (enum index))) (λ _ : message, False)) (equivocators_state_project (λ i : sub_index (enum index), IM (`i)) (λ i : sub_index (enum index), initial_descriptors (`i)) (composite_state_sub_projection (equivocator_IM IM) (enum index) s)) (finite_trace_sub_projection IM (enum index) trX)

finite_valid_trace Free (equivocators_state_project IM initial_descriptors s) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
initial_descriptors: equivocator_descriptors IM
HtrX: finite_valid_trace (preloaded_vlsm (free_composite_vlsm (sub_IM IM (enum index))) (λ _ : message, False)) (equivocators_state_project (λ i : sub_index (enum index), IM (`i)) (λ i : sub_index (enum index), initial_descriptors (`i)) (composite_state_sub_projection (equivocator_IM IM) (enum index) s)) (finite_trace_sub_projection IM (enum index) trX)
Heq: VLSM_eq (free_composite_vlsm (sub_IM IM (enum index))) (preloaded_vlsm (free_composite_vlsm (sub_IM IM (enum index))) (λ _ : message, False))

finite_valid_trace Free (equivocators_state_project IM initial_descriptors s) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
initial_descriptors: equivocator_descriptors IM
HtrX: finite_valid_trace {| vlsm_type := free_composite_vlsm (sub_IM IM (enum index)); vlsm_machine := free_composite_vlsm (sub_IM IM (enum index)) |} (equivocators_state_project (λ i : sub_index (enum index), IM (`i)) (λ i : sub_index (enum index), initial_descriptors (`i)) (composite_state_sub_projection (equivocator_IM IM) (enum index) s)) (finite_trace_sub_projection IM (enum index) trX)
Heq: VLSM_eq (free_composite_vlsm (sub_IM IM (enum index))) (preloaded_vlsm (free_composite_vlsm (sub_IM IM (enum index))) (λ _ : message, False))

finite_valid_trace Free (equivocators_state_project IM initial_descriptors s) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
initial_descriptors: equivocator_descriptors IM
HtrX: finite_valid_trace {| vlsm_type := free_composite_vlsm (sub_IM IM (enum index)); vlsm_machine := free_composite_vlsm (sub_IM IM (enum index)) |} (equivocators_state_project (λ i : sub_index (enum index), IM (`i)) (λ i : sub_index (enum index), initial_descriptors (`i)) (composite_state_sub_projection (equivocator_IM IM) (enum index) s)) (finite_trace_sub_projection IM (enum index) trX)
Heq: VLSM_eq (free_composite_vlsm (sub_IM IM (enum index))) (preloaded_vlsm (free_composite_vlsm (sub_IM IM (enum index))) (λ _ : message, False))
Hproj: VLSM_embedding (composite_vlsm (sub_IM IM (enum index)) (free_sub_free_constraint IM (free_constraint IM))) (composite_vlsm IM (free_constraint IM)) (lift_sub_label IM (enum index)) (free_sub_free_state IM)

finite_valid_trace Free (equivocators_state_project IM initial_descriptors s) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
initial_descriptors: equivocator_descriptors IM
HtrX: finite_valid_trace {| vlsm_type := free_composite_vlsm (sub_IM IM (enum index)); vlsm_machine := free_composite_vlsm (sub_IM IM (enum index)) |} (equivocators_state_project (λ i : sub_index (enum index), IM (`i)) (λ i : sub_index (enum index), initial_descriptors (`i)) (composite_state_sub_projection (equivocator_IM IM) (enum index) s)) (finite_trace_sub_projection IM (enum index) trX)
Heq: VLSM_eq (free_composite_vlsm (sub_IM IM (enum index))) (preloaded_vlsm (free_composite_vlsm (sub_IM IM (enum index))) (λ _ : message, False))
Hproj: VLSM_embedding (composite_vlsm (sub_IM IM (enum index)) (free_sub_free_constraint IM (free_constraint IM))) (composite_vlsm IM (free_constraint IM)) (lift_sub_label IM (enum index)) (free_sub_free_state IM)

finite_valid_trace (composite_vlsm (sub_IM IM (enum index)) (free_sub_free_constraint IM (free_constraint IM))) (equivocators_state_project (sub_IM IM (enum index)) (λ i : sub_index (enum index), initial_descriptors (`i)) (composite_state_sub_projection (equivocator_IM IM) (enum index) s)) (finite_trace_sub_projection IM (enum index) trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
initial_descriptors: equivocator_descriptors IM
HtrX: finite_valid_trace {| vlsm_type := free_composite_vlsm (sub_IM IM (enum index)); vlsm_machine := free_composite_vlsm (sub_IM IM (enum index)) |} (equivocators_state_project (λ i : sub_index (enum index), IM (`i)) (λ i : sub_index (enum index), initial_descriptors (`i)) (composite_state_sub_projection (equivocator_IM IM) (enum index) s)) (finite_trace_sub_projection IM (enum index) trX)
Heq: VLSM_eq (free_composite_vlsm (sub_IM IM (enum index))) (preloaded_vlsm (free_composite_vlsm (sub_IM IM (enum index))) (λ _ : message, False))
Hproj: VLSM_embedding (composite_vlsm (sub_IM IM (enum index)) (free_sub_free_constraint IM (free_constraint IM))) (composite_vlsm IM (free_constraint IM)) (lift_sub_label IM (enum index)) (free_sub_free_state IM)
HtrX': finite_valid_trace (composite_vlsm (sub_IM IM (enum index)) (free_sub_free_constraint IM (free_constraint IM))) (equivocators_state_project (sub_IM IM (enum index)) (λ i : sub_index (enum index), initial_descriptors (`i)) (composite_state_sub_projection (equivocator_IM IM) (enum index) s)) (finite_trace_sub_projection IM (enum index) trX)
finite_valid_trace Free (equivocators_state_project IM initial_descriptors s) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
initial_descriptors: equivocator_descriptors IM
HtrX: finite_valid_trace {| vlsm_type := free_composite_vlsm (sub_IM IM (enum index)); vlsm_machine := free_composite_vlsm (sub_IM IM (enum index)) |} (equivocators_state_project (λ i : sub_index (enum index), IM (`i)) (λ i : sub_index (enum index), initial_descriptors (`i)) (composite_state_sub_projection (equivocator_IM IM) (enum index) s)) (finite_trace_sub_projection IM (enum index) trX)
Heq: VLSM_eq (free_composite_vlsm (sub_IM IM (enum index))) (preloaded_vlsm (free_composite_vlsm (sub_IM IM (enum index))) (λ _ : message, False))
Hproj: VLSM_embedding (composite_vlsm (sub_IM IM (enum index)) (free_sub_free_constraint IM (free_constraint IM))) (composite_vlsm IM (free_constraint IM)) (lift_sub_label IM (enum index)) (free_sub_free_state IM)

finite_valid_trace (composite_vlsm (sub_IM IM (enum index)) (free_sub_free_constraint IM (free_constraint IM))) (equivocators_state_project (sub_IM IM (enum index)) (λ i : sub_index (enum index), initial_descriptors (`i)) (composite_state_sub_projection (equivocator_IM IM) (enum index) s)) (finite_trace_sub_projection IM (enum index) trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
initial_descriptors: equivocator_descriptors IM
Heq: VLSM_eq (free_composite_vlsm (sub_IM IM (enum index))) (preloaded_vlsm (free_composite_vlsm (sub_IM IM (enum index))) (λ _ : message, False))
Hproj: VLSM_embedding (composite_vlsm (sub_IM IM (enum index)) (free_sub_free_constraint IM (free_constraint IM))) (composite_vlsm IM (free_constraint IM)) (lift_sub_label IM (enum index)) (free_sub_free_state IM)

finite_valid_trace {| vlsm_type := free_composite_vlsm (sub_IM IM (enum index)); vlsm_machine := free_composite_vlsm (sub_IM IM (enum index)) |} (equivocators_state_project (λ i : sub_index (enum index), IM (`i)) (λ i : sub_index (enum index), initial_descriptors (`i)) (composite_state_sub_projection (equivocator_IM IM) (enum index) s)) (finite_trace_sub_projection IM (enum index) trX) → finite_valid_trace (composite_vlsm (sub_IM IM (enum index)) (free_sub_free_constraint IM (free_constraint IM))) (equivocators_state_project (sub_IM IM (enum index)) (λ i : sub_index (enum index), initial_descriptors (`i)) (composite_state_sub_projection (equivocator_IM IM) (enum index) s)) (finite_trace_sub_projection IM (enum index) trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
initial_descriptors: equivocator_descriptors IM
Heq: VLSM_eq (free_composite_vlsm (sub_IM IM (enum index))) (preloaded_vlsm (free_composite_vlsm (sub_IM IM (enum index))) (λ _ : message, False))
Hproj: VLSM_embedding (composite_vlsm (sub_IM IM (enum index)) (free_sub_free_constraint IM (free_constraint IM))) (composite_vlsm IM (free_constraint IM)) (lift_sub_label IM (enum index)) (free_sub_free_state IM)

VLSM_incl_part (free_composite_vlsm (sub_IM IM (enum index))) (constrained_vlsm_machine (free_composite_vlsm (sub_IM IM (enum index))) (free_sub_free_constraint IM (free_constraint IM)))
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
initial_descriptors: equivocator_descriptors IM
Heq: VLSM_eq (free_composite_vlsm (sub_IM IM (enum index))) (preloaded_vlsm (free_composite_vlsm (sub_IM IM (enum index))) (λ _ : message, False))
Hproj: VLSM_embedding (composite_vlsm (sub_IM IM (enum index)) (free_sub_free_constraint IM (free_constraint IM))) (composite_vlsm IM (free_constraint IM)) (lift_sub_label IM (enum index)) (free_sub_free_state IM)

VLSM_incl {| vlsm_type := free_composite_vlsm (sub_IM IM (enum index)); vlsm_machine := free_composite_vlsm_machine (sub_IM IM (enum index)) |} {| vlsm_type := free_composite_vlsm (sub_IM IM (enum index)); vlsm_machine := ?MY |}
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
initial_descriptors: equivocator_descriptors IM
Heq: VLSM_eq (free_composite_vlsm (sub_IM IM (enum index))) (preloaded_vlsm (free_composite_vlsm (sub_IM IM (enum index))) (λ _ : message, False))
Hproj: VLSM_embedding (composite_vlsm (sub_IM IM (enum index)) (free_sub_free_constraint IM (free_constraint IM))) (composite_vlsm IM (free_constraint IM)) (lift_sub_label IM (enum index)) (free_sub_free_state IM)
VLSM_incl {| vlsm_type := free_composite_vlsm (sub_IM IM (enum index)); vlsm_machine := ?MY |} {| vlsm_type := free_composite_vlsm (sub_IM IM (enum index)); vlsm_machine := {| initial_state_prop := initial_state_prop; s0 := s0 (free_composite_vlsm (sub_IM IM (enum index))) (free_composite_vlsm (sub_IM IM (enum index))); initial_message_prop := initial_message_prop; transition := transition; valid := λ (l : label (free_composite_vlsm (sub_IM IM (enum index)))) (som : state (free_composite_vlsm (sub_IM IM (enum index))) * option message), valid l som ∧ free_sub_free_constraint IM (free_constraint IM) l som |} |}
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
initial_descriptors: equivocator_descriptors IM
Heq: VLSM_eq (free_composite_vlsm (sub_IM IM (enum index))) (preloaded_vlsm (free_composite_vlsm (sub_IM IM (enum index))) (λ _ : message, False))
Hproj: VLSM_embedding (composite_vlsm (sub_IM IM (enum index)) (free_sub_free_constraint IM (free_constraint IM))) (composite_vlsm IM (free_constraint IM)) (lift_sub_label IM (enum index)) (free_sub_free_state IM)

VLSM_incl {| vlsm_type := free_composite_vlsm (sub_IM IM (enum index)); vlsm_machine := free_composite_vlsm_machine (sub_IM IM (enum index)) |} {| vlsm_type := free_composite_vlsm (sub_IM IM (enum index)); vlsm_machine := ?MY |}
by apply free_composite_vlsm_spec.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
initial_descriptors: equivocator_descriptors IM
Heq: VLSM_eq (free_composite_vlsm (sub_IM IM (enum index))) (preloaded_vlsm (free_composite_vlsm (sub_IM IM (enum index))) (λ _ : message, False))
Hproj: VLSM_embedding (composite_vlsm (sub_IM IM (enum index)) (free_sub_free_constraint IM (free_constraint IM))) (composite_vlsm IM (free_constraint IM)) (lift_sub_label IM (enum index)) (free_sub_free_state IM)

VLSM_incl {| vlsm_type := free_composite_vlsm (sub_IM IM (enum index)); vlsm_machine := composite_vlsm (sub_IM IM (enum index)) (free_constraint (sub_IM IM (enum index))) |} {| vlsm_type := free_composite_vlsm (sub_IM IM (enum index)); vlsm_machine := {| initial_state_prop := initial_state_prop; s0 := s0 (free_composite_vlsm (sub_IM IM (enum index))) (free_composite_vlsm (sub_IM IM (enum index))); initial_message_prop := initial_message_prop; transition := transition; valid := λ (l : label (free_composite_vlsm (sub_IM IM (enum index)))) (som : state (free_composite_vlsm (sub_IM IM (enum index))) * option message), valid l som ∧ free_sub_free_constraint IM (free_constraint IM) l som |} |}
by apply constraint_subsumption_incl; intros [] [].
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
initial_descriptors: equivocator_descriptors IM
HtrX: finite_valid_trace {| vlsm_type := free_composite_vlsm (sub_IM IM (enum index)); vlsm_machine := free_composite_vlsm (sub_IM IM (enum index)) |} (equivocators_state_project (λ i : sub_index (enum index), IM (`i)) (λ i : sub_index (enum index), initial_descriptors (`i)) (composite_state_sub_projection (equivocator_IM IM) (enum index) s)) (finite_trace_sub_projection IM (enum index) trX)
Heq: VLSM_eq (free_composite_vlsm (sub_IM IM (enum index))) (preloaded_vlsm (free_composite_vlsm (sub_IM IM (enum index))) (λ _ : message, False))
Hproj: VLSM_embedding (composite_vlsm (sub_IM IM (enum index)) (free_sub_free_constraint IM (free_constraint IM))) (composite_vlsm IM (free_constraint IM)) (lift_sub_label IM (enum index)) (free_sub_free_state IM)
HtrX': finite_valid_trace (composite_vlsm (sub_IM IM (enum index)) (free_sub_free_constraint IM (free_constraint IM))) (equivocators_state_project (sub_IM IM (enum index)) (λ i : sub_index (enum index), initial_descriptors (`i)) (composite_state_sub_projection (equivocator_IM IM) (enum index) s)) (finite_trace_sub_projection IM (enum index) trX)

finite_valid_trace Free (equivocators_state_project IM initial_descriptors s) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
initial_descriptors: equivocator_descriptors IM
HtrX: finite_valid_trace {| vlsm_type := free_composite_vlsm (sub_IM IM (enum index)); vlsm_machine := free_composite_vlsm (sub_IM IM (enum index)) |} (equivocators_state_project (λ i : sub_index (enum index), IM (`i)) (λ i : sub_index (enum index), initial_descriptors (`i)) (composite_state_sub_projection (equivocator_IM IM) (enum index) s)) (finite_trace_sub_projection IM (enum index) trX)
Heq: VLSM_eq (free_composite_vlsm (sub_IM IM (enum index))) (preloaded_vlsm (free_composite_vlsm (sub_IM IM (enum index))) (λ _ : message, False))
Hproj: VLSM_embedding (composite_vlsm (sub_IM IM (enum index)) (free_sub_free_constraint IM (free_constraint IM))) (composite_vlsm IM (free_constraint IM)) (lift_sub_label IM (enum index)) (free_sub_free_state IM)
HtrX': finite_valid_trace (composite_vlsm IM (free_constraint IM)) (free_sub_free_state IM (equivocators_state_project (sub_IM IM (enum index)) (λ i : sub_index (enum index), initial_descriptors (`i)) (composite_state_sub_projection (equivocator_IM IM) (enum index) s))) (VLSM_embedding_finite_trace_project Hproj (finite_trace_sub_projection IM (enum index) trX))

finite_valid_trace Free (equivocators_state_project IM initial_descriptors s) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
initial_descriptors: equivocator_descriptors IM
HtrX: finite_valid_trace {| vlsm_type := free_composite_vlsm (sub_IM IM (enum index)); vlsm_machine := free_composite_vlsm (sub_IM IM (enum index)) |} (equivocators_state_project (λ i : sub_index (enum index), IM (`i)) (λ i : sub_index (enum index), initial_descriptors (`i)) (composite_state_sub_projection (equivocator_IM IM) (enum index) s)) (finite_trace_sub_projection IM (enum index) trX)
Heq: VLSM_eq (free_composite_vlsm (sub_IM IM (enum index))) (preloaded_vlsm (free_composite_vlsm (sub_IM IM (enum index))) (λ _ : message, False))
Hproj: VLSM_embedding (composite_vlsm (sub_IM IM (enum index)) (free_sub_free_constraint IM (free_constraint IM))) (composite_vlsm IM (free_constraint IM)) (lift_sub_label IM (enum index)) (free_sub_free_state IM)
HtrX': finite_valid_trace (composite_vlsm IM (free_constraint IM)) (equivocators_state_project IM initial_descriptors s) trX

finite_valid_trace Free (equivocators_state_project IM initial_descriptors s) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
initial_descriptors: equivocator_descriptors IM
HtrX: finite_valid_trace {| vlsm_type := free_composite_vlsm (sub_IM IM (enum index)); vlsm_machine := free_composite_vlsm (sub_IM IM (enum index)) |} (equivocators_state_project (λ i : sub_index (enum index), IM (`i)) (λ i : sub_index (enum index), initial_descriptors (`i)) (composite_state_sub_projection (equivocator_IM IM) (enum index) s)) (finite_trace_sub_projection IM (enum index) trX)
Heq: VLSM_eq (free_composite_vlsm (sub_IM IM (enum index))) (preloaded_vlsm (free_composite_vlsm (sub_IM IM (enum index))) (λ _ : message, False))
Hproj: VLSM_embedding (composite_vlsm (sub_IM IM (enum index)) (free_sub_free_constraint IM (free_constraint IM))) (composite_vlsm IM (free_constraint IM)) (lift_sub_label IM (enum index)) (free_sub_free_state IM)
HtrX': finite_valid_trace (composite_vlsm IM (free_constraint IM)) (equivocators_state_project IM initial_descriptors s) (VLSM_embedding_finite_trace_project Hproj (finite_trace_sub_projection IM (enum index) trX))
trX = VLSM_embedding_finite_trace_project Hproj (finite_trace_sub_projection IM (enum index) trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
initial_descriptors: equivocator_descriptors IM
HtrX: finite_valid_trace {| vlsm_type := free_composite_vlsm (sub_IM IM (enum index)); vlsm_machine := free_composite_vlsm (sub_IM IM (enum index)) |} (equivocators_state_project (λ i : sub_index (enum index), IM (`i)) (λ i : sub_index (enum index), initial_descriptors (`i)) (composite_state_sub_projection (equivocator_IM IM) (enum index) s)) (finite_trace_sub_projection IM (enum index) trX)
Heq: VLSM_eq (free_composite_vlsm (sub_IM IM (enum index))) (preloaded_vlsm (free_composite_vlsm (sub_IM IM (enum index))) (λ _ : message, False))
Hproj: VLSM_embedding (composite_vlsm (sub_IM IM (enum index)) (free_sub_free_constraint IM (free_constraint IM))) (composite_vlsm IM (free_constraint IM)) (lift_sub_label IM (enum index)) (free_sub_free_state IM)
HtrX': finite_valid_trace (composite_vlsm IM (free_constraint IM)) (equivocators_state_project IM initial_descriptors s) trX

finite_valid_trace Free (equivocators_state_project IM initial_descriptors s) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
initial_descriptors: equivocator_descriptors IM
HtrX: finite_valid_trace {| vlsm_type := free_composite_vlsm (sub_IM IM (enum index)); vlsm_machine := free_composite_vlsm (sub_IM IM (enum index)) |} (equivocators_state_project (λ i : sub_index (enum index), IM (`i)) (λ i : sub_index (enum index), initial_descriptors (`i)) (composite_state_sub_projection (equivocator_IM IM) (enum index) s)) (finite_trace_sub_projection IM (enum index) trX)
Heq: VLSM_eq (free_composite_vlsm (sub_IM IM (enum index))) (preloaded_vlsm (free_composite_vlsm (sub_IM IM (enum index))) (λ _ : message, False))
Hproj: VLSM_embedding (composite_vlsm (sub_IM IM (enum index)) (free_sub_free_constraint IM (free_constraint IM))) (composite_vlsm IM (free_constraint IM)) (lift_sub_label IM (enum index)) (free_sub_free_state IM)
HtrX': finite_valid_trace (composite_vlsm IM (free_constraint IM)) (equivocators_state_project IM initial_descriptors s) trX

VLSM_incl_part (composite_vlsm IM (free_constraint IM)) (free_composite_vlsm_machine IM)
by apply free_composite_vlsm_spec.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
initial_descriptors: equivocator_descriptors IM
HtrX: finite_valid_trace {| vlsm_type := free_composite_vlsm (sub_IM IM (enum index)); vlsm_machine := free_composite_vlsm (sub_IM IM (enum index)) |} (equivocators_state_project (λ i : sub_index (enum index), IM (`i)) (λ i : sub_index (enum index), initial_descriptors (`i)) (composite_state_sub_projection (equivocator_IM IM) (enum index) s)) (finite_trace_sub_projection IM (enum index) trX)
Heq: VLSM_eq (free_composite_vlsm (sub_IM IM (enum index))) (preloaded_vlsm (free_composite_vlsm (sub_IM IM (enum index))) (λ _ : message, False))
Hproj: VLSM_embedding (composite_vlsm (sub_IM IM (enum index)) (free_sub_free_constraint IM (free_constraint IM))) (composite_vlsm IM (free_constraint IM)) (lift_sub_label IM (enum index)) (free_sub_free_state IM)
HtrX': finite_valid_trace (composite_vlsm IM (free_constraint IM)) (equivocators_state_project IM initial_descriptors s) (VLSM_embedding_finite_trace_project Hproj (finite_trace_sub_projection IM (enum index) trX))

trX = VLSM_embedding_finite_trace_project Hproj (finite_trace_sub_projection IM (enum index) trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
trX: list transition_item
Hproj: VLSM_embedding (composite_vlsm (sub_IM IM (enum index)) (free_sub_free_constraint IM (free_constraint IM))) (composite_vlsm IM (free_constraint IM)) (lift_sub_label IM (enum index)) (free_sub_free_state IM)

trX = VLSM_embedding_finite_trace_project Hproj (finite_trace_sub_projection IM (enum index) trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
a: transition_item
trX: list transition_item
Hproj: VLSM_embedding (composite_vlsm (sub_IM IM (enum index)) (free_sub_free_constraint IM (free_constraint IM))) (composite_vlsm IM (free_constraint IM)) (lift_sub_label IM (enum index)) (free_sub_free_state IM)
IHtrX: trX = VLSM_embedding_finite_trace_project Hproj (finite_trace_sub_projection IM (enum index) trX)

a :: trX = VLSM_embedding_finite_trace_project Hproj (finite_trace_sub_projection IM (enum index) (a :: trX))
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
a: transition_item
trX: list transition_item
Hproj: VLSM_embedding (composite_vlsm (sub_IM IM (enum index)) (free_sub_free_constraint IM (free_constraint IM))) (composite_vlsm IM (free_constraint IM)) (lift_sub_label IM (enum index)) (free_sub_free_state IM)
IHtrX: trX = VLSM_embedding_finite_trace_project Hproj (finite_trace_sub_projection IM (enum index) trX)

a :: trX = VLSM_embedding_finite_trace_project Hproj match pre_VLSM_projection_transition_item_project (composite_type IM) (composite_type (sub_IM IM (enum index))) (composite_label_sub_projection_option IM (enum index)) (composite_state_sub_projection IM (enum index)) a with | Some y => y :: finite_trace_sub_projection IM (enum index) trX | None => finite_trace_sub_projection IM (enum index) trX end
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
a: transition_item
trX: list transition_item
Hproj: VLSM_embedding (composite_vlsm (sub_IM IM (enum index)) (free_sub_free_constraint IM (free_constraint IM))) (composite_vlsm IM (free_constraint IM)) (lift_sub_label IM (enum index)) (free_sub_free_state IM)
IHtrX: trX = VLSM_embedding_finite_trace_project Hproj (finite_trace_sub_projection IM (enum index) trX)

a :: trX = VLSM_embedding_finite_trace_project Hproj match match match decide (projT1 (l a) ∈ enum index) with | left i_in => Some (composite_label_sub_projection IM (enum index) (l a) i_in) | right _ => None end with | Some lY => Some {| l := lY; input := input a; destination := composite_state_sub_projection IM (enum index) (destination a); output := output a |} | None => None end with | Some y => y :: finite_trace_sub_projection IM (enum index) trX | None => finite_trace_sub_projection IM (enum index) trX end
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
a: transition_item
trX: list transition_item
Hproj: VLSM_embedding (composite_vlsm (sub_IM IM (enum index)) (free_sub_free_constraint IM (free_constraint IM))) (composite_vlsm IM (free_constraint IM)) (lift_sub_label IM (enum index)) (free_sub_free_state IM)
IHtrX: trX = VLSM_embedding_finite_trace_project Hproj (finite_trace_sub_projection IM (enum index) trX)

a :: trX = VLSM_embedding_finite_trace_project Hproj match match match decide (projT1 (l a) ∈ enum index) with | left i_in => Some (composite_label_sub_projection IM (enum index) (l a) i_in) | right _ => None end with | Some lY => Some {| l := lY; input := input a; destination := composite_state_sub_projection IM (enum index) (destination a); output := output a |} | None => None end with | Some y => y :: finite_trace_sub_projection IM (enum index) trX | None => finite_trace_sub_projection IM (enum index) trX end
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
a: transition_item
trX: list transition_item
Hproj: VLSM_embedding (composite_vlsm (sub_IM IM (enum index)) (free_sub_free_constraint IM (free_constraint IM))) (composite_vlsm IM (free_constraint IM)) (lift_sub_label IM (enum index)) (free_sub_free_state IM)
IHtrX: trX = VLSM_embedding_finite_trace_project Hproj (finite_trace_sub_projection IM (enum index) trX)
Hla: projT1 (l a) ∈ enum index

a :: trX = VLSM_embedding_finite_trace_project Hproj ({| l := composite_label_sub_projection IM (enum index) (l a) Hla; input := input a; destination := composite_state_sub_projection IM (enum index) (destination a); output := output a |} :: finite_trace_sub_projection IM (enum index) trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
a: transition_item
trX: list transition_item
Hproj: VLSM_embedding (composite_vlsm (sub_IM IM (enum index)) (free_sub_free_constraint IM (free_constraint IM))) (composite_vlsm IM (free_constraint IM)) (lift_sub_label IM (enum index)) (free_sub_free_state IM)
IHtrX: trX = VLSM_embedding_finite_trace_project Hproj (finite_trace_sub_projection IM (enum index) trX)
Hla: projT1 (l a) ∈ enum index

a = pre_VLSM_embedding_transition_item_project (composite_type (sub_IM IM (enum index))) (composite_type IM) (lift_sub_label IM (enum index)) (free_sub_free_state IM) {| l := composite_label_sub_projection IM (enum index) (l a) Hla; input := input a; destination := composite_state_sub_projection IM (enum index) (destination a); output := output a |}
by destruct a, l as [i li]. Qed.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
is, final_state: state (equivocators_no_equivocations_vlsm IM)
tr: list (composite_transition_item (equivocator_IM IM))
Hproper: not_equivocating_equivocator_descriptors IM final_descriptors final_state
Htr: finite_valid_trace_from_to (equivocators_no_equivocations_vlsm IM) is final_state tr

(isX final_stateX : state (free_composite_vlsm IM)) (trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), isX = equivocators_state_project IM initial_descriptors is ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors) ∧ equivocators_state_project IM final_descriptors final_state = final_stateX ∧ finite_valid_trace_from_to Free isX final_stateX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
is, final_state: state (equivocators_no_equivocations_vlsm IM)
tr: list (composite_transition_item (equivocator_IM IM))
Hproper: not_equivocating_equivocator_descriptors IM final_descriptors final_state
Htr: finite_valid_trace_from_to (equivocators_no_equivocations_vlsm IM) is final_state tr

(isX final_stateX : state (free_composite_vlsm IM)) (trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), isX = equivocators_state_project IM initial_descriptors is ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors) ∧ equivocators_state_project IM final_descriptors final_state = final_stateX ∧ finite_valid_trace_from_to Free isX final_stateX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
is, final_state: state (equivocators_no_equivocations_vlsm IM)
tr: list (composite_transition_item (equivocator_IM IM))
Hproper: not_equivocating_equivocator_descriptors IM final_descriptors final_state
Htr: finite_valid_trace_from_to (equivocators_no_equivocations_vlsm IM) is final_state tr
Hfinal_state: finite_trace_last is tr = final_state

(isX final_stateX : state (free_composite_vlsm IM)) (trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), isX = equivocators_state_project IM initial_descriptors is ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors) ∧ equivocators_state_project IM final_descriptors final_state = final_stateX ∧ finite_valid_trace_from_to Free isX final_stateX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
is, final_state: state (equivocators_no_equivocations_vlsm IM)
tr: list (composite_transition_item (equivocator_IM IM))
Hproper: not_equivocating_equivocator_descriptors IM final_descriptors final_state
Htr: finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr
Hfinal_state: finite_trace_last is tr = final_state

(isX final_stateX : state (free_composite_vlsm IM)) (trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), isX = equivocators_state_project IM initial_descriptors is ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors) ∧ equivocators_state_project IM final_descriptors final_state = final_stateX ∧ finite_valid_trace_from_to Free isX final_stateX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
is: state (equivocators_no_equivocations_vlsm IM)
tr: list (composite_transition_item (equivocator_IM IM))
Hproper: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr

(isX final_stateX : state (free_composite_vlsm IM)) (trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), isX = equivocators_state_project IM initial_descriptors is ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors) ∧ equivocators_state_project IM final_descriptors (finite_trace_last is tr) = final_stateX ∧ finite_valid_trace_from_to Free isX final_stateX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
is: state (equivocators_no_equivocations_vlsm IM)
tr: list (composite_transition_item (equivocator_IM IM))
Hproper: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr
Hsim: (sY : state Free) (trY : list transition_item), equivocators_partial_trace_project IM final_descriptors ( is, tr) = Some (sY, trY) → finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr → finite_valid_trace_from Free sY trY

(isX final_stateX : state (free_composite_vlsm IM)) (trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), isX = equivocators_state_project IM initial_descriptors is ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors) ∧ equivocators_state_project IM final_descriptors (finite_trace_last is tr) = final_stateX ∧ finite_valid_trace_from_to Free isX final_stateX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
is: state (equivocators_no_equivocations_vlsm IM)
tr: list (composite_transition_item (equivocator_IM IM))
Hproper: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr
Hsim: (sY : state Free) (trY : list transition_item), (if decide (not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)) then match equivocators_trace_project IM final_descriptors tr with | Some (trX, initial_descriptors) => Some (equivocators_state_project IM initial_descriptors is, trX) | None => None end else None) = Some (sY, trY) → finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr → finite_valid_trace_from Free sY trY

(isX final_stateX : state (free_composite_vlsm IM)) (trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), isX = equivocators_state_project IM initial_descriptors is ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors) ∧ equivocators_state_project IM final_descriptors (finite_trace_last is tr) = final_stateX ∧ finite_valid_trace_from_to Free isX final_stateX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
is: state (equivocators_no_equivocations_vlsm IM)
tr: list (composite_transition_item (equivocator_IM IM))
Hproper: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr
Hsim: (sY : state Free) (trY : list transition_item), match equivocators_trace_project IM final_descriptors tr with | Some (trX, initial_descriptors) => Some (equivocators_state_project IM initial_descriptors is, trX) | None => None end = Some (sY, trY) → finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr → finite_valid_trace_from Free sY trY

(isX final_stateX : state (free_composite_vlsm IM)) (trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), isX = equivocators_state_project IM initial_descriptors is ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors) ∧ equivocators_state_project IM final_descriptors (finite_trace_last is tr) = final_stateX ∧ finite_valid_trace_from_to Free isX final_stateX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
is: state (equivocators_no_equivocations_vlsm IM)
tr: list (composite_transition_item (equivocator_IM IM))
Hproper: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr
Hsim: (sY : state Free) (trY : list transition_item), match equivocators_trace_project IM final_descriptors tr with | Some (trX, initial_descriptors) => Some (equivocators_state_project IM initial_descriptors is, trX) | None => None end = Some (sY, trY) → finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr → finite_valid_trace_from Free sY trY

finite_constrained_trace_from FreeE is tr
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
is: state (equivocators_no_equivocations_vlsm IM)
tr: list (composite_transition_item (equivocator_IM IM))
Hproper: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr
Hsim: (sY : state Free) (trY : list transition_item), match equivocators_trace_project IM final_descriptors tr with | Some (trX, initial_descriptors) => Some (equivocators_state_project IM initial_descriptors is, trX) | None => None end = Some (sY, trY) → finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr → finite_valid_trace_from Free sY trY
HPreFree_tr: finite_constrained_trace_from FreeE is tr
(isX final_stateX : state (free_composite_vlsm IM)) (trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), isX = equivocators_state_project IM initial_descriptors is ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors) ∧ equivocators_state_project IM final_descriptors (finite_trace_last is tr) = final_stateX ∧ finite_valid_trace_from_to Free isX final_stateX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
is: state (equivocators_no_equivocations_vlsm IM)
tr: list (composite_transition_item (equivocator_IM IM))
Hproper: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr
Hsim: (sY : state Free) (trY : list transition_item), match equivocators_trace_project IM final_descriptors tr with | Some (trX, initial_descriptors) => Some (equivocators_state_project IM initial_descriptors is, trX) | None => None end = Some (sY, trY) → finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr → finite_valid_trace_from Free sY trY

finite_constrained_trace_from FreeE is tr
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
is: state (equivocators_no_equivocations_vlsm IM)
tr: list (composite_transition_item (equivocator_IM IM))
Hproper: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr
Hsim: (sY : state Free) (trY : list transition_item), match equivocators_trace_project IM final_descriptors tr with | Some (trX, initial_descriptors) => Some (equivocators_state_project IM initial_descriptors is, trX) | None => None end = Some (sY, trY) → finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr → finite_valid_trace_from Free sY trY

VLSM_incl_part (constrained_vlsm_machine (free_composite_vlsm (equivocator_IM IM)) (equivocators_no_equivocations_constraint IM)) (preloaded_vlsm_machine FreeE (λ _ : message, True))
by apply constrained_preloaded_incl.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
is: state (equivocators_no_equivocations_vlsm IM)
tr: list (composite_transition_item (equivocator_IM IM))
Hproper: not_equivocating_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr
Hsim: (sY : state Free) (trY : list transition_item), match equivocators_trace_project IM final_descriptors tr with | Some (trX, initial_descriptors) => Some (equivocators_state_project IM initial_descriptors is, trX) | None => None end = Some (sY, trY) → finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr → finite_valid_trace_from Free sY trY
HPreFree_tr: finite_constrained_trace_from FreeE is tr

(isX final_stateX : state (free_composite_vlsm IM)) (trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), isX = equivocators_state_project IM initial_descriptors is ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors) ∧ equivocators_state_project IM final_descriptors (finite_trace_last is tr) = final_stateX ∧ finite_valid_trace_from_to Free isX final_stateX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
is: state (equivocators_no_equivocations_vlsm IM)
tr: list (composite_transition_item (equivocator_IM IM))
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr
Hsim: (sY : state Free) (trY : list transition_item), match equivocators_trace_project IM final_descriptors tr with | Some (trX, initial_descriptors) => Some (equivocators_state_project IM initial_descriptors is, trX) | None => None end = Some (sY, trY) → finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr → finite_valid_trace_from Free sY trY
HPreFree_tr: finite_constrained_trace_from FreeE is tr

(isX final_stateX : state (free_composite_vlsm IM)) (trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), isX = equivocators_state_project IM initial_descriptors is ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors) ∧ equivocators_state_project IM final_descriptors (finite_trace_last is tr) = final_stateX ∧ finite_valid_trace_from_to Free isX final_stateX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
is: state (equivocators_no_equivocations_vlsm IM)
tr: list (composite_transition_item (equivocator_IM IM))
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr
Hsim: (sY : state Free) (trY : list transition_item), match equivocators_trace_project IM final_descriptors tr with | Some (trX, initial_descriptors) => Some (equivocators_state_project IM initial_descriptors is, trX) | None => None end = Some (sY, trY) → finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr → finite_valid_trace_from Free sY trY
HPreFree_tr: finite_constrained_trace_from FreeE is tr
trX: list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)
Hinitial_desciptors: proper_equivocator_descriptors IM initial_descriptors is
Hfinal_project: equivocators_state_project IM final_descriptors (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX

(isX final_stateX : state (free_composite_vlsm IM)) (trX : list (composite_transition_item IM)) (initial_descriptors : equivocator_descriptors IM), isX = equivocators_state_project IM initial_descriptors is ∧ proper_equivocator_descriptors IM initial_descriptors is ∧ equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors) ∧ equivocators_state_project IM final_descriptors (finite_trace_last is tr) = final_stateX ∧ finite_valid_trace_from_to Free isX final_stateX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
is: state (equivocators_no_equivocations_vlsm IM)
tr: list (composite_transition_item (equivocator_IM IM))
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr
Hsim: (sY : state Free) (trY : list transition_item), match equivocators_trace_project IM final_descriptors tr with | Some (trX, initial_descriptors) => Some (equivocators_state_project IM initial_descriptors is, trX) | None => None end = Some (sY, trY) → finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr → finite_valid_trace_from Free sY trY
HPreFree_tr: finite_constrained_trace_from FreeE is tr
trX: list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)
Hinitial_desciptors: proper_equivocator_descriptors IM initial_descriptors is
Hfinal_project: equivocators_state_project IM final_descriptors (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX

(final_stateX : state (free_composite_vlsm IM)) (trX0 : list (composite_transition_item IM)) (initial_descriptors0 : equivocator_descriptors IM), ?isX = equivocators_state_project IM initial_descriptors0 is ∧ proper_equivocator_descriptors IM initial_descriptors0 is ∧ equivocators_trace_project IM final_descriptors tr = Some (trX0, initial_descriptors0) ∧ equivocators_state_project IM final_descriptors (finite_trace_last is tr) = final_stateX ∧ finite_valid_trace_from_to Free ?isX final_stateX trX0
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
is: state (equivocators_no_equivocations_vlsm IM)
tr: list (composite_transition_item (equivocator_IM IM))
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr
Hsim: (sY : state Free) (trY : list transition_item), match equivocators_trace_project IM final_descriptors tr with | Some (trX, initial_descriptors) => Some (equivocators_state_project IM initial_descriptors is, trX) | None => None end = Some (sY, trY) → finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr → finite_valid_trace_from Free sY trY
HPreFree_tr: finite_constrained_trace_from FreeE is tr
trX: list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)
Hinitial_desciptors: proper_equivocator_descriptors IM initial_descriptors is
Hfinal_project: equivocators_state_project IM final_descriptors (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX

(trX0 : list (composite_transition_item IM)) (initial_descriptors0 : equivocator_descriptors IM), ?isX = equivocators_state_project IM initial_descriptors0 is ∧ proper_equivocator_descriptors IM initial_descriptors0 is ∧ equivocators_trace_project IM final_descriptors tr = Some (trX0, initial_descriptors0) ∧ equivocators_state_project IM final_descriptors (finite_trace_last is tr) = ?final_stateX ∧ finite_valid_trace_from_to Free ?isX ?final_stateX trX0
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
is: state (equivocators_no_equivocations_vlsm IM)
tr: list (composite_transition_item (equivocator_IM IM))
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr
Hsim: (sY : state Free) (trY : list transition_item), match equivocators_trace_project IM final_descriptors tr with | Some (trX, initial_descriptors) => Some (equivocators_state_project IM initial_descriptors is, trX) | None => None end = Some (sY, trY) → finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr → finite_valid_trace_from Free sY trY
HPreFree_tr: finite_constrained_trace_from FreeE is tr
trX: list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)
Hinitial_desciptors: proper_equivocator_descriptors IM initial_descriptors is
Hfinal_project: equivocators_state_project IM final_descriptors (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX

initial_descriptors0 : equivocator_descriptors IM, ?isX = equivocators_state_project IM initial_descriptors0 is ∧ proper_equivocator_descriptors IM initial_descriptors0 is ∧ equivocators_trace_project IM final_descriptors tr = Some (?trX, initial_descriptors0) ∧ equivocators_state_project IM final_descriptors (finite_trace_last is tr) = ?final_stateX ∧ finite_valid_trace_from_to Free ?isX ?final_stateX ?trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
is: state (equivocators_no_equivocations_vlsm IM)
tr: list (composite_transition_item (equivocator_IM IM))
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr
Hsim: (sY : state Free) (trY : list transition_item), match equivocators_trace_project IM final_descriptors tr with | Some (trX, initial_descriptors) => Some (equivocators_state_project IM initial_descriptors is, trX) | None => None end = Some (sY, trY) → finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr → finite_valid_trace_from Free sY trY
HPreFree_tr: finite_constrained_trace_from FreeE is tr
trX: list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)
Hinitial_desciptors: proper_equivocator_descriptors IM initial_descriptors is
Hfinal_project: equivocators_state_project IM final_descriptors (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX

?isX = equivocators_state_project IM ?initial_descriptors is ∧ proper_equivocator_descriptors IM ?initial_descriptors is ∧ equivocators_trace_project IM final_descriptors tr = Some (?trX, ?initial_descriptors) ∧ equivocators_state_project IM final_descriptors (finite_trace_last is tr) = ?final_stateX ∧ finite_valid_trace_from_to Free ?isX ?final_stateX ?trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
is: state (equivocators_no_equivocations_vlsm IM)
tr: list (composite_transition_item (equivocator_IM IM))
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr
Hsim: (sY : state Free) (trY : list transition_item), match equivocators_trace_project IM final_descriptors tr with | Some (trX, initial_descriptors) => Some (equivocators_state_project IM initial_descriptors is, trX) | None => None end = Some (sY, trY) → finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr → finite_valid_trace_from Free sY trY
HPreFree_tr: finite_constrained_trace_from FreeE is tr
trX: list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)
Hinitial_desciptors: proper_equivocator_descriptors IM initial_descriptors is
Hfinal_project: equivocators_state_project IM final_descriptors (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX

proper_equivocator_descriptors IM ?initial_descriptors is ∧ equivocators_trace_project IM final_descriptors tr = Some (?trX, ?initial_descriptors) ∧ equivocators_state_project IM final_descriptors (finite_trace_last is tr) = ?final_stateX ∧ finite_valid_trace_from_to Free (equivocators_state_project IM ?initial_descriptors is) ?final_stateX ?trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
is: state (equivocators_no_equivocations_vlsm IM)
tr: list (composite_transition_item (equivocator_IM IM))
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr
Hsim: (sY : state Free) (trY : list transition_item), match equivocators_trace_project IM final_descriptors tr with | Some (trX, initial_descriptors) => Some (equivocators_state_project IM initial_descriptors is, trX) | None => None end = Some (sY, trY) → finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr → finite_valid_trace_from Free sY trY
HPreFree_tr: finite_constrained_trace_from FreeE is tr
trX: list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)
Hinitial_desciptors: proper_equivocator_descriptors IM initial_descriptors is
Hfinal_project: equivocators_state_project IM final_descriptors (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX

equivocators_trace_project IM final_descriptors tr = Some (?trX, initial_descriptors) ∧ equivocators_state_project IM final_descriptors (finite_trace_last is tr) = ?final_stateX ∧ finite_valid_trace_from_to Free (equivocators_state_project IM initial_descriptors is) ?final_stateX ?trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
is: state (equivocators_no_equivocations_vlsm IM)
tr: list (composite_transition_item (equivocator_IM IM))
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr
Hsim: (sY : state Free) (trY : list transition_item), match equivocators_trace_project IM final_descriptors tr with | Some (trX, initial_descriptors) => Some (equivocators_state_project IM initial_descriptors is, trX) | None => None end = Some (sY, trY) → finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr → finite_valid_trace_from Free sY trY
HPreFree_tr: finite_constrained_trace_from FreeE is tr
trX: list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)
Hinitial_desciptors: proper_equivocator_descriptors IM initial_descriptors is
Hfinal_project: equivocators_state_project IM final_descriptors (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX

equivocators_state_project IM final_descriptors (finite_trace_last is tr) = ?final_stateX ∧ finite_valid_trace_from_to Free (equivocators_state_project IM initial_descriptors is) ?final_stateX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
is: state (equivocators_no_equivocations_vlsm IM)
tr: list (composite_transition_item (equivocator_IM IM))
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr
Hsim: (sY : state Free) (trY : list transition_item), match equivocators_trace_project IM final_descriptors tr with | Some (trX, initial_descriptors) => Some (equivocators_state_project IM initial_descriptors is, trX) | None => None end = Some (sY, trY) → finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr → finite_valid_trace_from Free sY trY
HPreFree_tr: finite_constrained_trace_from FreeE is tr
trX: list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)
Hinitial_desciptors: proper_equivocator_descriptors IM initial_descriptors is
Hfinal_project: equivocators_state_project IM final_descriptors (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX

finite_valid_trace_from_to Free (equivocators_state_project IM initial_descriptors is) (finite_trace_last (equivocators_state_project IM initial_descriptors is) trX) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
is: state (equivocators_no_equivocations_vlsm IM)
tr: list (composite_transition_item (equivocator_IM IM))
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr
Hsim: (sY : state Free) (trY : list transition_item), match equivocators_trace_project IM final_descriptors tr with | Some (trX, initial_descriptors) => Some (equivocators_state_project IM initial_descriptors is, trX) | None => None end = Some (sY, trY) → finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr → finite_valid_trace_from Free sY trY
HPreFree_tr: finite_constrained_trace_from FreeE is tr
trX: list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)
Hinitial_desciptors: proper_equivocator_descriptors IM initial_descriptors is
Hfinal_project: equivocators_state_project IM final_descriptors (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX

finite_valid_trace_from (free_composite_vlsm IM) (equivocators_state_project IM initial_descriptors is) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
final_descriptors: equivocator_descriptors IM
is: state (equivocators_no_equivocations_vlsm IM)
tr: list (composite_transition_item (equivocator_IM IM))
Hproper: proper_equivocator_descriptors IM final_descriptors (finite_trace_last is tr)
Htr: finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr
Hsim: (sY : state Free) (trY : list transition_item), match equivocators_trace_project IM final_descriptors tr with | Some (trX, initial_descriptors) => Some (equivocators_state_project IM initial_descriptors is, trX) | None => None end = Some (sY, trY) → finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) is tr → finite_valid_trace_from Free sY trY
HPreFree_tr: finite_constrained_trace_from FreeE is tr
trX: list (composite_transition_item IM)
initial_descriptors: equivocator_descriptors IM
Htr_project: equivocators_trace_project IM final_descriptors tr = Some (trX, initial_descriptors)
Hinitial_desciptors: proper_equivocator_descriptors IM initial_descriptors is
Hfinal_project: equivocators_state_project IM final_descriptors (finite_trace_last is tr) = finite_trace_last (equivocators_state_project IM initial_descriptors is) trX

match equivocators_trace_project IM final_descriptors tr with | Some (trX, initial_descriptors) => Some (equivocators_state_project IM initial_descriptors is, trX) | None => None end = Some (equivocators_state_project IM initial_descriptors is, trX)
by rewrite Htr_project. Qed.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message

VLSM_projection_type PreFreeE (composite_type IM) (equivocators_total_label_project IM) (equivocators_total_state_project IM)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message

VLSM_projection_type PreFreeE (composite_type IM) (equivocators_total_label_project IM) (equivocators_total_state_project IM)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message

weak_projection_transition_consistency_None PreFreeE (composite_type IM) (equivocators_total_label_project IM) (equivocators_total_state_project IM)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
l: label PreFreeE
Hl: equivocators_total_label_project IM l = None
s: state PreFreeE
om: option message
s': state PreFreeE
om': option message
Hv: valid l (s, om)
Ht: transition l (s, om) = (s', om')

equivocators_total_state_project IM s' = equivocators_total_state_project IM s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
sn: state (IM i)
Hl: equivocators_total_label_project IM (existT i (Spawn sn)) = None
s: state PreFreeE
om: option message
s': state PreFreeE
om': option message
Hv: initial_state_prop sn ∧ om = None
Ht: (state_update (equivocator_IM IM) s i (equivocator_state_extend (s i) sn), None) = (s', om')

equivocators_total_state_project IM s' = equivocators_total_state_project IM s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
ji: nat
li: label (IM i)
Hl: equivocators_total_label_project IM (existT i (ContinueWith ji li)) = None
s: state PreFreeE
om: option message
s': state PreFreeE
om': option message
Hv: match equivocator_state_project (s i) ji with | Some si => valid li (si, om) | None => False end
Ht: (let (si', om') := match equivocator_state_project (s i) ji with | Some si => let (si', om') := transition li (si, om) in (equivocator_state_update (s i) ji si', om') | None => (s i, om) end in (state_update (equivocator_IM IM) s i si', om')) = (s', om')
equivocators_total_state_project IM s' = equivocators_total_state_project IM s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
ji: nat
li: label (IM i)
Hl: equivocators_total_label_project IM (existT i (ForkWith ji li)) = None
s: state PreFreeE
om: option message
s': state PreFreeE
om': option message
Hv: match equivocator_state_project (s i) ji with | Some si => valid li (si, om) | None => False end
Ht: (let (si', om') := match equivocator_state_project (s i) ji with | Some si => let (si', om') := transition li (si, om) in (equivocator_state_extend (s i) si', om') | None => (s i, om) end in (state_update (equivocator_IM IM) s i si', om')) = (s', om')
equivocators_total_state_project IM s' = equivocators_total_state_project IM s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
sn: state (IM i)
Hl: equivocators_total_label_project IM (existT i (Spawn sn)) = None
s: state PreFreeE
om: option message
s': state PreFreeE
om': option message
Hv: initial_state_prop sn ∧ om = None
Ht: (state_update (equivocator_IM IM) s i (equivocator_state_extend (s i) sn), None) = (s', om')

equivocators_total_state_project IM s' = equivocators_total_state_project IM s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
sn: state (IM i)
Hl: equivocators_total_label_project IM (existT i (Spawn sn)) = None
s: state PreFreeE
om: option message
s': state PreFreeE
om': option message
Hv: initial_state_prop sn ∧ om = None

equivocators_total_state_project IM (state_update (equivocator_IM IM) s i (equivocator_state_extend (s i) sn)) = equivocators_total_state_project IM s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
sn: state (IM i)
Hl: equivocators_total_label_project IM (existT i (Spawn sn)) = None
s: state PreFreeE
om: option message
s': state PreFreeE
om': option message
Hv: initial_state_prop sn ∧ om = None

equivocators_state_project IM (zero_descriptor IM) (state_update (equivocator_IM IM) s i (equivocator_state_extend (s i) sn)) = equivocators_state_project IM (zero_descriptor IM) s
by state_update_simpl.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
ji: nat
li: label (IM i)
Hl: equivocators_total_label_project IM (existT i (ContinueWith ji li)) = None
s: state PreFreeE
om: option message
s': state PreFreeE
om': option message
Hv: match equivocator_state_project (s i) ji with | Some si => valid li (si, om) | None => False end
Ht: (let (si', om') := match equivocator_state_project (s i) ji with | Some si => let (si', om') := transition li (si, om) in (equivocator_state_update (s i) ji si', om') | None => (s i, om) end in (state_update (equivocator_IM IM) s i si', om')) = (s', om')

equivocators_total_state_project IM s' = equivocators_total_state_project IM s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
ji: nat
li: label (IM i)
Hl: option_map (existT i) match ji with | 0 => Some li | S _ => None end = None
s: state PreFreeE
om: option message
s': state PreFreeE
om': option message
Hv: match equivocator_state_project (s i) ji with | Some si => valid li (si, om) | None => False end
Ht: (let (si', om') := match equivocator_state_project (s i) ji with | Some si => let (si', om') := transition li (si, om) in (equivocator_state_update (s i) ji si', om') | None => (s i, om) end in (state_update (equivocator_IM IM) s i si', om')) = (s', om')

equivocators_total_state_project IM s' = equivocators_total_state_project IM s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
ji: nat
li: label (IM i)
Hl: option_map (existT i) None = None
s: state PreFreeE
om: option message
s': state PreFreeE
om': option message
Hv: match equivocator_state_project (s i) (S ji) with | Some si => valid li (si, om) | None => False end
Ht: (let (si', om') := match equivocator_state_project (s i) (S ji) with | Some si => let (si', om') := transition li (si, om) in (equivocator_state_update (s i) (S ji) si', om') | None => (s i, om) end in (state_update (equivocator_IM IM) s i si', om')) = (s', om')

equivocators_total_state_project IM s' = equivocators_total_state_project IM s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
ji: nat
li: label (IM i)
s: state PreFreeE
om: option message
s': state PreFreeE
om': option message
Hv: match equivocator_state_project (s i) (S ji) with | Some si => valid li (si, om) | None => False end
Ht: (let (si', om') := match equivocator_state_project (s i) (S ji) with | Some si => let (si', om') := transition li (si, om) in (equivocator_state_update (s i) (S ji) si', om') | None => (s i, om) end in (state_update (equivocator_IM IM) s i si', om')) = (s', om')

equivocators_total_state_project IM s' = equivocators_total_state_project IM s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
ji: nat
li: label (IM i)
s: state PreFreeE
om: option message
s': state PreFreeE
om': option message
si: state (IM i)
Hv: valid li (si, om)
Ht: (let (si', om') := let (si', om') := transition li (si, om) in (equivocator_state_update (s i) (S ji) si', om') in (state_update (equivocator_IM IM) s i si', om')) = (s', om')

equivocators_total_state_project IM s' = equivocators_total_state_project IM s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
ji: nat
li: label (IM i)
s: state PreFreeE
om: option message
s': state PreFreeE
om': option message
si: state (IM i)
Hv: valid li (si, om)
si': state (IM i)
_om': option message
Ht: (state_update (equivocator_IM IM) s i (equivocator_state_update (s i) (S ji) si'), _om') = (s', om')

equivocators_total_state_project IM s' = equivocators_total_state_project IM s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
ji: nat
li: label (IM i)
s: state PreFreeE
om: option message
s': state PreFreeE
om': option message
si: state (IM i)
Hv: valid li (si, om)
si': state (IM i)
_om': option message

equivocators_total_state_project IM (state_update (equivocator_IM IM) s i (equivocator_state_update (s i) (S ji) si')) = equivocators_total_state_project IM s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
ji: nat
li: label (IM i)
s: state PreFreeE
om: option message
s': state PreFreeE
om': option message
si: state (IM i)
Hv: valid li (si, om)
si': state (IM i)
_om': option message

equivocators_state_project IM (zero_descriptor IM) (state_update (equivocator_IM IM) s i (equivocator_state_update (s i) (S ji) si')) = equivocators_state_project IM (zero_descriptor IM) s
by state_update_simpl.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
ji: nat
li: label (IM i)
Hl: equivocators_total_label_project IM (existT i (ForkWith ji li)) = None
s: state PreFreeE
om: option message
s': state PreFreeE
om': option message
Hv: match equivocator_state_project (s i) ji with | Some si => valid li (si, om) | None => False end
Ht: (let (si', om') := match equivocator_state_project (s i) ji with | Some si => let (si', om') := transition li (si, om) in (equivocator_state_extend (s i) si', om') | None => (s i, om) end in (state_update (equivocator_IM IM) s i si', om')) = (s', om')

equivocators_total_state_project IM s' = equivocators_total_state_project IM s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
ji: nat
li: label (IM i)
Hl: equivocators_total_label_project IM (existT i (ForkWith ji li)) = None
s: state PreFreeE
om: option message
s': state PreFreeE
om': option message
si: state (IM i)
Hv: valid li (si, om)
Ht: (let (si', om') := let (si', om') := transition li (si, om) in (equivocator_state_extend (s i) si', om') in (state_update (equivocator_IM IM) s i si', om')) = (s', om')

equivocators_total_state_project IM s' = equivocators_total_state_project IM s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
ji: nat
li: label (IM i)
Hl: equivocators_total_label_project IM (existT i (ForkWith ji li)) = None
s: state PreFreeE
om: option message
s': state PreFreeE
om': option message
si: state (IM i)
Hv: valid li (si, om)
si': state (IM i)
_om': option message
Ht: (state_update (equivocator_IM IM) s i (equivocator_state_extend (s i) si'), _om') = (s', om')

equivocators_total_state_project IM s' = equivocators_total_state_project IM s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
ji: nat
li: label (IM i)
Hl: equivocators_total_label_project IM (existT i (ForkWith ji li)) = None
s: state PreFreeE
om: option message
s': state PreFreeE
om': option message
si: state (IM i)
Hv: valid li (si, om)
si': state (IM i)
_om': option message

equivocators_total_state_project IM (state_update (equivocator_IM IM) s i (equivocator_state_extend (s i) si')) = equivocators_total_state_project IM s
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
i: index
ji: nat
li: label (IM i)
Hl: equivocators_total_label_project IM (existT i (ForkWith ji li)) = None
s: state PreFreeE
om: option message
s': state PreFreeE
om': option message
si: state (IM i)
Hv: valid li (si, om)
si': state (IM i)
_om': option message

equivocators_state_project IM (zero_descriptor IM) (state_update (equivocator_IM IM) s i (equivocator_state_extend (s i) si')) = equivocators_state_project IM (zero_descriptor IM) s
by state_update_simpl. Qed.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message

VLSM_projection (equivocators_no_equivocations_vlsm IM) Free (equivocators_total_label_project IM) (equivocators_total_state_project IM)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message

VLSM_projection (equivocators_no_equivocations_vlsm IM) Free (equivocators_total_label_project IM) (equivocators_total_state_project IM)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message

(sX : state (equivocators_no_equivocations_vlsm IM)) (trX : list transition_item), finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) sX trX → equivocators_total_state_project IM (finite_trace_last sX trX) = finite_trace_last (equivocators_total_state_project IM sX) (pre_VLSM_projection_finite_trace_project (equivocators_no_equivocations_vlsm IM) Free (equivocators_total_label_project IM) (equivocators_total_state_project IM) trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
(sX : state (equivocators_no_equivocations_vlsm IM)) (trX : list transition_item), finite_valid_trace (equivocators_no_equivocations_vlsm IM) sX trX → finite_valid_trace Free (equivocators_total_state_project IM sX) (pre_VLSM_projection_finite_trace_project (equivocators_no_equivocations_vlsm IM) Free (equivocators_total_label_project IM) (equivocators_total_state_project IM) trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message

(sX : state (equivocators_no_equivocations_vlsm IM)) (trX : list transition_item), finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) sX trX → equivocators_total_state_project IM (finite_trace_last sX trX) = finite_trace_last (equivocators_total_state_project IM sX) (pre_VLSM_projection_finite_trace_project (equivocators_no_equivocations_vlsm IM) Free (equivocators_total_label_project IM) (equivocators_total_state_project IM) trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
sX: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
Htr: finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) sX trX

equivocators_total_state_project IM (finite_trace_last sX trX) = finite_trace_last (equivocators_total_state_project IM sX) (pre_VLSM_projection_finite_trace_project (equivocators_no_equivocations_vlsm IM) Free (equivocators_total_label_project IM) (equivocators_total_state_project IM) trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
sX: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
Htr: finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) sX trX

finite_valid_trace_from PreFreeE sX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
sX: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
Htr: finite_valid_trace_from (equivocators_no_equivocations_vlsm IM) sX trX

VLSM_incl_part (constrained_vlsm_machine (free_composite_vlsm (equivocator_IM IM)) (equivocators_no_equivocations_constraint IM)) (preloaded_vlsm_machine FreeE (λ _ : message, True))
by apply constrained_preloaded_incl.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message

(sX : state (equivocators_no_equivocations_vlsm IM)) (trX : list transition_item), finite_valid_trace (equivocators_no_equivocations_vlsm IM) sX trX → finite_valid_trace Free (equivocators_total_state_project IM sX) (pre_VLSM_projection_finite_trace_project (equivocators_no_equivocations_vlsm IM) Free (equivocators_total_label_project IM) (equivocators_total_state_project IM) trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
sX: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
Htr: finite_valid_trace (equivocators_no_equivocations_vlsm IM) sX trX

finite_valid_trace Free (equivocators_total_state_project IM sX) (pre_VLSM_projection_finite_trace_project (equivocators_no_equivocations_vlsm IM) Free (equivocators_total_label_project IM) (equivocators_total_state_project IM) trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
sX: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
Htr: finite_valid_trace (equivocators_no_equivocations_vlsm IM) sX trX

finite_constrained_trace FreeE sX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
sX: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
Htr: finite_valid_trace (equivocators_no_equivocations_vlsm IM) sX trX
Hpre_tr: finite_constrained_trace FreeE sX trX
finite_valid_trace Free (equivocators_total_state_project IM sX) (pre_VLSM_projection_finite_trace_project (equivocators_no_equivocations_vlsm IM) Free (equivocators_total_label_project IM) (equivocators_total_state_project IM) trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
sX: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
Htr: finite_valid_trace (equivocators_no_equivocations_vlsm IM) sX trX

finite_constrained_trace FreeE sX trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
sX: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
Htr: finite_valid_trace (equivocators_no_equivocations_vlsm IM) sX trX

VLSM_incl_part (constrained_vlsm_machine (free_composite_vlsm (equivocator_IM IM)) (equivocators_no_equivocations_constraint IM)) (preloaded_vlsm_machine FreeE (λ _ : message, True))
by apply constrained_preloaded_incl.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
sX: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
Htr: finite_valid_trace (equivocators_no_equivocations_vlsm IM) sX trX
Hpre_tr: finite_constrained_trace FreeE sX trX

finite_valid_trace Free (equivocators_total_state_project IM sX) (pre_VLSM_projection_finite_trace_project (equivocators_no_equivocations_vlsm IM) Free (equivocators_total_label_project IM) (equivocators_total_state_project IM) trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
sX: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
Htr: finite_valid_trace (equivocators_no_equivocations_vlsm IM) sX trX
Hpre_tr: finite_constrained_trace FreeE sX trX
Hsim: equivocators_partial_trace_project IM (zero_descriptor IM) ( sX, trX) = Some (equivocators_total_state_project IM sX, equivocators_total_trace_project IM trX) → finite_valid_trace (equivocators_no_equivocations_vlsm IM) sX trX → finite_valid_trace Free (equivocators_total_state_project IM sX) (equivocators_total_trace_project IM trX)

finite_valid_trace Free (equivocators_total_state_project IM sX) (pre_VLSM_projection_finite_trace_project (equivocators_no_equivocations_vlsm IM) Free (equivocators_total_label_project IM) (equivocators_total_state_project IM) trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
sX: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
Htr: finite_valid_trace (equivocators_no_equivocations_vlsm IM) sX trX
Hpre_tr: finite_constrained_trace FreeE sX trX
Hsim: equivocators_partial_trace_project IM (zero_descriptor IM) ( sX, trX) = Some (equivocators_total_state_project IM sX, equivocators_total_trace_project IM trX) → finite_valid_trace (equivocators_no_equivocations_vlsm IM) sX trX → finite_valid_trace Free (equivocators_total_state_project IM sX) (equivocators_total_trace_project IM trX)

equivocators_partial_trace_project IM (zero_descriptor IM) (sX, trX) = Some (equivocators_total_state_project IM sX, equivocators_total_trace_project IM trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
sX: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
Htr: finite_valid_trace (equivocators_no_equivocations_vlsm IM) sX trX
Hpre_tr: finite_constrained_trace FreeE sX trX
Hsim: finite_valid_trace (equivocators_no_equivocations_vlsm IM) sX trX → finite_valid_trace Free (equivocators_total_state_project IM sX) (equivocators_total_trace_project IM trX)
finite_valid_trace Free (equivocators_total_state_project IM sX) (pre_VLSM_projection_finite_trace_project (equivocators_no_equivocations_vlsm IM) Free (equivocators_total_label_project IM) (equivocators_total_state_project IM) trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
sX: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
Htr: finite_valid_trace (equivocators_no_equivocations_vlsm IM) sX trX
Hpre_tr: finite_constrained_trace FreeE sX trX
Hsim: equivocators_partial_trace_project IM (zero_descriptor IM) ( sX, trX) = Some (equivocators_total_state_project IM sX, equivocators_total_trace_project IM trX) → finite_valid_trace (equivocators_no_equivocations_vlsm IM) sX trX → finite_valid_trace Free (equivocators_total_state_project IM sX) (equivocators_total_trace_project IM trX)

equivocators_partial_trace_project IM (zero_descriptor IM) (sX, trX) = Some (equivocators_total_state_project IM sX, equivocators_total_trace_project IM trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
sX: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
Htr: finite_valid_trace (equivocators_no_equivocations_vlsm IM) sX trX
Hpre_tr: finite_constrained_trace FreeE sX trX
Hsim: equivocators_partial_trace_project IM (zero_descriptor IM) ( sX, trX) = Some (equivocators_total_state_project IM sX, equivocators_total_trace_project IM trX) → finite_valid_trace (equivocators_no_equivocations_vlsm IM) sX trX → finite_valid_trace Free (equivocators_total_state_project IM sX) (equivocators_total_trace_project IM trX)

(if decide (not_equivocating_equivocator_descriptors IM (zero_descriptor IM) (finite_trace_last sX trX)) then match equivocators_trace_project IM (zero_descriptor IM) trX with | Some (trX, initial_descriptors) => Some (equivocators_state_project IM initial_descriptors sX, trX) | None => None end else None) = Some (equivocators_total_state_project IM sX, equivocators_total_trace_project IM trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
sX: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
Htr: finite_valid_trace (equivocators_no_equivocations_vlsm IM) sX trX
Hpre_tr: finite_constrained_trace FreeE sX trX
Hsim: equivocators_partial_trace_project IM (zero_descriptor IM) ( sX, trX) = Some (equivocators_total_state_project IM sX, equivocators_total_trace_project IM trX) → finite_valid_trace (equivocators_no_equivocations_vlsm IM) sX trX → finite_valid_trace Free (equivocators_total_state_project IM sX) (equivocators_total_trace_project IM trX)

match equivocators_trace_project IM (zero_descriptor IM) trX with | Some (trX, initial_descriptors) => Some (equivocators_state_project IM initial_descriptors sX, trX) | None => None end = Some (equivocators_total_state_project IM sX, equivocators_total_trace_project IM trX)
by rewrite (equivocators_total_trace_project_characterization IM (proj1 Hpre_tr)).
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
sX: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
Htr: finite_valid_trace (equivocators_no_equivocations_vlsm IM) sX trX
Hpre_tr: finite_constrained_trace FreeE sX trX
Hsim: finite_valid_trace (equivocators_no_equivocations_vlsm IM) sX trX → finite_valid_trace Free (equivocators_total_state_project IM sX) (equivocators_total_trace_project IM trX)

finite_valid_trace Free (equivocators_total_state_project IM sX) (pre_VLSM_projection_finite_trace_project (equivocators_no_equivocations_vlsm IM) Free (equivocators_total_label_project IM) (equivocators_total_state_project IM) trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
sX: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
Htr: finite_valid_trace Free (equivocators_total_state_project IM sX) (equivocators_total_trace_project IM trX)
Hpre_tr: finite_constrained_trace FreeE sX trX
Hsim: finite_valid_trace (equivocators_no_equivocations_vlsm IM) sX trX → finite_valid_trace Free (equivocators_total_state_project IM sX) (equivocators_total_trace_project IM trX)

finite_valid_trace Free (equivocators_total_state_project IM sX) (pre_VLSM_projection_finite_trace_project (equivocators_no_equivocations_vlsm IM) Free (equivocators_total_label_project IM) (equivocators_total_state_project IM) trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
sX: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
Htr: finite_valid_trace Free (equivocators_total_state_project IM sX) (equivocators_total_trace_project IM trX)
Hpre_tr: finite_constrained_trace FreeE sX trX
Hsim: finite_valid_trace (equivocators_no_equivocations_vlsm IM) sX trX → finite_valid_trace Free (equivocators_total_state_project IM sX) (equivocators_total_trace_project IM trX)
tr: list transition_item
Heqtr: tr = pre_VLSM_projection_finite_trace_project (equivocators_no_equivocations_vlsm IM) Free (equivocators_total_label_project IM) (equivocators_total_state_project IM) trX

finite_valid_trace Free (equivocators_total_state_project IM sX) tr
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
sX: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
Htr: finite_valid_trace Free (equivocators_total_state_project IM sX) (equivocators_total_trace_project IM trX)
Hpre_tr: finite_constrained_trace FreeE sX trX
Hsim: finite_valid_trace (equivocators_no_equivocations_vlsm IM) sX trX → finite_valid_trace Free (equivocators_total_state_project IM sX) (equivocators_total_trace_project IM trX)
tr: list transition_item
Heqtr: tr = pre_VLSM_projection_finite_trace_project (equivocators_no_equivocations_vlsm IM) Free (equivocators_total_label_project IM) (equivocators_total_state_project IM) trX

equivocators_total_trace_project IM trX = tr
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
sX: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
Htr: finite_valid_trace Free (equivocators_total_state_project IM sX) (equivocators_total_trace_project IM trX)
Hpre_tr: finite_constrained_trace FreeE sX trX
Hsim: finite_valid_trace (equivocators_no_equivocations_vlsm IM) sX trX → finite_valid_trace Free (equivocators_total_state_project IM sX) (equivocators_total_trace_project IM trX)

equivocators_total_trace_project IM trX = pre_VLSM_projection_finite_trace_project (equivocators_no_equivocations_vlsm IM) Free (equivocators_total_label_project IM) (equivocators_total_state_project IM) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
sX: state (equivocators_no_equivocations_vlsm IM)
trX: list transition_item
Htr: finite_valid_trace Free (equivocators_total_state_project IM sX) (equivocators_total_trace_project IM trX)
Hpre_tr: finite_constrained_trace FreeE sX trX
Hsim: finite_valid_trace (equivocators_no_equivocations_vlsm IM) sX trX → finite_valid_trace Free (equivocators_total_state_project IM sX) (equivocators_total_trace_project IM trX)

pre_VLSM_projection_finite_trace_project (equivocators_no_equivocations_vlsm IM) Free (equivocators_total_label_project IM) (equivocators_total_state_project IM) trX = equivocators_total_trace_project IM trX
by eapply (equivocators_total_VLSM_projection_finite_trace_project IM), Hpre_tr. Qed.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message

VLSM_projection PreFreeE PreFree (equivocators_total_label_project IM) (equivocators_total_state_project IM)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message

VLSM_projection PreFreeE PreFree (equivocators_total_label_project IM) (equivocators_total_state_project IM)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
sX: state PreFreeE
trX: list transition_item
H1: finite_valid_trace_from PreFreeE sX trX

equivocators_total_state_project IM (finite_trace_last sX trX) = finite_trace_last (equivocators_total_state_project IM sX) (pre_VLSM_projection_finite_trace_project PreFreeE PreFree (equivocators_total_label_project IM) (equivocators_total_state_project IM) trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
(sX : state PreFreeE) (trX : list transition_item), finite_valid_trace PreFreeE sX trX → finite_valid_trace PreFree (equivocators_total_state_project IM sX) (pre_VLSM_projection_finite_trace_project PreFreeE PreFree (equivocators_total_label_project IM) (equivocators_total_state_project IM) trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
sX: state PreFreeE
trX: list transition_item
H1: finite_valid_trace_from PreFreeE sX trX

equivocators_total_state_project IM (finite_trace_last sX trX) = finite_trace_last (equivocators_total_state_project IM sX) (pre_VLSM_projection_finite_trace_project PreFreeE PreFree (equivocators_total_label_project IM) (equivocators_total_state_project IM) trX)
by apply PreFreeE_Free_vlsm_projection_type.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message

(sX : state PreFreeE) (trX : list transition_item), finite_valid_trace PreFreeE sX trX → finite_valid_trace PreFree (equivocators_total_state_project IM sX) (pre_VLSM_projection_finite_trace_project PreFreeE PreFree (equivocators_total_label_project IM) (equivocators_total_state_project IM) trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
sX: state PreFreeE
trX: list transition_item
Htr: finite_valid_trace PreFreeE sX trX

finite_valid_trace PreFree (equivocators_total_state_project IM sX) (pre_VLSM_projection_finite_trace_project PreFreeE PreFree (equivocators_total_label_project IM) (equivocators_total_state_project IM) trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
sX: state PreFreeE
trX: list transition_item
Htr: finite_valid_trace PreFreeE sX trX
Hsim: equivocators_partial_trace_project IM (zero_descriptor IM) ( sX, trX) = Some (equivocators_total_state_project IM sX, equivocators_total_trace_project IM trX) → finite_valid_trace (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) sX trX → finite_valid_trace (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (equivocators_total_state_project IM sX) (equivocators_total_trace_project IM trX)

finite_valid_trace PreFree (equivocators_total_state_project IM sX) (pre_VLSM_projection_finite_trace_project PreFreeE PreFree (equivocators_total_label_project IM) (equivocators_total_state_project IM) trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
sX: state PreFreeE
trX: list transition_item
Htr: finite_valid_trace PreFreeE sX trX
Hsim: equivocators_partial_trace_project IM (zero_descriptor IM) ( sX, trX) = Some (equivocators_total_state_project IM sX, equivocators_total_trace_project IM trX) → finite_valid_trace (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) sX trX → finite_valid_trace (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (equivocators_total_state_project IM sX) (equivocators_total_trace_project IM trX)

equivocators_partial_trace_project IM (zero_descriptor IM) (sX, trX) = Some (equivocators_total_state_project IM sX, equivocators_total_trace_project IM trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
sX: state PreFreeE
trX: list transition_item
Htr: finite_valid_trace PreFreeE sX trX
Hsim: finite_valid_trace (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) sX trX → finite_valid_trace (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (equivocators_total_state_project IM sX) (equivocators_total_trace_project IM trX)
finite_valid_trace PreFree (equivocators_total_state_project IM sX) (pre_VLSM_projection_finite_trace_project PreFreeE PreFree (equivocators_total_label_project IM) (equivocators_total_state_project IM) trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
sX: state PreFreeE
trX: list transition_item
Htr: finite_valid_trace PreFreeE sX trX
Hsim: equivocators_partial_trace_project IM (zero_descriptor IM) ( sX, trX) = Some (equivocators_total_state_project IM sX, equivocators_total_trace_project IM trX) → finite_valid_trace (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) sX trX → finite_valid_trace (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (equivocators_total_state_project IM sX) (equivocators_total_trace_project IM trX)

equivocators_partial_trace_project IM (zero_descriptor IM) (sX, trX) = Some (equivocators_total_state_project IM sX, equivocators_total_trace_project IM trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
sX: state PreFreeE
trX: list transition_item
Htr: finite_valid_trace PreFreeE sX trX
Hsim: equivocators_partial_trace_project IM (zero_descriptor IM) ( sX, trX) = Some (equivocators_total_state_project IM sX, equivocators_total_trace_project IM trX) → finite_valid_trace (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) sX trX → finite_valid_trace (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (equivocators_total_state_project IM sX) (equivocators_total_trace_project IM trX)

(if decide (not_equivocating_equivocator_descriptors IM (zero_descriptor IM) (finite_trace_last sX trX)) then match equivocators_trace_project IM (zero_descriptor IM) trX with | Some (trX, initial_descriptors) => Some (equivocators_state_project IM initial_descriptors sX, trX) | None => None end else None) = Some (equivocators_total_state_project IM sX, equivocators_total_trace_project IM trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
sX: state PreFreeE
trX: list transition_item
Htr: finite_valid_trace PreFreeE sX trX
Hsim: equivocators_partial_trace_project IM (zero_descriptor IM) ( sX, trX) = Some (equivocators_total_state_project IM sX, equivocators_total_trace_project IM trX) → finite_valid_trace (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) sX trX → finite_valid_trace (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (equivocators_total_state_project IM sX) (equivocators_total_trace_project IM trX)

match equivocators_trace_project IM (zero_descriptor IM) trX with | Some (trX, initial_descriptors) => Some (equivocators_state_project IM initial_descriptors sX, trX) | None => None end = Some (equivocators_total_state_project IM sX, equivocators_total_trace_project IM trX)
by rewrite (equivocators_total_trace_project_characterization IM (proj1 Htr)).
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
sX: state PreFreeE
trX: list transition_item
Htr: finite_valid_trace PreFreeE sX trX
Hsim: finite_valid_trace (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) sX trX → finite_valid_trace (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (equivocators_total_state_project IM sX) (equivocators_total_trace_project IM trX)

finite_valid_trace PreFree (equivocators_total_state_project IM sX) (pre_VLSM_projection_finite_trace_project PreFreeE PreFree (equivocators_total_label_project IM) (equivocators_total_state_project IM) trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
sX: state PreFreeE
trX: list transition_item
Htr: finite_valid_trace PreFreeE sX trX
Hsim: finite_valid_trace (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) sX trX → finite_valid_trace (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (equivocators_total_state_project IM sX) (equivocators_total_trace_project IM trX)
Hpr: finite_valid_trace (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (equivocators_total_state_project IM sX) (equivocators_total_trace_project IM trX)

finite_valid_trace PreFree (equivocators_total_state_project IM sX) (pre_VLSM_projection_finite_trace_project PreFreeE PreFree (equivocators_total_label_project IM) (equivocators_total_state_project IM) trX)
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
sX: state PreFreeE
trX: list transition_item
Htr: finite_valid_trace PreFreeE sX trX
Hsim: finite_valid_trace (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) sX trX → finite_valid_trace (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (equivocators_total_state_project IM sX) (equivocators_total_trace_project IM trX)
Hpr: finite_valid_trace (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (equivocators_total_state_project IM sX) (equivocators_total_trace_project IM trX)
tr: list transition_item
Heqtr: tr = pre_VLSM_projection_finite_trace_project PreFreeE PreFree (equivocators_total_label_project IM) (equivocators_total_state_project IM) trX

finite_valid_trace PreFree (equivocators_total_state_project IM sX) tr
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
sX: state PreFreeE
trX: list transition_item
Htr: finite_valid_trace PreFreeE sX trX
Hsim: finite_valid_trace (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) sX trX → finite_valid_trace (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (equivocators_total_state_project IM sX) (equivocators_total_trace_project IM trX)
Hpr: finite_valid_trace (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (equivocators_total_state_project IM sX) (equivocators_total_trace_project IM trX)
tr: list transition_item
Heqtr: tr = pre_VLSM_projection_finite_trace_project PreFreeE PreFree (equivocators_total_label_project IM) (equivocators_total_state_project IM) trX

equivocators_total_trace_project IM trX = tr
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
sX: state PreFreeE
trX: list transition_item
Htr: finite_valid_trace PreFreeE sX trX
Hsim: finite_valid_trace (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) sX trX → finite_valid_trace (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (equivocators_total_state_project IM sX) (equivocators_total_trace_project IM trX)
Hpr: finite_valid_trace (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (equivocators_total_state_project IM sX) (equivocators_total_trace_project IM trX)

equivocators_total_trace_project IM trX = pre_VLSM_projection_finite_trace_project PreFreeE PreFree (equivocators_total_label_project IM) (equivocators_total_state_project IM) trX
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: i : index, HasBeenSentCapability (IM i)
FreeE:= free_composite_vlsm (equivocator_IM IM): VLSM message
PreFreeE:= preloaded_with_all_messages_vlsm FreeE: VLSM message
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
sX: state PreFreeE
trX: list transition_item
Htr: finite_valid_trace PreFreeE sX trX
Hsim: finite_valid_trace (preloaded_with_all_messages_vlsm (free_composite_vlsm (equivocator_IM IM))) sX trX → finite_valid_trace (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (equivocators_total_state_project IM sX) (equivocators_total_trace_project IM trX)
Hpr: finite_valid_trace (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (equivocators_total_state_project IM sX) (equivocators_total_trace_project IM trX)

pre_VLSM_projection_finite_trace_project PreFreeE PreFree (equivocators_total_label_project IM) (equivocators_total_state_project IM) trX = equivocators_total_trace_project IM trX
by eapply equivocators_total_VLSM_projection_finite_trace_project, Htr. Qed. End sec_equivocators_composition_vlsm_projection.