870 research outputs found
Learning Structure-Aware Representations of Dependent Types
Agda is a dependently-typed programming language and a proof assistant,
pivotal in proof formalization and programming language theory. This paper
extends the Agda ecosystem into machine learning territory, and, vice versa,
makes Agda-related resources available to machine learning practitioners. We
introduce and release a novel dataset of Agda program-proofs that is elaborate
and extensive enough to support various machine learning applications -- the
first of its kind. Leveraging the dataset's ultra-high resolution, detailing
proof states at the sub-type level, we propose a novel neural architecture
targeted at faithfully representing dependently-typed programs on the basis of
structural rather than nominal principles. We instantiate and evaluate our
architecture in a premise selection setup, where it achieves strong initial
results.Comment: 15 pages, submitted to ICML202
Sequent Calculus and Equational Programming
Proof assistants and programming languages based on type theories usually
come in two flavours: one is based on the standard natural deduction
presentation of type theory and involves eliminators, while the other provides
a syntax in equational style. We show here that the equational approach
corresponds to the use of a focused presentation of a type theory expressed as
a sequent calculus. A typed functional language is presented, based on a
sequent calculus, that we relate to the syntax and internal language of Agda.
In particular, we discuss the use of patterns and case splittings, as well as
rules implementing inductive reasoning and dependent products and sums.Comment: In Proceedings LFMTP 2015, arXiv:1507.0759
Initial Algebra Semantics for Cyclic Sharing Tree Structures
Terms are a concise representation of tree structures. Since they can be
naturally defined by an inductive type, they offer data structures in
functional programming and mechanised reasoning with useful principles such as
structural induction and structural recursion. However, for graphs or
"tree-like" structures - trees involving cycles and sharing - it remains
unclear what kind of inductive structures exists and how we can faithfully
assign a term representation of them. In this paper we propose a simple term
syntax for cyclic sharing structures that admits structural induction and
recursion principles. We show that the obtained syntax is directly usable in
the functional language Haskell and the proof assistant Agda, as well as
ordinary data structures such as lists and trees. To achieve this goal, we use
a categorical approach to initial algebra semantics in a presheaf category.
That approach follows the line of Fiore, Plotkin and Turi's models of abstract
syntax with variable binding
Proofs for free - parametricity for dependent types
Reynolds' abstraction theorem shows how a typing judgement in System F can be translated into a relational statement (in second order predicate logic) about inhabitants of the type. We obtain a similar result for pure type systems: for any PTS used as a programming language, there is a PTS that can be used as a logic for parametricity. Types in the source PTS are translated to relations (expressed as types) in the target. Similarly, values of a given type are translated to proofs that the values satisfy the relational interpretation. We extend the result to inductive families. We also show that the assumption that every term satisfies the parametricity condition generated by its type is consistent with the generated logic
Dependently-Typed Formalisation of Typed Term Graphs
We employ the dependently-typed programming language Agda2 to explore
formalisation of untyped and typed term graphs directly as set-based graph
structures, via the gs-monoidal categories of Corradini and Gadducci, and as
nested let-expressions using Pouillard and Pottier's NotSoFresh library of
variable-binding abstractions.Comment: In Proceedings TERMGRAPH 2011, arXiv:1102.226
- …