1,213 research outputs found
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
Variations on Noetherianness
In constructive mathematics, several nonequivalent notions of finiteness
exist. In this paper, we continue the study of Noetherian sets in the
dependently typed setting of the Agda programming language. We want to say that
a set is Noetherian, if, when we are shown elements from it one after another,
we will sooner or later have seen some element twice. This idea can be made
precise in a number of ways. We explore the properties and connections of some
of the possible encodings. In particular, we show that certain implementations
imply decidable equality while others do not, and we construct counterexamples
in the latter case. Additionally, we explore the relation between
Noetherianness and other notions of finiteness.Comment: In Proceedings MSFP 2016, arXiv:1604.0038
In Search of Effectful Dependent Types
Real world programming languages crucially depend on the availability of
computational effects to achieve programming convenience and expressive power
as well as program efficiency. Logical frameworks rely on predicates, or
dependent types, to express detailed logical properties about entities.
According to the Curry-Howard correspondence, programming languages and logical
frameworks should be very closely related. However, a language that has both
good support for real programming and serious proving is still missing from the
programming languages zoo. We believe this is due to a fundamental lack of
understanding of how dependent types should interact with computational
effects. In this thesis, we make a contribution towards such an understanding,
with a focus on semantic methods.Comment: PhD thesis, Version submitted to Exam School
- …