Built with Alectryon, running Coq+SerAPI v8.18.0+0.18.1. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑Ctrl+↓ to navigate, Ctrl+🖱️ to focus. On Mac, use ⌘ instead of Ctrl.
[Loading ML file ring_plugin.cmxs (using legacy method) ... done]
[Loading ML file zify_plugin.cmxs (using legacy method) ... done]
[Loading ML file micromega_plugin.cmxs (using legacy method) ... done]
[Loading ML file btauto_plugin.cmxs (using legacy method) ... done]
message: Type TX, TY, TZ: VLSMType message project_labelXY: label TX → option (label TY) project_stateXY: state TX → state TY project_labelYZ: label TY → option (label TZ) project_stateYZ: state TY → state TZ
∀trX : list transition_item,
pre_VLSM_projection_finite_trace_project TX TZ
(mbind project_labelYZ ∘ project_labelXY)
(project_stateYZ ∘ project_stateXY) trX =
pre_VLSM_projection_finite_trace_project TY TZ
project_labelYZ project_stateYZ
(pre_VLSM_projection_finite_trace_project TX TY
project_labelXY project_stateXY trX)
message: Type TX, TY, TZ: VLSMType message project_labelXY: label TX → option (label TY) project_stateXY: state TX → state TY project_labelYZ: label TY → option (label TZ) project_stateYZ: state TY → state TZ
∀trX : list transition_item,
pre_VLSM_projection_finite_trace_project TX TZ
(mbind project_labelYZ ∘ project_labelXY)
(project_stateYZ ∘ project_stateXY) trX =
pre_VLSM_projection_finite_trace_project TY TZ
project_labelYZ project_stateYZ
(pre_VLSM_projection_finite_trace_project TX TY
project_labelXY project_stateXY trX)
message: Type TX, TY, TZ: VLSMType message project_labelXY: label TX → option (label TY) project_stateXY: state TX → state TY project_labelYZ: label TY → option (label TZ) project_stateYZ: state TY → state TZ l: label TX input: option message destination: state TX output: option message trX: list transition_item IHtrX: pre_VLSM_projection_finite_trace_project TX TZ
(mbind project_labelYZ ∘ project_labelXY)
(project_stateYZ ∘ project_stateXY) trX =
pre_VLSM_projection_finite_trace_project TY TZ
project_labelYZ project_stateYZ
(pre_VLSM_projection_finite_trace_project TX
TY project_labelXY project_stateXY trX)
matchmatchmatch project_labelXY l with
| Some x => project_labelYZ x
| None => None
endwith
| Some lY =>
Some
{|
l := lY;
input := input;
destination :=
project_stateYZ
(project_stateXY destination);
output := output
|}
| None => None
endwith
| Some y =>
y
:: pre_VLSM_projection_finite_trace_project TX TZ
((λmx : option (label TY),
match mx with
| Some x => project_labelYZ x
| None => None
end) ∘ project_labelXY)
(project_stateYZ ∘ project_stateXY) trX
| None =>
pre_VLSM_projection_finite_trace_project TX TZ
((λmx : option (label TY),
match mx with
| Some x => project_labelYZ x
| None => None
end) ∘ project_labelXY)
(project_stateYZ ∘ project_stateXY) trX
end =
pre_VLSM_projection_finite_trace_project TY TZ
project_labelYZ project_stateYZ
matchmatch project_labelXY l with
| Some lY =>
Some
{|
l := lY;
input := input;
destination := project_stateXY destination;
output := output
|}
| None => None
endwith
| Some y =>
y
:: pre_VLSM_projection_finite_trace_project TX
TY project_labelXY project_stateXY trX
| None =>
pre_VLSM_projection_finite_trace_project TX TY
project_labelXY project_stateXY trX
end
message: Type TX, TY, TZ: VLSMType message project_labelXY: label TX → option (label TY) project_stateXY: state TX → state TY project_labelYZ: label TY → option (label TZ) project_stateYZ: state TY → state TZ l: label TX input: option message destination: state TX output: option message trX: list transition_item IHtrX: pre_VLSM_projection_finite_trace_project TX TZ
(mbind project_labelYZ ∘ project_labelXY)
(project_stateYZ ∘ project_stateXY) trX =
pre_VLSM_projection_finite_trace_project TY TZ
project_labelYZ project_stateYZ
(pre_VLSM_projection_finite_trace_project TX
TY project_labelXY project_stateXY trX) lY: label TY
matchmatch project_labelYZ lY with
| Some lY =>
Some
{|
l := lY;
input := input;
destination :=
project_stateYZ
(project_stateXY destination);
output := output
|}
| None => None
endwith
| Some y =>
y
:: pre_VLSM_projection_finite_trace_project TX TZ
((λmx : option (label TY),
match mx with
| Some x => project_labelYZ x
| None => None
end) ∘ project_labelXY)
(project_stateYZ ∘ project_stateXY) trX
| None =>
pre_VLSM_projection_finite_trace_project TX TZ
((λmx : option (label TY),
match mx with
| Some x => project_labelYZ x
| None => None
end) ∘ project_labelXY)
(project_stateYZ ∘ project_stateXY) trX
end =
matchmatch project_labelYZ lY with
| Some lY =>
Some
{|
l := lY;
input := input;
destination :=
project_stateYZ
(project_stateXY destination);
output := output
|}
| None => None
endwith
| Some y =>
y
:: pre_VLSM_projection_finite_trace_project TY TZ
project_labelYZ project_stateYZ
(pre_VLSM_projection_finite_trace_project TX
TY project_labelXY project_stateXY trX)
| None =>
pre_VLSM_projection_finite_trace_project TY TZ
project_labelYZ project_stateYZ
(pre_VLSM_projection_finite_trace_project TX TY
project_labelXY project_stateXY trX)
end
message: Type TX, TY, TZ: VLSMType message project_labelXY: label TX → option (label TY) project_stateXY: state TX → state TY project_labelYZ: label TY → option (label TZ) project_stateYZ: state TY → state TZ l: label TX input: option message destination: state TX output: option message trX: list transition_item IHtrX: pre_VLSM_projection_finite_trace_project TX TZ
(mbind project_labelYZ ∘ project_labelXY)
(project_stateYZ ∘ project_stateXY) trX =
pre_VLSM_projection_finite_trace_project TY TZ
project_labelYZ project_stateYZ
(pre_VLSM_projection_finite_trace_project TX
TY project_labelXY project_stateXY trX) lY: label TY lZ: label TZ
{|
l := lZ;
input := input;
destination :=
project_stateYZ (project_stateXY destination);
output := output
|}
:: pre_VLSM_projection_finite_trace_project TX TZ
((λmx : option (label TY),
match mx with
| Some x => project_labelYZ x
| None => None
end) ∘ project_labelXY)
(project_stateYZ ∘ project_stateXY) trX =
{|
l := lZ;
input := input;
destination :=
project_stateYZ (project_stateXY destination);
output := output
|}
:: pre_VLSM_projection_finite_trace_project TY TZ
project_labelYZ project_stateYZ
(pre_VLSM_projection_finite_trace_project TX TY
project_labelXY project_stateXY trX)
byf_equal.Qed.
message: Type X, Y, Z: VLSM message project_labelXY: label X → option (label Y) project_stateXY: state X → state Y ProjXY: VLSM_projection X Y project_labelXY
project_stateXY project_labelYZ: label Y → option (label Z) project_stateYZ: state Y → state Z ProjYZ: VLSM_projection Y Z project_labelYZ
project_stateYZ
VLSM_projection X Z
(mbind project_labelYZ ∘ project_labelXY)
(project_stateYZ ∘ project_stateXY)
message: Type X, Y, Z: VLSM message project_labelXY: label X → option (label Y) project_stateXY: state X → state Y ProjXY: VLSM_projection X Y project_labelXY
project_stateXY project_labelYZ: label Y → option (label Z) project_stateYZ: state Y → state Z ProjYZ: VLSM_projection Y Z project_labelYZ
project_stateYZ
VLSM_projection X Z
(mbind project_labelYZ ∘ project_labelXY)
(project_stateYZ ∘ project_stateXY)
message: Type X, Y, Z: VLSM message project_labelXY: label X → option (label Y) project_stateXY: state X → state Y ProjXY: VLSM_projection X Y project_labelXY
project_stateXY project_labelYZ: label Y → option (label Z) project_stateYZ: state Y → state Z ProjYZ: VLSM_projection Y Z project_labelYZ
project_stateYZ sX: state X trX: list transition_item HtrX: finite_valid_trace_from X sX trX
project_stateYZ
(project_stateXY (finite_trace_last sX trX)) =
finite_trace_last
(project_stateYZ (project_stateXY sX))
(pre_VLSM_projection_finite_trace_project Y Z
project_labelYZ project_stateYZ
(pre_VLSM_projection_finite_trace_project X Y
project_labelXY project_stateXY trX))
message: Type X, Y, Z: VLSM message project_labelXY: label X → option (label Y) project_stateXY: state X → state Y ProjXY: VLSM_projection X Y project_labelXY
project_stateXY project_labelYZ: label Y → option (label Z) project_stateYZ: state Y → state Z ProjYZ: VLSM_projection Y Z project_labelYZ
project_stateYZ sX: state X trX: list transition_item HtrX: finite_valid_trace X sX trX
finite_valid_trace Z
(project_stateYZ (project_stateXY sX))
(pre_VLSM_projection_finite_trace_project Y Z
project_labelYZ project_stateYZ
(pre_VLSM_projection_finite_trace_project X Y
project_labelXY project_stateXY trX))
message: Type X, Y, Z: VLSM message project_labelXY: label X → option (label Y) project_stateXY: state X → state Y ProjXY: VLSM_projection X Y project_labelXY
project_stateXY project_labelYZ: label Y → option (label Z) project_stateYZ: state Y → state Z ProjYZ: VLSM_projection Y Z project_labelYZ
project_stateYZ sX: state X trX: list transition_item HtrX: finite_valid_trace_from X sX trX
project_stateYZ
(project_stateXY (finite_trace_last sX trX)) =
finite_trace_last
(project_stateYZ (project_stateXY sX))
(pre_VLSM_projection_finite_trace_project Y Z
project_labelYZ project_stateYZ
(pre_VLSM_projection_finite_trace_project X Y
project_labelXY project_stateXY trX))
message: Type X, Y, Z: VLSM message project_labelXY: label X → option (label Y) project_stateXY: state X → state Y ProjXY: VLSM_projection X Y project_labelXY
project_stateXY project_labelYZ: label Y → option (label Z) project_stateYZ: state Y → state Z ProjYZ: VLSM_projection Y Z project_labelYZ
project_stateYZ sX: state X trX: list transition_item HtrX: finite_valid_trace_from X sX trX
finite_valid_trace_from Y (project_stateXY sX)
(pre_VLSM_projection_finite_trace_project X Y
project_labelXY project_stateXY trX)
message: Type X, Y, Z: VLSM message project_labelXY: label X → option (label Y) project_stateXY: state X → state Y ProjXY: VLSM_projection X Y project_labelXY
project_stateXY project_labelYZ: label Y → option (label Z) project_stateYZ: state Y → state Z ProjYZ: VLSM_projection Y Z project_labelYZ
project_stateYZ sX: state X trX: list transition_item HtrX: finite_valid_trace X sX trX
finite_valid_trace Z
(project_stateYZ (project_stateXY sX))
(pre_VLSM_projection_finite_trace_project Y Z
project_labelYZ project_stateYZ
(pre_VLSM_projection_finite_trace_project X Y
project_labelXY project_stateXY trX))
message: Type X, Y, Z: VLSM message project_labelXY: label X → option (label Y) project_stateXY: state X → state Y ProjXY: VLSM_projection X Y project_labelXY
project_stateXY project_labelYZ: label Y → label Z project_stateYZ: state Y → state Z ProjYZ: VLSM_embedding Y Z project_labelYZ
project_stateYZ
VLSM_projection X Z
(fmap project_labelYZ ∘ project_labelXY)
(project_stateYZ ∘ project_stateXY)
message: Type X, Y, Z: VLSM message project_labelXY: label X → option (label Y) project_stateXY: state X → state Y ProjXY: VLSM_projection X Y project_labelXY
project_stateXY project_labelYZ: label Y → label Z project_stateYZ: state Y → state Z ProjYZ: VLSM_embedding Y Z project_labelYZ
project_stateYZ
VLSM_projection X Z
(fmap project_labelYZ ∘ project_labelXY)
(project_stateYZ ∘ project_stateXY)
message: Type X, Y, Z: VLSM message project_labelXY: label X → option (label Y) project_stateXY: state X → state Y ProjXY: VLSM_projection X Y project_labelXY
project_stateXY project_labelYZ: label Y → label Z project_stateYZ: state Y → state Z ProjYZ: VLSM_projection Y Z (Some ∘ project_labelYZ)
project_stateYZ
VLSM_projection X Z
(fmap project_labelYZ ∘ project_labelXY)
(project_stateYZ ∘ project_stateXY)
message: Type X, Y, Z: VLSM message project_labelXY: label X → option (label Y) project_stateXY: state X → state Y ProjXY: VLSM_projection X Y project_labelXY
project_stateXY project_labelYZ: label Y → label Z project_stateYZ: state Y → state Z ProjYZ: VLSM_projection Y Z (Some ∘ project_labelYZ)
project_stateYZ
VLSM_projection X Z
(mbind (Some ∘ project_labelYZ) ∘ project_labelXY)
(project_stateYZ ∘ project_stateXY)
message: Type X, Y, Z: VLSM message project_labelXY: label X → option (label Y) project_stateXY: state X → state Y ProjXY: VLSM_projection X Y project_labelXY
project_stateXY project_labelYZ: label Y → label Z project_stateYZ: state Y → state Z ProjYZ: VLSM_projection Y Z (Some ∘ project_labelYZ)
project_stateYZ
message: Type X, Y, Z: VLSM message project_labelXY: label X → option (label Y) project_stateXY: state X → state Y ProjXY: VLSM_projection X Y project_labelXY
project_stateXY project_labelYZ: label Y → label Z project_stateYZ: state Y → state Z ProjYZ: VLSM_projection Y Z (Some ∘ project_labelYZ)
project_stateYZ
VLSM_projection X Z
(mbind (Some ∘ project_labelYZ) ∘ project_labelXY)
(project_stateYZ ∘ project_stateXY)
byapply VLSM_projection_trans.
message: Type X, Y, Z: VLSM message project_labelXY: label X → option (label Y) project_stateXY: state X → state Y ProjXY: VLSM_projection X Y project_labelXY
project_stateXY project_labelYZ: label Y → label Z project_stateYZ: state Y → state Z ProjYZ: VLSM_projection Y Z (Some ∘ project_labelYZ)
project_stateYZ
message: Type X, Y, Z: VLSM message project_labelXY: label X → label Y project_stateXY: state X → state Y ProjXY: VLSM_embedding X Y project_labelXY
project_stateXY project_labelYZ: label Y → option (label Z) project_stateYZ: state Y → state Z ProjYZ: VLSM_projection Y Z project_labelYZ
project_stateYZ
VLSM_projection X Z
(project_labelYZ ∘ project_labelXY)
(project_stateYZ ∘ project_stateXY)
message: Type X, Y, Z: VLSM message project_labelXY: label X → label Y project_stateXY: state X → state Y ProjXY: VLSM_embedding X Y project_labelXY
project_stateXY project_labelYZ: label Y → option (label Z) project_stateYZ: state Y → state Z ProjYZ: VLSM_projection Y Z project_labelYZ
project_stateYZ
VLSM_projection X Z
(project_labelYZ ∘ project_labelXY)
(project_stateYZ ∘ project_stateXY)
message: Type X, Y, Z: VLSM message project_labelXY: label X → label Y project_stateXY: state X → state Y ProjXY: VLSM_projection X Y (Some ∘ project_labelXY)
project_stateXY project_labelYZ: label Y → option (label Z) project_stateYZ: state Y → state Z ProjYZ: VLSM_projection Y Z project_labelYZ
project_stateYZ
VLSM_projection X Z
(project_labelYZ ∘ project_labelXY)
(project_stateYZ ∘ project_stateXY)
message: Type X, Y, Z: VLSM message project_labelXY: label X → label Y project_stateXY: state X → state Y ProjXY: VLSM_projection X Y (Some ∘ project_labelXY)
project_stateXY project_labelYZ: label Y → option (label Z) project_stateYZ: state Y → state Z ProjYZ: VLSM_projection Y Z project_labelYZ
project_stateYZ
VLSM_projection X Z
(mbind project_labelYZ ∘ (Some ∘ project_labelXY))
(project_stateYZ ∘ project_stateXY)
message: Type X, Y, Z: VLSM message project_labelXY: label X → label Y project_stateXY: state X → state Y ProjXY: VLSM_projection X Y (Some ∘ project_labelXY)
project_stateXY project_labelYZ: label Y → option (label Z) project_stateYZ: state Y → state Z ProjYZ: VLSM_projection Y Z project_labelYZ
project_stateYZ
message: Type X, Y, Z: VLSM message project_labelXY: label X → label Y project_stateXY: state X → state Y ProjXY: VLSM_projection X Y (Some ∘ project_labelXY)
project_stateXY project_labelYZ: label Y → option (label Z) project_stateYZ: state Y → state Z ProjYZ: VLSM_projection Y Z project_labelYZ
project_stateYZ
VLSM_projection X Z
(mbind project_labelYZ ∘ (Some ∘ project_labelXY))
(project_stateYZ ∘ project_stateXY)
byapply VLSM_projection_trans.
message: Type X, Y, Z: VLSM message project_labelXY: label X → label Y project_stateXY: state X → state Y ProjXY: VLSM_projection X Y (Some ∘ project_labelXY)
project_stateXY project_labelYZ: label Y → option (label Z) project_stateYZ: state Y → state Z ProjYZ: VLSM_projection Y Z project_labelYZ
project_stateYZ
message: Type TX, TY, TZ: VLSMType message project_labelXY: label TX → label TY project_stateXY: state TX → state TY project_labelYZ: label TY → label TZ project_stateYZ: state TY → state TZ
∀trX : list transition_item,
pre_VLSM_embedding_finite_trace_project TX TZ
(project_labelYZ ∘ project_labelXY)
(project_stateYZ ∘ project_stateXY) trX =
pre_VLSM_embedding_finite_trace_project TY TZ
project_labelYZ project_stateYZ
(pre_VLSM_embedding_finite_trace_project TX TY
project_labelXY project_stateXY trX)
message: Type TX, TY, TZ: VLSMType message project_labelXY: label TX → label TY project_stateXY: state TX → state TY project_labelYZ: label TY → label TZ project_stateYZ: state TY → state TZ
∀trX : list transition_item,
pre_VLSM_embedding_finite_trace_project TX TZ
(project_labelYZ ∘ project_labelXY)
(project_stateYZ ∘ project_stateXY) trX =
pre_VLSM_embedding_finite_trace_project TY TZ
project_labelYZ project_stateYZ
(pre_VLSM_embedding_finite_trace_project TX TY
project_labelXY project_stateXY trX)
message: Type X, Y, Z: VLSM message project_labelXY: label X → label Y project_stateXY: state X → state Y ProjXY: VLSM_embedding X Y project_labelXY
project_stateXY project_labelYZ: label Y → label Z project_stateYZ: state Y → state Z ProjYZ: VLSM_embedding Y Z project_labelYZ
project_stateYZ
VLSM_embedding X Z (project_labelYZ ∘ project_labelXY)
(project_stateYZ ∘ project_stateXY)
message: Type X, Y, Z: VLSM message project_labelXY: label X → label Y project_stateXY: state X → state Y ProjXY: VLSM_embedding X Y project_labelXY
project_stateXY project_labelYZ: label Y → label Z project_stateYZ: state Y → state Z ProjYZ: VLSM_embedding Y Z project_labelYZ
project_stateYZ
VLSM_embedding X Z (project_labelYZ ∘ project_labelXY)
(project_stateYZ ∘ project_stateXY)
message: Type X, Y, Z: VLSM message project_labelXY: label X → label Y project_stateXY: state X → state Y ProjXY: VLSM_embedding X Y project_labelXY
project_stateXY project_labelYZ: label Y → label Z project_stateYZ: state Y → state Z ProjYZ: VLSM_embedding Y Z project_labelYZ
project_stateYZ sX: state X trX: list transition_item HtrX: finite_valid_trace X sX trX
finite_valid_trace Z
((project_stateYZ ∘ project_stateXY) sX)
(pre_VLSM_embedding_finite_trace_project X Z
(project_labelYZ ∘ project_labelXY)
(project_stateYZ ∘ project_stateXY) trX)
message: Type X, Y, Z: VLSM message project_labelXY: label X → label Y project_stateXY: state X → state Y ProjXY: VLSM_embedding X Y project_labelXY
project_stateXY project_labelYZ: label Y → label Z project_stateYZ: state Y → state Z ProjYZ: VLSM_embedding Y Z project_labelYZ
project_stateYZ sX: state X trX: list transition_item HtrX: finite_valid_trace X sX trX
finite_valid_trace Z
((project_stateYZ ∘ project_stateXY) sX)
(pre_VLSM_embedding_finite_trace_project Y Z
project_labelYZ project_stateYZ
(pre_VLSM_embedding_finite_trace_project X Y
project_labelXY project_stateXY trX))
message: Type X: VLSM message T: VLSMType message MY, MZ: VLSMMachine T Y:= {| vlsm_type := T; vlsm_machine := MY |}: VLSM message Z:= {| vlsm_type := T; vlsm_machine := MZ |}: VLSM message project_labelXY: label X → option (label Y) project_stateXY: state X → state Y ProjXY: VLSM_projection X Y project_labelXY
project_stateXY ProjYZ: VLSM_incl Y Z
VLSM_projection X Z project_labelXY project_stateXY
message: Type X: VLSM message T: VLSMType message MY, MZ: VLSMMachine T Y:= {| vlsm_type := T; vlsm_machine := MY |}: VLSM message Z:= {| vlsm_type := T; vlsm_machine := MZ |}: VLSM message project_labelXY: label X → option (label Y) project_stateXY: state X → state Y ProjXY: VLSM_projection X Y project_labelXY
project_stateXY ProjYZ: VLSM_incl Y Z
VLSM_projection X Z project_labelXY project_stateXY
message: Type X: VLSM message T: VLSMType message MY, MZ: VLSMMachine T Y:= {| vlsm_type := T; vlsm_machine := MY |}: VLSM message Z:= {| vlsm_type := T; vlsm_machine := MZ |}: VLSM message project_labelXY: label X → option (label Y) project_stateXY: state X → state Y ProjXY: VLSM_projection X Y project_labelXY
project_stateXY ProjYZ: VLSM_incl Y Z
VLSM_projection X Z (fmap id ∘ project_labelXY)
project_stateXY
message: Type X: VLSM message T: VLSMType message MY, MZ: VLSMMachine T Y:= {| vlsm_type := T; vlsm_machine := MY |}: VLSM message Z:= {| vlsm_type := T; vlsm_machine := MZ |}: VLSM message project_labelXY: label X → option (label Y) project_stateXY: state X → state Y ProjXY: VLSM_projection X Y project_labelXY
project_stateXY ProjYZ: VLSM_incl Y Z
VLSM_projection X Z (fmap id ∘ project_labelXY)
(id ∘ project_stateXY)
byapply (VLSM_projection_embedding_trans X Y Z); [| apply VLSM_incl_is_embedding].Qed.
message: Type X: VLSM message T: VLSMType message MY, MZ: VLSMMachine T Y:= {| vlsm_type := T; vlsm_machine := MY |}: VLSM message Z:= {| vlsm_type := T; vlsm_machine := MZ |}: VLSM message project_labelXY: label X → label Y project_stateXY: state X → state Y ProjXY: VLSM_embedding X Y project_labelXY
project_stateXY ProjYZ: VLSM_incl Y Z
VLSM_embedding X Z project_labelXY project_stateXY
message: Type X: VLSM message T: VLSMType message MY, MZ: VLSMMachine T Y:= {| vlsm_type := T; vlsm_machine := MY |}: VLSM message Z:= {| vlsm_type := T; vlsm_machine := MZ |}: VLSM message project_labelXY: label X → label Y project_stateXY: state X → state Y ProjXY: VLSM_embedding X Y project_labelXY
project_stateXY ProjYZ: VLSM_incl Y Z
VLSM_embedding X Z project_labelXY project_stateXY
message: Type X: VLSM message T: VLSMType message MY, MZ: VLSMMachine T Y:= {| vlsm_type := T; vlsm_machine := MY |}: VLSM message Z:= {| vlsm_type := T; vlsm_machine := MZ |}: VLSM message project_labelXY: label X → label Y project_stateXY: state X → state Y ProjXY: VLSM_embedding X Y project_labelXY
project_stateXY ProjYZ: VLSM_incl Y Z
VLSM_embedding X Z (id ∘ project_labelXY)
project_stateXY
message: Type X: VLSM message T: VLSMType message MY, MZ: VLSMMachine T Y:= {| vlsm_type := T; vlsm_machine := MY |}: VLSM message Z:= {| vlsm_type := T; vlsm_machine := MZ |}: VLSM message project_labelXY: label X → label Y project_stateXY: state X → state Y ProjXY: VLSM_embedding X Y project_labelXY
project_stateXY ProjYZ: VLSM_incl Y Z
VLSM_embedding X Z (id ∘ project_labelXY)
(id ∘ project_stateXY)
byapply (VLSM_embedding_trans X Y Z); [| apply VLSM_incl_is_embedding].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 Z: VLSM message ProjXY: VLSM_incl X Y project_labelYZ: label Y → option (label Z) project_stateYZ: state Y → state Z ProjYZ: VLSM_projection Y Z project_labelYZ
project_stateYZ
VLSM_projection X Z project_labelYZ project_stateYZ
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 Z: VLSM message ProjXY: VLSM_incl X Y project_labelYZ: label Y → option (label Z) project_stateYZ: state Y → state Z ProjYZ: VLSM_projection Y Z project_labelYZ
project_stateYZ
VLSM_projection X Z project_labelYZ project_stateYZ
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 Z: VLSM message ProjXY: VLSM_incl X Y project_labelYZ: label Y → option (label Z) project_stateYZ: state Y → state Z ProjYZ: VLSM_projection Y Z project_labelYZ
project_stateYZ
VLSM_embedding X Y (λx : label X, x)
(λx : state X, x)
byapply VLSM_incl_is_embedding in ProjXY.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 Z: VLSM message ProjXY: VLSM_incl X Y project_labelYZ: label Y → label Z project_stateYZ: state Y → state Z ProjYZ: VLSM_embedding Y Z project_labelYZ
project_stateYZ
VLSM_embedding X Z project_labelYZ project_stateYZ
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 Z: VLSM message ProjXY: VLSM_incl X Y project_labelYZ: label Y → label Z project_stateYZ: state Y → state Z ProjYZ: VLSM_embedding Y Z project_labelYZ
project_stateYZ
VLSM_embedding X Z project_labelYZ project_stateYZ
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 Z: VLSM message ProjXY: VLSM_incl X Y project_labelYZ: label Y → label Z project_stateYZ: state Y → state Z ProjYZ: VLSM_embedding Y Z project_labelYZ
project_stateYZ
VLSM_embedding X Y (λx : label X, x)
(λx : state X, x)
byapply VLSM_incl_is_embedding in ProjXY.Qed.
message: Type X: VLSM message T: VLSMType message MY, MZ: VLSMMachine T Y:= {| vlsm_type := T; vlsm_machine := MY |}: VLSM message Z:= {| vlsm_type := T; vlsm_machine := MZ |}: VLSM message project_labelXY: label X → option (label Y) project_stateXY: state X → state Y ProjXY: VLSM_projection X Y project_labelXY
project_stateXY ProjYZ: VLSM_eq Y Z
VLSM_projection X Z project_labelXY project_stateXY
message: Type X: VLSM message T: VLSMType message MY, MZ: VLSMMachine T Y:= {| vlsm_type := T; vlsm_machine := MY |}: VLSM message Z:= {| vlsm_type := T; vlsm_machine := MZ |}: VLSM message project_labelXY: label X → option (label Y) project_stateXY: state X → state Y ProjXY: VLSM_projection X Y project_labelXY
project_stateXY ProjYZ: VLSM_eq Y Z
VLSM_projection X Z project_labelXY project_stateXY
message: Type X: VLSM message T: VLSMType message MY, MZ: VLSMMachine T Y:= {| vlsm_type := T; vlsm_machine := MY |}: VLSM message Z:= {| vlsm_type := T; vlsm_machine := MZ |}: VLSM message project_labelXY: label X → label Y project_stateXY: state X → state Y ProjXY: VLSM_embedding X Y project_labelXY
project_stateXY ProjYZ: VLSM_eq Y Z
VLSM_embedding X Z project_labelXY project_stateXY
message: Type X: VLSM message T: VLSMType message MY, MZ: VLSMMachine T Y:= {| vlsm_type := T; vlsm_machine := MY |}: VLSM message Z:= {| vlsm_type := T; vlsm_machine := MZ |}: VLSM message project_labelXY: label X → label Y project_stateXY: state X → state Y ProjXY: VLSM_embedding X Y project_labelXY
project_stateXY ProjYZ: VLSM_eq Y Z
VLSM_embedding X Z project_labelXY project_stateXY
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 Z: VLSM message ProjXY: VLSM_eq X Y project_labelYZ: label Y → option (label Z) project_stateYZ: state Y → state Z ProjYZ: VLSM_projection Y Z project_labelYZ
project_stateYZ
VLSM_projection X Z project_labelYZ project_stateYZ
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 Z: VLSM message ProjXY: VLSM_eq X Y project_labelYZ: label Y → option (label Z) project_stateYZ: state Y → state Z ProjYZ: VLSM_projection Y Z project_labelYZ
project_stateYZ
VLSM_projection X Z project_labelYZ project_stateYZ
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 Z: VLSM message ProjXY: VLSM_eq X Y project_labelYZ: label Y → label Z project_stateYZ: state Y → state Z ProjYZ: VLSM_embedding Y Z project_labelYZ
project_stateYZ
VLSM_embedding X Z project_labelYZ project_stateYZ
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 Z: VLSM message ProjXY: VLSM_eq X Y project_labelYZ: label Y → label Z project_stateYZ: state Y → state Z ProjYZ: VLSM_embedding Y Z project_labelYZ
project_stateYZ
VLSM_embedding X Z project_labelYZ project_stateYZ