5,582 research outputs found
Productive Corecursion in Logic Programming
Logic Programming is a Turing complete language. As a consequence, designing
algorithms that decide termination and non-termination of programs or decide
inductive/coinductive soundness of formulae is a challenging task. For example,
the existing state-of-the-art algorithms can only semi-decide coinductive
soundness of queries in logic programming for regular formulae. Another, less
famous, but equally fundamental and important undecidable property is
productivity. If a derivation is infinite and coinductively sound, we may ask
whether the computed answer it determines actually computes an infinite
formula. If it does, the infinite computation is productive. This intuition was
first expressed under the name of computations at infinity in the 80s. In
modern days of the Internet and stream processing, its importance lies in
connection to infinite data structure processing.
Recently, an algorithm was presented that semi-decides a weaker property --
of productivity of logic programs. A logic program is productive if it can give
rise to productive derivations. In this paper we strengthen these recent
results. We propose a method that semi-decides productivity of individual
derivations for regular formulae. Thus we at last give an algorithmic
counterpart to the notion of productivity of derivations in logic programming.
This is the first algorithmic solution to the problem since it was raised more
than 30 years ago. We also present an implementation of this algorithm.Comment: Paper presented at the 33nd International Conference on Logic
Programming (ICLP 2017), Melbourne, Australia, August 28 to September 1, 2017
16 pages, LaTeX, no figure
Global semantic typing for inductive and coinductive computing
Inductive and coinductive types are commonly construed as ontological
(Church-style) types, denoting canonical data-sets such as natural numbers,
lists, and streams. For various purposes, notably the study of programs in the
context of global semantics, it is preferable to think of types as semantical
properties (Curry-style). Intrinsic theories were introduced in the late 1990s
to provide a purely logical framework for reasoning about programs and their
semantic types. We extend them here to data given by any combination of
inductive and coinductive definitions. This approach is of interest because it
fits tightly with syntactic, semantic, and proof theoretic fundamentals of
formal logic, with potential applications in implicit computational complexity
as well as extraction of programs from proofs. We prove a Canonicity Theorem,
showing that the global definition of program typing, via the usual (Tarskian)
semantics of first-order logic, agrees with their operational semantics in the
intended model. Finally, we show that every intrinsic theory is interpretable
in a conservative extension of first-order arithmetic. This means that
quantification over infinite data objects does not lead, on its own, to
proof-theoretic strength beyond that of Peano Arithmetic. Intrinsic theories
are perfectly amenable to formulas-as-types Curry-Howard morphisms, and were
used to characterize major computational complexity classes Their extensions
described here have similar potential which has already been applied
Lewis meets Brouwer: constructive strict implication
C. I. Lewis invented modern modal logic as a theory of "strict implication".
Over the classical propositional calculus one can as well work with the unary
box connective. Intuitionistically, however, the strict implication has greater
expressive power than the box and allows to make distinctions invisible in the
ordinary syntax. In particular, the logic determined by the most popular
semantics of intuitionistic K becomes a proper extension of the minimal normal
logic of the binary connective. Even an extension of this minimal logic with
the "strength" axiom, classically near-trivial, preserves the distinction
between the binary and the unary setting. In fact, this distinction and the
strong constructive strict implication itself has been also discovered by the
functional programming community in their study of "arrows" as contrasted with
"idioms". Our particular focus is on arithmetical interpretations of the
intuitionistic strict implication in terms of preservativity in extensions of
Heyting's Arithmetic.Comment: Our invited contribution to the collection "L.E.J. Brouwer, 50 years
later
Probabilistic Programming Concepts
A multitude of different probabilistic programming languages exists today,
all extending a traditional programming language with primitives to support
modeling of complex, structured probability distributions. Each of these
languages employs its own probabilistic primitives, and comes with a particular
syntax, semantics and inference procedure. This makes it hard to understand the
underlying programming concepts and appreciate the differences between the
different languages. To obtain a better understanding of probabilistic
programming, we identify a number of core programming concepts underlying the
primitives used by various probabilistic languages, discuss the execution
mechanisms that they require and use these to position state-of-the-art
probabilistic languages and their implementation. While doing so, we focus on
probabilistic extensions of logic programming languages such as Prolog, which
have been developed since more than 20 years
- …