Affiliation:
1. University of St. Gallen, St. Gallen, Switzerland
Abstract
Algebraic laws of
functions in mathematics
– such as commutativity, associativity, and idempotence – are often used as the basis to derive more sophisticated properties of complex mathematical structures and are heavily used in abstract computational thinking. Algebraic laws of
functions in coding
, however, are rarely considered. Yet, they are essential. For example, commutativity and associativity are crucial to ensure correctness of a variety of software systems in numerous domains, such as compiler optimization, big data processing, data flow processing, machine learning or distributed algorithms and data structures. Still, most programming languages lack built-in mechanisms to enforce and verify that operations adhere to such properties.
In this paper, we propose a verifier specialized on a set of fundamental algebraic laws that ensures that such laws hold in application code. The verifier can conjecture auxiliary properties and can reason about both equalities and inequalities of expressions, which is crucial to prove a given property when other competitors do not succeed. We implement these ideas in the Propel verifier. Our evaluation against five state-of-the-art verifiers on a total of 142 instances of algebraic properties shows that Propel is able to automatically deduce algebraic properties in different domains that rely on such properties for correctness, even in cases where competitors fail to verify the same properties or time out.
Funder
Swiss National Science Foundation
Publisher
Association for Computing Machinery (ACM)
Reference54 articles.
1. [n. d.]. Apache Beam. https://beam.apache.org/ Accessed: 2013-07-12
2. Martín Abadi and Michael Isard. 2015. Timely dataflow: A model. In Formal Techniques for Distributed Objects, Components, and Systems: 35th IFIP WG 6.1 International Conference, FORTE 2015, Held as Part of the 10th International Federated Conference on Distributed Computing Techniques, DisCoTec 2015, Grenoble, France, June 2-4, 2015, Proceedings 35. 131–145.
3. Commutativity analysis for software parallelization
4. Proving Type Class Laws for Haskell
5. Automatic Generation of Precise and Useful Commutativity Conditions