(Terms) t ::= x -- local variables l -- literals C.f -- static field t.f -- field access a(i) -- array access f(t1,..., tn) -- arbitrary function application
For arbitrary function application, no particular propagation rule is implemented. (Need to add at least the uninterpreted function application rules, i.e.
s1=t1,..., sn=tn <=> f(s1,..., sn)=f(t1,..., tn)
The constraints are:
(Constraints) c ::= t == t -- equality constraint t != t -- disequality constraint ! c -- negation, no particular constraint propagation rules a(t1,..., tn) -- atomic formula c,c -- conjunction x^c -- existential quantification