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]
[Loading ML file extraction_plugin.cmxs (using legacy method) ... done]
[Loading ML file equations_plugin.cmxs (using legacy method) ... done]

Core: Equivocator State Append Determines a Projection

In this module, we show that we can "append" two equivocator traces by simulating the second at the end of the first.
The transformation on the states of the second trace is obtained by equivocator_state_appending each state to the last state of the first trace.
Section sec_equivocator_state_append_projection.

Context
  {message : Type}
  (X : VLSM message)
  .

Definition equivocator_state_append_label
  (base_s : equivocator_state X)
  (l : equivocator_label X)
  : equivocator_label X
  :=
  match l with
  | Spawn _ => l
  | ContinueWith i lx => ContinueWith (i + equivocator_state_n base_s) lx
  | ForkWith i lx => ForkWith (i + equivocator_state_n base_s) lx
  end.

message: Type
X: VLSM message
l: equivocator_label X
s: equivocator_state X
om: option message
base_s: equivocator_state X

equivocator_valid X l (s, om) → equivocator_valid X (equivocator_state_append_label base_s l) (equivocator_state_append base_s s, om)
message: Type
X: VLSM message
l: equivocator_label X
s: equivocator_state X
om: option message
base_s: equivocator_state X

equivocator_valid X l (s, om) → equivocator_valid X (equivocator_state_append_label base_s l) (equivocator_state_append base_s s, om)
by destruct l; cbn; [done | ..] ; (destruct (equivocator_state_project s n) as [sn |] eqn: Hn; [| done]) ; rewrite (equivocator_state_append_project_2 _ base_s s _ n eq_refl) ; rewrite Hn. Qed.
message: Type
X: VLSM message
l: equivocator_label X
s: equivocator_state X
om: option message
s': equivocator_state X
om': option message
base_s: equivocator_state X

equivocator_valid X l (s, om) → equivocator_transition X l (s, om) = (s', om') → equivocator_transition X (equivocator_state_append_label base_s l) (equivocator_state_append base_s s, om) = (equivocator_state_append base_s s', om')
message: Type
X: VLSM message
l: equivocator_label X
s: equivocator_state X
om: option message
s': equivocator_state X
om': option message
base_s: equivocator_state X

equivocator_valid X l (s, om) → equivocator_transition X l (s, om) = (s', om') → equivocator_transition X (equivocator_state_append_label base_s l) (equivocator_state_append base_s s, om) = (equivocator_state_append base_s s', om')
message: Type
X: VLSM message
n: nat
l: label X
s: equivocator_state X
om: option message
s': equivocator_state X
om': option message
base_s: equivocator_state X
sn: state X
Hn: equivocator_state_project s n = Some sn
Hv: valid l (sn, om)
sn': state X
_om': option message
Hti: transition l (sn, om) = (sn', _om')

equivocator_state_update (equivocator_state_append base_s s) (n + equivocator_state_n base_s) sn' = equivocator_state_append base_s (equivocator_state_update s n sn')
message: Type
X: VLSM message
n: nat
l: label X
s: equivocator_state X
om: option message
s': equivocator_state X
om': option message
base_s: equivocator_state X
sn: state X
Hn: equivocator_state_project s n = Some sn
Hv: valid l (sn, om)
sn': state X
_om': option message
Hti: transition l (sn, om) = (sn', _om')
equivocator_state_extend (equivocator_state_append base_s s) sn' = equivocator_state_append base_s (equivocator_state_extend s sn')
message: Type
X: VLSM message
n: nat
l: label X
s: equivocator_state X
om: option message
s': equivocator_state X
om': option message
base_s: equivocator_state X
sn: state X
Hn: equivocator_state_project s n = Some sn
Hv: valid l (sn, om)
sn': state X
_om': option message
Hti: transition l (sn, om) = (sn', _om')

equivocator_state_update (equivocator_state_append base_s s) (n + equivocator_state_n base_s) sn' = equivocator_state_append base_s (equivocator_state_update s n sn')
by apply equivocator_state_append_update_commute.
message: Type
X: VLSM message
n: nat
l: label X
s: equivocator_state X
om: option message
s': equivocator_state X
om': option message
base_s: equivocator_state X
sn: state X
Hn: equivocator_state_project s n = Some sn
Hv: valid l (sn, om)
sn': state X
_om': option message
Hti: transition l (sn, om) = (sn', _om')

equivocator_state_extend (equivocator_state_append base_s s) sn' = equivocator_state_append base_s (equivocator_state_extend s sn')
by apply equivocator_state_append_extend_commute. Qed.
message: Type
X: VLSM message
seed: message → Prop
base_s: equivocator_state X
Hbase_s: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s
s: state (equivocator_vlsm X)

initial_state_prop s → in_futures (preloaded_vlsm (equivocator_vlsm X) seed) base_s (equivocator_state_append base_s s)
message: Type
X: VLSM message
seed: message → Prop
base_s: equivocator_state X
Hbase_s: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s
s: state (equivocator_vlsm X)

initial_state_prop s → in_futures (preloaded_vlsm (equivocator_vlsm X) seed) base_s (equivocator_state_append base_s s)
message: Type
X: VLSM message
seed: message → Prop
base_s: equivocator_state X
Hbase_s: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s
s: state (equivocator_vlsm X)
H: initial_state_prop s

finite_valid_trace_from_to (preloaded_vlsm (equivocator_vlsm X) seed) base_s (equivocator_state_append base_s s) [{| l := Spawn (equivocator_state_zero s); input := None; destination := equivocator_state_append base_s s; output := None |}]
message: Type
X: VLSM message
seed: message → Prop
base_s: equivocator_state X
Hbase_s: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s
s: state (equivocator_vlsm X)
H: initial_state_prop s

input_valid_transition (preloaded_vlsm (equivocator_vlsm X) seed) (Spawn (equivocator_state_zero s)) (base_s, None) (equivocator_state_append base_s s, None)
message: Type
X: VLSM message
seed: message → Prop
base_s: equivocator_state X
Hbase_s: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s
s: state (equivocator_vlsm X)
H: initial_state_prop s

valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s
message: Type
X: VLSM message
seed: message → Prop
base_s: equivocator_state X
Hbase_s: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s
s: state (equivocator_vlsm X)
H: initial_state_prop s
option_valid_message_prop (preloaded_vlsm (equivocator_vlsm X) seed) None
message: Type
X: VLSM message
seed: message → Prop
base_s: equivocator_state X
Hbase_s: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s
s: state (equivocator_vlsm X)
H: initial_state_prop s
initial_state_prop (equivocator_state_zero s)
message: Type
X: VLSM message
seed: message → Prop
base_s: equivocator_state X
Hbase_s: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s
s: state (equivocator_vlsm X)
H: initial_state_prop s
transition (Spawn (equivocator_state_zero s)) (base_s, None) = (equivocator_state_append base_s s, None)
message: Type
X: VLSM message
seed: message → Prop
base_s: equivocator_state X
Hbase_s: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s
s: state (equivocator_vlsm X)
H: initial_state_prop s

valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s
done.
message: Type
X: VLSM message
seed: message → Prop
base_s: equivocator_state X
Hbase_s: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s
s: state (equivocator_vlsm X)
H: initial_state_prop s

option_valid_message_prop (preloaded_vlsm (equivocator_vlsm X) seed) None
by apply option_valid_message_None.
message: Type
X: VLSM message
seed: message → Prop
base_s: equivocator_state X
Hbase_s: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s
s: state (equivocator_vlsm X)
H: initial_state_prop s

initial_state_prop (equivocator_state_zero s)
by apply H.
message: Type
X: VLSM message
seed: message → Prop
base_s: equivocator_state X
Hbase_s: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s
s: state (equivocator_vlsm X)
H: initial_state_prop s

transition (Spawn (equivocator_state_zero s)) (base_s, None) = (equivocator_state_append base_s s, None)
message: Type
X: VLSM message
seed: message → Prop
base_s: equivocator_state X
Hbase_s: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s
s: state (equivocator_vlsm X)
H: initial_state_prop s

(equivocator_state_extend base_s (equivocator_state_zero s), None) = (equivocator_state_append base_s s, None)
message: Type
X: VLSM message
seed: message → Prop
base_s: equivocator_state X
Hbase_s: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s
s: state (equivocator_vlsm X)
H: initial_state_prop s

equivocator_state_extend base_s (equivocator_state_zero s) = equivocator_state_append base_s s
message: Type
X: VLSM message
seed: message → Prop
base_s: equivocator_state X
Hbase_s: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s
s: state (equivocator_vlsm X)
H: initial_state_prop s

equivocator_state_append base_s s = equivocator_state_extend base_s (equivocator_state_zero s)
by apply equivocator_state_append_singleton_is_extend, H. Qed.
message: Type
X: VLSM message
seed: message → Prop
base_s: equivocator_state X
Hbase_s: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s
s: state (equivocator_vlsm X)

initial_state_prop s → valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) (equivocator_state_append base_s s)
message: Type
X: VLSM message
seed: message → Prop
base_s: equivocator_state X
Hbase_s: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s
s: state (equivocator_vlsm X)

initial_state_prop s → valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) (equivocator_state_append base_s s)
message: Type
X: VLSM message
seed: message → Prop
base_s: equivocator_state X
Hbase_s: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s
s: state (equivocator_vlsm X)
Hs: initial_state_prop s

valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) (equivocator_state_append base_s s)
message: Type
X: VLSM message
seed: message → Prop
base_s: equivocator_state X
Hbase_s: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s
s: state (equivocator_vlsm X)
Hs: initial_state_prop s

in_futures (preloaded_vlsm (equivocator_vlsm X) seed) base_s (equivocator_state_append base_s s)
by apply equivocator_state_append_initial_state_in_futures. Qed.
message: Type
X: VLSM message
seed: message → Prop
base_s: equivocator_state X
Hbase_s: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s

VLSM_weak_embedding (preloaded_vlsm (equivocator_vlsm X) seed) (preloaded_vlsm (equivocator_vlsm X) seed) (equivocator_state_append_label base_s) (equivocator_state_append base_s)
message: Type
X: VLSM message
seed: message → Prop
base_s: equivocator_state X
Hbase_s: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s

VLSM_weak_embedding (preloaded_vlsm (equivocator_vlsm X) seed) (preloaded_vlsm (equivocator_vlsm X) seed) (equivocator_state_append_label base_s) (equivocator_state_append base_s)
message: Type
X: VLSM message
seed: message → Prop
base_s: equivocator_state X
Hbase_s: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s
l: label (preloaded_vlsm (equivocator_vlsm X) seed)
s: state (preloaded_vlsm (equivocator_vlsm X) seed)
om: option message
Hv: input_valid (preloaded_vlsm (equivocator_vlsm X) seed) l (s, om)
HsY: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) (equivocator_state_append base_s s)
HomY: option_valid_message_prop (preloaded_vlsm (equivocator_vlsm X) seed) om

valid (equivocator_state_append_label base_s l) (equivocator_state_append base_s s, om)
message: Type
X: VLSM message
seed: message → Prop
base_s: equivocator_state X
Hbase_s: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s
l: label (preloaded_vlsm (equivocator_vlsm X) seed)
s: state (preloaded_vlsm (equivocator_vlsm X) seed)
om: option message
s': state (preloaded_vlsm (equivocator_vlsm X) seed)
om': option message
H: input_valid_transition (preloaded_vlsm (equivocator_vlsm X) seed) l (s, om) (s', om')
transition (equivocator_state_append_label base_s l) (equivocator_state_append base_s s, om) = (equivocator_state_append base_s s', om')
message: Type
X: VLSM message
seed: message → Prop
base_s: equivocator_state X
Hbase_s: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s
s: state (preloaded_vlsm (equivocator_vlsm X) seed)
H: initial_state_prop s
valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) (equivocator_state_append base_s s)
message: Type
X: VLSM message
seed: message → Prop
base_s: equivocator_state X
Hbase_s: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s
l: label (preloaded_vlsm (equivocator_vlsm X) seed)
s: state (preloaded_vlsm (equivocator_vlsm X) seed)
m: message
Hv: input_valid (preloaded_vlsm (equivocator_vlsm X) seed) l (s, Some m)
HsY: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) (equivocator_state_append base_s s)
HmX: initial_message_prop m
valid_message_prop (preloaded_vlsm (equivocator_vlsm X) seed) m
message: Type
X: VLSM message
seed: message → Prop
base_s: equivocator_state X
Hbase_s: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s
l: label (preloaded_vlsm (equivocator_vlsm X) seed)
s: state (preloaded_vlsm (equivocator_vlsm X) seed)
om: option message
Hv: input_valid (preloaded_vlsm (equivocator_vlsm X) seed) l (s, om)
HsY: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) (equivocator_state_append base_s s)
HomY: option_valid_message_prop (preloaded_vlsm (equivocator_vlsm X) seed) om

valid (equivocator_state_append_label base_s l) (equivocator_state_append base_s s, om)
by apply equivocator_state_append_valid, Hv.
message: Type
X: VLSM message
seed: message → Prop
base_s: equivocator_state X
Hbase_s: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s
l: label (preloaded_vlsm (equivocator_vlsm X) seed)
s: state (preloaded_vlsm (equivocator_vlsm X) seed)
om: option message
s': state (preloaded_vlsm (equivocator_vlsm X) seed)
om': option message
H: input_valid_transition (preloaded_vlsm (equivocator_vlsm X) seed) l (s, om) (s', om')

transition (equivocator_state_append_label base_s l) (equivocator_state_append base_s s, om) = (equivocator_state_append base_s s', om')
by apply equivocator_state_append_transition; apply H.
message: Type
X: VLSM message
seed: message → Prop
base_s: equivocator_state X
Hbase_s: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s
s: state (preloaded_vlsm (equivocator_vlsm X) seed)
H: initial_state_prop s

valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) (equivocator_state_append base_s s)
by apply equivocator_state_append_transition_initial_state.
message: Type
X: VLSM message
seed: message → Prop
base_s: equivocator_state X
Hbase_s: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s
l: label (preloaded_vlsm (equivocator_vlsm X) seed)
s: state (preloaded_vlsm (equivocator_vlsm X) seed)
m: message
Hv: input_valid (preloaded_vlsm (equivocator_vlsm X) seed) l (s, Some m)
HsY: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) (equivocator_state_append base_s s)
HmX: initial_message_prop m

valid_message_prop (preloaded_vlsm (equivocator_vlsm X) seed) m
by apply initial_message_is_valid. Qed.
message: Type
X: VLSM message
base_s: equivocator_state X
Hbase_s: constrained_state_prop (equivocator_vlsm X) base_s

VLSM_weak_embedding (preloaded_with_all_messages_vlsm (equivocator_vlsm X)) (preloaded_with_all_messages_vlsm (equivocator_vlsm X)) (equivocator_state_append_label base_s) (equivocator_state_append base_s)
message: Type
X: VLSM message
base_s: equivocator_state X
Hbase_s: constrained_state_prop (equivocator_vlsm X) base_s

VLSM_weak_embedding (preloaded_with_all_messages_vlsm (equivocator_vlsm X)) (preloaded_with_all_messages_vlsm (equivocator_vlsm X)) (equivocator_state_append_label base_s) (equivocator_state_append base_s)
by constructor; apply equivocator_state_append_preloaded_with_weak_projection. Qed.
message: Type
X: VLSM message
base_s: equivocator_state X
Hbase_s: valid_state_prop (equivocator_vlsm X) base_s

VLSM_weak_embedding (equivocator_vlsm X) (equivocator_vlsm X) (equivocator_state_append_label base_s) (equivocator_state_append base_s)
message: Type
X: VLSM message
base_s: equivocator_state X
Hbase_s: valid_state_prop (equivocator_vlsm X) base_s

VLSM_weak_embedding (equivocator_vlsm X) (equivocator_vlsm X) (equivocator_state_append_label base_s) (equivocator_state_append base_s)
message: Type
X: VLSM message
base_s: equivocator_state X
Hbase_s: valid_state_prop (equivocator_vlsm X) base_s
Heq: VLSM_eq (equivocator_vlsm X) (preloaded_vlsm (equivocator_vlsm X) (λ _ : message, False))

VLSM_weak_embedding (equivocator_vlsm X) (equivocator_vlsm X) (equivocator_state_append_label base_s) (equivocator_state_append base_s)
message: Type
X: VLSM message
base_s: equivocator_state X
Hbase_s: valid_state_prop (equivocator_vlsm X) base_s
Heq: VLSM_eq (equivocator_vlsm X) (preloaded_vlsm (equivocator_vlsm X) (λ _ : message, False))

(sX : state (equivocator_vlsm X)) (trX : list transition_item), finite_valid_trace_from (equivocator_vlsm X) sX trX → finite_valid_trace_from (equivocator_vlsm X) (equivocator_state_append base_s sX) (pre_VLSM_embedding_finite_trace_project (equivocator_vlsm X) (equivocator_vlsm X) (equivocator_state_append_label base_s) (equivocator_state_append base_s) trX)
message: Type
X: VLSM message
base_s: equivocator_state X
Hbase_s: valid_state_prop (equivocator_vlsm X) base_s
Heq: VLSM_eq (equivocator_vlsm X) (preloaded_vlsm (equivocator_vlsm X) (λ _ : message, False))
sX: state (equivocator_vlsm X)
trX: list transition_item
HtrX: finite_valid_trace_from (equivocator_vlsm X) sX trX

finite_valid_trace_from (equivocator_vlsm X) (equivocator_state_append base_s sX) (pre_VLSM_embedding_finite_trace_project (equivocator_vlsm X) (equivocator_vlsm X) (equivocator_state_append_label base_s) (equivocator_state_append base_s) trX)
message: Type
X: VLSM message
base_s: equivocator_state X
Hbase_s: valid_state_prop (equivocator_vlsm X) base_s
Heq: VLSM_eq (equivocator_vlsm X) (preloaded_vlsm (equivocator_vlsm X) (λ _ : message, False))
sX: state (equivocator_vlsm X)
trX: list transition_item
HtrX: finite_valid_trace_from {| vlsm_type := equivocator_vlsm X; vlsm_machine := preloaded_vlsm (equivocator_vlsm X) (λ _ : message, False) |} sX trX

finite_valid_trace_from (equivocator_vlsm X) (equivocator_state_append base_s sX) (pre_VLSM_embedding_finite_trace_project (equivocator_vlsm X) (equivocator_vlsm X) (equivocator_state_append_label base_s) (equivocator_state_append base_s) trX)
message: Type
X: VLSM message
base_s: equivocator_state X
Hbase_s: valid_state_prop (equivocator_vlsm X) base_s
Heq: VLSM_eq (equivocator_vlsm X) (preloaded_vlsm (equivocator_vlsm X) (λ _ : message, False))
sX: state (equivocator_vlsm X)
trX: list transition_item
HtrX: finite_valid_trace_from {| vlsm_type := equivocator_vlsm X; vlsm_machine := preloaded_vlsm (equivocator_vlsm X) (λ _ : message, False) |} sX trX

finite_valid_trace_from {| vlsm_type := equivocator_vlsm X; vlsm_machine := preloaded_vlsm (equivocator_vlsm X) (λ _ : message, False) |} (equivocator_state_append base_s sX) (pre_VLSM_embedding_finite_trace_project (equivocator_vlsm X) (equivocator_vlsm X) (equivocator_state_append_label base_s) (equivocator_state_append base_s) trX)
message: Type
X: VLSM message
base_s: equivocator_state X
Hbase_s: valid_state_prop (equivocator_vlsm X) base_s
Heq: VLSM_eq (equivocator_vlsm X) (preloaded_vlsm (equivocator_vlsm X) (λ _ : message, False))

(sX : state (equivocator_vlsm X)) (trX : list transition_item), finite_valid_trace_from {| vlsm_type := equivocator_vlsm X; vlsm_machine := preloaded_vlsm (equivocator_vlsm X) (λ _ : message, False) |} sX trX → finite_valid_trace_from {| vlsm_type := equivocator_vlsm X; vlsm_machine := preloaded_vlsm (equivocator_vlsm X) (λ _ : message, False) |} (equivocator_state_append base_s sX) (pre_VLSM_embedding_finite_trace_project (equivocator_vlsm X) (equivocator_vlsm X) (equivocator_state_append_label base_s) (equivocator_state_append base_s) trX)
message: Type
X: VLSM message
base_s: equivocator_state X
Hbase_s: valid_state_prop (equivocator_vlsm X) base_s
Heq: VLSM_eq (equivocator_vlsm X) (preloaded_vlsm (equivocator_vlsm X) (λ _ : message, False))

valid_state_prop (preloaded_vlsm (equivocator_vlsm X) (λ _ : message, False)) base_s
by apply (VLSM_eq_valid_state Heq). Qed.
message: Type
X: VLSM message
seed: message → Prop
base_s: state (preloaded_vlsm (equivocator_vlsm X) seed)
Hbase_s: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s
s: state (preloaded_vlsm (equivocator_vlsm X) seed)
Hs: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) s

in_futures (preloaded_vlsm (equivocator_vlsm X) seed) base_s (equivocator_state_append base_s s)
message: Type
X: VLSM message
seed: message → Prop
base_s: state (preloaded_vlsm (equivocator_vlsm X) seed)
Hbase_s: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s
s: state (preloaded_vlsm (equivocator_vlsm X) seed)
Hs: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) s

in_futures (preloaded_vlsm (equivocator_vlsm X) seed) base_s (equivocator_state_append base_s s)
message: Type
X: VLSM message
seed: message → Prop
base_s: state (preloaded_vlsm (equivocator_vlsm X) seed)
Hbase_s: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s
s, is: state (preloaded_vlsm (equivocator_vlsm X) seed)
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_vlsm (equivocator_vlsm X) seed) is s tr
His: initial_state_prop is

in_futures (preloaded_vlsm (equivocator_vlsm X) seed) base_s (equivocator_state_append base_s s)
message: Type
X: VLSM message
seed: message → Prop
base_s: state (preloaded_vlsm (equivocator_vlsm X) seed)
Hbase_s: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s
s, is: state (preloaded_vlsm (equivocator_vlsm X) seed)
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_vlsm (equivocator_vlsm X) seed) is s tr
His: initial_state_prop is
Hproj: VLSM_weak_embedding (preloaded_vlsm (equivocator_vlsm X) seed) (preloaded_vlsm (equivocator_vlsm X) seed) (equivocator_state_append_label base_s) (equivocator_state_append base_s)

in_futures (preloaded_vlsm (equivocator_vlsm X) seed) base_s (equivocator_state_append base_s s)
message: Type
X: VLSM message
seed: message → Prop
base_s: state (preloaded_vlsm (equivocator_vlsm X) seed)
Hbase_s: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s
s, is: state (preloaded_vlsm (equivocator_vlsm X) seed)
tr: list transition_item
Hproj: VLSM_weak_embedding (preloaded_vlsm (equivocator_vlsm X) seed) (preloaded_vlsm (equivocator_vlsm X) seed) (equivocator_state_append_label base_s) (equivocator_state_append base_s)
Htr: finite_valid_trace_from_to (preloaded_vlsm (equivocator_vlsm X) seed) (equivocator_state_append base_s is) (equivocator_state_append base_s s) (VLSM_weak_embedding_finite_trace_project Hproj tr)
His: initial_state_prop is

in_futures (preloaded_vlsm (equivocator_vlsm X) seed) base_s (equivocator_state_append base_s s)
message: Type
X: VLSM message
seed: message → Prop
base_s: state (preloaded_vlsm (equivocator_vlsm X) seed)
Hbase_s: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s
s, is: state (preloaded_vlsm (equivocator_vlsm X) seed)
tr: list transition_item
Hproj: VLSM_weak_embedding (preloaded_vlsm (equivocator_vlsm X) seed) (preloaded_vlsm (equivocator_vlsm X) seed) (equivocator_state_append_label base_s) (equivocator_state_append base_s)
Htr: finite_valid_trace_from_to (preloaded_vlsm (equivocator_vlsm X) seed) (equivocator_state_append base_s is) (equivocator_state_append base_s s) (VLSM_weak_embedding_finite_trace_project Hproj tr)
His: initial_state_prop is

in_futures (preloaded_vlsm (equivocator_vlsm X) seed) base_s (equivocator_state_append base_s is)
message: Type
X: VLSM message
seed: message → Prop
base_s: state (preloaded_vlsm (equivocator_vlsm X) seed)
Hbase_s: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s
s, is: state (preloaded_vlsm (equivocator_vlsm X) seed)
tr: list transition_item
Hproj: VLSM_weak_embedding (preloaded_vlsm (equivocator_vlsm X) seed) (preloaded_vlsm (equivocator_vlsm X) seed) (equivocator_state_append_label base_s) (equivocator_state_append base_s)
Htr: finite_valid_trace_from_to (preloaded_vlsm (equivocator_vlsm X) seed) (equivocator_state_append base_s is) (equivocator_state_append base_s s) (VLSM_weak_embedding_finite_trace_project Hproj tr)
His: initial_state_prop is
in_futures (preloaded_vlsm (equivocator_vlsm X) seed) (equivocator_state_append base_s is) (equivocator_state_append base_s s)
message: Type
X: VLSM message
seed: message → Prop
base_s: state (preloaded_vlsm (equivocator_vlsm X) seed)
Hbase_s: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s
s, is: state (preloaded_vlsm (equivocator_vlsm X) seed)
tr: list transition_item
Hproj: VLSM_weak_embedding (preloaded_vlsm (equivocator_vlsm X) seed) (preloaded_vlsm (equivocator_vlsm X) seed) (equivocator_state_append_label base_s) (equivocator_state_append base_s)
Htr: finite_valid_trace_from_to (preloaded_vlsm (equivocator_vlsm X) seed) (equivocator_state_append base_s is) (equivocator_state_append base_s s) (VLSM_weak_embedding_finite_trace_project Hproj tr)
His: initial_state_prop is

in_futures (preloaded_vlsm (equivocator_vlsm X) seed) base_s (equivocator_state_append base_s is)
by apply equivocator_state_append_initial_state_in_futures.
message: Type
X: VLSM message
seed: message → Prop
base_s: state (preloaded_vlsm (equivocator_vlsm X) seed)
Hbase_s: valid_state_prop (preloaded_vlsm (equivocator_vlsm X) seed) base_s
s, is: state (preloaded_vlsm (equivocator_vlsm X) seed)
tr: list transition_item
Hproj: VLSM_weak_embedding (preloaded_vlsm (equivocator_vlsm X) seed) (preloaded_vlsm (equivocator_vlsm X) seed) (equivocator_state_append_label base_s) (equivocator_state_append base_s)
Htr: finite_valid_trace_from_to (preloaded_vlsm (equivocator_vlsm X) seed) (equivocator_state_append base_s is) (equivocator_state_append base_s s) (VLSM_weak_embedding_finite_trace_project Hproj tr)
His: initial_state_prop is

in_futures (preloaded_vlsm (equivocator_vlsm X) seed) (equivocator_state_append base_s is) (equivocator_state_append base_s s)
by eexists. Qed.
message: Type
X: VLSM message
H: HasBeenSentCapability X
base_s: state (preloaded_with_all_messages_vlsm (equivocator_vlsm X))
Hbase_s: constrained_state_prop (equivocator_vlsm X) base_s
s: state (preloaded_with_all_messages_vlsm (equivocator_vlsm X))
Hs: constrained_state_prop (equivocator_vlsm X) s

m : message, equivocator_has_been_sent X base_s m → equivocator_has_been_sent X (equivocator_state_append base_s s) m
message: Type
X: VLSM message
H: HasBeenSentCapability X
base_s: state (preloaded_with_all_messages_vlsm (equivocator_vlsm X))
Hbase_s: constrained_state_prop (equivocator_vlsm X) base_s
s: state (preloaded_with_all_messages_vlsm (equivocator_vlsm X))
Hs: constrained_state_prop (equivocator_vlsm X) s

m : message, equivocator_has_been_sent X base_s m → equivocator_has_been_sent X (equivocator_state_append base_s s) m
message: Type
X: VLSM message
H: HasBeenSentCapability X
base_s: state (preloaded_with_all_messages_vlsm (equivocator_vlsm X))
Hbase_s: constrained_state_prop (equivocator_vlsm X) base_s
s: state (preloaded_with_all_messages_vlsm (equivocator_vlsm X))
Hs: in_futures (preloaded_vlsm (equivocator_vlsm X) (λ _ : message, True)) base_s (equivocator_state_append base_s s)

m : message, equivocator_has_been_sent X base_s m → equivocator_has_been_sent X (equivocator_state_append base_s s) m
message: Type
X: VLSM message
H: HasBeenSentCapability X
base_s: state (preloaded_with_all_messages_vlsm (equivocator_vlsm X))
Hbase_s: constrained_state_prop (equivocator_vlsm X) base_s
s: state (preloaded_with_all_messages_vlsm (equivocator_vlsm X))
Hs: in_futures (preloaded_vlsm (equivocator_vlsm X) (λ _ : message, True)) base_s (equivocator_state_append base_s s)

oracle_stepwise_props (field_selector output) (equivocator_has_been_sent X)
by apply equivocator_has_been_sent_stepwise_props. Qed.
message: Type
X: VLSM message
H: HasBeenSentCapability X
base_s: state (preloaded_with_all_messages_vlsm (equivocator_vlsm X))
Hbase_s: constrained_state_prop (equivocator_vlsm X) base_s
s: state (preloaded_with_all_messages_vlsm (equivocator_vlsm X))
Hs: constrained_state_prop (equivocator_vlsm X) s

m : message, equivocator_has_been_sent X s m → equivocator_has_been_sent X (equivocator_state_append base_s s) m
message: Type
X: VLSM message
H: HasBeenSentCapability X
base_s: state (preloaded_with_all_messages_vlsm (equivocator_vlsm X))
Hbase_s: constrained_state_prop (equivocator_vlsm X) base_s
s: state (preloaded_with_all_messages_vlsm (equivocator_vlsm X))
Hs: constrained_state_prop (equivocator_vlsm X) s

m : message, equivocator_has_been_sent X s m → equivocator_has_been_sent X (equivocator_state_append base_s s) m
message: Type
X: VLSM message
H: HasBeenSentCapability X
base_s: state (preloaded_with_all_messages_vlsm (equivocator_vlsm X))
Hbase_s: constrained_state_prop (equivocator_vlsm X) base_s
s: state (preloaded_with_all_messages_vlsm (equivocator_vlsm X))
Hs: constrained_state_prop (equivocator_vlsm X) s
Hproj: VLSM_weak_embedding (preloaded_with_all_messages_vlsm (equivocator_vlsm X)) (preloaded_with_all_messages_vlsm (equivocator_vlsm X)) (equivocator_state_append_label base_s) (equivocator_state_append base_s)

m : message, equivocator_has_been_sent X s m → equivocator_has_been_sent X (equivocator_state_append base_s s) m
message: Type
X: VLSM message
H: HasBeenSentCapability X
base_s: state (preloaded_with_all_messages_vlsm (equivocator_vlsm X))
Hbase_s: constrained_state_prop (equivocator_vlsm X) base_s
s: state (preloaded_with_all_messages_vlsm (equivocator_vlsm X))
Hs: constrained_state_prop (equivocator_vlsm X) s
Hproj: VLSM_weak_embedding (preloaded_with_all_messages_vlsm (equivocator_vlsm X)) (preloaded_with_all_messages_vlsm (equivocator_vlsm X)) (equivocator_state_append_label base_s) (equivocator_state_append base_s)
m: message
Hm: equivocator_has_been_sent X s m

equivocator_has_been_sent X (equivocator_state_append base_s s) m
by specialize (VLSM_weak_embedding_has_been_sent Hproj _ Hs _ Hm) as HmY. Qed. End sec_equivocator_state_append_projection.