abstract interpretation abstract syntax tree alain colmerauer arity artificial intelligence bprolog backtracking character encoding comparison of prolog implementations computational linguistics constraint logic programming currying cyan worlds data type datalog declarative programming definite clause grammar dynamic programming eclipse edinburgh f-logic france french language gnu prolog graphical user interface horn clause imperative programming international organization for standardization ivan bratko knowledge representation list comprehension logic logic programming logical conjunction logical disjunction logtalk marseille memoization message passing interface meta-circular evaluator negation as failure non-monotonic logic ow prolog oblog operating system predicate logic programming language implementation programming paradigm prologue prova robert kowalski sld resolution swi-prolog scotland strawberry prolog tail recursion tuprolog turing completeness unicode unification visual prolog wikibooks xsb