From VLSM.Lib Require Import Preamble.From VLSM.Core Require Import Composition VLSMProjections Validator ProjectionTraces.
Core: VLSM Projections and Messages Properties
Section sec_projection_oracle.
Context {message : Type} {X Y : VLSM message} {label_project : label X -> option (label Y)} {state_project : state X -> state Y} (Hsimul : VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project) . Section sec_selectors. Context (selectorX : message -> transition_item X -> Prop) (selectorY : message -> transition_item Y -> Prop) (Hselector : forall itemX itemY, input itemX = input itemY -> output itemX = output itemY -> forall m, selectorX m itemX <-> selectorY m itemY) .
Given the fact that all traces leading to a state in X project to traces
leading to its projection in Y, and since all messages in a trace projection
come from the original trace, it follows that any oracle for Y with the same
selector is reflected to X.
message: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
oracleX: state X → message → Prop
oracleY: state Y → message → Prop
HstepwiseX: oracle_stepwise_props selectorX oracleX
HstepwiseY: oracle_stepwise_props selectorY oracleY∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, oracleY (state_project s) m → oracleX s mmessage: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
oracleX: state X → message → Prop
oracleY: state Y → message → Prop
HstepwiseX: oracle_stepwise_props selectorX oracleX
HstepwiseY: oracle_stepwise_props selectorY oracleY∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, oracleY (state_project s) m → oracleX s mmessage: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
oracleX: state X → message → Prop
oracleY: state Y → message → Prop
HstepwiseX: oracle_stepwise_props selectorX oracleX
HstepwiseY: oracle_stepwise_props selectorY oracleY
s: state (preloaded_with_all_messages_vlsm X)
Hs: constrained_state_prop X s
m: message
Hm: oracleY (state_project s) moracleX s mmessage: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
oracleX: state X → message → Prop
oracleY: state Y → message → Prop
HstepwiseX: oracle_stepwise_props selectorX oracleX
HstepwiseY: oracle_stepwise_props selectorY oracleY
s: state (preloaded_with_all_messages_vlsm X)
Hs: constrained_state_prop X s
m: message
Hm: oracleY (state_project s) mselected_message_exists_in_all_preloaded_traces X selectorX s mmessage: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
oracleX: state X → message → Prop
oracleY: state Y → message → Prop
HstepwiseX: oracle_stepwise_props selectorX oracleX
HstepwiseY: oracle_stepwise_props selectorY oracleY
s: state (preloaded_with_all_messages_vlsm X)
Hs: constrained_state_prop X s
m: message
Hm: oracleY (state_project s) m
isX: state (preloaded_with_all_messages_vlsm X)
trX: list transition_item
HtrX: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm X) isX s trXtrace_has_message selectorX m trXmessage: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
oracleX: state X → message → Prop
oracleY: state Y → message → Prop
HstepwiseX: oracle_stepwise_props selectorX oracleX
HstepwiseY: oracle_stepwise_props selectorY oracleY
s: state (preloaded_with_all_messages_vlsm X)
Hs: constrained_state_prop X s
m: message
Hm: oracleY (state_project s) m
isX: state (preloaded_with_all_messages_vlsm X)
trX: list transition_item
HtrX: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm Y) (state_project isX) (state_project s) (VLSM_projection_finite_trace_project Hsimul trX)trace_has_message selectorX m trXmessage: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
oracleX: state X → message → Prop
oracleY: state Y → message → Prop
HstepwiseX: oracle_stepwise_props selectorX oracleX
HstepwiseY: oracle_stepwise_props selectorY oracleY
s: state (preloaded_with_all_messages_vlsm X)
Hs: constrained_state_prop X s
m: message
Hm: oracleY (state_project s) m
isX: state (preloaded_with_all_messages_vlsm X)
trX: list transition_item
HtrX: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm Y) (state_project isX) (state_project s) (VLSM_projection_finite_trace_project Hsimul trX)
HsY: valid_state_prop (preloaded_with_all_messages_vlsm Y) (state_project s)trace_has_message selectorX m trXmessage: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
oracleX: state X → message → Prop
oracleY: state Y → message → Prop
HstepwiseX: oracle_stepwise_props selectorX oracleX
HstepwiseY: oracle_stepwise_props selectorY oracleY
s: state (preloaded_with_all_messages_vlsm X)
Hs: constrained_state_prop X s
m: message
Hm: selected_message_exists_in_all_preloaded_traces Y selectorY (state_project s) m
isX: state (preloaded_with_all_messages_vlsm X)
trX: list transition_item
HtrX: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm Y) (state_project isX) (state_project s) (VLSM_projection_finite_trace_project Hsimul trX)
HsY: valid_state_prop (preloaded_with_all_messages_vlsm Y) (state_project s)trace_has_message selectorX m trXmessage: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
oracleX: state X → message → Prop
oracleY: state Y → message → Prop
HstepwiseX: oracle_stepwise_props selectorX oracleX
HstepwiseY: oracle_stepwise_props selectorY oracleY
s: state (preloaded_with_all_messages_vlsm X)
Hs: constrained_state_prop X s
m: message
trX: list transition_item
Hm: trace_has_message selectorY m (VLSM_projection_finite_trace_project Hsimul trX)
isX: state (preloaded_with_all_messages_vlsm X)
HtrX: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm Y) (state_project isX) (state_project s) (VLSM_projection_finite_trace_project Hsimul trX)
HsY: valid_state_prop (preloaded_with_all_messages_vlsm Y) (state_project s)trace_has_message selectorX m trXmessage: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
oracleX: state X → message → Prop
oracleY: state Y → message → Prop
HstepwiseX: oracle_stepwise_props selectorX oracleX
HstepwiseY: oracle_stepwise_props selectorY oracleY
s: state (preloaded_with_all_messages_vlsm X)
Hs: constrained_state_prop X s
m: message
trX: list transition_item
itemY: transition_item
HitemY: itemY ∈ VLSM_projection_finite_trace_project Hsimul trX
Hm: selectorY m itemY
isX: state (preloaded_with_all_messages_vlsm X)
HtrX: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm Y) (state_project isX) (state_project s) (VLSM_projection_finite_trace_project Hsimul trX)
HsY: valid_state_prop (preloaded_with_all_messages_vlsm Y) (state_project s)trace_has_message selectorX m trXmessage: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
oracleX: state X → message → Prop
oracleY: state Y → message → Prop
HstepwiseX: oracle_stepwise_props selectorX oracleX
HstepwiseY: oracle_stepwise_props selectorY oracleY
s: state (preloaded_with_all_messages_vlsm X)
Hs: constrained_state_prop X s
m: message
trX: list transition_item
itemY, itemX: transition_item
HitemX: itemX ∈ trX
Hpr: pre_VLSM_projection_transition_item_project (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project itemX = Some itemY
Hm: selectorY m itemY
isX: state (preloaded_with_all_messages_vlsm X)
HtrX: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm Y) (state_project isX) (state_project s) (VLSM_projection_finite_trace_project Hsimul trX)
HsY: valid_state_prop (preloaded_with_all_messages_vlsm Y) (state_project s)trace_has_message selectorX m trXmessage: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
oracleX: state X → message → Prop
oracleY: state Y → message → Prop
HstepwiseX: oracle_stepwise_props selectorX oracleX
HstepwiseY: oracle_stepwise_props selectorY oracleY
s: state (preloaded_with_all_messages_vlsm X)
Hs: constrained_state_prop X s
m: message
trX: list transition_item
itemY, itemX: transition_item
HitemX: itemX ∈ trX
Hpr: pre_VLSM_projection_transition_item_project (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project itemX = Some itemY
Hm: selectorY m itemY
isX: state (preloaded_with_all_messages_vlsm X)
HtrX: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm Y) (state_project isX) (state_project s) (VLSM_projection_finite_trace_project Hsimul trX)
HsY: valid_state_prop (preloaded_with_all_messages_vlsm Y) (state_project s)∃ x : transition_item, x ∈ trX ∧ selectorX m xmessage: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
oracleX: state X → message → Prop
oracleY: state Y → message → Prop
HstepwiseX: oracle_stepwise_props selectorX oracleX
HstepwiseY: oracle_stepwise_props selectorY oracleY
s: state (preloaded_with_all_messages_vlsm X)
Hs: constrained_state_prop X s
m: message
trX: list transition_item
itemY, itemX: transition_item
HitemX: itemX ∈ trX
Hpr: pre_VLSM_projection_transition_item_project (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project itemX = Some itemY
Hm: selectorY m itemY
isX: state (preloaded_with_all_messages_vlsm X)
HtrX: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm Y) (state_project isX) (state_project s) (VLSM_projection_finite_trace_project Hsimul trX)
HsY: valid_state_prop (preloaded_with_all_messages_vlsm Y) (state_project s)itemX ∈ trX ∧ selectorX m itemXmessage: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
oracleX: state X → message → Prop
oracleY: state Y → message → Prop
HstepwiseX: oracle_stepwise_props selectorX oracleX
HstepwiseY: oracle_stepwise_props selectorY oracleY
s: state (preloaded_with_all_messages_vlsm X)
Hs: constrained_state_prop X s
m: message
trX: list transition_item
itemY, itemX: transition_item
HitemX: itemX ∈ trX
Hpr: pre_VLSM_projection_transition_item_project (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project itemX = Some itemY
Hm: selectorY m itemY
isX: state (preloaded_with_all_messages_vlsm X)
HtrX: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm Y) (state_project isX) (state_project s) (VLSM_projection_finite_trace_project Hsimul trX)
HsY: valid_state_prop (preloaded_with_all_messages_vlsm Y) (state_project s)selectorX m itemXmessage: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
oracleX: state X → message → Prop
oracleY: state Y → message → Prop
HstepwiseX: oracle_stepwise_props selectorX oracleX
HstepwiseY: oracle_stepwise_props selectorY oracleY
s: state (preloaded_with_all_messages_vlsm X)
Hs: constrained_state_prop X s
m: message
trX: list transition_item
itemY, itemX: transition_item
HitemX: itemX ∈ trX
Hpr: pre_VLSM_projection_transition_item_project (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project itemX = Some itemY
isX: state (preloaded_with_all_messages_vlsm X)
HtrX: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm Y) (state_project isX) (state_project s) (VLSM_projection_finite_trace_project Hsimul trX)
HsY: valid_state_prop (preloaded_with_all_messages_vlsm Y) (state_project s)selectorY m itemY → selectorX m itemXmessage: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
oracleX: state X → message → Prop
oracleY: state Y → message → Prop
HstepwiseX: oracle_stepwise_props selectorX oracleX
HstepwiseY: oracle_stepwise_props selectorY oracleY
s: state (preloaded_with_all_messages_vlsm X)
Hs: constrained_state_prop X s
m: message
trX: list transition_item
itemY, itemX: transition_item
HitemX: itemX ∈ trX
Hpr: match label_project (l itemX) with | Some lY => Some {| l := lY; input := input itemX; destination := state_project (destination itemX); output := output itemX |} | None => None end = Some itemY
isX: state (preloaded_with_all_messages_vlsm X)
HtrX: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm Y) (state_project isX) (state_project s) (VLSM_projection_finite_trace_project Hsimul trX)
HsY: valid_state_prop (preloaded_with_all_messages_vlsm Y) (state_project s)selectorY m itemY → selectorX m itemXmessage: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
oracleX: state X → message → Prop
oracleY: state Y → message → Prop
HstepwiseX: oracle_stepwise_props selectorX oracleX
HstepwiseY: oracle_stepwise_props selectorY oracleY
s: state (preloaded_with_all_messages_vlsm X)
Hs: constrained_state_prop X s
m: message
trX: list transition_item
itemY, itemX: transition_item
HitemX: itemX ∈ trX
l: label Y
Hpr: Some {| l := l; input := input itemX; destination := state_project (destination itemX); output := output itemX |} = Some itemY
isX: state (preloaded_with_all_messages_vlsm X)
HtrX: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm Y) (state_project isX) (state_project s) (VLSM_projection_finite_trace_project Hsimul trX)
HsY: valid_state_prop (preloaded_with_all_messages_vlsm Y) (state_project s)selectorY m itemY → selectorX m itemXby apply Hselector. Qed. End sec_selectors.message: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
oracleX: state X → message → Prop
oracleY: state Y → message → Prop
HstepwiseX: oracle_stepwise_props selectorX oracleX
HstepwiseY: oracle_stepwise_props selectorY oracleY
s: state (preloaded_with_all_messages_vlsm X)
Hs: constrained_state_prop X s
m: message
trX: list transition_item
itemY, itemX: transition_item
HitemX: itemX ∈ trX
l: label Y
Hpr: Some {| l := l; input := input itemX; destination := state_project (destination itemX); output := output itemX |} = Some itemY
isX: state (preloaded_with_all_messages_vlsm X)
HtrX: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm Y) (state_project isX) (state_project s) (VLSM_projection_finite_trace_project Hsimul trX)
HsY: valid_state_prop (preloaded_with_all_messages_vlsm Y) (state_project s)
H0: {| l := l; input := input itemX; destination := state_project (destination itemX); output := output itemX |} = itemYselectorY m {| l := l; input := input itemX; destination := state_project (destination itemX); output := output itemX |} → selectorX m itemXmessage: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenSentCapability Y∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, has_been_sent Y (state_project s) m → has_been_sent X s mmessage: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenSentCapability Y∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, has_been_sent Y (state_project s) m → has_been_sent X s mmessage: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenSentCapability Y∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, field_selector output m itemX ↔ field_selector output m itemYmessage: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenSentCapability Yoracle_stepwise_props (field_selector output) (has_been_sent X)message: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenSentCapability Yoracle_stepwise_props (field_selector output) (has_been_sent Y)by intros [] [] **; cbn in *; subst.message: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenSentCapability Y∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, field_selector output m itemX ↔ field_selector output m itemYby apply (has_been_sent_stepwise_props X).message: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenSentCapability Yoracle_stepwise_props (field_selector output) (has_been_sent X)by apply (has_been_sent_stepwise_props Y). Qed.message: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenSentCapability Yoracle_stepwise_props (field_selector output) (has_been_sent Y)message: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenReceivedCapability X
H0: HasBeenReceivedCapability Y∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, has_been_received Y (state_project s) m → has_been_received X s mmessage: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenReceivedCapability X
H0: HasBeenReceivedCapability Y∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, has_been_received Y (state_project s) m → has_been_received X s mmessage: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenReceivedCapability X
H0: HasBeenReceivedCapability Y∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, field_selector input m itemX ↔ field_selector input m itemYmessage: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenReceivedCapability X
H0: HasBeenReceivedCapability Yoracle_stepwise_props (field_selector input) (has_been_received X)message: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenReceivedCapability X
H0: HasBeenReceivedCapability Yoracle_stepwise_props (field_selector input) (has_been_received Y)by intros [] [] **; cbn in *; subst.message: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenReceivedCapability X
H0: HasBeenReceivedCapability Y∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, field_selector input m itemX ↔ field_selector input m itemYby apply (has_been_received_stepwise_props X).message: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenReceivedCapability X
H0: HasBeenReceivedCapability Yoracle_stepwise_props (field_selector input) (has_been_received X)by apply (has_been_received_stepwise_props Y). Qed.message: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenReceivedCapability X
H0: HasBeenReceivedCapability Yoracle_stepwise_props (field_selector input) (has_been_received Y)message: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
H1: HasBeenSentCapability Y
H2: HasBeenReceivedCapability Y∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, has_been_directly_observed Y (state_project s) m → has_been_directly_observed X s mmessage: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
H1: HasBeenSentCapability Y
H2: HasBeenReceivedCapability Y∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, has_been_directly_observed Y (state_project s) m → has_been_directly_observed X s mmessage: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
H1: HasBeenSentCapability Y
H2: HasBeenReceivedCapability Y∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, item_sends_or_receives m itemX ↔ item_sends_or_receives m itemYmessage: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
H1: HasBeenSentCapability Y
H2: HasBeenReceivedCapability Yoracle_stepwise_props item_sends_or_receives (has_been_directly_observed X)message: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
H1: HasBeenSentCapability Y
H2: HasBeenReceivedCapability Yoracle_stepwise_props item_sends_or_receives (has_been_directly_observed Y)by intros [] [] **; cbn in *; subst.message: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
H1: HasBeenSentCapability Y
H2: HasBeenReceivedCapability Y∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, item_sends_or_receives m itemX ↔ item_sends_or_receives m itemYby apply has_been_directly_observed_stepwise_props.message: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
H1: HasBeenSentCapability Y
H2: HasBeenReceivedCapability Yoracle_stepwise_props item_sends_or_receives (has_been_directly_observed X)by apply has_been_directly_observed_stepwise_props. Qed. End sec_projection_oracle. Section sec_weak_embedding_oracle.message: Type
X, Y: VLSM message
label_project: label X → option (label Y)
state_project: state X → state Y
Hsimul: VLSM_projection (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
H1: HasBeenSentCapability Y
H2: HasBeenReceivedCapability Yoracle_stepwise_props item_sends_or_receives (has_been_directly_observed Y)
Context {message : Type} {X Y : VLSM message} {label_project : label X -> label Y} {state_project : state X -> state Y} (Hsimul : VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project) . Section sec_selectors. Context (selectorX : message -> transition_item X -> Prop) (selectorY : message -> transition_item Y -> Prop) (Hselector : forall itemX itemY, input itemX = input itemY -> output itemX = output itemY -> forall m, selectorX m itemX <-> selectorY m itemY) .message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
s: state (preloaded_with_all_messages_vlsm X)
m: messageselected_message_exists_in_some_preloaded_traces X selectorX s m → selected_message_exists_in_some_preloaded_traces Y selectorY (state_project s) mmessage: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
s: state (preloaded_with_all_messages_vlsm X)
m: messageselected_message_exists_in_some_preloaded_traces X selectorX s m → selected_message_exists_in_some_preloaded_traces Y selectorY (state_project s) mmessage: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
s: state (preloaded_with_all_messages_vlsm X)
m: message
is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm X) is s tr
Hm: trace_has_message selectorX m trselected_message_exists_in_some_preloaded_traces Y selectorY (state_project s) mmessage: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
s: state (preloaded_with_all_messages_vlsm X)
m: message
is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) is s tr
His: initial_state_prop is
Hm: trace_has_message selectorX m trselected_message_exists_in_some_preloaded_traces Y selectorY (state_project s) mmessage: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
s: state (preloaded_with_all_messages_vlsm X)
m: message
is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Y) (state_project is) (state_project s) (VLSM_weak_embedding_finite_trace_project Hsimul tr)
His: initial_state_prop is
Hm: trace_has_message selectorX m trselected_message_exists_in_some_preloaded_traces Y selectorY (state_project s) mmessage: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
s: state (preloaded_with_all_messages_vlsm X)
m: message
is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Y) (state_project is) (state_project s) (VLSM_weak_embedding_finite_trace_project Hsimul tr)
His: initial_state_prop is
Hm: trace_has_message selectorX m tr
Hpr_is: valid_state_prop (preloaded_with_all_messages_vlsm Y) (state_project is)selected_message_exists_in_some_preloaded_traces Y selectorY (state_project s) mmessage: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
s: state (preloaded_with_all_messages_vlsm X)
m: message
is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Y) (state_project is) (state_project s) (VLSM_weak_embedding_finite_trace_project Hsimul tr)
His: initial_state_prop is
Hm: trace_has_message selectorX m tr
is': state (preloaded_with_all_messages_vlsm Y)
tr_is: list transition_item
Hpr_is: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm Y) is' (state_project is) tr_isselected_message_exists_in_some_preloaded_traces Y selectorY (state_project s) mmessage: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
s: state (preloaded_with_all_messages_vlsm X)
m: message
is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Y) (state_project is) (state_project s) (VLSM_weak_embedding_finite_trace_project Hsimul tr)
His: initial_state_prop is
Hm: trace_has_message selectorX m tr
is': state (preloaded_with_all_messages_vlsm Y)
tr_is: list transition_item
Hpr_is: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm Y) is' (state_project is) tr_is∃ _ : finite_valid_trace_init_to (preloaded_with_all_messages_vlsm Y) is' (state_project s) (tr_is ++ VLSM_weak_embedding_finite_trace_project Hsimul tr), trace_has_message selectorY m (tr_is ++ VLSM_weak_embedding_finite_trace_project Hsimul tr)message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
s: state (preloaded_with_all_messages_vlsm X)
m: message
is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Y) (state_project is) (state_project s) (VLSM_weak_embedding_finite_trace_project Hsimul tr)
His: initial_state_prop is
Hm: trace_has_message selectorX m tr
is': state (preloaded_with_all_messages_vlsm Y)
tr_is: list transition_item
Hpr_is: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Y) is' (state_project is) tr_is
His': initial_state_prop is'∃ _ : finite_valid_trace_init_to (preloaded_with_all_messages_vlsm Y) is' (state_project s) (tr_is ++ VLSM_weak_embedding_finite_trace_project Hsimul tr), trace_has_message selectorY m (tr_is ++ VLSM_weak_embedding_finite_trace_project Hsimul tr)message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
s: state (preloaded_with_all_messages_vlsm X)
m: message
is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Y) (state_project is) (state_project s) (VLSM_weak_embedding_finite_trace_project Hsimul tr)
His: initial_state_prop is
Hm: trace_has_message selectorX m tr
is': state (preloaded_with_all_messages_vlsm Y)
tr_is: list transition_item
Hpr_is: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Y) is' (state_project is) tr_is
His': initial_state_prop is'finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Y) is' (state_project s) (tr_is ++ VLSM_weak_embedding_finite_trace_project Hsimul tr)message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
s: state (preloaded_with_all_messages_vlsm X)
m: message
is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Y) (state_project is) (state_project s) (VLSM_weak_embedding_finite_trace_project Hsimul tr)
His: initial_state_prop is
Hm: trace_has_message selectorX m tr
is': state (preloaded_with_all_messages_vlsm Y)
tr_is: list transition_item
Hpr_is: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Y) is' (state_project is) tr_is
His': initial_state_prop is'trace_has_message selectorY m (tr_is ++ VLSM_weak_embedding_finite_trace_project Hsimul tr)by eapply (finite_valid_trace_from_to_app (preloaded_with_all_messages_vlsm Y)).message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
s: state (preloaded_with_all_messages_vlsm X)
m: message
is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Y) (state_project is) (state_project s) (VLSM_weak_embedding_finite_trace_project Hsimul tr)
His: initial_state_prop is
Hm: trace_has_message selectorX m tr
is': state (preloaded_with_all_messages_vlsm Y)
tr_is: list transition_item
Hpr_is: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Y) is' (state_project is) tr_is
His': initial_state_prop is'finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Y) is' (state_project s) (tr_is ++ VLSM_weak_embedding_finite_trace_project Hsimul tr)message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
s: state (preloaded_with_all_messages_vlsm X)
m: message
is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Y) (state_project is) (state_project s) (VLSM_weak_embedding_finite_trace_project Hsimul tr)
His: initial_state_prop is
Hm: trace_has_message selectorX m tr
is': state (preloaded_with_all_messages_vlsm Y)
tr_is: list transition_item
Hpr_is: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Y) is' (state_project is) tr_is
His': initial_state_prop is'trace_has_message selectorY m (tr_is ++ VLSM_weak_embedding_finite_trace_project Hsimul tr)message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
s: state (preloaded_with_all_messages_vlsm X)
m: message
is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Y) (state_project is) (state_project s) (VLSM_weak_embedding_finite_trace_project Hsimul tr)
His: initial_state_prop is
Hm: trace_has_message selectorX m tr
is': state (preloaded_with_all_messages_vlsm Y)
tr_is: list transition_item
Hpr_is: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Y) is' (state_project is) tr_is
His': initial_state_prop is'Exists (selectorY m) tr_is ∨ Exists (selectorY m) (VLSM_weak_embedding_finite_trace_project Hsimul tr)message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
s: state (preloaded_with_all_messages_vlsm X)
m: message
is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Y) (state_project is) (state_project s) (VLSM_weak_embedding_finite_trace_project Hsimul tr)
His: initial_state_prop is
Hm: trace_has_message selectorX m tr
is': state (preloaded_with_all_messages_vlsm Y)
tr_is: list transition_item
Hpr_is: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Y) is' (state_project is) tr_is
His': initial_state_prop is'Exists (selectorY m) (VLSM_weak_embedding_finite_trace_project Hsimul tr)message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
s: state (preloaded_with_all_messages_vlsm X)
m: message
is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Y) (state_project is) (state_project s) (VLSM_weak_embedding_finite_trace_project Hsimul tr)
His: initial_state_prop is
item: transition_item
Hitem: item ∈ tr
Hm: selectorX m item
is': state (preloaded_with_all_messages_vlsm Y)
tr_is: list transition_item
Hpr_is: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Y) is' (state_project is) tr_is
His': initial_state_prop is'Exists (selectorY m) (VLSM_weak_embedding_finite_trace_project Hsimul tr)message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
s: state (preloaded_with_all_messages_vlsm X)
m: message
is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Y) (state_project is) (state_project s) (VLSM_weak_embedding_finite_trace_project Hsimul tr)
His: initial_state_prop is
item: transition_item
pre, suf: list transition_item
Heqtr: tr = pre ++ item :: suf
Hm: selectorX m item
is': state (preloaded_with_all_messages_vlsm Y)
tr_is: list transition_item
Hpr_is: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Y) is' (state_project is) tr_is
His': initial_state_prop is'Exists (selectorY m) (VLSM_weak_embedding_finite_trace_project Hsimul tr)message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
s: state (preloaded_with_all_messages_vlsm X)
m: message
is: state (preloaded_with_all_messages_vlsm X)
item: transition_item
pre, suf: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Y) (state_project is) (state_project s) (VLSM_weak_embedding_finite_trace_project Hsimul (pre ++ item :: suf))
His: initial_state_prop is
Hm: selectorX m item
is': state (preloaded_with_all_messages_vlsm Y)
tr_is: list transition_item
Hpr_is: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Y) is' (state_project is) tr_is
His': initial_state_prop is'Exists (selectorY m) (VLSM_weak_embedding_finite_trace_project Hsimul (pre ++ item :: suf))message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
s: state (preloaded_with_all_messages_vlsm X)
m: message
is: state (preloaded_with_all_messages_vlsm X)
item: transition_item
pre, suf: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Y) (state_project is) (state_project s) (VLSM_weak_embedding_finite_trace_project Hsimul (pre ++ item :: suf))
His: initial_state_prop is
Hm: selectorX m item
is': state (preloaded_with_all_messages_vlsm Y)
tr_is: list transition_item
Hpr_is: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Y) is' (state_project is) tr_is
His': initial_state_prop is'Exists (selectorY m) (map (pre_VLSM_embedding_transition_item_project (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project) pre ++ map (pre_VLSM_embedding_transition_item_project (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project) (item :: suf))message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
s: state (preloaded_with_all_messages_vlsm X)
m: message
is: state (preloaded_with_all_messages_vlsm X)
item: transition_item
pre, suf: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Y) (state_project is) (state_project s) (VLSM_weak_embedding_finite_trace_project Hsimul (pre ++ item :: suf))
His: initial_state_prop is
Hm: selectorX m item
is': state (preloaded_with_all_messages_vlsm Y)
tr_is: list transition_item
Hpr_is: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Y) is' (state_project is) tr_is
His': initial_state_prop is'Exists (selectorY m) (map (pre_VLSM_embedding_transition_item_project (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project) pre) ∨ Exists (selectorY m) (map (pre_VLSM_embedding_transition_item_project (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project) (item :: suf))message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
s: state (preloaded_with_all_messages_vlsm X)
m: message
is: state (preloaded_with_all_messages_vlsm X)
item: transition_item
pre, suf: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Y) (state_project is) (state_project s) (VLSM_weak_embedding_finite_trace_project Hsimul (pre ++ item :: suf))
His: initial_state_prop is
Hm: selectorX m item
is': state (preloaded_with_all_messages_vlsm Y)
tr_is: list transition_item
Hpr_is: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Y) is' (state_project is) tr_is
His': initial_state_prop is'Exists (selectorY m) (map (pre_VLSM_embedding_transition_item_project (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project) (item :: suf))message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
s: state (preloaded_with_all_messages_vlsm X)
m: message
is: state (preloaded_with_all_messages_vlsm X)
item: transition_item
pre, suf: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Y) (state_project is) (state_project s) (VLSM_weak_embedding_finite_trace_project Hsimul (pre ++ item :: suf))
His: initial_state_prop is
Hm: selectorX m item
is': state (preloaded_with_all_messages_vlsm Y)
tr_is: list transition_item
Hpr_is: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Y) is' (state_project is) tr_is
His': initial_state_prop is'Exists (selectorY m) (pre_VLSM_embedding_transition_item_project X Y label_project state_project item :: map (pre_VLSM_embedding_transition_item_project X Y label_project state_project) suf)message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
s: state (preloaded_with_all_messages_vlsm X)
m: message
is: state (preloaded_with_all_messages_vlsm X)
item: transition_item
pre, suf: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Y) (state_project is) (state_project s) (VLSM_weak_embedding_finite_trace_project Hsimul (pre ++ item :: suf))
His: initial_state_prop is
Hm: selectorX m item
is': state (preloaded_with_all_messages_vlsm Y)
tr_is: list transition_item
Hpr_is: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Y) is' (state_project is) tr_is
His': initial_state_prop is'selectorY m (pre_VLSM_embedding_transition_item_project X Y label_project state_project item)by apply (Hselector item itemY); subst. Qed.message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
s: state (preloaded_with_all_messages_vlsm X)
m: message
is: state (preloaded_with_all_messages_vlsm X)
item: transition_item
pre, suf: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Y) (state_project is) (state_project s) (VLSM_weak_embedding_finite_trace_project Hsimul (pre ++ item :: suf))
His: initial_state_prop is
Hm: selectorX m item
is': state (preloaded_with_all_messages_vlsm Y)
tr_is: list transition_item
Hpr_is: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Y) is' (state_project is) tr_is
His': initial_state_prop is'
itemY: transition_item
HeqitemY: itemY = pre_VLSM_embedding_transition_item_project X Y label_project state_project itemselectorY m itemYmessage: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
oracleX: state_message_oracle X
oracleY: state_message_oracle Y
HstepwiseX: oracle_stepwise_props selectorX oracleX
HstepwiseY: oracle_stepwise_props selectorY oracleY
HoracleX_dec: RelDecision oracleX
HoracleY_dec: RelDecision oracleY∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, oracleX s m → oracleY (state_project s) mmessage: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
oracleX: state_message_oracle X
oracleY: state_message_oracle Y
HstepwiseX: oracle_stepwise_props selectorX oracleX
HstepwiseY: oracle_stepwise_props selectorY oracleY
HoracleX_dec: RelDecision oracleX
HoracleY_dec: RelDecision oracleY∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, oracleX s m → oracleY (state_project s) mmessage: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
oracleX: state_message_oracle X
oracleY: state_message_oracle Y
HstepwiseX: oracle_stepwise_props selectorX oracleX
HstepwiseY: oracle_stepwise_props selectorY oracleY
HoracleX_dec: RelDecision oracleX
HoracleY_dec: RelDecision oracleY
s: state (preloaded_with_all_messages_vlsm X)
Hs: constrained_state_prop X s
m: message
Hm: oracleX s moracleY (state_project s) mmessage: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
oracleX: state_message_oracle X
oracleY: state_message_oracle Y
HstepwiseX: oracle_stepwise_props selectorX oracleX
HstepwiseY: oracle_stepwise_props selectorY oracleY
HoracleX_dec: RelDecision oracleX
HoracleY_dec: RelDecision oracleY
s: state (preloaded_with_all_messages_vlsm X)
Hs: constrained_state_prop X s
m: message
Hm: selected_message_exists_in_all_preloaded_traces X selectorX s moracleY (state_project s) mmessage: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
oracleX: state_message_oracle X
oracleY: state_message_oracle Y
HstepwiseX: oracle_stepwise_props selectorX oracleX
HstepwiseY: oracle_stepwise_props selectorY oracleY
HoracleX_dec: RelDecision oracleX
HoracleY_dec: RelDecision oracleY
s: state (preloaded_with_all_messages_vlsm X)
Hs: constrained_state_prop X s
m: message
Hm: selected_message_exists_in_some_preloaded_traces X selectorX s moracleY (state_project s) mmessage: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
oracleX: state_message_oracle X
oracleY: state_message_oracle Y
HstepwiseX: oracle_stepwise_props selectorX oracleX
HstepwiseY: oracle_stepwise_props selectorY oracleY
HoracleX_dec: RelDecision oracleX
HoracleY_dec: RelDecision oracleY
s: state (preloaded_with_all_messages_vlsm X)
Hs: constrained_state_prop X s
m: message
Hm: selected_message_exists_in_some_preloaded_traces X selectorX s m
HsY: valid_state_prop (preloaded_with_all_messages_vlsm Y) (state_project s)oracleY (state_project s) mmessage: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
oracleX: state_message_oracle X
oracleY: state_message_oracle Y
HstepwiseX: oracle_stepwise_props selectorX oracleX
HstepwiseY: oracle_stepwise_props selectorY oracleY
HoracleX_dec: RelDecision oracleX
HoracleY_dec: RelDecision oracleY
s: state (preloaded_with_all_messages_vlsm X)
Hs: constrained_state_prop X s
m: message
Hm: selected_message_exists_in_some_preloaded_traces X selectorX s m
HsY: valid_state_prop (preloaded_with_all_messages_vlsm Y) (state_project s)selected_message_exists_in_all_preloaded_traces Y selectorY (state_project s) mby apply VLSM_weak_embedding_selected_message_exists_in_some_preloaded_traces. Qed. End sec_selectors.message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
selectorX, selectorY: message → transition_item → Prop
Hselector: ∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, selectorX m itemX ↔ selectorY m itemY
oracleX: state_message_oracle X
oracleY: state_message_oracle Y
HstepwiseX: oracle_stepwise_props selectorX oracleX
HstepwiseY: oracle_stepwise_props selectorY oracleY
HoracleX_dec: RelDecision oracleX
HoracleY_dec: RelDecision oracleY
s: state (preloaded_with_all_messages_vlsm X)
Hs: constrained_state_prop X s
m: message
Hm: selected_message_exists_in_some_preloaded_traces X selectorX s m
HsY: valid_state_prop (preloaded_with_all_messages_vlsm Y) (state_project s)selected_message_exists_in_some_preloaded_traces Y selectorY (state_project s) mmessage: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenSentCapability Y∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, has_been_sent X s m → has_been_sent Y (state_project s) mmessage: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenSentCapability Y∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, has_been_sent X s m → has_been_sent Y (state_project s) mmessage: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenSentCapability Y∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, field_selector output m itemX ↔ field_selector output m itemYmessage: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenSentCapability Yoracle_stepwise_props (field_selector output) (has_been_sent X)message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenSentCapability Yoracle_stepwise_props (field_selector output) (has_been_sent Y)message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenSentCapability YRelDecision (has_been_sent X)message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenSentCapability YRelDecision (has_been_sent Y)by intros [] [] Hin Hout; cbn in *; subst.message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenSentCapability Y∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, field_selector output m itemX ↔ field_selector output m itemYby apply (has_been_sent_stepwise_props X).message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenSentCapability Yoracle_stepwise_props (field_selector output) (has_been_sent X)by apply (has_been_sent_stepwise_props Y).message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenSentCapability Yoracle_stepwise_props (field_selector output) (has_been_sent Y)by apply has_been_sent_dec.message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenSentCapability YRelDecision (has_been_sent X)by apply has_been_sent_dec. Qed.message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenSentCapability YRelDecision (has_been_sent Y)message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenReceivedCapability X
H0: HasBeenReceivedCapability Y∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, has_been_received X s m → has_been_received Y (state_project s) mmessage: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenReceivedCapability X
H0: HasBeenReceivedCapability Y∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, has_been_received X s m → has_been_received Y (state_project s) mmessage: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenReceivedCapability X
H0: HasBeenReceivedCapability Y∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, field_selector input m itemX ↔ field_selector input m itemYmessage: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenReceivedCapability X
H0: HasBeenReceivedCapability Yoracle_stepwise_props (field_selector input) (has_been_received X)message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenReceivedCapability X
H0: HasBeenReceivedCapability Yoracle_stepwise_props (field_selector input) (has_been_received Y)message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenReceivedCapability X
H0: HasBeenReceivedCapability YRelDecision (has_been_received X)message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenReceivedCapability X
H0: HasBeenReceivedCapability YRelDecision (has_been_received Y)by intros [] [] Hin Hout; cbn in *; subst.message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenReceivedCapability X
H0: HasBeenReceivedCapability Y∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, field_selector input m itemX ↔ field_selector input m itemYby apply (has_been_received_stepwise_props X).message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenReceivedCapability X
H0: HasBeenReceivedCapability Yoracle_stepwise_props (field_selector input) (has_been_received X)by apply (has_been_received_stepwise_props Y).message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenReceivedCapability X
H0: HasBeenReceivedCapability Yoracle_stepwise_props (field_selector input) (has_been_received Y)by apply has_been_received_dec.message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenReceivedCapability X
H0: HasBeenReceivedCapability YRelDecision (has_been_received X)by apply has_been_received_dec. Qed.message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenReceivedCapability X
H0: HasBeenReceivedCapability YRelDecision (has_been_received Y)message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
H1: HasBeenSentCapability Y
H2: HasBeenReceivedCapability Y∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, has_been_directly_observed X s m → has_been_directly_observed Y (state_project s) mmessage: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
H1: HasBeenSentCapability Y
H2: HasBeenReceivedCapability Y∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, has_been_directly_observed X s m → has_been_directly_observed Y (state_project s) mmessage: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
H1: HasBeenSentCapability Y
H2: HasBeenReceivedCapability Y∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, item_sends_or_receives m itemX ↔ item_sends_or_receives m itemYmessage: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
H1: HasBeenSentCapability Y
H2: HasBeenReceivedCapability Yoracle_stepwise_props item_sends_or_receives (has_been_directly_observed X)message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
H1: HasBeenSentCapability Y
H2: HasBeenReceivedCapability Yoracle_stepwise_props item_sends_or_receives (has_been_directly_observed Y)message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
H1: HasBeenSentCapability Y
H2: HasBeenReceivedCapability YRelDecision (has_been_directly_observed X)message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
H1: HasBeenSentCapability Y
H2: HasBeenReceivedCapability YRelDecision (has_been_directly_observed Y)by intros [] [] **; cbn in *; subst.message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
H1: HasBeenSentCapability Y
H2: HasBeenReceivedCapability Y∀ itemX itemY : transition_item, input itemX = input itemY → output itemX = output itemY → ∀ m : message, item_sends_or_receives m itemX ↔ item_sends_or_receives m itemYby apply has_been_directly_observed_stepwise_props.message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
H1: HasBeenSentCapability Y
H2: HasBeenReceivedCapability Yoracle_stepwise_props item_sends_or_receives (has_been_directly_observed X)by apply has_been_directly_observed_stepwise_props.message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
H1: HasBeenSentCapability Y
H2: HasBeenReceivedCapability Yoracle_stepwise_props item_sends_or_receives (has_been_directly_observed Y)by apply has_been_directly_observed_dec.message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
H1: HasBeenSentCapability Y
H2: HasBeenReceivedCapability YRelDecision (has_been_directly_observed X)by apply has_been_directly_observed_dec. Qed. End sec_weak_embedding_oracle. Section sec_embedding_oracle.message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_weak_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
H1: HasBeenSentCapability Y
H2: HasBeenReceivedCapability YRelDecision (has_been_directly_observed Y)
Context {message : Type} {X Y : VLSM message} {label_project : label X -> label Y} {state_project : state X -> state Y} (Hsimul : VLSM_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project) .message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenSentCapability Y∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, has_been_sent X s m → has_been_sent Y (state_project s) mexact (VLSM_weak_embedding_has_been_sent (VLSM_embedding_weaken Hsimul)). Qed.message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenSentCapability Y∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, has_been_sent X s m → has_been_sent Y (state_project s) mmessage: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenReceivedCapability X
H0: HasBeenReceivedCapability Y∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, has_been_received X s m → has_been_received Y (state_project s) mexact (VLSM_weak_embedding_has_been_received (VLSM_embedding_weaken Hsimul)). Qed.message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenReceivedCapability X
H0: HasBeenReceivedCapability Y∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, has_been_received X s m → has_been_received Y (state_project s) mmessage: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
H1: HasBeenSentCapability Y
H2: HasBeenReceivedCapability Y∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, has_been_directly_observed X s m → has_been_directly_observed Y (state_project s) mexact (VLSM_weak_embedding_has_been_directly_observed (VLSM_embedding_weaken Hsimul)). Qed.message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
H1: HasBeenSentCapability Y
H2: HasBeenReceivedCapability Y∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, has_been_directly_observed X s m → has_been_directly_observed Y (state_project s) mmessage: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenSentCapability Y∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, has_been_sent Y (state_project s) m → has_been_sent X s mexact (VLSM_projection_has_been_sent_reflect (VLSM_embedding_is_projection Hsimul)). Qed.message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenSentCapability Y∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, has_been_sent Y (state_project s) m → has_been_sent X s mmessage: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenReceivedCapability X
H0: HasBeenReceivedCapability Y∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, has_been_received Y (state_project s) m → has_been_received X s mexact (VLSM_projection_has_been_received_reflect (VLSM_embedding_is_projection Hsimul)). Qed.message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenReceivedCapability X
H0: HasBeenReceivedCapability Y∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, has_been_received Y (state_project s) m → has_been_received X s mmessage: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
H1: HasBeenSentCapability Y
H2: HasBeenReceivedCapability Y∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, has_been_directly_observed Y (state_project s) m → has_been_directly_observed X s mexact (VLSM_projection_has_been_directly_observed_reflect (VLSM_embedding_is_projection Hsimul)). Qed. End sec_embedding_oracle. Section sec_incl_oracle.message: Type
X, Y: VLSM message
label_project: label X → label Y
state_project: state X → state Y
Hsimul: VLSM_embedding (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y) label_project state_project
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
H1: HasBeenSentCapability Y
H2: HasBeenReceivedCapability Y∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, has_been_directly_observed Y (state_project s) m → has_been_directly_observed X s m
Context {message : Type} {T : VLSMType message} {MX MY : VLSMMachine T} (X := mk_vlsm MX) (Y := mk_vlsm MY) (Hincl : VLSM_incl (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y)) .message: Type
T: VLSMType message
MX, MY: VLSMMachine T
X:= {| vlsm_type := T; vlsm_machine := MX |}: VLSM message
Y:= {| vlsm_type := T; vlsm_machine := MY |}: VLSM message
Hincl: VLSM_incl (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y)
H: HasBeenSentCapability X
H0: HasBeenSentCapability Y∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, has_been_sent X s m → has_been_sent Y s mmessage: Type
T: VLSMType message
MX, MY: VLSMMachine T
X:= {| vlsm_type := T; vlsm_machine := MX |}: VLSM message
Y:= {| vlsm_type := T; vlsm_machine := MY |}: VLSM message
Hincl: VLSM_incl (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y)
H: HasBeenSentCapability X
H0: HasBeenSentCapability Y∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, has_been_sent X s m → has_been_sent Y s mby eapply (@VLSM_embedding_has_been_sent _ X Y _ _ (VLSM_incl_is_embedding Hincl)). Qed.message: Type
T: VLSMType message
MX, MY: VLSMMachine T
X:= {| vlsm_type := T; vlsm_machine := MX |}: VLSM message
Y:= {| vlsm_type := T; vlsm_machine := MY |}: VLSM message
Hincl: VLSM_incl (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y)
H: HasBeenSentCapability X
H0: HasBeenSentCapability Y
s: state (preloaded_with_all_messages_vlsm X)
Hs: constrained_state_prop X s
m: message
Hm: has_been_sent X s mhas_been_sent Y s mmessage: Type
T: VLSMType message
MX, MY: VLSMMachine T
X:= {| vlsm_type := T; vlsm_machine := MX |}: VLSM message
Y:= {| vlsm_type := T; vlsm_machine := MY |}: VLSM message
Hincl: VLSM_incl (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y)
H: HasBeenReceivedCapability X
H0: HasBeenReceivedCapability Y∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, has_been_received X s m → has_been_received Y s mmessage: Type
T: VLSMType message
MX, MY: VLSMMachine T
X:= {| vlsm_type := T; vlsm_machine := MX |}: VLSM message
Y:= {| vlsm_type := T; vlsm_machine := MY |}: VLSM message
Hincl: VLSM_incl (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y)
H: HasBeenReceivedCapability X
H0: HasBeenReceivedCapability Y∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, has_been_received X s m → has_been_received Y s mby eapply (@VLSM_embedding_has_been_received _ X Y _ _ (VLSM_incl_is_embedding Hincl)). Qed.message: Type
T: VLSMType message
MX, MY: VLSMMachine T
X:= {| vlsm_type := T; vlsm_machine := MX |}: VLSM message
Y:= {| vlsm_type := T; vlsm_machine := MY |}: VLSM message
Hincl: VLSM_incl (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y)
H: HasBeenReceivedCapability X
H0: HasBeenReceivedCapability Y
s: state (preloaded_with_all_messages_vlsm X)
Hs: constrained_state_prop X s
m: message
Hm: has_been_received X s mhas_been_received Y s mmessage: Type
T: VLSMType message
MX, MY: VLSMMachine T
X:= {| vlsm_type := T; vlsm_machine := MX |}: VLSM message
Y:= {| vlsm_type := T; vlsm_machine := MY |}: VLSM message
Hincl: VLSM_incl (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y)
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
H1: HasBeenSentCapability Y
H2: HasBeenReceivedCapability Y∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, has_been_directly_observed X s m → has_been_directly_observed Y s mmessage: Type
T: VLSMType message
MX, MY: VLSMMachine T
X:= {| vlsm_type := T; vlsm_machine := MX |}: VLSM message
Y:= {| vlsm_type := T; vlsm_machine := MY |}: VLSM message
Hincl: VLSM_incl (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y)
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
H1: HasBeenSentCapability Y
H2: HasBeenReceivedCapability Y∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, has_been_directly_observed X s m → has_been_directly_observed Y s mby eapply (@VLSM_embedding_has_been_directly_observed _ X Y _ _ (VLSM_incl_is_embedding Hincl)). Qed.message: Type
T: VLSMType message
MX, MY: VLSMMachine T
X:= {| vlsm_type := T; vlsm_machine := MX |}: VLSM message
Y:= {| vlsm_type := T; vlsm_machine := MY |}: VLSM message
Hincl: VLSM_incl (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y)
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
H1: HasBeenSentCapability Y
H2: HasBeenReceivedCapability Y
s: state (preloaded_with_all_messages_vlsm X)
Hs: constrained_state_prop X s
m: message
Hm: has_been_directly_observed X s mhas_been_directly_observed Y s mmessage: Type
T: VLSMType message
MX, MY: VLSMMachine T
X:= {| vlsm_type := T; vlsm_machine := MX |}: VLSM message
Y:= {| vlsm_type := T; vlsm_machine := MY |}: VLSM message
Hincl: VLSM_incl (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y)
H: HasBeenSentCapability X
H0: HasBeenSentCapability Y∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, has_been_sent Y s m → has_been_sent X s mmessage: Type
T: VLSMType message
MX, MY: VLSMMachine T
X:= {| vlsm_type := T; vlsm_machine := MX |}: VLSM message
Y:= {| vlsm_type := T; vlsm_machine := MY |}: VLSM message
Hincl: VLSM_incl (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y)
H: HasBeenSentCapability X
H0: HasBeenSentCapability Y∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, has_been_sent Y s m → has_been_sent X s mby eapply (@VLSM_embedding_has_been_sent_reflect _ X Y _ _ (VLSM_incl_is_embedding Hincl)). Qed.message: Type
T: VLSMType message
MX, MY: VLSMMachine T
X:= {| vlsm_type := T; vlsm_machine := MX |}: VLSM message
Y:= {| vlsm_type := T; vlsm_machine := MY |}: VLSM message
Hincl: VLSM_incl (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y)
H: HasBeenSentCapability X
H0: HasBeenSentCapability Y
s: state (preloaded_with_all_messages_vlsm X)
Hs: constrained_state_prop X s
m: message
Hm: has_been_sent Y s mhas_been_sent X s mmessage: Type
T: VLSMType message
MX, MY: VLSMMachine T
X:= {| vlsm_type := T; vlsm_machine := MX |}: VLSM message
Y:= {| vlsm_type := T; vlsm_machine := MY |}: VLSM message
Hincl: VLSM_incl (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y)
H: HasBeenReceivedCapability X
H0: HasBeenReceivedCapability Y∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, has_been_received Y s m → has_been_received X s mmessage: Type
T: VLSMType message
MX, MY: VLSMMachine T
X:= {| vlsm_type := T; vlsm_machine := MX |}: VLSM message
Y:= {| vlsm_type := T; vlsm_machine := MY |}: VLSM message
Hincl: VLSM_incl (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y)
H: HasBeenReceivedCapability X
H0: HasBeenReceivedCapability Y∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, has_been_received Y s m → has_been_received X s mby eapply (@VLSM_embedding_has_been_received_reflect _ X Y _ _ (VLSM_incl_is_embedding Hincl)). Qed.message: Type
T: VLSMType message
MX, MY: VLSMMachine T
X:= {| vlsm_type := T; vlsm_machine := MX |}: VLSM message
Y:= {| vlsm_type := T; vlsm_machine := MY |}: VLSM message
Hincl: VLSM_incl (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y)
H: HasBeenReceivedCapability X
H0: HasBeenReceivedCapability Y
s: state (preloaded_with_all_messages_vlsm X)
Hs: constrained_state_prop X s
m: message
Hm: has_been_received Y s mhas_been_received X s mmessage: Type
T: VLSMType message
MX, MY: VLSMMachine T
X:= {| vlsm_type := T; vlsm_machine := MX |}: VLSM message
Y:= {| vlsm_type := T; vlsm_machine := MY |}: VLSM message
Hincl: VLSM_incl (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y)
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
H1: HasBeenSentCapability Y
H2: HasBeenReceivedCapability Y∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, has_been_directly_observed Y s m → has_been_directly_observed X s mmessage: Type
T: VLSMType message
MX, MY: VLSMMachine T
X:= {| vlsm_type := T; vlsm_machine := MX |}: VLSM message
Y:= {| vlsm_type := T; vlsm_machine := MY |}: VLSM message
Hincl: VLSM_incl (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y)
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
H1: HasBeenSentCapability Y
H2: HasBeenReceivedCapability Y∀ s : state (preloaded_with_all_messages_vlsm X), constrained_state_prop X s → ∀ m : message, has_been_directly_observed Y s m → has_been_directly_observed X s mby eapply (@VLSM_embedding_has_been_directly_observed_reflect _ X Y _ _ (VLSM_incl_is_embedding Hincl)). Qed. End sec_incl_oracle. Section sec_same_IM_oracle_properties. Context {message : Type} `{finite.Finite index} (IM1 IM2 : index -> VLSM message) `{forall i, HasBeenSentCapability (IM1 i)} `{forall i, HasBeenSentCapability (IM2 i)} (Heq : forall i, IM1 i = IM2 i) .message: Type
T: VLSMType message
MX, MY: VLSMMachine T
X:= {| vlsm_type := T; vlsm_machine := MX |}: VLSM message
Y:= {| vlsm_type := T; vlsm_machine := MY |}: VLSM message
Hincl: VLSM_incl (preloaded_with_all_messages_vlsm X) (preloaded_with_all_messages_vlsm Y)
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
H1: HasBeenSentCapability Y
H2: HasBeenReceivedCapability Y
s: state (preloaded_with_all_messages_vlsm X)
Hs: constrained_state_prop X s
m: message
Hm: has_been_directly_observed Y s mhas_been_directly_observed X s m
If two indexed sets of VLSMs are extensionally-equal, then the
has_been_sent predicate is preserved through the same_IM_state_rew map.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM1, IM2: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM1 i)
H1: ∀ i : index, HasBeenSentCapability (IM2 i)
Heq: ∀ i : index, IM1 i = IM2 i
s1: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM1))
m: message
Hs1: constrained_state_prop (free_composite_vlsm IM1) s1composite_has_been_sent IM1 s1 m → composite_has_been_sent IM2 (same_IM_state_rew Heq s1) mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM1, IM2: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM1 i)
H1: ∀ i : index, HasBeenSentCapability (IM2 i)
Heq: ∀ i : index, IM1 i = IM2 i
s1: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM1))
m: message
Hs1: constrained_state_prop (free_composite_vlsm IM1) s1composite_has_been_sent IM1 s1 m → composite_has_been_sent IM2 (same_IM_state_rew Heq s1) mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM1, IM2: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM1 i)
H1: ∀ i : index, HasBeenSentCapability (IM2 i)
Heq: ∀ i : index, IM1 i = IM2 i
s1: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM1))
m: message
Hs1: constrained_state_prop (free_composite_vlsm IM1) s1
Hproj: VLSM_embedding (preloaded_with_all_messages_vlsm (free_composite_vlsm IM1)) (preloaded_with_all_messages_vlsm (free_composite_vlsm IM2)) (same_IM_label_rew Heq) (same_IM_state_rew Heq)composite_has_been_sent IM1 s1 m → composite_has_been_sent IM2 (same_IM_state_rew Heq s1) mby specialize (VLSM_embedding_has_been_sent Hproj _ Hs1 m Hbs1_m). Qed. End sec_same_IM_oracle_properties. Section sec_sender_safety_can_emit_projection. Context {message : Type} `{EqDecision index} (IM : index -> VLSM message) {validator : Type} (A : validator -> index) (sender : message -> option validator) (Hsender_safety : sender_safety_alt_prop IM A sender) (j : index) (m : message) (Hj : option_map A (sender m) = Some j) .message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM1, IM2: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM1 i)
H1: ∀ i : index, HasBeenSentCapability (IM2 i)
Heq: ∀ i : index, IM1 i = IM2 i
s1: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM1))
m: message
Hs1: constrained_state_prop (free_composite_vlsm IM1) s1
Hproj: VLSM_embedding (preloaded_with_all_messages_vlsm (free_composite_vlsm IM1)) (preloaded_with_all_messages_vlsm (free_composite_vlsm IM2)) (same_IM_label_rew Heq) (same_IM_state_rew Heq)
Hbs1_m: composite_has_been_sent IM1 s1 mcomposite_has_been_sent IM2 (same_IM_state_rew Heq s1) m
Under sender_safety_alt_property assumptions, if a message can be emitted
by the free composition (preloaded with all messages), then it can also be
emitted by the component corresponding to its sender (preloaded with all messages).
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
j: index
m: message
Hj: option_map A (sender m) = Some jcan_emit (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) m → can_emit (preloaded_with_all_messages_vlsm (IM j)) mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
j: index
m: message
Hj: option_map A (sender m) = Some jcan_emit (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) m → can_emit (preloaded_with_all_messages_vlsm (IM j)) mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
j: index
m: message
v: validator
Hsender: sender m = Some v
Hj: Some (A v) = Some jcan_emit (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) m → can_emit (preloaded_with_all_messages_vlsm (IM j)) mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
j: index
m: message
v: validator
Hsender: sender m = Some v
Hj: A v = jcan_emit (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) m → can_emit (preloaded_with_all_messages_vlsm (IM j)) mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
validator: Type
A: validator → index
sender: message → option validator
m: message
v: validator
Hsender_safety: ∀ i : index, can_emit (preloaded_with_all_messages_vlsm (IM i)) m → A v = i
j: index
Hsender: sender m = Some v
Hj: A v = jcan_emit (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) m → can_emit (preloaded_with_all_messages_vlsm (IM j)) mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
validator: Type
A: validator → index
sender: message → option validator
m: message
v: validator
Hsender_safety: ∀ i : index, can_emit (preloaded_with_all_messages_vlsm (IM i)) m → A v = i
j: index
Hsender: sender m = Some v
Hj: A v = j
s0: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
om0: option message
i: index
li: label (IM i)
s1: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
Hemitted: input_valid_transition (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (existT i li) (s0, om0) ( s1, Some m)can_emit (preloaded_with_all_messages_vlsm (IM j)) mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
validator: Type
A: validator → index
sender: message → option validator
m: message
v: validator
Hsender_safety: ∀ i : index, can_emit (preloaded_with_all_messages_vlsm (IM i)) m → A v = i
j: index
Hsender: sender m = Some v
Hj: A v = j
s0: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
om0: option message
i: index
li: label (IM i)
s1: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
Hemitted: input_valid_transition (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (existT i li) (s0, om0) ( s1, Some m)
Hproj: VLSM_projection (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (preloaded_with_all_messages_vlsm (IM i)) (composite_project_label IM i) (λ s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)), s i)can_emit (preloaded_with_all_messages_vlsm (IM j)) mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
validator: Type
A: validator → index
sender: message → option validator
m: message
v: validator
Hsender_safety: ∀ i : index, can_emit (preloaded_with_all_messages_vlsm (IM i)) m → A v = i
j: index
Hsender: sender m = Some v
Hj: A v = j
s0: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
om0: option message
i: index
li: label (IM i)
s1: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
Hemitted: input_valid_transition (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (existT i li) (s0, om0) ( s1, Some m)
Hproj: VLSM_projection (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (preloaded_with_all_messages_vlsm (IM i)) (composite_project_label IM i) (λ s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)), s i)
Htransition: composite_project_label IM i (existT i li) = Some li → ∀ (s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (im : option message) (s' : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (om : option message), input_valid_transition (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (existT i li) (s, im) ( s', om) → input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) li ((λ s0 : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)), s0 i) s, im) ((λ s0 : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)), s0 i) s', om)can_emit (preloaded_with_all_messages_vlsm (IM j)) mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
validator: Type
A: validator → index
sender: message → option validator
m: message
v: validator
Hsender_safety: ∀ i : index, can_emit (preloaded_with_all_messages_vlsm (IM i)) m → A v = i
j: index
Hsender: sender m = Some v
Hj: A v = j
s0: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
om0: option message
i: index
li: label (IM i)
s1: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
Hemitted: input_valid_transition (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (existT i li) (s0, om0) ( s1, Some m)
Hproj: VLSM_projection (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (preloaded_with_all_messages_vlsm (IM i)) (composite_project_label IM i) (λ s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)), s i)
Htransition: ∀ (s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (im : option message) (s' : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (om : option message), input_valid_transition (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (existT i li) (s, im) ( s', om) → input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) li (s i, im) ( s' i, om)can_emit (preloaded_with_all_messages_vlsm (IM j)) mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
validator: Type
A: validator → index
sender: message → option validator
m: message
v: validator
Hsender_safety: ∀ i : index, can_emit (preloaded_with_all_messages_vlsm (IM i)) m → A v = i
j: index
Hsender: sender m = Some v
Hj: A v = j
s0: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
om0: option message
i: index
li: label (IM i)
s1: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
Hemitted: input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) li (s0 i, om0) (s1 i, Some m)
Hproj: VLSM_projection (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (preloaded_with_all_messages_vlsm (IM i)) (composite_project_label IM i) (λ s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)), s i)
Htransition: ∀ (s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (im : option message) (s' : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (om : option message), input_valid_transition (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (existT i li) (s, im) ( s', om) → input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) li (s i, im) ( s' i, om)can_emit (preloaded_with_all_messages_vlsm (IM j)) mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
validator: Type
A: validator → index
sender: message → option validator
m: message
v: validator
Hsender_safety: ∀ i : index, can_emit (preloaded_with_all_messages_vlsm (IM i)) m → A v = i
j: index
Hsender: sender m = Some v
Hj: A v = j
s0: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
om0: option message
i: index
li: label (IM i)
s1: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
Hemitted: input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) li (s0 i, om0) (s1 i, Some m)
Hproj: VLSM_projection (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (preloaded_with_all_messages_vlsm (IM i)) (composite_project_label IM i) (λ s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)), s i)can_emit (preloaded_with_all_messages_vlsm (IM j)) mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
validator: Type
A: validator → index
sender: message → option validator
m: message
v: validator
Hsender_safety: ∀ i : index, can_emit (preloaded_with_all_messages_vlsm (IM i)) m → A v = i
j: index
Hsender: sender m = Some v
Hj: A v = j
s0: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
om0: option message
i: index
li: label (IM i)
s1: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
s0i: state (IM i)
Heqs0i: s0i = s0 i
Hemitted: input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) li (s0i, om0) (s1 i, Some m)
Hproj: VLSM_projection (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (preloaded_with_all_messages_vlsm (IM i)) (composite_project_label IM i) (λ s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)), s i)can_emit (preloaded_with_all_messages_vlsm (IM j)) mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
validator: Type
A: validator → index
sender: message → option validator
m: message
v: validator
Hsender_safety: ∀ i : index, can_emit (preloaded_with_all_messages_vlsm (IM i)) m → A v = i
j: index
Hsender: sender m = Some v
Hj: A v = j
om0: option message
i: index
li: label (IM i)
s1: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
s0i: state (IM i)
Hemitted: input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) li (s0i, om0) (s1 i, Some m)
Hproj: VLSM_projection (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (preloaded_with_all_messages_vlsm (IM i)) (composite_project_label IM i) (λ s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)), s i)can_emit (preloaded_with_all_messages_vlsm (IM j)) mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
validator: Type
A: validator → index
sender: message → option validator
m: message
v: validator
Hsender_safety: ∀ i : index, can_emit (preloaded_with_all_messages_vlsm (IM i)) m → A v = i
j: index
Hsender: sender m = Some v
Hj: A v = j
om0: option message
i: index
li: label (IM i)
s1: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
s0i, s1i: state (IM i)
Heqs1i: s1i = s1 i
Hemitted: input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) li (s0i, om0) (s1i, Some m)
Hproj: VLSM_projection (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (preloaded_with_all_messages_vlsm (IM i)) (composite_project_label IM i) (λ s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)), s i)can_emit (preloaded_with_all_messages_vlsm (IM j)) mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
validator: Type
A: validator → index
sender: message → option validator
m: message
v: validator
Hsender_safety: ∀ i : index, can_emit (preloaded_with_all_messages_vlsm (IM i)) m → A v = i
j: index
Hsender: sender m = Some v
Hj: A v = j
om0: option message
i: index
li: label (IM i)
s0i, s1i: state (IM i)
Hemitted: input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) li (s0i, om0) (s1i, Some m)
Hproj: VLSM_projection (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (preloaded_with_all_messages_vlsm (IM i)) (composite_project_label IM i) (λ s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)), s i)can_emit (preloaded_with_all_messages_vlsm (IM j)) mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
validator: Type
A: validator → index
sender: message → option validator
m: message
v: validator
i: index
Hsender_safety: can_emit (preloaded_with_all_messages_vlsm (IM i)) m → A v = i
j: index
Hsender: sender m = Some v
Hj: A v = j
om0: option message
li: label (IM i)
s0i, s1i: state (IM i)
Hemitted: input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) li (s0i, om0) (s1i, Some m)
Hproj: VLSM_projection (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (preloaded_with_all_messages_vlsm (IM i)) (composite_project_label IM i) (λ s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)), s i)can_emit (preloaded_with_all_messages_vlsm (IM j)) mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
validator: Type
A: validator → index
sender: message → option validator
m: message
v: validator
i, j: index
Hsender: sender m = Some v
Hj: A v = j
om0: option message
li: label (IM i)
s0i, s1i: state (IM i)
Hemitted: input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) li (s0i, om0) (s1i, Some m)
Hproj: VLSM_projection (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (preloaded_with_all_messages_vlsm (IM i)) (composite_project_label IM i) (λ s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)), s i)
Hsender_safety: A v = ican_emit (preloaded_with_all_messages_vlsm (IM j)) mby eexists _, _, _. Qed. End sec_sender_safety_can_emit_projection.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
validator: Type
A: validator → index
sender: message → option validator
m: message
v: validator
Hsender: sender m = Some v
om0: option message
li: label (IM (A v))
s0i, s1i: state (IM (A v))
Hemitted: input_valid_transition (preloaded_with_all_messages_vlsm (IM (A v))) li (s0i, om0) (s1i, Some m)
Hproj: VLSM_projection (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (preloaded_with_all_messages_vlsm (IM (A v))) (composite_project_label IM (A v)) (λ s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)), s (A v))can_emit (preloaded_with_all_messages_vlsm (IM (A v))) m