Optimization of a Gradual Verifier: Lazy evaluation of Iso-recursive Predicates as Equi-recursive at Runtime
Gradual verification supports partial specifications by soundly applying static checking where possible and dynamic checking when necessary. This approach supports incrementality and provides a formal guarantee of verifiability. The first gradual verifier, Gradual C0, supports programs that manipulate recursive, mutable data structures on the heap and minimizes dynamic checks with statically available information. However, the current approach for evaluating these dynamic checks is naive during incremental specificity. There is a re-assertion of dynamic checks for all imprecise logic, even if these formulas might share the same trace path. In this paper, we introduce an optimization pipeline for identifying and minimizing these common traces. We accomplish this by treating all iso-recursive predicates as equi-recursive at runtime. To not break the soundness of Gradual, we do not make any changes to the semantic evaluation of the static verifier. Instead, we preserve the evaluation of iso-recursive predicates statically, and carry this information into Gradual C0’s Gradual Viper intermediate representation. By unrolling all static predicates as if they were dynamic checks, we are able to correlate when the naive dynamic checks from the optimistic IR overlap. This allows us to perform a more sophisticated predicate equivalence matching using the Z3 SMT solver. We suggest that the lazy treatment of static specifications at the source-level is more in line with the incremental philosophy of gradual verification, and better supports more complex dynamic checks. We show the effectiveness on our benchmarks of tree data structures. We also raise the question of synthesizing intermediate predicates to bridge partial predicate matching.
I’m an undergrad @ Cornell University working towards computer science and philosophy degrees. My main research goals involve developing practical tools for software verification in general and domain-specific cases through programming language theory.
Wed 17 JanDisplayed time zone: London change
18:15 - 20:00 | |||
18:15 4mPoster | A Denotational Approach to Release/Acquire Concurrency Student Research Competition Yotam Dvir Tel Aviv University | ||
18:19 4mTalk | A Lean Formalization of Cedar Student Research Competition Bhakti Shah University of Chicago | ||
18:24 4mTalk | A Substructural Type and Effect System Student Research Competition Orpheas van Rooij Radboud University | ||
18:29 4mPoster | A type-safe generalized editor calculus (Extended Abstract) Student Research Competition Nikolaj Rossander Kristensen Department of Computer Science, Aalborg University, Benjamin Bennetzen Department of Computer Science, Aalborg University, Peter Buus Steffensen Department of Computer Science, Aalborg University, Andreas Tor Mortensen Department of Computer Science, Aalborg University | ||
18:34 4mPoster | Compilation Quotient (CQ): A Metric for the Compilation Hardness of Programming Languages Student Research Competition Vince Szabó Delft University of Technology | ||
18:38 4mPoster | Compositional Programming with Full Iso-recursive Types Student Research Competition Litao Zhou Shanghai Jiao Tong University; University of Hong Kong | ||
18:43 4mPoster | Differential Privacy in an Impure World Student Research Competition Damián Arquez University of Chile | ||
18:48 4mPoster | Effect handlers in Zig (extended abstract) Student Research Competition Alessio Duè University of Pisa | ||
18:53 4mTalk | Efficient Incremental Computation for Halide Student Research Competition Tyler Hou University of California, Berkeley Pre-print | ||
18:57 4mTalk | Embedding Pointful Array Programming in Python Student Research Competition Jakub Bachurski University of Cambridge | ||
19:02 4mPoster | Exploring the limitations of Contextual Modal Type Theory for Multi-Stage Programming Student Research Competition Theo Wang University of Oxford | ||
19:07 4mPoster | From Java to Kotlin with Contextual Equality Saturation Student Research Competition Alexandre Drewery INRIA | ||
19:12 4mPoster | GPU-Accelerated Synthesis of Boolean Circuits Student Research Competition Justin Du University of California, San Diego, Rana Lulla University of California San Diego, Melody Ruth University of California San Diego | ||
19:17 4mTalk | HOL4P4: A Heapless Small-Step Semantics and Type System for P4 Student Research Competition Anoud Alshnakat KTH Royal Institute of Technology, Roberto Guanciale KTH Royal Institute of Technology, Mads Dam KTH | ||
19:21 4mPoster | Linking Session-Typed Channels in Separation Logic Student Research Competition Thomas Somers Radboud University | ||
19:26 4mPoster | Optimization of a Gradual Verifier: Lazy evaluation of Iso-recursive Predicates as Equi-recursive at Runtime Student Research Competition Jan-Paul Ramos-Davila Cornell University | ||
19:31 4mPoster | Optimization of the Context-Free Language Reachability Matrix-Based Algorithm Student Research Competition Ilya Muravjov Saint Petersburg State University | ||
19:36 4mPoster | PiR (πr): Probabilistic Interpretation of Robustness Student Research Competition Abhinandan Pal University of Birmingham | ||
19:40 4mTalk | Session-Typed Effect Handlers Student Research Competition Wenhao Tang University of Edinburgh | ||
19:45 4mPoster | Tail: A Typed and Structured Document Editor Student Research Competition Alperen Keles University of Maryland at College Park | ||
19:50 4mPoster | Towards programmatic reinforcement learning: the case of deterministic gridworlds Student Research Competition Guruprerana Shabadi École Polytechnique, Institut Polytechnique de Paris | ||
19:55 4mPoster | Zero-Cost Capabilities: Retrofitting Effect Safety in Rust Student Research Competition George Berdovskiy University of California, Davis |