# Implementing Prolog ## Basics * terms: * variables start with upper casae: `X`, `Y`... * symbols start with lower case: `s`, `z`, `child`, ... * symbols have arity 0 or more : `bob`, `child(X, Y)`, `father(bob, Z)`... * clauses: * _head_: a single term * _premises_: a (possibly empty) list of terms * a _data set_ is a list of clauses * _queries_ are ## References * [NanoProlog](https://github.com/norm2782/NanoProlog) * [hslogic](https://github.com/abailly/hslogic) * [miniprolog](https://github.com/andrejbauer/plzoo/tree/master/src/miniprolog)