EDBT 2026 Demo / reviewers in the wild / expert
Viktor Kuncak
dblp:k/ViktorKuncak
· DBLP profile ↗
100ranked-venue papers
19as first author
21since 2021 · last 2026
0000-0001-7044-9522ORCID · verified
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 79 · 13 first-author · 16 since 2021Theory of computation · 30 · 7 first-author · 10 since 2021Artificial intelligence and machine learning · 9 · 3 first-author · 4 since 2021Systems, architecture and hardware · 3 · 1 first-authorComputer networks · 1Databases, data management, data science and information retrieval · 1Applied, interdisciplinary, general and emerging computing · 1
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2026 | Formally Verified Linear-Time Invertible LexingabstractAbstract We present ZipLex , a verified framework for invertible linear-time lexical analysis following the longest match (maximal munch) semantics. Unlike past verified lexers that focus only on satisfying the semantics of regular expressions and the longest match property, ZipLex also guarantees that lexing and printing are mutual inverses. Thanks to verified memoization, it also ensures that the lexical analysis of a string is linear in the size of the string. Our design and implementation rely on two sets of ideas: (1) a new abstraction of token sequences that captures the separability of tokens in a sequence while supporting their efficient manipulation, and (2) a combination of verified data structures and optimizations, including Huet’s zippers and memoization with a standalone verified imperative hash table. Our hash table offers competitive performance as shown by our evaluation. We implemented and verified ZipLex using the Stainless deductive verifier for Scala. Our evaluation demonstrates that ZipLex supports realistic applications such as JSON processing and lexers of programming languages, and behaves linearly even in cases that make flex-style approaches quadratic. ZipLex is two orders of magnitude faster than Verbatim, showing that verified invertibility and linear-time algorithms can be developed without prohibitive cost. Compared to Coqlex, ZipLex also offers linear (instead of quadratic) time lexing, and is the first lexer that comes with invertibility proofs for printing token sequences. Samuel Chassot, Viktor Kuncak |
CAV (2) | 2 |
| 2025 | Interoperability of Proof Systems with SC-TPTPabstractAbstract We introduce SC-TPTP, an extension of the TPTP derivation format that supports sequent formalism, enabling seamless proof exchange between interactive theorem provers and first-order automated theorem provers. We provide a way to represent non-deductive steps—Skolemization, clausification, and Tseitin normal form—as deductive steps within the format. Building upon the existing support in the Lisa proof assistant and the Goéland theorem prover, SC-TPTP ecosystem is further enhanced with proof output interfaces for Egg and Prover9, as well as proof reconstruction support for HOL Light, Lean, and Rocq. Simon Guilloud, Julie Cailler, Sankalp Gambhir, Auguste Poiroux, Yann Herklotz, Thomas Bourgeat, Viktor Kuncak |
CADE | 7 |
| 2025 | Reliable Evaluation and Benchmarks for Statement AutoformalizationabstractEvaluating statement autoformalization, translating natural language mathematics into formal languages like Lean 4, remains a significant challenge, with few metrics, datasets, and standards to robustly measure progress.In this work, we present a comprehensive approach combining improved metrics, robust benchmarks, and systematic evaluation, to fill this gap.First, we introduce BEq+, an automated metric that correlates strongly with human judgment, along with ProofNetVerif, a new dataset for assessing the quality of evaluation metrics, containing 3,752 annotated examples.Second, we develop two new autoformalization benchmarks: ProofNet#, a corrected version of ProofNet, and RLM25, with 619 new pairs of research-level mathematics from six formalization projects.Through systematic experimentation across these benchmarks, we find that current techniques can achieve up to 45.1% accuracy on undergraduate mathematics but struggle with research-level content without proper context.Our work establishes a reliable foundation for evaluating and advancing autoformalization systems. Auguste Poiroux, Gail Weiss, Viktor Kuncak, Antoine Bosselut |
EMNLP | 3 |
| 2025 | Formal Autograding in a ClassroomabstractAbstract We report our experience in enhancing automated grading in an undergraduate programming course using formal verification. In our experiment, we deploy a program verifier to check the equivalence between student submissions and our reference solutions, alongside the existing testing-based grading infrastructure. We were able to use program equivalence to differentiate student submissions according to their high-level program structure, in particular their recursion pattern, even when their input-output behaviour is identical. Consequently, we achieve (1) higher confidence in correctness of idiomatic solutions but also (2) more thorough assessment of solution landscape that reveals solutions beyond those envisioned by instructors. Dragana Milovancevic, Mario Bucev, Marcin Wojnarowski, Samuel Chassot, Viktor Kuncak |
ESOP (2) | 5 |
| 2025 | Formally Verifiable Generated ASN.1/ACN Encoders and Decoders: A Case Study
Mario Bucev, Samuel Chassot, Simon Felix, Filip Schramka, Viktor Kuncak |
VMCAI (2) | 5 |
| 2024 | Proving Termination via Measure Transfer in Equivalence Checking
Dragana Milovancevic, Carsten Fuhs, Mario Bucev, Viktor Kuncak |
IFM | 4 |
| 2024 | Verifying a Realistic Mutable Hash Table - Case Study (Short Paper)abstractAbstract In this work, we verify, using the Stainless program verifier, the mutable from the Scala standard library, a hash table using open addressing within a single array. As an executable specification, we write an immutable map based on a list of tuples and verify it against the mathematical definition of a map. We then show that ’s operations correspond to operations of this association list. To express the resizing of the hash table array, we introduce a new reference-swapping construct in Stainless. This allows us to apply the decorator design pattern without introducing aliasing. Our verification effort led us to find and fix a bug in the original implementation that manifests for large hash tables. Our performance analysis shows the verified version to be within a 1.5 factor of the original data structure. Samuel Chassot, Viktor Kuncak |
IJCAR (1) | 2 |
| 2024 | Mechanized HOL Reasoning in Set Theory
Simon Guilloud, Sankalp Gambhir, Andrea Gilot, Viktor Kuncak |
ITP | 4 |
| 2024 | Interpolation and Quantifiers in Ortholattices
Simon Guilloud, Sankalp Gambhir, Viktor Kuncak |
VMCAI (1) | 3 |
| 2024 | On algebraic array theoriesabstractAutomatic verification of programs manipulating arrays relies on specialised decision procedures. A methodology to classify the theories handled by these procedures is introduced. It is based on decomposition theorems in the style of Feferman and Vaught. The method is applied to obtain an extension of combinatory array logic that is closed under propositional operations and Hoare triples. A classification according to expressiveness of six different fragments studied in the literature is given. Rodrigo Raya, Viktor Kuncak |
J. Log. Algebraic Methods Program. | 2 |
| 2024 | Succinct ordering and aggregation constraints in algebraic array theoriesabstractWe discuss two extensions to a recently introduced theory of arrays, which are based on considerations coming from the model theory of power structures. First, we discuss how the ordering relation on the index set can be expressed succinctly by referring to arbitrary Venn regions. Second, we show how to add general aggregators to the calculus. The result is a logic that subsumes four previous fragments discussed in the literature and is distinct from array fold logic, in that it can express summations, while its satisfiability problem remains in non-deterministic polynomial time . Rodrigo Raya, Viktor Kuncak |
J. Log. Algebraic Methods Program. | 2 |
| 2024 | Orthologic with AxiomsabstractWe study the proof theory and algorithms for orthologic, a logical system based on ortholattices, which have shown practical relevance in simplification and normalization of verification conditions. Ortholattices weaken Boolean algebras while having polynomial-time equivalence checking that is sound with respect to Boolean algebra semantics. We generalize ortholattice reasoning and obtain an algorithm for proving a larger class of classically valid formulas. As the key result, we analyze a proof system for orthologic augmented with axioms. An important feature of the system is that it limits the number of formulas in a sequent to at most two, which makes the extension with axioms non-trivial. We show a generalized form of cut elimination for this system, which implies a sub-formula property. From there we derive a cubic-time algorithm for provability from axioms, or equivalently, for validity in finitely presented ortholattices. We further show that propositional resolution of width 5 proves all formulas provable in orthologic with axioms. We show that orthologic system subsumes resolution of width 2 and arbitrarily wide unit resolution and is complete for reasoning about generalizations of propositional Horn clauses. Moving beyond ground axioms, we introduce effectively propositional orthologic (by analogy with EPR for classical logic), presenting its semantics as well as a sound and complete proof system. Our proof system implies the decidability of effectively propositional orthologic, as well as its fixed-parameter tractability for a bounded maximal number of variables in each axiom. As a special case, we obtain a generalization of Datalog with negation and disjunction. Simon Guilloud, Viktor Kuncak |
Proc. ACM Program. Lang. | 2 |
| 2023 | Formula Normalizations in VerificationabstractAbstract We apply and evaluate polynomial-time algorithms to compute two different normal forms of propositional formulas arising in verification. One of the normal form algorithms is presented for the first time. The algorithms compute normal forms and solve the word problem for two different subtheories of Boolean algebra: orthocomplemented bisemilattice (OCBSL) and ortholattice (OL). Equality of normal forms decides the word problem and is a sufficient (but not necessary) check for equivalence of propositional formulas. Our first contribution is a quadratic-time OL normal form algorithm, which induces a coarser equivalence than the OCBSL normal form and is thus a more precise approximation of propositional equivalence. The algorithm is efficient even when the input formula is represented as a directed acyclic graph. Our second contribution is the evaluation of OCBSL and OL normal forms as part of a verification condition cache of the Stainless verifier for Scala. The results show that both normalization algorithms substantially increase the cache hit ratio and improve the ability to prove verification conditions by simplification alone. To gain further insights, we also compare the algorithms on hardware circuit benchmarks, showing that normalization reduces circuit size and works well in the presence of sharing. Simon Guilloud, Mario Bucev, Dragana Milovancevic, Viktor Kuncak |
CAV (3) | 4 |
| 2023 | LISA - A Modern Proof SystemabstractWe present LISA, a proof system and proof assistant for constructing proofs in schematic first-order logic and axiomatic set theory. The logical kernel of the system is a proof checker for first-order logic with equality and schematic predicate and function symbols. It implements polynomial-time proof checking and uses the axioms of ortholattices (which implies the irrelevance of the order of conjuncts and disjuncts and additional propositional laws). The kernel supports the notion of theorems (whose proofs are not expanded), as well as definitions of predicate symbols and objects whose unique existence is proven. A domain-specific language enables construction of proofs and development of proof tactics with user-friendly tools and presentation, while remaining within the general-purpose language, Scala. We describe the LISA proof system and illustrate the flavour and the level of abstraction of proofs written in LISA. This includes a proof-generating tactic for propositional tautologies, leveraging the ortholattice properties to reduce the size of proofs. We also present early formalization of set theory in LISA, including Cantor's theorem. Simon Guilloud, Sankalp Gambhir, Viktor Kuncak |
ITP | 3 |
| 2023 | On the Complexity of Convex and Reverse Convex Prequadratic ConstraintsabstractMotivated by satisfiability of constraints with function symbols, we consider numerical inequalities on non-negative integers. The constraints we address are a conjunction of a linear system Ax = b and an arbitrary number of (reverse) convex constraints of the form xi ≥ xdj (xi ≤ xdj ). We show that the satisfiability of these constraints is NP-complete even if the solution to the linear part is given explicitly. As a consequence, we obtain NP- completeness for an extension of certain quantifier-free constraints on sets with cardinalities and function images. Rodrigo Raya, Jad Hamza, Viktor Kuncak |
LPAR | 3 |
| 2023 | Proving and Disproving Equivalence of Functional Programming AssignmentsabstractWe present an automated approach to verify the correctness of programming assignments, such as the ones that arise in a functional programming course. Our approach takes as input student submissions and reference solutions, and uses equivalence checking to automatically prove or disprove correctness of each submission. To be effective in the context of a real-world programming course, an automated grading system must be both robust, to support programs written in a variety of style, and scalable, to treat hundreds of submissions at once. We achieve robustness by handling recursion using functional induction and by handling auxiliary functions using function call matching. We achieve scalability using a clustering algorithm that leverages the transitivity of equivalence to discover intermediate reference solutions among student submissions. We implement our approach on top of the Stainless verification system, to support equivalence checking of Scala programs. We evaluate our system and its components on over 4000 programs drawn from a functional programming course and from the program equivalence checking literature; this is the largest such evaluation to date. We show that our system is capable of proving program correctness by generating inductive equivalence proofs, and providing counterexamples for incorrect programs, with a high success rate. Dragana Milovancevic, Viktor Kuncak |
Proc. ACM Program. Lang. | 2 |
| 2022 | Formally Verified Quite OK Image Format
Mario Bucev, Viktor Kuncak |
FMCAD | 2 |
| 2022 | Equivalence Checking for Orthocomplemented Bisemilattices in Log-Linear TimeabstractAbstract Motivated by proof checking, we consider the problem of efficiently establishing equivalence of propositional formulas by relaxing the completeness requirements while still providing certain guarantees. We present a quasilinear time algorithm to decide the word problem on a natural algebraic structures we call orthocomplemented bisemilattices, a subtheory of Boolean algebra. The starting point for our procedure is a variation of Aho, Hopcroft, Ullman algorithm for isomorphism of trees, which we generalize to directed acyclic graphs. We combine this algorithm with a term rewriting system we introduce to decide equivalence of terms. We prove that our rewriting system is terminating and confluent, implying the existence of a normal form. We then show that our algorithm computes this normal form in log linear (and thus sub-quadratic) time. We provide pseudocode and a minimal working implementation in Scala. Simon Guilloud, Viktor Kuncak |
TACAS (2) | 2 |
| 2022 | NP Satisfiability for Arrays as Powers
Rodrigo Raya, Viktor Kuncak |
VMCAI | 2 |
| 2022 | Generalized Arrays for Stainless Frames
Georg Stefan Schmid, Viktor Kuncak |
VMCAI | 2 |
| 2021 | Stainless Verification System Tutorial
Viktor Kuncak, Jad Hamza |
FMCAD | 1 |
| 2020 | Zippy LL(1) parsing with derivativesabstractIn this paper, we present an efficient, functional, and formally verified parsing algorithm for LL(1) context-free expressions based on the concept of derivatives of formal languages. Parsing with derivatives is an elegant parsing technique, which, in the general case, suffers from cubic worst-case time complexity and slow performance in practice. We specialise the parsing with derivatives algorithm to LL(1) context-free expressions, where alternatives can be chosen given a single token of lookahead. We formalise the notion of LL(1) expressions and show how to efficiently check the LL(1) property. Next, we present a novel linear-time parsing with derivatives algorithm for LL(1) expressions operating on a zipper-inspired data structure. We prove the algorithm correct in Coq and present an implementation as a part of Scallion, a parser combinators framework in Scala with enumeration and pretty printing capabilities. Romain Edelmann, Jad Hamza, Viktor Kuncak |
PLDI | 3 |
| 2019 | Minimal Synthesis of String to String Functions from Examples
Jad Hamza, Viktor Kuncak |
VMCAI | 2 |
| 2019 | Refutation-based synthesis in SMT
Andrew Reynolds 0001, Viktor Kuncak, Cesare Tinelli, Clark W. Barrett, Morgan Deters |
Formal Methods Syst. Des. | 2 |
| 2019 | System FR: formalized foundations for the stainless verifierabstractWe present the design, implementation, and foundation of a verifier for higher-order functional programs with generics and recursive data types. Our system supports proving safety and termination using preconditions, postconditions and assertions. It supports writing proof hints using assertions and recursive calls. To formalize the soundness of the system we introduce System FR, a calculus supporting System F polymorphism, dependent refinement types, and recursive types (including recursion through contravariant positions of function types). Through the use of sized types, System FR supports reasoning about termination of lazy data structures such as streams. We formalize a reducibility argument using the Coq proof assistant and prove the soundness of a type-checker with respect to call-by-value semantics, ensuring type safety and normalization for typeable programs. Our program verifier is implemented as an alternative verification-condition generator for the Stainless tool, which relies on the Inox SMT-based solver backend for automation. We demonstrate the efficiency of our approach by verifying a collection of higher-order functional programs comprising around 14000 lines of polymorphic higher-order Scala code, including graph search algorithms, basic number theory, monad laws, functional data structures, and assignments from popular Functional Programming MOOCs. Jad Hamza, Nicolas Voirol, Viktor Kuncak |
Proc. ACM Program. Lang. | 3 |
| 2018 | Bidirectional evaluation with direct manipulationabstractWe present an evaluation update (or simply, update) algorithm for a full-featured functional programming language, which synthesizes program changes based on output changes. Intuitively, the update algorithm retraces the steps of the original evaluation, rewriting the program as needed to reconcile differences between the original and updated output values. Our approach, furthermore, allows expert users to define custom lenses that augment the update algorithm with more advanced or domain-specific program updates. To demonstrate the utility of evaluation update, we implement the algorithm in Sketch-n-Sketch, a novel direct manipulation programming system for generating HTML documents. In Sketch-n-Sketch, the user writes an ML-style functional program to generate HTML output. When the user directly manipulates the output using a graphical user interface, the update algorithm reconciles the changes. We evaluate bidirectional evaluation in Sketch-n-Sketch by authoring ten examples comprising approximately 1400 lines of code in total. These examples demonstrate how a variety of HTML documents and applications can be developed and edited interactively in Sketch-n-Sketch, mitigating the tedious edit-run-view cycle in traditional programming environments. Mikaël Mayer, Viktor Kuncak, Ravi Chugh |
Proc. ACM Program. Lang. | 2 |
| 2017 | Proactive Synthesis of Recursive Tree-to-String Functions from ExamplesabstractSynthesis from examples enables non-expert users to generate programs by specifying examples of their behavior. A domain-specific form of such synthesis has been recently deployed in a widely used spreadsheet software product. In this paper we contribute to foundations of such techniques and present a complete algorithm for synthesis of a class of recursive functions defined by structural recursion over a given algebraic data type definition. The functions we consider map an algebraic data type to a string; they are useful for, e.g., pretty printing and serialization of programs and data. We formalize our problem as learning deterministic sequential top-down tree-to-string transducers with a single state (1STS). The first problem we consider is learning a tree-to-string transducer from any set of input/output examples provided by the user. We show that, given a set of input/output examples, checking whether there exists a 1STS consistent with these examples is NP-complete in general. In contrast, the problem can be solved in polynomial time under a (practically useful) closure condition that each subtree of a tree in the input/output example set is also part of the input/output examples. Because coming up with relevant input/output examples may be difficult for the user while creating hard constraint problems for the synthesizer, we also study a more automated active learning scenario in which the algorithm chooses the inputs for which the user provides the outputs. Our algorithm asks a worst-case linear number of queries as a function of the size of the algebraic data type definition to determine a unique transducer. To construct our algorithms we present two new results on formal languages. First, we define a class of word equations, called sequential word equations, for which we prove that satisfiability can be solved in deterministic polynomial time. This is in contrast to the general word equations for which the best known complexity upper bound is in linear space. Second, we close a long-standing open problem about the asymptotic size of test sets for context-free languages. A test set of a language of words L is a subset T of L such that any two word homomorphisms equivalent on T are also equivalent on L. We prove that it is possible to build test sets of cubic size for context-free languages, matching for the first time the lower bound found 20 years ago. Mikaël Mayer, Jad Hamza, Viktor Kuncak |
ECOOP | 3 |
| 2017 | Contract-based resource verification for higher-order functions with memoizationabstractWe present a new approach for specifying and verifying resource utilization of higher-order functional programs that use lazy evaluation and memoization. In our approach, users can specify the desired resource bound as templates with numerical holes e.g. as steps ≤ ? * size(l) + ? in the contracts of functions. They can also express invariants necessary for establishing the bounds that may depend on the state of memoization. Our approach operates in two phases: first generating an instrumented first-order program that accurately models the higher-order control flow and the effects of memoization on resources using sets, algebraic datatypes and mutual recursion, and then verifying the contracts of the first-order program by producing verification conditions of the form ∃ ∀ using an extended assume/guarantee reasoning. We use our approach to verify precise bounds on resources such as evaluation steps and number of heap-allocated objects on 17 challenging data structures and algorithms. Our benchmarks, comprising of 5K lines of functional Scala code, include lazy mergesort, Okasaki's real-time queue and deque data structures that rely on aliasing of references to first-class functions; lazy data structures based on numerical representations such as the conqueue data structure of Scala's data-parallel library, cyclic streams, as well as dynamic programming algorithms such as knapsack and Viterbi. Our evaluations show that when averaged over all benchmarks the actual runtime resource consumption is 80% of the value inferred by our tool when estimating the number of evaluation steps, and is 88% for the number of heap-allocated objects. Ravichandhran Madhavan, Sumith Kulal, Viktor Kuncak |
POPL | 3 |
| 2017 | Solving quantified linear arithmetic by counterexample-guided instantiation
Andrew Reynolds 0001, Tim King 0001, Viktor Kuncak |
Formal Methods Syst. Des. | 3 |
| 2017 | Towards a Compiler for RealsabstractNumerical software, common in scientific computing or embedded systems, inevitably uses a finite-precision approximation of the real arithmetic in which most algorithms are designed. In many applications, the roundoff errors introduced by finite-precision arithmetic are not the only source of inaccuracy, and measurement and other input errors further increase the uncertainty of the computed results. Adequate tools are needed to help users select suitable data types and evaluate the provided accuracy, especially for safety-critical applications. We present a source-to-source compiler called Rosa that takes as input a real-valued program with error specifications and synthesizes code over an appropriate floating-point or fixed-point data type. The main challenge of such a compiler is a fully automated, sound, and yet accurate-enough numerical error estimation. We introduce a unified technique for bounding roundoff errors from floating-point and fixed-point arithmetic of various precisions. The technique can handle nonlinear arithmetic, determine closed-form symbolic invariants for unbounded loops, and quantify the effects of discontinuities on numerical errors. We evaluate Rosa on a number of benchmarks from scientific computing and embedded systems and, comparing it to the state of the art in automated error estimation, show that it presents an interesting tradeoff between accuracy and performance. Eva Darulova, Viktor Kuncak |
ACM Trans. Program. Lang. Syst. | 2 |
| 2015 | Deductive Program Repair
Etienne Kneuss, Manos Koukoutos, Viktor Kuncak |
CAV (2) | 3 |
| 2015 | Counterexample-Guided Quantifier Instantiation for Synthesis in SMT
Andrew Reynolds 0001, Morgan Deters, Viktor Kuncak, Cesare Tinelli, Clark W. Barrett |
CAV (2) | 3 |
| 2015 | Interactive Synthesis Using Free-Form QueriesabstractWe present a new code assistance tool for integrated development environments. Our system accepts free-form queries allowing a mixture of English and Java as an input, and produces Java code fragments that take the query into account and respect syntax, types, and scoping rules of Java as well as statistical usage patterns. The returned results need not have the structure of any previously seen code fragment. As part of our system we have constructed a probabilistic context free grammar for Java constructs and library invocations, as well as an algorithm that uses a customized natural language processing tool chain to extract information from free-form text queries. The evaluation results show that our technique can tolerate much of the flexibility present in natural language, and can also be used to repair incorrect Java expressions that contain useful information about the developer's intent. Our demo video is available at http://youtu.be/tx4-XgAZkKU. Tihomir Gvero, Viktor Kuncak |
ICSE (2) | 2 |
| 2015 | Synthesizing Java expressions from free-form queriesabstractWe present a new code assistance tool for integrated development environments. Our system accepts as input free-form queries containing a mixture of English and Java, and produces Java code expressions that take the query into account and respect syntax, types, and scoping rules of Java, as well as statistical usage patterns. In contrast to solutions based on code search, the results returned by our tool need not directly correspond to any previously seen code fragment. As part of our system we have constructed a probabilistic context free grammar for Java constructs and library invocations, as well as an algorithm that uses a customized natural language processing tool chain to extract information from free-form text queries. We present the results on a number of examples showing that our technique (1) often produces the expected code fragments, (2) tolerates much of the flexibility of natural language, and (3) can repair incorrect Java expressions that use, for example, the wrong syntax or missing arguments. Tihomir Gvero, Viktor Kuncak |
OOPSLA | 2 |
| 2015 | Programming with enumerable sets of structuresabstractWe present an efficient, modular, and feature-rich framework for automated generation and validation of complex structures, suitable for tasks that explore a large space of structured values. Our framework is capable of exhaustive, incremental, parallel, and memoized enumeration from not only finite but also infinite domains, while providing fine-grained control over the process. Furthermore, the framework efficiently supports the inverse of enumeration (checking whether a structure can be generated and fast-forwarding to this structure to continue the enumeration) and lazy enumeration (achieving exhaustive testing without generating all structures). The foundation of efficient enumeration lies in both direct access to encoded structures, achieved with well-known and new pairing functions, and dependent enumeration, which embeds constraints into the enumeration to avoid backtracking. Our framework defines an algebra of enumerators, with combinators for their composition that preserve exhaustiveness and efficiency. We have implemented our framework as a domain-specific language in Scala. Our experiments demonstrate better performance and shorter specifications by up to a few orders of magnitude compared to existing approaches. Ivan Kuraj, Viktor Kuncak, Daniel Jackson 0001 |
OOPSLA | 2 |
| 2015 | Automating grammar comparisonabstractWe consider from a practical perspective the problem of checking equivalence of context-free grammars. We present techniques for proving equivalence, as well as techniques for finding counter-examples that establish non-equivalence. Among the key building blocks of our approach is a novel algorithm for efficiently enumerating and sampling words and parse trees from arbitrary context-free grammars; the algorithm supports polynomial time random access to words belonging to the grammar. Furthermore, we propose an algorithm for proving equivalence of context-free grammars that is complete for LL grammars, yet can be invoked on any context-free grammar, including ambiguous grammars. Our techniques successfully find discrepancies between different syntax specifications of several real-world languages, and are capable of detecting fine-grained incremental modifications performed on grammars. Our evaluation shows that our tool improves significantly on the existing available state of the art tools. In addition, we used these algorithms to develop an online tutoring system for grammars that we then used in an undergraduate course on computer language processing. On questions involving grammar constructions, our system was able to automatically evaluate the correctness of 95% of the solutions submitted by students: it disproved 74% of cases and proved 21% of them. Ravichandhran Madhavan, Mikaël Mayer, Sumit Gulwani, Viktor Kuncak |
OOPSLA | 4 |
| 2015 | Induction for SMT Solvers
Andrew Reynolds 0001, Viktor Kuncak |
VMCAI | 2 |
| 2015 | On recursion-free Horn clauses and Craig interpolation
Philipp Rümmer, Hossein Hojjat, Viktor Kuncak |
Formal Methods Syst. Des. | 3 |
| 2014 | Symbolic Resource Bound Inference for Functional Programs
Ravichandhran Madhavan, Viktor Kuncak |
CAV | 2 |
| 2014 | Verifying and Synthesizing Software with Recursive Functions - (Invited Contribution)
Viktor Kuncak |
ICALP (1) | 1 |
| 2014 | Sound compilation of realsabstractWriting accurate numerical software is hard because of many sources of unavoidable uncertainties, including finite numerical precision of implementations. We present a programming model where the user writes a program in a real-valued implementation and specification language that explicitly includes different types of uncertainties. We then present a compilation algorithm that generates a finite-precision implementation that is guaranteed to meet the desired precision with respect to real numbers. Our compilation performs a number of verification steps for different candidate precisions. It generates verification conditions that treat all sources of uncertainties in a unified way and encode reasoning about finite-precision roundoff errors into reasoning about real numbers. Such verification conditions can be used as a standardized format for verifying the precision and the correctness of numerical programs. Due to their non-linear nature, precise reasoning about these verification conditions remains difficult and cannot be handled using state-of-the art SMT solvers alone. We therefore propose a new procedure that combines exact SMT solving over reals with approximate and sound affine and interval arithmetic. We show that this approach overcomes scalability limitations of SMT solvers while providing improved precision over affine and interval arithmetic. Our implementation gives promising results on several numerical models, including dynamical systems, transcendental functions, and controller implementations. Eva Darulova, Viktor Kuncak |
POPL | 2 |
| 2014 | Checking Data Structure Properties Orders of Magnitude Faster
Emmanouil Koukoutos, Viktor Kuncak |
RV | 2 |
| 2013 | Disjunctive Interpolants for Horn-Clause Verification
Philipp Rümmer, Hossein Hojjat, Viktor Kuncak |
CAV | 3 |
| 2013 | Synthesis of fixed-point programsabstractSeveral problems in the implementations of control systems, signal-processing systems, and scientific computing systems reduce to compiling a polynomial expression over the reals into an imperative program using fixed-point arithmetic. Fixed-point arithmetic only approximates real values, and its operators do not have the fundamental properties of real arithmetic, such as associativity. Consequently, a naive compilation process can yield a program that significantly deviates from the real polynomial, whereas a different order of evaluation can result in a program that is close to the real value on all inputs in its domain. We present a compilation scheme for real-valued arithmetic expressions to fixed-point arithmetic programs. Given a real-valued polynomial expression t, we find an expression t' that is equivalent to t over the reals, but whose implementation as a series of fixed-point operations minimizes the error between the fixed-point value and the value of t over the space of all inputs. We show that the corresponding decision problem, checking whether there is an implementation t' of t whose error is less than a given constant, is NP-hard. We then propose a solution technique based on genetic programming. Our technique evaluates the fitness of each candidate program using a static analysis based on affine arithmetic. We show that our tool can significantly reduce the error in the fixed-point implementation on a set of linear control system benchmarks. For example, our tool found implementations whose errors are only one half of the errors in the original fixed-point expressions. Eva Darulova, Viktor Kuncak, Rupak Majumdar, Indranil Saha 0001 |
EMSOFT | 2 |
| 2013 | Interpolation for synthesis on unbounded domains
Viktor Kuncak, Régis Blanc |
FMCAD | 1 |
| 2013 | Synthesis modulo recursive functionsabstractWe describe techniques for synthesis and verification of recursive functional programs over unbounded domains. Our techniques build on top of an algorithm for satisfiability modulo recursive functions, a framework for deductive synthesis, and complete synthesis procedures for algebraic data types. We present new counterexample-guided algorithms for constructing verified programs. We have implemented these algorithms in an integrated environment for interactive verification and synthesis from relational specifications. Our system was able to synthesize a number of useful recursive functions that manipulate unbounded numbers and data structures. Etienne Kneuss, Ivan Kuraj, Viktor Kuncak, Philippe Suter |
OOPSLA | 3 |
| 2013 | Complete completion using types and weightsabstractDeveloping modern software typically involves composing functionality from existing libraries. This task is difficult because libraries may expose many methods to the developer. To help developers in such scenarios, we present a technique that synthesizes and suggests valid expressions of a given type at a given program point. As the basis of our technique we use type inhabitation for lambda calculus terms in long normal form. We introduce a succinct representation for type judgements that merges types into equivalence classes to reduce the search space, then reconstructs any desired number of solutions on demand. Furthermore, we introduce a method to rank solutions based on weights derived from a corpus of code. We implemented the algorithm and deployed it as a plugin for the Eclipse IDE for Scala. We show that the techniques we incorporated greatly increase the effectiveness of the approach. Our evaluation benchmarks are code examples from programming practice; we make them available for future comparisons. Tihomir Gvero, Viktor Kuncak, Ivan Kuraj, Ruzica Piskac |
PLDI | 2 |
| 2013 | Executing Specifications Using Synthesis and Constraint Solving
Viktor Kuncak, Etienne Kneuss, Philippe Suter |
RV | 1 |
| 2013 | Automatic synthesis of out-of-core algorithmsabstractWe present a system for the automatic synthesis of efficient algorithms specialized for a particular memory hierarchy and a set of storage devices. The developer provides two independent inputs: 1) an algorithm that ignores memory hierarchy and external storage aspects; and 2) a description of the target memory hierarchy, including its topology and parameters. Our system is able to automatically synthesize memory-hierarchy and storage-device-aware algorithms out of those specifications, for tasks such as joins and sorting. The framework is extensible and allows developers to quickly synthesize custom out-of-core algorithms as new storage technologies become available. Yannis Klonatos, Andres Nötzli, Andrej Spielmann, Christoph Koch 0001, Viktor Kuncak |
SIGMOD Conference | 5 |
| 2013 | Reductions for Synthesis Procedures
Swen Jacobs, Viktor Kuncak, Philippe Suter |
VMCAI | 2 |
| 2013 | Software verification and graph similarity for automated evaluation of students' assignments
Milena Vujosevic-Janicic, Mladen Nikolic, Dusan Tosic, Viktor Kuncak |
Inf. Softw. Technol. | 4 |
| 2013 | Functional synthesis for linear arithmetic and sets
Viktor Kuncak, Mikaël Mayer, Ruzica Piskac, Philippe Suter |
Int. J. Softw. Tools Technol. Transf. | 1 |
| 2012 | Accelerating Interpolants
Hossein Hojjat, Radu Iosif, Filip Konecný, Viktor Kuncak, Philipp Rümmer |
ATVA | 4 |
| 2012 | A Verification Toolkit for Numerical Transition Systems - Tool Paper
Hossein Hojjat, Filip Konecný, Florent Garnier, Radu Iosif, Viktor Kuncak, Philipp Rümmer |
FM | 5 |
| 2012 | Speculative linearizabilityabstractLinearizability is a key design methodology for reasoning about implementations of concurrent abstract data types in both shared memory and message passing systems. It provides the illusion that operations execute sequentially and fault-free, despite the asynchrony and faults inherent to a concurrent system, especially a distributed one. A key property of linearizability is inter-object composability: a system composed of linearizable objects is itself linearizable. However, devising linearizable objects is very difficult, requiring complex algorithms to work correctly under general circumstances, and often resulting in bad average-case behavior. Concurrent algorithm designers therefore resort to speculation: optimizing algorithms to handle common scenarios more efficiently. The outcome are even more complex protocols, for which it is no longer tractable to prove their correctness. Rachid Guerraoui, Viktor Kuncak, Giuliano Losa |
PLDI | 2 |
| 2012 | Constraints as controlabstractWe present an extension of Scala that supports constraint programming over bounded and unbounded domains. The resulting language, Kaplan, provides the benefits of constraint programming while preserving the existing features of Scala. Kaplan integrates constraint and imperative programming by using constraints as an advanced control structure; the developers use the monadic 'for' construct to iterate over the solutions of constraints or branch on the existence of a solution. The constructs we introduce have simple semantics that can be understood as explicit enumeration of values, but are implemented more efficiently using symbolic reasoning. Kaplan programs can manipulate constraints at run-time, with the combined benefits of type-safe syntax trees and first-class functions. The language of constraints is a functional subset of Scala, supporting arbitrary recursive function definitions over algebraic data types, sets, maps, and integers. Ali Sinan Köksal, Viktor Kuncak, Philippe Suter |
POPL | 2 |
| 2012 | Certifying Solutions for Numerical Constraints
Eva Darulova, Viktor Kuncak |
RV | 2 |
| 2011 | Scala to the Power of Z3: Integrating SMT and Programming
Ali Sinan Köksal, Viktor Kuncak, Philippe Suter |
CADE | 2 |
| 2011 | An Efficient Decision Procedure for Imperative Tree Data Structures
Thomas Wies, Marco Muñiz, Viktor Kuncak |
CADE | 3 |
| 2011 | Interactive Synthesis of Code Snippets
Tihomir Gvero, Viktor Kuncak, Ruzica Piskac |
CAV | 2 |
| 2011 | Trustworthy numerical computation in ScalaabstractModern computing has adopted the floating point type as a default way to describe computations with real numbers. Thanks to dedicated hardware support, such computations are efficient on modern architectures, even in double precision. However, rigorous reasoning about the resulting programs remains difficult. This is in part due to a large gap between the finite floating point representation and the infinite-precision real-number semantics that serves as the developers' mental model. Because programming languages do not provide support for estimating errors, some computations in practice are performed more and some less precisely than needed. Eva Darulova, Viktor Kuncak |
OOPSLA | 2 |
| 2011 | Satisfiability Modulo Recursive Programs
Philippe Suter, Ali Sinan Köksal, Viktor Kuncak |
SAS | 3 |
| 2011 | Towards Complete Reasoning about Axiomatic Specifications
Swen Jacobs, Viktor Kuncak |
VMCAI | 2 |
| 2011 | Sets with Cardinality Constraints in Satisfiability Modulo Theories
Philippe Suter, Robin Steiger, Viktor Kuncak |
VMCAI | 3 |
| 2010 | Comfusy: A Tool for Complete Functional Synthesis
Viktor Kuncak, Mikaël Mayer, Ruzica Piskac, Philippe Suter |
CAV | 1 |
| 2010 | Synthesis for regular specifications over unbounded domains
Jad Hamza, Barbara Jobstmann, Viktor Kuncak |
FMCAD | 3 |
| 2010 | Test generation through programming in UDITAabstractWe present an approach for describing tests using non-deterministic test generation programs. To write such programs, we introduce UDITA, a Java-based language with non-deterministic choice operators and an interface for generating linked structures. We also describe new algorithms that generate concrete tests by efficiently exploring the space of all executions of non-deterministic UDITA programs. Milos Gligoric 0001, Tihomir Gvero, Vilas Jagannath, Sarfraz Khurshid, Viktor Kuncak, Darko Marinov |
ICSE (1) | 5 |
| 2010 | Complete functional synthesisabstractSynthesis of program fragments from specifications can make programs easier to write and easier to reason about. To integrate synthesis into programming languages, synthesis algorithms should behave in a predictable way - they should succeed for a well-defined class of specifications. They should also support unbounded data types such as numbers and data structures. We propose to generalize decision procedures into predictable and complete synthesis procedures. Such procedures are guaranteed to find code that satisfies the specification if such code exists. Moreover, we identify conditions under which synthesis will statically decide whether the solution is guaranteed to exist, and whether it is unique. We demonstrate our approach by starting from decision procedures for linear arithmetic and data structures and transforming them into synthesis procedures. We establish results on the size and the efficiency of the synthesized code. We show that such procedures are useful as a language extension with implicit value definitions, and we show how to extend a compiler to support such definitions. Our constructs provide the benefits of synthesis to programmers, without requiring them to learn new concepts or give up a deterministic execution model. Viktor Kuncak, Mikaël Mayer, Ruzica Piskac, Philippe Suter |
PLDI | 1 |
| 2010 | Decision procedures for algebraic data types with abstractionsabstractWe describe a family of decision procedures that extend the decision procedure for quantifier-free constraints on recursive algebraic data types (term algebras) to support recursive abstraction functions. Our abstraction functions are catamorphisms (term algebra homomorphisms) mapping algebraic data type values into values in other decidable theories (e.g. sets, multisets, lists, integers, booleans). Each instance of our decision procedure family is sound; we identify a widely applicable many-to-one condition on abstraction functions that implies the completeness. Complete instances of our decision procedure include the following correctness statements: 1) a functional data structure implementation satisfies a recursively specified invariant, 2) such data structure conforms to a contract given in terms of sets, multisets, lists, sizes, or heights, 3) a transformation of a formula (or lambda term) abstract syntax tree changes the set of free variables in the specified way. Philippe Suter, Mirco Dotta, Viktor Kuncak |
POPL | 3 |
| 2010 | Runtime Instrumentation for Precise Flow-Sensitive Type Analysis
Etienne Kneuss, Philippe Suter, Viktor Kuncak |
RV | 3 |
| 2010 | Phantm: PHP analyzer for type mismatchabstractWe present Phantm, a static analyzer that uses a flow-sensitive analysis to detect type errors in PHP applications. Phantm can infer types for nested arrays, and can leverage runtime information and procedure summaries for more precise results. Phantm found over 200 true problems when applied to three applications with over 50'000 lines of code, including the popular DokuWiki code base. Etienne Kneuss, Philippe Suter, Viktor Kuncak |
SIGSOFT FSE | 3 |
| 2010 | Building a Calculus of Data Structures
Viktor Kuncak, Ruzica Piskac, Philippe Suter, Thomas Wies |
VMCAI | 1 |
| 2010 | Collections, Cardinalities, and Relations
Kuat Yessenov, Ruzica Piskac, Viktor Kuncak |
VMCAI | 3 |
| 2010 | Predicting and preventing inconsistencies in deployed distributed systemsabstractWe propose a new approach for developing and deploying distributed systems, in which nodes predict distributed consequences of their actions and use this information to detect and avoid errors. Each node continuously runs a state exploration algorithm on a recent consistent snapshot of its neighborhood and predicts possible future violations of specified safety properties. We describe a new state exploration algorithm, consequence prediction, which explores causally related chains of events that lead to property violation. This article describes the design and implementation of this approach, termed CrystalBall. We evaluate CrystalBall on RandTree, BulletPrime, Paxos, and Chord distributed system implementations. We identified new bugs in mature Mace implementations of three systems. Furthermore, we show that if the bug is not corrected during system development, CrystalBall is effective in steering the execution away from inconsistent states at runtime. Maysam Yabandeh, Nikola Knezevic, Dejan Kostic, Viktor Kuncak |
ACM Trans. Comput. Syst. | 4 |
| 2009 | Simplifying Distributed System Development
Maysam Yabandeh, Nedeljko Vasic, Dejan Kostic, Viktor Kuncak |
HotOS | 4 |
| 2009 | CrystalBall: Predicting and Preventing Inconsistencies in Deployed Distributed Systems
Maysam Yabandeh, Nikola Knezevic, Dejan Kostic, Viktor Kuncak |
NSDI | 4 |
| 2009 | An integrated proof language for imperative programsabstractWe present an integrated proof language for guiding the actions of multiple reasoning systems as they work together to prove complex correctness properties of imperative programs. The language operates in the context of a program verification system that uses multiple reasoning systems to discharge generated proof obligations. It is designed to 1) enable developers to resolve key choice points in complex program correctness proofs, thereby enabling automated reasoning systems to successfully prove the desired correctness properties; 2) allow developers to identify key lemmas for the reasoning systems to prove, thereby guiding the reasoning systems to find an effective proof decomposition; 3) enable multiple reasoning systems to work together productively to prove a single correctness property by providing a mechanism that developers can use to divide the property into lemmas, each of which is suitable for a different reasoning system; and 4) enable developers to identify specific lemmas that the reasoning systems should use when attempting to prove other lemmas or correctness properties, thereby appropriately confining the search space so that the reasoning systems can find a proof in an acceptable amount of time. Karen Zee, Viktor Kuncak, Martin C. Rinard |
PLDI | 2 |
| 2008 | Linear Arithmetic with Stars
Ruzica Piskac, Viktor Kuncak |
CAV | 2 |
| 2008 | Verifying linked data structure implementationsabstractThe Jahob program verification system leverages state of the art automated theorem provers, shape analysis, and decision procedures to check that programs conform to their specifications. By combining a rich specification language with a diverse collection of verification technologies, Jahob makes it possible to verify complex properties of programs that manipulate linked data structures. We present our results using Jahob to achieve full functional verification of a collection of linked data structures. Karen Zee, Viktor Kuncak, Martin C. Rinard |
IPDPS | 2 |
| 2008 | Full functional verification of linked data structuresabstractWe present the first verification of full functional correctness for a range of linked data structure implementations, including mutable lists, trees, graphs, and hash tables. Specifically, we present the use of the Jahob verification system to verify formal specifications, written in classical higher-order logic, that completely capture the desired behavior of the Java data structure implementations (with the exception of properties involving execution time and/or memory consumption). Given that the desired correctness properties include intractable constructs such as quantifiers, transitive closure, and lambda abstraction, it is a challenge to successfully prove the generated verification conditions. Karen Zee, Viktor Kuncak, Martin C. Rinard |
PLDI | 2 |
| 2008 | Runtime Checking for Separation Logic
Huu Hai Nguyen, Viktor Kuncak, Wei-Ngan Chin |
VMCAI | 2 |
| 2008 | Decision Procedures for Multisets with Cardinality Constraints
Ruzica Piskac, Viktor Kuncak |
VMCAI | 2 |
| 2007 | Towards Efficient Satisfiability Checking for Boolean Algebra with Presburger Arithmetic
Viktor Kuncak, Martin C. Rinard |
CADE | 1 |
| 2007 | Polynomial Constraints for Sets with Cardinality Bounds
Bruno Marnette, Viktor Kuncak, Martin C. Rinard |
FoSSaCS | 2 |
| 2007 | Runtime Checking for Program Verification
Karen Zee, Viktor Kuncak, Michael B. Taylor, Martin C. Rinard |
RV | 2 |
| 2007 | Using First-Order Theorem Provers in the Jahob Data Structure Verification System
Charles Bouillaguet, Viktor Kuncak, Thomas Wies, Karen Zee, Martin C. Rinard |
VMCAI | 2 |
| 2006 | An overview of the Jahob analysis system: project goals and current statusabstractWe present an overview of the Jahob system for modular analysis of data structure properties. Jahob uses a subset of Java as the implementation language and annotations with formulas in a subset of Isabelle as the specification language. It uses monadic second-order logic over trees to reason about reachability in linked data structures, the Isabelle theorem prover and Nelson-Oppen style theorem provers to reason about high-level properties and arrays, and a new technique to combine reasoning about constraints on uninterpreted function symbols with other decision procedures. It also incorporates new decision procedures for reasoning about sets with cardinality constraints. The system can infer loop invariants using new symbolic shape analysis. Initial results in the use of our system are promising; we are continuing to develop and evaluate it Viktor Kuncak, Martin C. Rinard |
IPDPS | 1 |
| 2006 | Field Constraint Analysis
Thomas Wies, Viktor Kuncak, Patrick Lam 0001, Andreas Podelski, Martin C. Rinard |
VMCAI | 2 |
| 2006 | Deciding Boolean Algebra with Presburger Arithmetic
Viktor Kuncak, Huu Hai Nguyen, Martin C. Rinard |
J. Autom. Reason. | 1 |
| 2006 | Modular Pluggable Analyses for Data Structure ConsistencyabstractHob is a program analysis system that enables the focused application of multiple analyses to different modules in the same program. In our approach, each module encapsulates one or more data structures and uses membership in abstract sets to characterize how objects participate in data structures. Each analysis verifies that the implementation of the module 1) preserves important internal data structure consistency properties and 2) correctly implements a set algebra interface that characterizes the effects of operations on the data structure. Collectively, the analyses use the set algebra to 1) characterize how objects participate in multiple data structures and to 2) enable the interanalysis communication required to verify properties that depend on multiple modules analyzed by different analyses. We implemented our system and deployed several pluggable analyses, including a flag analysis plug-in for modules in which abstract set membership is determined by a flag field in each object, a PALE shape analysis plug-in, and a theorem proving plug-in for analyzing arbitrarily complicated data structures. Our experience shows that our system can effectively 1) verify the consistency of data structures encapsulated within a single module and 2) combine analysis results from different analysis plug-ins to verify properties involving objects shared by multiple modules analyzed by different analyses Viktor Kuncak, Patrick Lam 0001, Karen Zee, Martin C. Rinard |
IEEE Trans. Software Eng. | 1 |
| 2005 | An Algorithm for Deciding BAPA: Boolean Algebra with Presburger Arithmetic
Viktor Kuncak, Huu Hai Nguyen, Martin C. Rinard |
CADE | 1 |
| 2005 | Hob: A Tool for Verifying Data Structure Consistency
Patrick Lam 0001, Viktor Kuncak, Martin C. Rinard |
CC | 2 |
| 2005 | Relational analysis of algebraic datatypesabstractWe present a technique that enables the use of finite model finding to check the satisfiability of certain formulas whose intended models are infinite. Such formulas arise when using the language of sets and relations to reason about structured values such as algebraic datatypes. The key idea of our technique is to identify a natural syntactic class of formulas in relational logic for which reasoning about infinite structures can be reduced to reasoning about finite structures. As a result, when a formula belongs to this class, we can use existing finite model finding tools to check whether the formula holds in the desired infinite model. Viktor Kuncak, Daniel Jackson 0001 |
ESEC/SIGSOFT FSE | 1 |
| 2005 | Generalized Typestate Checking for Data Structure Consistency
Patrick Lam 0001, Viktor Kuncak, Martin C. Rinard |
VMCAI | 2 |
| 2004 | Verifying a File System Implementation
Konstantine Arkoudas, Karen Zee, Viktor Kuncak, Martin C. Rinard |
ICFEM | 3 |
| 2004 | Generalized Records and Spatial Conjunction in Role Logic
Viktor Kuncak, Martin C. Rinard |
SAS | 1 |
| 2004 | Boolean Algebra of Shape Analysis Constraints
Viktor Kuncak, Martin C. Rinard |
VMCAI | 1 |
| 2003 | Structural Subtyping of Non-Recursive Types is DecidableabstractWe show that the first-order theory of structural subtyping of non-recursive types is decidable, as a consequence of a more general result on the decidability of term powers of decidable theories. Let /spl Sigma/ be a language consisting of function symbol and let /spl Cscr/; (with a finite or infinite domain C) be an L-structure where L is a language consisting of relation symbols. We introduce the notion of /spl Sigma/-term-power of the structure /spl Cscr/; denoted /spl Pscr/;/sub /spl Sigma//(/spl Cscr/;). The domain of /spl Pscr/;/sub /spl Sigma//(/spl Cscr/;) is the set of /spl Sigma/-terms over the set C. /spl Pscr/;/sub /spl Sigma//(/spl Cscr/;) has one term algebra operation for each f /spl isin/ /spl Sigma/, and one relation for each r /spl isin/ L defined by lifting operations of /spl Cscr/; to terms over C. We extend quantifier for term algebras and apply the Feferman-Vaught technique for quantifier elimination in products to obtain the following result. Let K be a family of L-structures and K/sub P/ the family of their /spl Sigma/-term-powers. Then the validity of any closed formula F on K/sub P/ can be effectively reduced to the validity of some closed formula q(F) on K. Our result implies the decidability of the first-order theory of structural subtyping of non-recursive types with covariant constructors, and the construction generalizes to contravariant constructors as well. Viktor Kuncak, Martin C. Rinard |
LICS | 1 |
| 2003 | Existential Heap Abstraction Entailment Is Undecidable
Viktor Kuncak, Martin C. Rinard |
SAS | 1 |
| 2002 | Role analysisabstractWe present a new role system in which the type (or role) of each object depends on its referencing relationships with other objects, with the role changing as these relationships change. Roles capture important object and data structure properties and provide useful information about how the actions of the program interact with these properties. Our role system enables the programmer to specify the legal aliasing relationships that define the set of roles that objects may play, the roles of procedure parameters and object fields, and the role changes that procedures perform while manipulating objects. We present an interprocedural, compositional, and context-sensitive role analysis algorithm that verifies that a program maintains role constraints. Viktor Kuncak, Patrick Lam 0001, Martin C. Rinard |
POPL | 1 |