Prolog is a logic programming language intended primarily for declarative programming. In Prolog, programs logic is expressed through relations represented as facts and rules. A computation is initiated by running a query over these relations. Prolog has a single data type, the term, which can be atoms, numbers, variables, lists, or compound terms. Atoms are general names while numbers can be integers or floats. Variables are placeholders and compound terms combine a functor and arguments. Lists represent ordered collections of terms. Special compound terms include strings.