Prolog is a declarative logic programming language where programs consist of facts and rules. Facts are terms that are always true, while rules define relationships between terms using logic notation "if-then". A Prolog program is run by asking queries of the program's database. Variables must start with an uppercase letter while constants start with lowercase or are in single quotes. Complex terms define relationships between functors and arguments.