A fundamental complexity in human understanding and reasoning about imperative, objectbased software systems has to do with the need to distinguish references and values of objects. It is possible to eliminate this complexity by (deep) copying values of all mutable objects, but this is too inefficient for typical, non-trivial objects. The problem of minimizing the impact of the reference-value distinction without resorting to value copying manifests itself when objects are repeated as parameters to procedures. From a software engineering perspective, we consider alternative strategies to address the repeated argument problem ranging from ones that disallow repeated arguments to more permissive ones; from ones that do not require any new programming language mechanisms to ones that need new features. We introduce a parameter passing approach that neither requires the reference-value distinction nor value copying to handle repeated arguments. We present a specificationaware, unrestricted, proof rule schema for procedure calls that is suitable for verification using alternative parameter passing techniques, separately or in combination
To submit an update or takedown request for this paper, please submit an Update/Correction/Removal Request.