Higher-order Constrained Horn Clauses: A New Approach to Verifying Higher-order Programs

Lead Research Organisation: University of Bristol
Department Name: Computer Science

Abstract

Abstracts are not currently available in GtR for all funded research. This is normally because the abstract was not required at the time of proposal submission, but may be because it included sensitive information such as personal details.

Publications

10 25 50

publication icon
Jochems J (2023) Higher-Order MSL Horn Constraints in Proceedings of the ACM on Programming Languages

publication icon
Jones E (2021) Intensional datatype refinement: with application to scalable verification of pattern-match safety in Proceedings of the ACM on Programming Languages

publication icon
Ramsay S (2024) Ill-Typed Programs Don't Evaluate in Proceedings of the ACM on Programming Languages

 
Description This work has established a new theoretical foundation for higher-order program verification based on higher-order logic. Algorithms and other techniques for automatically verifying the absence of certain classes of bugs in higher-order programs (such as functional programs written in Haskell, OCaml, Scala, F#, Elixir, Clojure and Erlang) have been disparate and disconnected, but fell mainly into three categories: (i) bespoke type systems, (ii) higher-order grammars and automata, (iii) higher-order fixpoint logic. Whilst the relationship between (iii) and higher-order logic is straightforward, our work has shown how to understand (i) and (ii) also in the setting of higher-order logic. This gives a conceptual way to understand e.g. different kinds of types as a means for expressing program invariants quite directly.
Exploitation Route Those who are involved in automated program verification, in industry and academia, may put our results to use. There are a large number of program verifiers used today in industry that are based on first-order Horn clauses, and consequently do not have the ability to verify higher-order programming. Our results show how these verifiers could in principle be extended to verify higher-order features, whilst still fundamentally being rooted in logic and the establishment of invariants expressed as logical formulae. In academia, we anticipate our results being the start of a taxonomy of higher-order program invariants, in which specific type systems are given a logical semantics according to the techniques developed in our work.
Sectors Digital/Communication/Information Technologies (including Software)

 
Description Higher-order Program Invariants and Higher-order Constrained Horn Clauses
Amount £81,532 (GBP)
Organisation The Research Institute on Verified Trustworthy Software Systems 
Sector Academic/University
Country United Kingdom
Start 10/2019 
End 03/2023
 
Title Intensional Datatypes GHC Plugin with Accompanying Benchmark Datasets 
Description A virtual machine image containing the version of the Intensional Datatypes GHC plugin and all associated benchmark data, whose versions are exactly those used to produce the empirical results contained in the paper Intensional Datatype Refinement which is conditionally accepted for publication in the journal Proceedings of the ACM on Programming Languages (POPL'21). To get started, log into the virtual machine using the account "aeval" with password "popl21". The software and all relevant benchmark data and tooling is located in the artifact subdirectory of the home directory. Follow the instructions in artifact/README.md to recreate the benchmarking. The virtual machine image is a standard Ubuntu 20.04.1 LTS minimal install, to which we have added ghc-8.8.3 and cabal-install-3.0 (for compiling and running the artifact) and python3-tabulate (for pretty printing the benchmark results) and visual studio code (for convenience). The virtual machine image was created using Virtual Box 6.0.24 on a Windows 10 host. 
Type Of Technology Software 
Year Produced 2020 
Open Source License? Yes  
Impact N/A 
URL https://zenodo.org/record/4072906