Affiliation:
1. Univ. of Glasgow, Glasgow, Scotland, UK
Abstract
Mathematics supplies us with various operators for creating functions from relations, sets, known functions, and so on. Function inversion is a simple example. These operations are useful in specifying programs. However, many of them have strong constraints on their arguments to ensure that the result is indeed a function. For example, only functions that are bijective may be inverted. This is a serious impediment to their use in specifications, because at best it limits the specifier's expressive power, and at worst it imposes strong proof obligations on the programmer. We propose to loosen the definition of functions so that the constraints on operations such as inversion can be greatly relaxed. The specificational functions that emerge generalize traditional functions in that their application to some arguments may yield no good outcome, while for other arguments their application may yield any of several outcomes unpredictably. While these functions are not in general algorithmic, they can serve as specifications of traditional functions as embodied in programming languages. The idea of specificational functions is not new, but accommodating them in all their generality without falling foul of a myriad of anomalies has proved elusive. We investigate the technical problems that have hindered their use, and propose solutions. In particular, we develop a formal axiomatization for reasoning about specificational functions, and we prove its consistency by constructing a model.
Publisher
Association for Computing Machinery (ACM)
Cited by
10 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. The Semantics of Plurals;Proceedings of the 15th ACM SIGPLAN International Conference on Software Language Engineering;2022-11-29
2. How to Calculate with Nondeterministic Functions;Lecture Notes in Computer Science;2019
3. Template-based program verification and program synthesis;International Journal on Software Tools for Technology Transfer;2012-01-25
4. Dually nondeterministic functions;ACM Transactions on Programming Languages and Systems;2008-10
5. Modelling higher-order dual nondeterminacy;Acta Informatica;2008-06-21