SearcharxivSearch

arXiv subjects

Dmitri Volkov

Publications and source records attributed to Dmitri Volkov.

4 recordsLinked to original sources

All for one and none forall: Compiling polymorphic relations without monomorphization

We present a new approach for implementing polymorphism for bottom-up relational languages that avoids monomorphization. We begin by introducing semiringKanren, a bottom-up weighted relational programming language. We extend this base language to support polymorphism. We describe a new method to compile polymorphic semiringKanren programs into non-polymorphic ones, based on equality patterns and large-enough instances of polymorphic relations. We explain the correctness of this method. Finally, we consider existing work and suggest directions for future research.

cs.PL

Polymorphic Bottom-Up Weighted Relational Programming

This work presents a new approach for implementing polymorphism for bottom-up relational languages, without monomorphization. We begin by introducing semiringKanren, a bottom-up weighted relational programming language. We extend this base language to support polymorphism. We describe a new method to compile polymorphic semiringKanren programs into non-polymorphic ones, based on equality patterns and large-enough instances of polymorphic relations. We prove the correctness of this method. Finally, we consider existing work and suggest directions for future research.

cs.PL

Committing to the bit: Relational programming with semiring arrays and SAT solving

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 the semiring that the arrays draw their elements from. We compile semiringKanren types to bitstring representations. For the Boolean semiring, this compilation enables us to use an SAT solver to run semiringKanren programs efficiently. We compare the performance of semiringKanren and faster miniKanren for solving Sudoku puzzles. Our experiment shows that semiringKanren can be a more efficient variant of miniKanren.

cs.PL

Pivotuner: automatic real-time pure intonation and microtonal modulation

Pivotuner is a VST3/AU MIDI effect plugin that automatically tunes note data in an adaptive pure intonation, in real time. Where previously pure intonation was out of reach for most musicians due to difficulty and impracticality, Pivotuner enables it to be achieved easily and straightforwardly by using novel yet simple algorithms. This may lead to more widespread exploration of pure intonation for a larger and more diverse crowd of musicians! This paper includes a review of prior systems for adaptive pure intonation systems, including Hermode Tuning/Kontakt Dynamic Pure Tuning and Just Intonation. The paper introduces the notion of an adaptive tuning center and how it serves as a flexible underlying concept for multiple tuning algorithms, as well as extensions to offer greater control for performers, including pitch and tuning center locking and resetting, and gradual interpolation between equal temperament and pure intonation. The paper then showcases some pieces which use Pivotuner effectively, then discusses areas for future exploration within Pivotuner's feature set, and plans for future development.

cs.MM