Logic programming deals with relations rather than functions. It separates logic from control by having the programmer declare facts and relations that are true, while the system determines how to use those facts to solve problems. Horn clauses are used to specify relations, with the consequent stating what is true if the conjunction of antecedents are true. Queries in Prolog can ask if a specific tuple belongs to a relation or if there exists a value for a variable such that a clause is true.