PolyVer: A Compositional Approach for Polyglot System Modeling and Verification
By: Pei-Wei Chen , Shaokai Lin , Adwait Godbole and more
Potential Business Impact:
Checks code written in different languages at once.
Several software systems are polyglot; that is, they comprise programs implemented in a combination of programming languages. Verifiers that directly run on mainstream programming languages are currently customized for single languages. Thus, to verify polyglot systems, one usually translates them into a common verification language or formalism on which the verifier runs. In this paper, we present an alternative approach, PolyVer, which employs abstraction, compositional reasoning, and synthesis to directly perform polyglot verification. PolyVer constructs a formal model of the original polyglot system as a transition system where the update functions associated with transitions are implemented in target languages such as C or Rust. To perform verification, PolyVer then connects a model checker for transition systems with language-specific verifiers (e.g., for C or Rust) using pre/post-condition contracts for the update functions. These contracts are automatically generated by synthesis oracles based on syntax-guided synthesis or large language models (LLMs), and checked by the language-specific verifiers. The contracts form abstractions of the update functions using which the model checker verifies the overall system-level property on the polyglot system model. PolyVer iterates between counterexample-guided abstraction-refinement (CEGAR) and counterexample-guided inductive synthesis (CEGIS) until the property is verified or a true system-level counterexample is found. We demonstrate the utility of PolyVer for verifying programs in the Lingua Franca polyglot language using the UCLID5 model checker connected with the CBMC and Kani verifiers for C and Rust respectively.
Similar Papers
Symbolic Parallel Composition for Multi-language Protocol Verification
Cryptography and Security
Makes computer security work across different languages.
Polyregular Model Checking
Formal Languages and Automata Theory
Checks computer programs for mistakes automatically.
End-to-end Compositional Verification of Program Safety through Verified and Verifying Compilation
Programming Languages
Keeps computer programs safe even when mixing code.