Theory StateSpaceSyntax
section ‹Syntax for State Space Lookup and Update \label{sec:StateSpaceSyntax}›
theory StateSpaceSyntax
imports StateSpaceLocale
begin
text ‹The state space syntax is kept in an extra theory so that you
can choose if you want to use it or not.›
syntax
"_statespace_lookup" :: "('a ⇒ 'b) ⇒ 'a ⇒ 'c" ("_⋅_" [60, 60] 60)
"_statespace_update" :: "('a ⇒ 'b) ⇒ 'a ⇒ 'c ⇒ ('a ⇒ 'b)"
"_statespace_updates" :: "('a ⇒ 'b) ⇒ updbinds ⇒ ('a ⇒ 'b)" ("_<_>" [900, 0] 900)
translations
"_statespace_updates f (_updbinds b bs)" ==
"_statespace_updates (_statespace_updates f b) bs"
"s<x:=y>" == "_statespace_update s x y"
parse_translation
‹
[(\<^syntax_const>‹_statespace_lookup›, StateSpace.lookup_tr),
(\<^syntax_const>‹_statespace_update›, StateSpace.update_tr)]
›
print_translation
‹
[(\<^const_syntax>‹lookup›, StateSpace.lookup_tr'),
(\<^const_syntax>‹update›, StateSpace.update_tr')]
›
end