Identifying Overly Restrictive Matching Patterns in SMT-based Program Verifiers

05/10/2021
by   Alexandra Bugariu, et al.
0

Universal quantifiers occur frequently in proof obligations produced by program verifiers, for instance, to axiomatize uninterpreted functions and to express properties of arrays. SMT-based verifiers typically reason about them via E-matching, an SMT algorithm that requires syntactic matching patterns to guide the quantifier instantiations. Devising good matching patterns is challenging. In particular, overly restrictive patterns may lead to spurious verification errors if the quantifiers needed for a proof are not instantiated; they may also conceal unsoundness caused by inconsistent axiomatizations. In this paper, we present the first technique that identifies and helps the users remedy the effects of overly restrictive matching patterns. We designed a novel algorithm to synthesize missing triggering terms required to complete a proof. Tool developers can use this information to refine their matching patterns and prevent similar verification errors, or to fix a detected unsoundness.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
02/08/2021

From Matching Logic To Parallel Imperative Language Verification

Program verification is to develop the program's proof system, and to pr...
research
03/17/2018

Meta-F*: Metaprogramming and Tactics in an Effectful Program Verifier

Verification tools for effectful programming languages often rely on aut...
research
10/10/2020

Cuvée: Blending SMT-LIB with Programs and Weakest Preconditions

Cuvée is a program verification tool that reads SMT-LIB-like input files...
research
12/30/2020

Quantitative Corner Case Feature Analysis of Hybrid Automata with ForFET^SMT

The analysis and verification of hybrid automata (HA) models against ric...
research
07/31/2023

SMT-Solving Induction Proofs of Inequalities

This paper accompanies a new dataset of non-linear real arithmetic probl...
research
09/09/2019

Structural and semantic pattern matching analysis in Haskell

Haskell functions are defined as a series of clauses consisting of patte...
research
11/09/2017

Refinement Reflection: Complete Verification with SMT

We introduce Refinement Reflection, a new framework for building SMT-bas...

Please sign up or login with your details

Forgot password? Click here to reset