How should one think about the accessible-clause footprint for a method that calls a pure but not heap-free method in its precondition.
Perhaps the reads-footprint of methods called in specifications of Method M are ignored for method M's own footprint?
After all, the reads-footprint of M contains all heap memory locations that affect the result and side-effects of M -- and anything called in specifications does not affect the result and side-effects.
That is the reads-footprint of a method only contains (a superset of) the locations read in the implementation, and not the specification.
And ditto for callable clauses. Except there we have to worry about termination, so perhaps callable clauses are more complicated. A non-terminating call in a specification would clearly be not-well-defined, but I at least have not thought about how to check/prove such termination (if it is even any different from termination of the implementation).
This does not arise for assignable clauses because they have to be pure in any case.
How should one think about the accessible-clause footprint for a method that calls a pure but not heap-free method in its precondition.
Perhaps the reads-footprint of methods called in specifications of Method M are ignored for method M's own footprint?
After all, the reads-footprint of M contains all heap memory locations that affect the result and side-effects of M -- and anything called in specifications does not affect the result and side-effects.
That is the reads-footprint of a method only contains (a superset of) the locations read in the implementation, and not the specification.
And ditto for callable clauses. Except there we have to worry about termination, so perhaps callable clauses are more complicated. A non-terminating call in a specification would clearly be not-well-defined, but I at least have not thought about how to check/prove such termination (if it is even any different from termination of the implementation).
This does not arise for assignable clauses because they have to be pure in any case.