🤖 AI Summary
Formal verification of multilingual software systems is challenging due to semantic mismatches and loss of fidelity when translating entire systems into a single modeling language.
Method: This paper introduces the first contract-driven compositional verification framework that avoids full-system translation. It features: (1) a novel dual-loop abstraction-refinement mechanism integrating CEGAR and CEGIS; (2) syntax-guided, automated contract generation for cross-language update functions, augmented by SyGuS and LLMs; and (3) coordinated integration of the UCLID5 model checker with language-specific verifiers (e.g., CBMC, Kani) via shared contracts.
Contribution/Results: The framework enables end-to-end, system-level property verification of native C and Rust components within Lingua Franca systems—preserving language semantics and avoiding distortion. It significantly improves verification precision and scalability, establishing a new paradigm for compositional, scalable, and language-preserving verification of multilingual systems.
📝 Abstract
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.