EDBT 2026 Demo / reviewers in the wild / expert
Brigitte Pientka
dblp:p/BrigittePientka
· DBLP profile ↗
58ranked-venue papers
18as first author
18since 2021 · last 2025
0000-0002-2549-4276ORCID · verified
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 34 · 9 first-author · 13 since 2021Theory of computation · 30 · 14 first-author · 5 since 2021Artificial intelligence and machine learning · 8 · 4 first-author · 1 since 2021Human-computer interaction and ubiquitous computing · 2 · 2 since 2021
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2025 | Split Decisions: Explicit Contexts for Substructural LanguagesabstractA central challenge in mechanizing the meta-theory of substructural languages is modeling contexts. Although various ad hoc approaches to this problem exist, we lack a set of good practices and a simple infrastructure that can be leveraged for mechanizing a wide range of substructural systems. In this work, we describe Contexts as Resource Vectors (CARVe), a general syntactic infrastructure for managing substructural contexts, where elements are annotated with tags from a resource algebra denoting their availability. Assumptions persist as contexts are manipulated since we model resource consumption by changing their tags. We may thus define relations between substructural contexts via simultaneous substitutions without the need to split them. Moreover, we establish a series of algebraic properties about context operations that are typically required to carry out proofs in practice. CARVe is implemented in the proof assistant Beluga. To illustrate best practices for using our infrastructure, we give a detailed reformulation of the linear sequent calculus and bidirectional linear λ-calculus in terms of CARVe’s context operations and prove their equivalence using the aforementioned algebraic properties. In addition, we apply CARVe to mechanize a diverse set of systems, from the affine λ-calculus to the session-typed process calculus CP, giving us confidence that CARVe is sufficiently general to mechanize a broad range of substructural systems. Daniel Zackon, Chuta Sano, Alberto Momigliano, Brigitte Pientka |
CPP | 4 |
| 2025 | A Type-Theoretic Framework for Certified Meta-programming (Invited Talk Extended Abstract)abstractMeta-programming is the art of writing programs that produce or manipulate other programs. This allows programmers to automate error-prone or repetitive tasks, and exploit domain-specific knowledge to customize the generated code. Unfortunately, writing safe meta-programs remains very challenging, since errors in the generated code are usually only detected when running it, but not at the time when code is generated. How can we design a flexible and expressive meta-programming framework where we provide a range of safety guarantees about the code that is being generated and the code generator itself? We revisit Cocon, a type-theoretic framework for certified meta-programming. Cocon is a two-level type theory: at its base is the logical framework LF where we can represent domain-specific languages (DSL) ranging from simply-typed to polymorphic languages; on top sits a Martin-Loef type theory where we can write recursive programs and proofs about those DSLs using pattern matching. In particular, when the DSL is contained in Martin-Loef type theory we can use reflection and leverage MLTT's evaluation to execute programs written in a given DSL.Hence, we can derive type-safe meta-programming systems for a range of DSLs. Brigitte Pientka |
PEPM | 1 |
| 2025 | McTT: A Verified Kernel for a Proof AssistantabstractProof assistants based on type theories have been widely successful from verifying safety-critical software to establishing a new standard of rigour by formalizing mathematics. But these proof assistants and even their type-checking kernels are also complex pieces of software, and software invariably has bugs, so why should we trust such proof assistants? In this paper, we describe the McTT (Mechanized Type Theory) infrastructure to build a verified implementation of a kernel for a core Martin-Löf type theory (MLTT). McTT is implementation in Rocq and consists of two main components: In the theoretical component, we specify the type theory and prove theorems such as normalization, consistency and injectivity of type constructors of MLTT using an untyped domain model. In the algorithmic component, we relate the declarative specification of typing and the model of normalization in the theoretical component with a functional implementation within Rocq . From this algorithmic component, we extract an OCaml implementation and couple it with a front-end parser for execution. This extracted OCaml code is comparable to what a skilled human programmer would have written and we have successfully used it to type-check a series of small-scale examples. McTT provides a fully verified kernel for a core MLTT with a full cumulative universe hierarchy. Every step in the compilation pipeline is verified except for the lexer and pretty-printer. As a result, McTT serves both as a framework to explore the meta-theory of advanced type theories and to investigate optimizations of and extensions to the type-checking kernel. Junyoung Jang 0001, Antoine Gaulin, Jason Z. S. Hu, Brigitte Pientka |
Proc. ACM Program. Lang. | 4 |
| 2025 | A Dependent Type Theory for Meta-programming with Intensional AnalysisabstractIn this paper, we introduce DeLaM , a dependent layered modal type theory which enables meta-programming in Martin-Löf type theory (MLTT) with recursion principles on open code. DeLaM includes three layers: the layer of static syntax objects of MLTT without any computation, the layer of pure MLTT with the computational behaviors, and the meta-programming layer, which extends MLTT with support for quoting an open MLTT code object, composing, and analyzing open code using recursion. We can also execute a code object at the meta-programming layer. The expressive power strictly increases as we move up in a given layer. In particular, while code objects only describe static syntax, we allow computation at the MLTT and meta-programming layer. As a result, DeLaM provides a dependently typed foundation for meta-programming that supports both type-safe code generation and code analysis. We prove the weak normalization of DeLaM and the decidability of convertibility using Kripke logical relations. Jason Z. S. Hu, Brigitte Pientka |
Proc. ACM Program. Lang. | 2 |
| 2025 | Fusing Session-Typed Concurrent Programming into Functional ProgrammingabstractWe introduce FuSes , a Fu nctional programming language that integrates Ses sion-typed concurrent process calculus code. A functional layer sits on top of a session-typed process layer. To generate and reason about open session-typed processes, the functional layer uses the contextual box modality extended with linear channel contexts. Due to the fundamental differences between the operational semantics of the functional layer and the concurrent semantics of processes, we bridge the two layers using a set of primitives to run and observe the behavior of closed processes within the functional layer. In addition, FuSes supports code analysis and manipulation of open session-typed process code. To showcase its benefit to programmers, we implement well-known optimizations, such as batch optimizations, as type-safe metaprograms over concurrent processes. Our technical contributions include a type system for FuSes , an operational semantics, a proof of its type safety, and an implementation. Chuta Sano, Deepak Garg 0001, Ryan Kavanagh, Brigitte Pientka, Bernardo Toninho |
Proc. ACM Program. Lang. | 4 |
| 2024 | Layered Modal Type Theory - Where Meta-programming Meets Intensional AnalysisabstractAbstract We introduce layering to modal type theory to combine type theory with intensional analysis. In particular, we demonstrate this idea by developing a 2-layered modal type theory. At the core of this type theory (layer 0) is a simply typed $$\lambda $$ λ -calculus with no modality. Layer 1 is obtained by extending the core language with one layer of contextual $$\square $$ □ types to support pattern matching on potentially open code from layer 0 while retaining normalization. Although both layers fundamentally share the same language and the same typing judgment, we only allow computation at layer 1. As a consequence, layer 0 accurately captures the syntactic representation of code in contrast to the computational behaviors at layer 1. The system is justified by normalization by evaluation (NbE) using a presheaf model. The normalization algorithm extracted from the model is sound and complete and is implemented in Agda. Layered modal type theory provides a uniform foundation for meta-programming with intensional analysis. We see this work as an important step towards a foundational way to support meta-programming in proof assistants. Jason Z. S. Hu, Brigitte Pientka |
ESOP (1) | 2 |
| 2024 | Modernizing SMT-Based Type Error Localization
Max Kopinsky, Brigitte Pientka, Xujie Si |
FMCAD | 2 |
| 2024 | Adjoint Natural DeductionabstractAdjoint logic is a general approach to combining multiple logics with different structural properties, including linear, affine, strict, and (ordinary) intuitionistic logics, where each proposition has an intrinsic mode of truth. It has been defined in the form of a sequent calculus because the central concept of independence is most clearly understood in this form, and because it permits a proof of cut elimination following standard techniques. In this paper we present a natural deduction formulation of adjoint logic and show how it is related to the sequent calculus. As a consequence, every provable proposition has a verification (sometimes called a long normal form). We also give a computational interpretation of adjoint logic in the form of a functional language and prove properties of computations that derive from the structure of modes, including freedom from garbage (for modes without weakening and contraction), strictness (for modes disallowing weakening), and erasure (based on a preorder between modes). Finally, we present a surprisingly subtle algorithm for type checking. Junyoung Jang 0001, Sophia Roshal, Frank Pfenning, Brigitte Pientka |
FSCD | 4 |
| 2024 | Message-Observing SessionsabstractWe present Most, a process language with message-observing session types. Message-observing session types extend binary session types with type-level computation to specify communication protocols that vary based on messages observed on other channels. Hence, Most allows us to express global invariants about processes, rather than just local invariants, in a bottom-up, compositional way. We give Most a semantic foundation using traces with binding, a semantic approach for compositionally reasoning about traces in the presence of name generation. We use this semantics to prove type soundness and compositionality for Most processes. We see this as a significant step towards capturing message-dependencies and providing more precise guarantees about processes. Ryan Kavanagh, Brigitte Pientka |
Proc. ACM Program. Lang. | 2 |
| 2024 | A Layered Approach to Intensional Analysis in Type TheoryabstractWe introduce layering to modal type theory to support meta-programming and intensional analysis coherently. In particular, we demonstrate this idea by developing a 2-layered modal type theory. At the core of this type theory (layer 0) is a simply typed λ -calculus with no modality. Layer 1 is obtained by extending the core language with one layer of contextual ◻ types to support pattern matching on potentially open code from layer 0 while retaining normalization. Although both layers fundamentally share a uniform syntax and the same typing judgment, we only allow computation at layer 1. As a consequence, layer 0 accurately captures the syntactic representation of code in contrast to the computational behaviors at layer 1. Moreover, the uniform syntax at both layers enables quotation and code running. The system is justified by normalization by evaluation (NbE) using a presheaf model. The normalization algorithm extracted from the model is sound and complete and is implemented in Agda. Layered modal type theory provides a uniform foundation for meta-programming with intensional analysis. We see this work as an important step towards a foundational way to support meta-programming in proof assistants. Jason Z. S. Hu, Brigitte Pientka |
ACM Trans. Program. Lang. Syst. | 2 |
| 2023 | Identifying Different Student Clusters in Functional Programming Assignments: From Quick Learners to Struggling StudentsabstractInstructors and students alike are often focused on the grade in programming assignments as a key measure of how well a student is mastering the material and whether a student is struggling. This can be, however, misleading. Especially when students have access to auto-graders, their grades may be heavily skewed. Chuqin Geng, Brigitte Pientka, Xujie Si |
SIGCSE (1) | 4 |
| 2023 | Normalization by evaluation for modal dependent type theoryabstractAbstract We present the Kripke-style modal type theory, Mint , which combines dependent types and the necessity modality. It extends the Kripke-style modal lambda-calculus by Pfenning and Davies to the full Martin-Löf type theory. As such it encompasses dependently typed variants of system K , T , K 4, and S 4. Further, Mint seamlessly supports a full universe hierarchy, usual inductive types, and large eliminations. In this paper, we give a modular sound and complete normalization-by-evaluation (NbE) proof for Mint based on an untyped domain model, which applies to all four aforementioned modal systems without modification. This NbE proof yields a normalization algorithm for Mint, which can be directly implemented. To further strengthen our results, our models and the NbE proof are fully mechanized in Agda and we extract a Haskell implementation of our NbE algorithm from it. Jason Z. S. Hu, Junyoung Jang 0001, Brigitte Pientka |
J. Funct. Program. | 3 |
| 2023 | Mechanizing Session-Types using a Structural View: Enforcing Linearity without LinearityabstractSession types employ a linear type system that ensures that communication channels cannot be implicitly copied or discarded. As a result, many mechanizations of these systems require modeling channel contexts and carefully ensuring that they treat channels linearly. We demonstrate a technique that localizes linearity conditions as additional predicates embedded within type judgments, which allows us to use structural typing contexts instead of linear ones. This technique is especially relevant when leveraging (weak) higher-order abstract syntax to handle channel mobility and the intricate binding structures that arise in session-typed systems. Following this approach, we mechanize a session-typed system based on classical linear logic and its type preservation proof in the proof assistant Beluga, which uses the logical framework LF as its encoding language. We also prove adequacy for our encoding. This shows the tractability and effectiveness of our approach in modelling substructural systems such as session-typed languages. Chuta Sano, Ryan Kavanagh, Brigitte Pientka |
Proc. ACM Program. Lang. | 3 |
| 2022 | Novice Type Error Diagnosis with Natural Language Models
Chuqin Geng, Haolin Ye, Brigitte Pientka, Xujie Si |
APLAS | 5 |
| 2022 | Mœbius: metaprogramming using contextual types: the stage where system f can pattern match on itselfabstractWe describe the foundation of the metaprogramming language, Mœbius, which supports the generation of polymorphic code and, more importantly, the analysis of polymorphic code via pattern matching. Mœbius has two main ingredients: 1) we exploit contextual modal types to describe open code together with the context in which it is meaningful. In Mœbius, open code can depend on type and term variables (level 0) whose values are supplied at a later stage, as well as code variables (level 1) that stand for code templates supplied at a later stage. This leads to a multi-level modal lambda-calculus that supports System-F style polymorphism and forms the basis for polymorphic code generation. 2) we extend the multi-level modal lambda-calculus to support pattern matching on code. As pattern matching on polymorphic code may refine polymorphic type variables, we extend our type-theoretic foundation to generate and track typing constraints that arise. We also give an operational semantics and prove type preservation. Our multi-level modal foundation for Mœbius provides the appropriate abstractions for both generating and pattern matching on open code without committing to a concrete representation of variable binding and contexts. Hence, our work is a step towards building a general type-theoretic foundation for multi-staged metaprogramming that, on the one hand, enforces strong type guarantees and, on the other hand, makes it easy to generate and manipulate code. This will allow us to exploit the full potential of metaprogramming without sacrificing the reliability of and trust in the code we are producing and running. Junyoung Jang 0001, Samuel Gélineau, Stefan Monnier, Brigitte Pientka |
Proc. ACM Program. Lang. | 4 |
| 2022 | A Category Theoretic View of Contextual Types: From Simple Types to Dependent TypesabstractWe describe the categorical semantics for a simply typed variant and a simplified dependently typed variant of Cocon , a contextual modal type theory where the box modality mediates between the weak function space that is used to represent higher-order abstract syntax (HOAS) trees and the strong function space that describes (recursive) computations about them. What makes Cocon different from standard type theories is the presence of first-class contexts and contextual objects to describe syntax trees that are closed with respect to a given context of assumptions. Following M. Hofmann’s work, we use a presheaf model to characterise HOAS trees. Surprisingly, this model already provides the necessary structure to also model Cocon . In particular, we can capture the contextual objects of Cocon using a comonad ♭ that restricts presheaves to their closed elements. This gives a simple semantic characterisation of the invariants of contextual types (e.g. substitution invariance) and identifies Cocon as a type-theoretic syntax of presheaf models. We further extend this characterisation to dependent types using categories with families and show that we can model a fragment of Cocon without recursor in the Fitch-style dependent modal type theory presented by Birkedal et al. Jason Z. S. Hu, Brigitte Pientka, Ulrich Schöpp |
ACM Trans. Comput. Log. | 2 |
| 2021 | Harpoon: Mechanizing Metatheory Interactively - (System Description)abstractAbstract Belugais a proof checker that provides sophisticated infrastructure for implementing formal systems with the logical framework LF and proving metatheoretic properties as total, recursive functions transforming LF derivations. In this paper, we describeHarpoon, an interactive proof engine built on top ofBeluga. It allows users to develop proofs interactively using a small, fixed set of high-levelactionsthat safely transform a subgoal. A sequence of actions elaborates into a (partial)proof scriptthat serves as an intermediate representation describing an assertion-level proof. Last, a proof script translates into aBelugaprogram which can be type-checked independently.Harpoonis available on GitHub. We have usedHarpoonto replay a wide array of examples covering all features supported byBeluga. In particular, we have used it for normalization proofs, including the recently proposed POPLMark reloaded challenge. Jacob Errington, Junyoung Jang 0001, Brigitte Pientka |
CADE | 3 |
| 2021 | Data Collection for the Learn-OCaml Programming Platform: Modelling How Students Develop Typed Functional ProgramsabstractOnline programming platforms provide unique opportunities to collect and analyze a wealth of information on how students develop programs. In this work, we give an overview of the data collection infrastructure for the Learn-OCaml programming environment which allows students to write, typecheck and run OCaml code directly in their browser. We collect data for three different events: compile reads student's code and type-checks it; eval compiles and evaluates the code; grade runs the auto-grader on the student's well-typed program and provides feedback on the input-output correctness and code style. The data which we aim to gather across semesters serves as a basis for a wide variety of future studies on understanding how students develop programs in the context of typed functional programming. Alana Ceci, Hanneli C. A. Tavante, Brigitte Pientka, Xujie Si |
SIGCSE | 3 |
| 2020 | Semantical Analysis of Contextual TypesabstractAbstract We describe a category-theoretic semantics for a simply typed variant of Cocon, a contextual modal type theory where the box modality mediates between the weak function space that is used to represent higher-order abstract syntax (HOAS) trees and the strong function space that describes (recursive) computations about them. What makes Cocon different from standard type theories is the presence of first-class contexts and contextual objects to describe syntax trees that are closed with respect to a given context of assumptions. Following M. Hofmann’s work, we use a presheaf model to characterise HOAS trees. Surprisingly, this model already provides the necessary structure to also model Cocon. In particular, we can capture the contextual objects of Cocon using a comonad $$\flat $$ ♭ that restricts presheaves to their closed elements. This gives a simple semantic characterisation of the invariants of contextual types (e.g. substitution invariance) and identifies Cocon as a type-theoretic syntax of presheaf models. We express our category-theoretic constructions by using a modal internal type theory that is implemented in Agda-Flat. Brigitte Pientka, Ulrich Schöpp |
FoSSaCS | 1 |
| 2020 | A Modal Analysis of Metaprogramming, Revisited (Invited Talk)abstractMetaprogramming is the art of writing programs that produce or manipulate other programs. This opens the possibility to eliminate boilerplate code and exploit domain-specific knowledge to build high-performance programs. Unfortunately, designing language extensions to support type-safe multi-staged metaprogramming remains very challenging. In this talk, we outline a modal type-theoretic foundation for multi-staged metaprogramming which supports the generation and the analysis of polymorphic code. It has two main ingredients: first, we exploit contextual modal types to describe open code together with the context in which it is meaningful; second, we model code as a higher-order abstract syntax (HOAS) tree within a context. These two ideas provide the appropriate abstractions for both generating and pattern matching on open code without committing to a concrete representation of variable binding and contexts. Our work is a first step towards building a general type-theoretic foundation for multi-staged metaprogramming which on the one hand enforces strong type guarantees and on the other hand makes it easy to generate and manipulate code. This will allow us to exploit the full potential of metaprogramming without sacrificing reliability of and trust in the code we are producing and running. Brigitte Pientka |
FSCD | 1 |
| 2020 | Contextual Types, Explained: Invited TutorialabstractContextual objects characterize an object M together with the typing context Ψ in which it is meaningful. This idea is then also internalized within the type theory itself using the notion of a contextual type which pairs the type A of an object together with the context Ψ in which the object is well-typed. In this tutorial, we review the origins of this idea and show its power in characterizing partial programs, mechanizing meta-theory, and meta-programming. Starting from the simply typed setting, we give an overview of existing work which adopts contextual types to dependent type theories and touch on future research directions. Brigitte Pientka |
LICS | 1 |
| 2019 | A Type Theory for Defining Logics and ProofsabstractWe describe a Martin-Lof-style dependent type theory, called Cocon, that allows us to mix the intensional function space that is used to represent higher-order abstract syntax (HOAS) trees with the extensional function space that describes (recursive) computations. We mediate between HOAS representations and computations using contextual modal types. Our type theory also supports an infinite hierarchy of universes and hence supports type-level computation thereby providing metaprogramming and (small-scale) reflection. Our main contribution is the development of a Kripke-style model for Cocon that allows us to prove normalization. From the normalization proof, we derive subject reduction and consistency. Our work lays the foundation to incorporate the methodology of logical frameworks into systems such as Agda and bridges the longstanding gap between these two worlds. Brigitte Pientka, David Thibodeau 0001, Andreas Abel 0001, Francisco Ferreira 0001, Rébecca Zucchini |
LICS | 1 |
| 2019 | POPLMark reloaded: Mechanizing proofs by logical relationsabstractAbstract We propose a new collection of benchmark problems in mechanizing the metatheory of programming languages, in order to compare and push the state of the art of proof assistants. In particular, we focus on proofs using logical relations (LRs) and propose establishing strong normalization of a simply typed calculus with a proof by Kripke-style LRs as a benchmark. We give a modern view of this well-understood problem by formulating our LR on well-typed terms. Using this case study, we share some of the lessons learned tackling this problem in different dependently typed proof environments. In particular, we consider the mechanization in Beluga, a proof environment that supports higher-order abstract syntax encodings and contrast it to the development and strategies used in general-purpose proof assistants such as Coq and Agda. The goal of this paper is to engage the community in discussions on what support in proof environments is needed to truly bring mechanized metatheory to the masses and engage said community in the crafting of future benchmarks. Andreas Abel 0001, Guillaume Allais, Aliya Hameer, Brigitte Pientka, Alberto Momigliano, Steven Schäfer, Kathrin Stark |
J. Funct. Program. | 4 |
| 2019 | A case study in programming coinductive proofs: Howe's methodabstractBisimulation proofs play a central role in programming languages in establishing rich properties such as contextual equivalence. They are also challenging to mechanize, since they require a combination of inductive and coinductive reasoning on open terms. In this paper, we describe mechanizing the property that similarity in the call-by-name lambda calculus is a pre-congruence using Howe’s method in theBelugaformal reasoning system. The development relies on three key ingredients: (1) we give a higher order abstract syntax (HOAS) encoding of lambda terms together with their operational semantics as intrinsically typed terms, thereby avoiding not only the need to deal with binders, renaming and substitutions, but keeping all typing invariants implicit; (2) we take advantage ofBeluga’s support for representing open terms using built-in contexts and simultaneous substitutions: this allows us to directly state central definitions such as open simulation without resorting to the usual inductive closure operation and to encode very elegantly notoriously painful proofs such as the substitutivity of the Howe relation; (3) we exploit the possibility of reasoning by coinduction inBeluga’s reasoning logic. The end result is succinct and elegant, thanks to the high-level abstractions and primitivesBelugaprovides. We believe that this mechanization is a significant example that illustratesBeluga’s strength at mechanizing challenging (co)inductive proofs using HOAS encodings. Alberto Momigliano, Brigitte Pientka, David Thibodeau 0001 |
Math. Struct. Comput. Sci. | 2 |
| 2019 | Teaching the art of functional programming using automated grading (experience report)abstractOnline programming platforms have immense potential to improve students' educational experience. They make programming more accessible, as no installation is required; and automatic grading facilities provide students with immediate feedback on their code, allowing them to to fix bugs and address errors in their understanding right away. However, these graders tend to focus heavily on the functional correctness of a solution, neglecting other aspects of students' code and thereby causing students to miss out on a significant amount of valuable feedback. In this paper, we recount our experience in using the Learn-OCaml online programming platform to teach functional programming in a second-year university course on programming languages and paradigms. Moreover, we explore how to leverage Learn-OCaml's automated grading infrastructure to make it easy to write more expressive graders that give students feedback on properties of their code beyond simple input/output correctness, in order to effectively teach elements of functional programming style. In particular, we describe our extensions to the Learn-OCaml platform that evaluate students on test quality and code style. By providing these tools and a suite of our own homework problems and associated graders, we aim to promote functional programming education, enhance students' educational experience, and make teaching and learning typed functional programming more accessible to instructors and students alike, in our community and beyond. Aliya Hameer, Brigitte Pientka |
Proc. ACM Program. Lang. | 2 |
| 2018 | POPLMark reloaded: mechanizing logical relations proofs (invited talk)abstractMechanizing formal systems, given via axioms and inference rules, together with proofs about them plays an important role in establishing trust in formal developments. Over the past decade, the POPLMark challenge popularized the use of proof assistants in mechanizing the metatheory of programming languages. Focusing on the the meta-theory of System F with subtyping, it allowed the programming languages community to survey existing techniques to represent and reason about syntactic structures with binders and promote the use of proof assistants. Today, mechanizing proofs is a stable fixture in the daily life of programming languages researchers. Brigitte Pientka |
CPP | 1 |
| 2018 | Mechanizing proofs with logical relations - Kripke-styleabstractProofs with logical relations play a key role to establish rich properties such as normalization or contextual equivalence. They are also challenging to mechanize. In this paper, we describe two case studies using the proof environmentBeluga: First, we explain the mechanization of the weak normalization proof for the simply typed lambda-calculus; second, we outline how to mechanize the completeness proof of algorithmic equality for simply typed lambda-terms where we reason about logically equivalent terms. The development of these proofs inBelugarelies on three key ingredients: (1) we encode lambda-terms together with their typing rules, operational semantics, algorithmic and declarative equality using higher order abstract syntax (HOAS) thereby avoiding the need to manipulate and deal with binders, renaming and substitutions, (2) we take advantage ofBeluga's support for representing derivations that depend on assumptions and first-class contexts to directly state inductive properties such as logical relations and inductive proofs, (3) we exploitBeluga's rich equational theory for simultaneous substitutions; as a consequence, users do not need to establish and subsequently use substitution properties, and proofs are not cluttered with references to them. We believe these examples demonstrate thatBelugaprovides the right level of abstractions and primitives to mechanize challenging proofs using HOAS encodings. It also may serve as a valuable benchmark for other proof environments. Andrew Cave, Brigitte Pientka |
Math. Struct. Comput. Sci. | 2 |
| 2018 | Benchmarks for reasoning with syntax trees containing binders and contexts of assumptionsabstractA variety of logical frameworks supports the use of higher order abstract syntax in representing formal systems. Although these systems seem superficially the same, they differ in a variety of ways, for example, how they handle acontextof assumptions and which theorems about a given formal system can be concisely expressed and proved. Our contributions in this paper are two-fold: (1) We develop a common infrastructure and language for describing benchmarks for systems supporting reasoning with binders, and (2) we present several concrete benchmarks, which highlight a variety of different aspects of reasoning within a context of assumptions. Our work provides the background for the qualitative comparison of different systems that we have completed in a separate paper. It also allows us to outline future fundamental research questions regarding the design and implementation of meta-reasoning systems. Amy P. Felty, Alberto Momigliano, Brigitte Pientka |
Math. Struct. Comput. Sci. | 3 |
| 2017 | Programs Using Syntax with First-Class Binders
Francisco Ferreira 0001, Brigitte Pientka |
ESOP | 2 |
| 2017 | LINCX: A Linear Logical Framework with First-Class Contexts
Aïna Linn Georges, Agata Murawska, Shawn Otis, Brigitte Pientka |
ESOP | 4 |
| 2016 | Indexed codata typesabstractIndexed data types allow us to specify and verify many interesting invariants about finite data in a general purpose programming language. In this paper we investigate the dual idea: indexed codata types, which allow us to describe data-dependencies about infinite data structures. Unlike finite data which is defined by constructors, we define infinite data by observations. Dual to pattern matching on indexed data which may refine the type indices, we define copattern matching on indexed codata where type indices guard observations we can make. David Thibodeau 0001, Andrew Cave, Brigitte Pientka |
ICFP | 3 |
| 2016 | Well-founded recursion with copatterns and sized typesabstractAbstract In this paper, we study strong normalization of a core language based on System ${\mathsf{F}_\omega}$ which supports programming with finite and infinite structures. Finite data such as finite lists and trees is defined via constructors and manipulated via pattern matching, while infinite data such as streams and infinite trees is defined by observations and synthesized via copattern matching. Taking a type-based approach to strong normalization, we track size information about finite and infinite data in the type. We exploit the duality of pattern and copatterns to give a unifying semantic framework which allows us to elegantly and uniformly support both well-founded induction and coinduction by rewriting. The strong normalization proof is structured around Girard's reducibility candidates. As such, our system allows for non-determinism and does not rely on coverage. Since System ${\mathsf{F}_\omega}$ is general enough that it can be the target of compilation for the Calculus of Constructions, this work is a significant step towards representing observation-based infinite data in proof assistants such as Coq and Agda. Andreas Abel 0001, Brigitte Pientka |
J. Funct. Program. | 2 |
| 2015 | Inductive Beluga: Programming Proofs
Brigitte Pientka, Andrew Cave |
CADE | 1 |
| 2015 | The Next 700 Challenge Problems for Reasoning with Higher-Order Abstract Syntax Representations - Part 2 - A Survey
Amy P. Felty, Alberto Momigliano, Brigitte Pientka |
J. Autom. Reason. | 3 |
| 2014 | Fair reactive programmingabstractFunctional Reactive Programming (FRP) models reactive systems with events and signals, which have previously been observed to correspond to the "eventually" and "always" modalities of linear temporal logic (LTL). In this paper, we define a constructive variant of LTL with least fixed point and greatest fixed point operators in the spirit of the modal mu-calculus, and give it a proofs-as-programs interpretation as a foundational calculus for reactive programs. Previous work emphasized the propositions-as-types part of the correspondence between LTL and FRP; here we emphasize the proofs-as-programs part by employing structural proof theory. We show that the type system is expressive enough to enforce liveness properties such as the fairness of schedulers and the eventual delivery of results. We illustrate programming in this calculus using (co)iteration operators. We prove type preservation of our operational semantics, which guarantees that our programs are causal. We give also a proof of strong normalization which provides justification that our programs are productive and that they satisfy liveness properties derived from their types. Andrew Cave, Francisco Ferreira 0001, Prakash Panangaden, Brigitte Pientka |
POPL | 4 |
| 2014 | Bidirectional Elaboration of Dependently Typed ProgramsabstractDependently typed programming languages allow programmers to express a rich set of invariants and verify them statically via type checking. To make programming with dependent types practical, dependently typed systems provide a compact language for programmers where one can omit some arguments, called implicit, which can be inferred. This source language is then usually elaborated into a core language where type checking and fundamental properties such as normalization are well understood. Unfortunately, this elaboration is rarely specified and in general is ill-understood. This makes it not only difficult for programmers to understand why a given program fails to type check, but also is one of the reasons that implementing dependently typed programming systems remains a black art known only to a few. Francisco Ferreira 0001, Brigitte Pientka |
PPDP | 2 |
| 2013 | Programming Type-Safe Transformations Using Higher-Order Abstract Syntax
Olivier Savary Bélanger, Stefan Monnier, Brigitte Pientka |
CPP | 3 |
| 2013 | Wellfounded recursion with copatterns: a unified approach to termination and productivityabstractIn this paper, we study strong normalization of a core language based on System F-omega which supports programming with finite and infinite structures. Building on our prior work, finite data such as finite lists and trees are defined via constructors and manipulated via pattern matching, while infinite data such as streams and infinite trees is defined by observations and synthesized via copattern matching. In this work, we take a type-based approach to strong normalization by tracking size information about finite and infinite data in the type. This guarantees compositionality. More importantly, the duality of pattern and copatterns provide a unifying semantic concept which allows us for the first time to elegantly and uniformly support both well-founded induction and coinduction by mere rewriting. The strong normalization proof is structured around Girard's reducibility candidates. As such our system allows for non-determinism and does not rely on coverage. Since System F-omega is general enough that it can be the target of compilation for the Calculus of Constructions, this work is a significant step towards representing observation-centric infinite data in proof assistants such as Coq and Agda. Andreas Abel 0001, Brigitte Pientka |
ICFP | 2 |
| 2013 | Copatterns: programming infinite structures by observationsabstractInductive datatypes provide mechanisms to define finite data such as finite lists and trees via constructors and allow programmers to analyze and manipulate finite data via pattern matching. In this paper, we develop a dual approach for working with infinite data structures such as streams. Infinite data inhabits coinductive datatypes which denote greatest fixpoints. Unlike finite data which is defined by constructors we define infinite data by observations. Dual to pattern matching, a tool for analyzing finite data, we develop the concept of copattern matching, which allows us to synthesize infinite data. This leads to a symmetric language design where pattern matching on finite and infinite data can be mixed. Andreas Abel 0001, Brigitte Pientka, David Thibodeau 0001, Anton Setzer |
POPL | 2 |
| 2013 | An insider's look at LF type reconstruction: everything you (n)ever wanted to knowabstractAbstract Although type reconstruction for dependently typed languages is common in practical systems, it is still ill-understood. Detailed descriptions of the issues around it are hard to find and formal descriptions together with correctness proofs are non-existing. In this paper, we discuss a one-pass type reconstruction for objects in the logical framework LF, describe formally the type reconstruction process using the framework of contextual modal types, and prove correctness of type reconstruction. Since type reconstruction will find most general types and may leave free variables, we in addition describe abstraction which will return a closed object where all free variables are bound at the outside. We also implemented our algorithms as part of the Beluga language, and the performance of our type reconstruction algorithm is comparable to type reconstruction in existing systems such as the logical framework Twelf. Brigitte Pientka |
J. Funct. Program. | 1 |
| 2012 | Programming with binders and indexed data-typesabstractWe show how to combine a general purpose type system for an existing language with support for programming with binders and contexts by refining the type system of ML with a restricted form of dependent types where index objects are drawn from contextual LF. This allows the user to specify formal systems within the logical framework LF and index ML types with contextual LF objects. Our language design keeps the index language generic only requiring decidability of equality of the index language providing a modular design. To illustrate the elegance and effectiveness of our language, we give programs for closure conversion and normalization by evaluation. Andrew Cave, Brigitte Pientka |
POPL | 2 |
| 2011 | Intuitionistic Modal Logic and Applications (IMLA 2008)
Valeria de Paiva, Brigitte Pientka |
Inf. Comput. | 2 |
| 2011 | Preface: Special Issue of Selected Extended Papers of CADE-22
Renate A. Schmidt, Brigitte Pientka |
J. Autom. Reason. | 2 |
| 2010 | Reasoning with Higher-Order Abstract Syntax and Contexts: A Comparison
Amy P. Felty, Brigitte Pientka |
ITP | 2 |
| 2009 | Higher-order term indexing using substitution treesabstractWe present a higher-order term indexing strategy based on substitution trees for simply typed lambda-terms. There are mainly two problems in adapting first-order indexing techniques. First, many operations used in building an efficient term index and retrieving a set of candidate terms from a large collection are undecidable in general for higher-order terms. Second, the scoping of variables and binders in the higher-order case presents challenges. The approach taken in this article is to reduce the problem to indexing linear higher-order patterns, a decidable fragment of higher-order terms, and delay solving terms outside of this fragment. We present insertion of terms into the index based on computing the most specific linear generalization of two linear higher-order patterns, and retrieval based on matching two linear higher-order patterns. Our theoretical framework maintains that terms are in βη-normal form, thereby eliminating the need to renormalize and raise terms during insertion and retrieval. Finally, we prove correctness of our presented algorithms. This indexing structure is implemented as part of the Twelf system to speed up the execution of the tabled higher-logic programming interpreter. Brigitte Pientka |
ACM Trans. Comput. Log. | 1 |
| 2008 | A type-theoretic foundation for programming with higher-order abstract syntax and first-class substitutionsabstractHigher-order abstract syntax (HOAS) is a simple, powerful technique for implementing object languages, since it directly supports common and tricky routines dealing with variables, such as capture-avoiding substitution and renaming. This is achieved by representing binders in the object-language via binders in the meta-language. However, enriching functional programming languages with direct support for HOAS has been a major challenge, because recursion over HOAS encodings requires one to traverse lambda-abstractions and necessitates programming with open objects. Brigitte Pientka |
POPL | 1 |
| 2008 | Programming with proofs and explicit contextsabstractThis paper explores a new point in the design space of functional programming: functional programming with dependently-typed higher-order data structures described in the logical framework LF. This allows us to program with proofs as higher-order data. We present a decidable bidirectional type system that distinguishes between dependently-typed data and computations. To support reasoning about open data, our foundation makes contexts explicit. This provides us with a concise characterization of open data, which is crucial to elegantly describe proofs. In addition, we present an operational semantics for this language based on higherorder pattern matching for dependently typed objects. Based on this development, we prove progress and preservation Brigitte Pientka, Jana Dunfield |
PPDP | 1 |
| 2008 | Contextual modal type theoryabstractThe intuitionistic modal logic of necessity is based on the judgmental notion of categorical truth. In this article we investigate the consequences of relativizing these concepts to explicitly specified contexts. We obtain contextual modal logic and its type-theoretic analogue. Contextual modal type theory provides an elegant, uniform foundation for understanding metavariables and explicit substitutions. We sketch some applications in functional programming and logical frameworks. Aleksandar Nanevski, Frank Pfenning, Brigitte Pientka |
ACM Trans. Comput. Log. | 3 |
| 2007 | Bidirectional Decision Procedures for the Intuitionistic Propositional Modal Logic IS4
Samuli Heilala, Brigitte Pientka |
CADE | 2 |
| 2006 | Overcoming Performance Barriers: Efficient Verification Techniques for Logical Frameworks
Brigitte Pientka |
ICLP | 1 |
| 2005 | Tabling for Higher-Order Logic Programming
Brigitte Pientka |
CADE | 1 |
| 2005 | Small Proof Witnesses for LF
Susmit Sarkar, Brigitte Pientka, Karl Crary |
ICLP | 2 |
| 2005 | Verifying Termination and Reduction Properties about Higher-Order Logic Programs
Brigitte Pientka |
J. Autom. Reason. | 1 |
| 2003 | Optimizing Higher-Order Pattern Unification
Brigitte Pientka, Frank Pfenning |
CADE | 1 |
| 2003 | Higher-Order Substitution Tree Indexing
Brigitte Pientka |
ICLP | 1 |
| 2002 | A Proof-Theoretic Foundation for Tabled Higher-Order Logic Programming
Brigitte Pientka |
ICLP | 1 |
| 2000 | Matrix-Based Inductive Theorem Proving
Christoph Kreitz, Brigitte Pientka |
TABLEAUX | 2 |
| 1999 | Automating Inductive Specification ProofsabstractWe present an automatic method which combines logical proof search and rippling heuristics to prove specifications. The key idea is to instantiate meta-variables in the proof with a simultaneous match based on rippling/reverse rippling heuristic. Und Brigitte Pientka, Christoph Kreitz |
Fundam. Informaticae | 1 |