Export Citations
Save this search
Please login to be able to save your searches and receive alerts for new content matching your search criteria.
- research-articleJanuary 2024
A Case Study in Functional Conversion and Mode Inference in miniKanren
PEPM 2024: Proceedings of the 2024 ACM SIGPLAN International Workshop on Partial Evaluation and Program ManipulationPages 107–118https://doi.org/10.1145/3635800.3636966Many programs which solve complicated problems can be seen as inversions of other, much simpler, programs. One particular example is transforming verifiers into solvers, which can be achieved with low effort by implementing the verifier in a relational ...
- ArticleOctober 2023
Relational Solver for Java Generics Type System
Logic-Based Program Synthesis and TransformationPages 118–128https://doi.org/10.1007/978-3-031-45784-5_8AbstractWe present a solver for Java generics type system implemented using relational verifier-to-solver approach. The solver finds solutions for a system of subtyping inequations with free variables and thus can be used to determine a concrete type ...
- research-articleJuly 2023
Extensible Embedded Hardware Description Languages with Compilation, Simulation and Verification
HEART '23: Proceedings of the 13th International Symposium on Highly Efficient Accelerators and Reconfigurable TechnologiesPages 1–10https://doi.org/10.1145/3597031.3597051Typical hardware description languages, such as Verilog and VHDL, are low-level declarative languages with little room for flexibility. Extending, verifying, or reinterpreting programs in these languages is typically done with external tools and at ...
- research-articleJanuary 2021
Efficient fair conjunction for structurally-recursive relations
PEPM 2021: Proceedings of the 2021 ACM SIGPLAN Workshop on Partial Evaluation and Program ManipulationPages 58–73https://doi.org/10.1145/3441296.3441397We present a new, fair, conjunction evaluation strategy for relational programming language miniKanren. Unlike the original left-biased conjunction, our approach controls the order of conjunct execution based on the intrinsic properties of relation ...
- research-articleSeptember 2018
Improving Refutational Completeness of Relational Search via Divergence Test
PPDP '18: Proceedings of the 20th International Symposium on Principles and Practice of Declarative ProgrammingArticle No.: 18, Pages 1–13https://doi.org/10.1145/3236950.3236958We describe a search optimization technique for implementation of relational programming language miniKanren which makes more queries converge. Specifically, we address the problem of conjunction non-commutativity. Our technique is based on a certain ...
A unified approach to solving seven programming problems (functional pearl)
Proceedings of the ACM on Programming Languages (PACMPL), Volume 1, Issue ICFPArticle No.: 8, Pages 1–26https://doi.org/10.1145/3110252We present seven programming challenges in Racket, and an elegant, unified approach to solving them using constraint logic programming in miniKanren.
- research-articleNovember 2016
A small embedding of logic programming with a simple complete search
DLS 2016: Proceedings of the 12th Symposium on Dynamic LanguagesPages 96–107https://doi.org/10.1145/2989225.2989230We present a straightforward, call-by-value embedding of a small logic programming language with a simple complete search. We construct the entire language in 54 lines of Racket---half of which implement unification. We then layer over it, in 43 lines, ...
Also Published in:
ACM SIGPLAN Notices: Volume 52 Issue 2 - research-articleSeptember 2012
miniKanren, live and untagged: quine generation via relational interpreters (programming pearl)
Scheme '12: Proceedings of the 2012 Annual Workshop on Scheme and Functional ProgrammingPages 8–29https://doi.org/10.1145/2661103.2661105We present relational interpreters for several subsets of Scheme, written in the pure logic programming language miniKanren. We demonstrate these interpreters running "backwards"---that is, generating programs that evaluate to a specified value---and ...
- research-articleAugust 2009
Meeting a fanclub: a lattice of generic shape selectors
WGP '09: Proceedings of the 2009 ACM SIGPLAN workshop on Generic programmingPages 73–84https://doi.org/10.1145/1596614.1596625The "fan" of a datatype F is a relation that holds between a value x and an arbitrary F structure in which the only stored value is x. Fans make precise the notion of the shape of a data structure. We formulate two different representations of shape ...
- ArticleOctober 2005
A delta-driven execution model for semantic computing
OOPSLA '05: Companion to the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applicationsPages 202–204https://doi.org/10.1145/1094855.1094935We demonstrate the execution model of a computing platform where computation is both incremental and data-driven. We call such an approach delta-driven. The platform is intended as a delivery vehicle for semantically integrated software, and thus lends ...
- ArticleOctober 2005
Beyond the language workbench: a runtime platform for practical semantic computing
OOPSLA '05: Companion to the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applicationsPages 96–97https://doi.org/10.1145/1094855.1094881domain/object is a new software environment in the tradition of dynamic languages like Smalltalk, Lisp and Self. Like its predecessors, domain/object blurs the usual distinctions between tools, languages, operating systems, applications and databases. ...
- ArticleOctober 2005
A delta-driven execution model for semantic computing
OOPSLA '05: Companion to the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applicationsPages 63–71https://doi.org/10.1145/1094855.1094871We describe (and demonstrate) the execution model of a computing platform where computation is both incremental and data-driven. We call such an approach delta-driven. The platform is intended as a delivery vehicle for semantically integrated software, ...
- chapterJanuary 2001
- research-articleJanuary 1991
Blending Imperative and Relational Programming
When imperative (value- or state-oriented) programming and logical (relation-oriented) programming are combined into a single language, the combination is even more powerful than when either technique is used alone. Leda, a strongly typed compiled ...