The implementation of microKanren, a featherweight relational programming language