rule evalX: [ ] --> [ !Eval(v('x'), 'm') ]
rule evalExpr:
[ !Eval(<c('s'),<c('r'), v('x')>>, <'s',<'r','m'>>) ]
--[ Success() ]->
[ ]
lemma test: exists-trace
"Ex #j. Success()@j"
end
All my expressions are made up of pairing operations over two types of terms: a constant term modelled using the unary function `c', and a variable term modelled using the unary function `v'. The evalX rule gives a particular valuation for variable x. Under this valuation, I want to ascertain that the expression <c('s'),<c('r'), v('x')>> evaluates to <'s', <'r', 'm'>>.