First Name: Massimo Last Name: Nocentini Email: massimo.nocentini@unifi.it Title: Relational Programming in Smalltalk Abstract: In this talk we present a Smalltalk implementation of the microkanren [https://github.com/jasonhemann/microKanren] relational programming language, originally written in the Scheme dialect of Lisp. `microkanren` aims to provide a minimalistic and idiomatic framework for logic programming, lying on explicit control of substitutions that makes true a relation; moreover, together with a complete search strategy it gains the same expressive power of Prolog. Our work was to implement the formal specification in Smalltalk, using native block objects to represent streams of substitutions and to write a variant of the search strategy in order to have a *fair* enumeration of such substitutions. In particular, we would like to show how to bootstrap your own logic programming framework on top of these concepts. Starting from the idea of "goals" to represent relations to be solved by finding values for logic variables, we’ll study streams combinators, reified variables and "syntactic" sugar for goals composition. Using higher-order messages we show how a goal can be implemented as a method that consumes a substitution and produces a stream of substitutions; moreover, relying on Smalltalk’s message dispatching powerful mechanism, it is possible to extend the framework to handle user-defined datatypes (examples concerning s-expressions, binary arithmetic, combinatorics and difference lists will be given). We stressed our implementation against the reference book [2]; moreover, a Smullyan's logic puzzle based on inference rules is fully implemented. Bio: I’m a PhD student at the University of Florence, working primarily on combinatorics, formal methods for the analysis of algorithms, having a deep passion for programming from a long time. I graduated at the same University and my interests concern logic, programming paradigms and algorithms. I publish my code on https://github.com/massimo-nocentini .