Related papers: Six Ways to Implement Divisibility by Three in min…
We propose semiringKanren, a relational programming language where each relation expression denotes a semiring array. We formalize a type system that restricts the arrays to finite size. We then define a semantics that is parameterized by…
We study conjunctive partial deduction, an advanced specialization technique aimed at improving the performance of logic programs, in the context of relational programming language miniKanren. We identify a number of issues, caused by…
This paper presents examples of using integrity constraints in stableKanren to encode numeric computations for problem solving. Then, we use one of the examples to introduce multiple ways to infuse heuristic knowledge and reduce solving…
We present a study of unification for rational trees in the context of miniKanren. We give the definition of rational trees, specify the unification algorithm and prove some of its properties. We also introduce a number of heuristic…
We present {Kanren} (read: set-Kanren), an extension to miniKanren with constraints for reasoning about sets and association lists. {Kanren} includes first-class set objects, a functionally complete family of set-theoretic constraints…
Concurrent logic programming predates miniKanren, but concurrent implementations of miniKanren have remained largely unexplored. In this work we present a parallel implementation of miniKanren in Go, demonstrating its feasibility and…
We improve the backward compatibility of stableKanren to run miniKanren programs. stableKanren is a miniKanren extension capable of non-monotonic reasoning through stable model semantics. However, standard miniKanren programs that produce…
Relational programming enables program synthesis through a verifier-to-solver approach. An earlier paper introduced a functional conversion that mitigated some of the inherent performance overhead. However, the conversion was inelegant: it…
miniKanren's key semantic advance over Prolog is to implement a complete yet efficient search strategy, fairly interleaving execution between disjuncts. This fairness is accomplished by bounding how much work is done exploring one disjunct…
We present dxo, a relational system for algebra and differentiation, written in miniKanren. dxo operates over math expressions, represented as s-expressions. dxo supports addition, multiplication, exponentiation, variables (represented as…
This paper addresses the problem of decomposing a numerical semigroup into m-irreducible numerical semigroups. The problem originally stated in algebraic terms is translated, introducing the so called Kunz-coordinates, to resolve a series…
Synthesizing programs using example input/outputs is a classic problem in artificial intelligence. We present a method for solving Programming By Example (PBE) problems by using a neural model to guide the search of a constraint logic…
We study $\nu_k(n)$, the number of partitions of $n$ into $k$ part sizes, and find numerous arithmetic progressions where $\nu_2$ and $\nu_3$ take on values divisible by 2 and 4. Expanding earlier work, we show $\nu_2(An+B) \equiv 0…
We present a miniKanren-based type inferencer for an educational programming language with first-class functions, S-expressions, and pattern-matching. The language itself is untyped which adds a certain specificity to the problem and…
Let ${{\overline{p}}_{3}}(n)$ be the number of overpartition triples of $n$. By elementary series manipulations, we establish some congruences for ${\overline{p}}_{3}(n)$ modulo small powers of 2, such as…
In this paper we analyze the irreducibility of numerical semigroups with multiplicity up to four. Our approach uses the notion of Kunz-coordinates vector of a numerical semigroup recently introduced in (Blanco-Puerto, 2011). With this tool…
In this paper, we consider the problem of how to fairly dividing $m$ indivisible chores among $n$ agents. The fairness measure we considered here is the maximin share. The previous best known result is that there always exists a…
We present an implementation of the relational programming language miniKanren as a set of combinators and syntax extensions for OCaml. The key feature of our approach is polymorphic unification, which can be used to unify data structures…
Splitting methods for the numerical integration of differential equations of order greater than two involve necessarily negative coefficients. This order barrier can be overcome by considering complex coefficients with positive real part.…
New families of fourth-order composition methods for the numerical integration of initial value problems defined by ordinary differential equations are proposed. They are designed when the problem can be separated into three parts in such a…