(def-language language-op-semantics
(base-types state value expr)
(constants
(op%state (expr state state))
(op%value (expr state value))))
(def-theory op-semantics
(language language-op-semantics)
(component-theories h-o-real-arithmetic))
(load-section sequences)
(def-atomic-sort expr%seq
"lambda(f:[nn,expr], f_seq_q{f})"
(theory op-semantics)
(witness "lambda(x:nn, ?expr)"))
(def-atomic-sort state%seq
"lambda(f:[nn,state], f_seq_q{f})"
(theory op-semantics)
(witness "lambda(x:nn, ?state)"))
(def-recursive-constant opseq%state
"lambda(evs:[state, expr%seq, nn -> state],
lambda(env:state, f:expr%seq, n:nn,
if(n=0, op%state(f(0), env),
op%state(f(n), evs(env, f, n-1)))))"
(theory op-semantics))