19 research outputs found
The Tactician (extended version): A Seamless, Interactive Tactic Learner and Prover for Coq
We present Tactician, a tactic learner and prover for the Coq Proof
Assistant. Tactician helps users make tactical proof decisions while they
retain control over the general proof strategy. To this end, Tactician learns
from previously written tactic scripts and gives users either suggestions about
the next tactic to be executed or altogether takes over the burden of proof
synthesis. Tactician's goal is to provide users with a seamless, interactive,
and intuitive experience together with robust and adaptive proof automation. In
this paper, we give an overview of Tactician from the user's point of view,
regarding both day-to-day usage and issues of package dependency management
while learning in the large. Finally, we give a peek into Tactician's
implementation as a Coq plugin and machine learning platform.Comment: 19 pages, 2 figures. This is an extended version of a paper published
in CICM-2020. For the project website, see https://coq-tactician.github.i
When to Move to Transfer Nets On the limits of Petri nets as models for process calculi
International audiencePierpaolo Degano has been an influential pioneer in the investigation of Petri nets as models for concurrent process calculi (see e.g. the well-known seminal work by Degano–De Nicola–Montanari also known as DDM88). In this paper, we address the limits of classical Petri nets by discussing when it is necessary to move to the so-called Transfer nets, in which transitions can also move to a target place all the tokens currently present in a source place. More precisely, we consider a simple calculus of processes that interact by generating/consuming messages into/from a shared repository. For this calculus classical Petri nets can faithfully model the process behavior. Then we present a simple extension with a primitive allowing processes to atomically rename all the data of a given kind. We show that with the addition of such primitive it is necessary to move to Transfer nets to obtain a faithful modeling
The Best of Both Worlds:Linear Functional Programming without Compromise
We present a linear functional calculus with both the safety guarantees
expressible with linear types and the rich language of combinators and
composition provided by functional programming. Unlike previous combinations of
linear typing and functional programming, we compromise neither the linear side
(for example, our linear values are first-class citizens of the language) nor
the functional side (for example, we do not require duplicate definitions of
compositions for linear and unrestricted functions). To do so, we must
generalize abstraction and application to encompass both linear and
unrestricted functions. We capture the typing of the generalized constructs
with a novel use of qualified types. Our system maintains the metatheoretic
properties of the theory of qualified types, including principal types and
decidable type inference. Finally, we give a formal basis for our claims of
expressiveness, by showing that evaluation respects linearity, and that our
language is a conservative extension of existing functional calculi.Comment: Extended versio
Polymorphic Typestate for Session Types
Session types provide a principled approach to typed communication protocols
that guarantee type safety and protocol fidelity. Formalizations of
session-typed communication are typically based on process calculi, concurrent
lambda calculi, or linear logic. An alternative model based on
context-sensitive typing and typestate has not received much attention due to
its apparent restrictions. However, this model is attractive because it does
not force programmers into particular patterns like continuation-passing style
or channel-passing style, but rather enables them to treat communication
channels like mutable variables. Polymorphic typestate is the key that enables
a full treatment of session-typed communication. Previous work in this
direction was hampered by its setting in a simply-typed lambda calculus. We
show that higher-order polymorphism and existential types enable us to lift the
restrictions imposed by the previous work, thus bringing the expressivity of
the typestate-based approach on par with the competition. On this basis, we
define PolyVGR, the system of polymorphic typestate for session types,
establish its basic metatheory, type preservation and progress, and present a
prototype implementation.Comment: 29 pages. Short version appears in PPDP 202
Defunctionalization with Dependent Types
The defunctionalization translation that eliminates higher-order functions
from programs forms a key part of many compilers. However, defunctionalization
for dependently-typed languages has not been formally studied. We present the
first formally-specified defunctionalization translation for a
dependently-typed language and establish key metatheoretical properties such as
soundness and type preservation. The translation is suitable for incorporation
into type-preserving compilers for dependently-typed language