Logic programming that computational steps cannot be logically deduced. However, in concurrent logic programming, any result of a terminating computation is a logical consequence of the program, and any partial result of a partial computation is a logical consequence of the program and the residual goal (process network). Consequently, the indeterminacy of computations implies that not all logical consequences of the program can be deduced. Concurrent constraint logic programming combines concurrent logic programming and constraint logic programming, using constraints to control concurrency. A clause can contain a guard, which is a set of constraints that may block the applicability of the clause.
Non-logical symbol logical connectives, quantifiers, and variables that stand for statements. A non-logical symbol only has meaning or semantic content when one is assigned to it by means of an interpretation. Consequently, a sentence containing a non-logical symbol lacks meaning except under an interpretation, so a sentence is said to be "true or false under an interpretation". Main article: first order logic; especially, "Syntax of first-order logic". The logical constants, by contrast, have the same meaning in all interpretations. They include the symbols for truth-functional connectives (such as "and", "or", "not", "implies", and logical equivalence) and the symbols for the quantifiers "for