Logic programming paradigm
Use symbolic logic as a programming language
This is good because logic is powerful and theorem proving can be used to “execute” programs
- This will be clearer later in the term
app([A|X], Y, [A|Z]) :- app(X, Y, Z).
These two (Horn) clauses define list appending
Can be used to compute in any direction or to check a property