First-order logic
From Wikipedia, the free encyclopedia
Categories: Systems of formal logic | Mathematical logic | Predicate logic | Model theory | Discrete mathematics
|
First-order logic (FOL) is a formal deductive system used by mathematicians, philosophers, linguists, and computer scientists. It goes by many names, including: first-order predicate calculus (FOPC), the lower predicate calculus, the language of first-order logic or predicate logic. Unlike natural languages such as English, FOL uses a wholly unambiguous formal language interpreted by mathematical structures. FOL is a system of deduction extending propositional logic by allowing quantification over individuals of a given domain (universe) of discourse. For example, it can be stated in FOL "Every individual has the property P". While propositional logic deals with simple declarative propositions, first-order logic additionally covers predicates and quantification. Take for example the following sentences: "Socrates is a man", "Plato is a man". In propositional logic these will be two unrelated propositions, denoted for example by p and q. In first-order logic however, both sentences would be connected by the same property: Man(x), where Man(x) means that x is a man. When x=Socrates we get the first proposition, p, and when x=Plato we get the second proposition, q. Such a construction allows for a much more powerful logic when quantifiers are introduced, such as "for every x...", for example, "for every x, if Man(x), then...". Without quantifiers, every valid argument in FOL is valid in propositional logic, and vice versa. A first-order theory consists of a set of axioms (usually finite or recursively enumerable) and the statements deducible from them given the underlying deducibility relation. Usually what is meant by 'first-order theory' is some set of axioms together with those of a complete (and sound) axiomatization of first-order logic, closed under the rules of FOL. (Any such system FOL will give rise to the same abstract deducibility relation, so we needn't have a fixed axiomatic system in mind.) A first-order language has sufficient expressive power to formalize two important mathematical theories: ZFC set theory and Peano arithmetic. A first-order language cannot, however, categorically express the notion of countability even though it is expressible in the first-order theory ZFC under the intended interpretation of the symbolism of ZFC. Such ideas can be expressed categorically with second-order logic. Why is first-order logic needed?Propositional logic is not adequate for formalizing valid arguments that rely on the internal structure of the propositions involved. To see this, consider the valid syllogistic argument:
which upon translation into propositional logic yields:
C (taking Failed to parse (Missing texvc executable; please see math/README to configure.): \therefore to mean "therefore"). According to propositional logic, this translation is invalid: Propositional logic validates arguments according to their structure, and nothing in the structure of this translated argument (C follows from A and B, for arbitrary A, B, C) suggests that it is valid. A translation that preserves the intuitive (and formal) validity of the argument must take into consideration the deeper structure of propositions, such as the essential notions of predication and quantification. Propositional logic deals only with truth-functional validity: any assignment of truth-values to the variables of the argument should make either the conclusion true or at least one of the premises false. Clearly we may (uniformly) assign truth values to the variables of the above argument such that A, B are both true but C is false. Hence the argument is truth-functionally invalid. On the other hand, it is impossible to (uniformly) assign truth values to the argument "A follows from (A and B)" such that (A and B) is true (hence A is true and B is true) and A false. In contrast, this argument can be easily translated into first-order logic:
(Where "Failed to parse (Missing texvc executable; please see math/README to configure.): \forall x " means "for all x", "Failed to parse (Missing texvc executable; please see math/README to configure.): \rightarrow " means "implies", Failed to parse (Missing texvc executable; please see math/README to configure.): \mathit{Man}(\mathit{Socrates})
means "Socrates is a man", and Failed to parse (Missing texvc executable; please see math/README to configure.): \mathit{Mortal}(\mathit{Socrates})
means "Socrates is mortal".) In plain English, this states that
FOL can also express the existence of something (Failed to parse (Missing texvc executable; please see math/README to configure.): \exists ), as well as predicates ("functions" that are true or false) with more than one parameter. For example, "there is someone who can be fooled every time" can be expressed as:
Where "Failed to parse (Missing texvc executable; please see math/README to configure.): \exists x " means "there exists (an) x", "Failed to parse (Missing texvc executable; please see math/README to configure.): \and " means "and", and Failed to parse (Missing texvc executable; please see math/README to configure.): \mathit{Canfool}(x,y) means "(person) x can be fooled (at time) y". Defining first-order logicA predicate calculus consists of
The axioms considered here are logical axioms which are part of classical FOL. It is important to note that FOL can be formalized in many equivalent ways; there is nothing canonical about the axioms and rules of inference given in this article. There are infinitely many equivalent formalizations all of which yield the same theorems and non-theorems, and all of which have equal right to the title 'FOL'. FOL is used as the basic "building block" for many mathematical theories. FOL provides several built-in rules, such as the axiom Failed to parse (Missing texvc executable; please see math/README to configure.): \forall x P(x)\rightarrow \forall x P(x) (if P(x) is true for every x then P(x) is true for every x). Additional non-logical axioms are added to produce specific first-order theories based on the axioms of classical FOL; these theories built on FOL are called classical first-order theories. One example of a classical first-order theory is Peano arithmetic, which adds to axiom Failed to parse (Missing texvc executable; please see math/README to configure.): \forall x \exists y Q(x,y) (i.e. for every x there exists y such that y=x+1, where Q(x,y) is interpreted as "y=x+1"). This additional axiom is a non-logical axiom; it is not part of FOL, but instead is an axiom of the theory (an axiom of arithmetic rather than of logic). Axioms of the latter kind are also called axioms of first-order theories. The axioms of first-order theories are not regarded as truths of logic per se, but rather as truths of the particular theory that usually has associated with it an intended interpretation of its non-logical symbols. (See an analogous idea at logical versus non-logical symbols.) Thus, the axiom about Q(x,y) is true only with the interpretation of the relation Q(x,y) as "y=x+1", and only in the theory of Peano arithmetic. Classical FOL does not have associated with it an intended interpretation of its non-logical vocabulary (except arguably a symbol denoting identity, depending on whether one regards such a symbol as logical). Classical set-theory is another example of a first-order theory (a theory built on FOL). VocabularyBefore setting up the formation rules, one has to describe the "vocabulary", which is composed of
x 0(x)Failed to parse (Missing texvc executable; please see math/README to configure.): \rightarrow P(x,y). A function such as f(x1,x2...) will similarly be replaced by a predicate F(x1,x2...,y) (interpreted as "y=f(x1,x2...)").
(logical not), Failed to parse (Missing texvc executable; please see math/README to configure.): \rightarrow (logical conditional).
(φ Failed to parse (Missing texvc executable; please see math/README to configure.): \rightarrow Failed to parse (Missing texvc executable; please see math/README to configure.): \neg ψ) is logically equivalent to φ Failed to parse (Missing texvc executable; please see math/README to configure.): \wedge ψ (logical and). φ Failed to parse (Missing texvc executable; please see math/README to configure.): \wedge ψ can be seen as a shorthand for this. Alternatively, one may add the Failed to parse (Missing texvc executable; please see math/README to configure.): \wedge symbol as a logical operator to the vocabulary, and appropriate axioms.
φ Failed to parse (Missing texvc executable; please see math/README to configure.): \rightarrow ψ is logically equivalent to φ Failed to parse (Missing texvc executable; please see math/README to configure.): \or ψ (logical or). φ Failed to parse (Missing texvc executable; please see math/README to configure.): \or ψ can be seen as a shorthand for this. Alternatively, one may add the Failed to parse (Missing texvc executable; please see math/README to configure.): \or symbol as a logical operator to the vocabulary, and appropriate axioms.
ψ)Failed to parse (Missing texvc executable; please see math/README to configure.): \wedge (ψFailed to parse (Missing texvc executable; please see math/README to configure.): \rightarrow φ) is logically equivalent to φ Failed to parse (Missing texvc executable; please see math/README to configure.): \leftrightarrow ψ (logical biconditional), and one may use the latter as a shorthand for this, or alternatively add this to the vocabulary and add appropriate axioms. Sometimes φ Failed to parse (Missing texvc executable; please see math/README to configure.): \leftrightarrow ψ is written as φ Failed to parse (Missing texvc executable; please see math/README to configure.): \equiv ψ.
(universal quantification, typically read as "for all").
xFailed to parse (Missing texvc executable; please see math/README to configure.): \neg φ) is logically equivalent to Failed to parse (Missing texvc executable; please see math/README to configure.): \exists x φ (existential quantification, typically read as "there exists"). The latter can either be used as a shorthand for this, or added to the vocabulary together with appropriate axioms.
x or (Failed to parse (Missing texvc executable; please see math/README to configure.): \forall x). Sometimes one uses colons or full stops instead of parentheses to make formulas unambiguous. One interesting but rather unusual convention is "Polish notation", where one omits all parentheses, and writes Failed to parse (Missing texvc executable; please see math/README to configure.): \rightarrow , Failed to parse (Missing texvc executable; please see math/README to configure.): \wedge , and so on in front of their arguments rather than between them. Polish notation is compact and elegant, but rare because it is hard for humans to read it.
There are several further minor variations listed below:
(iff), Failed to parse (Missing texvc executable; please see math/README to configure.): \wedge (and) and Failed to parse (Missing texvc executable; please see math/README to configure.): \or (or), the truth constants T for "true" and F for "false" (these are operators of valence 0), and/or the Sheffer stroke (P | Q, aka NAND). The minimum number of primitive symbols needed is one, but if we restrict ourselves to the operators listed above, we need three, as above.
ψ for φ Failed to parse (Missing texvc executable; please see math/README to configure.): \rightarrow ψ. This is especially common in proof theory where Failed to parse (Missing texvc executable; please see math/README to configure.): \rightarrow is easily confused with the sequent arrow. One also sees ~φ for Failed to parse (Missing texvc executable; please see math/README to configure.): \neg φ, φ & ψ for φ Failed to parse (Missing texvc executable; please see math/README to configure.): \wedge ψ, and a wealth of notations for quantifiers; e.g., Failed to parse (Missing texvc executable; please see math/README to configure.): \forall x φ may be written as (x)φ. This latter notation is common in texts on recursion theory.
x P(x). This notation may be taken to abbreviate a formula such as Failed to parse (Missing texvc executable; please see math/README to configure.): \exists x (P(x) Failed to parse (Missing texvc executable; please see math/README to configure.): \wedge\forall y (P(y) Failed to parse (Missing texvc executable; please see math/README to configure.): \rightarrow (x = y))) . Computer programs that accept first-order logic representations will typically accept at least these quantifiers and operators (though they may use different symbols to represent them): Failed to parse (Missing texvc executable; please see math/README to configure.): \forall (forall), Failed to parse (Missing texvc executable; please see math/README to configure.): \exists (exists), Failed to parse (Missing texvc executable; please see math/README to configure.): \neg (not), Failed to parse (Missing texvc executable; please see math/README to configure.): \wedge (and), Failed to parse (Missing texvc executable; please see math/README to configure.): \or (or), Failed to parse (Missing texvc executable; please see math/README to configure.): \rightarrow (implies), and Failed to parse (Missing texvc executable; please see math/README to configure.): \leftrightarrow (if and only if). The exclusive-or operator "xor" is also common. The sets of constants, functions, and relations are usually considered to form a language, while the variables, logical operators, and quantifiers are usually considered to belong to the logic. For example, the language of group theory consists of one constant (the identity element), one function of valence 1 (the inverse) one function of valence 2 (the product), and one relation of valence 2 (equality), which would be omitted by authors who include equality in the underlying logic. Formation rulesThe formation rules define the terms and formulas of first order logic. When terms and formulas are represented as strings of symbols, these rules can be used to write a formal grammar for terms and formulas. The concept of free variable is used to define the sentences as a subset of the formulas. TermsThe set of terms is recursively defined by the following rules:
FormulasThe set of well-formed formulas (usually called wffs or just formulas) is recursively defined by the following rules:
φ is a wff.
ψ) is a wff.
x φ is a wff.
For example, Failed to parse (Missing texvc executable; please see math/README to configure.): \forall x Failed to parse (Missing texvc executable; please see math/README to configure.): \forall y (P(f(x)) Failed to parse (Missing texvc executable; please see math/README to configure.): \rightarrow\neg (P(x)Failed to parse (Missing texvc executable; please see math/README to configure.): \rightarrow Q(f(y),x,z))) is a well-formed formula, if f is a function of valence 1, P a predicate of valence 1 and Q a predicate of valence 3. Failed to parse (Missing texvc executable; please see math/README to configure.): \forall x xFailed to parse (Missing texvc executable; please see math/README to configure.): \rightarrow is not a well-formed formula. In Computer science terminology, a formula implements a built-in "boolean" type, while a term implements all other types. Free and Bound Variables
φ if and only if x is free in φ.
ψ) if and only if x is free in φ and does not occur in ψ, or x is free in ψ and does not occur in φ, or x is free in both φ and ψ.
y φ if and only if x is free in φ and x is a different symbol than y.
x Failed to parse (Missing texvc executable; please see math/README to configure.): \forall y (P(x)Failed to parse (Missing texvc executable; please see math/README to configure.): \rightarrow Q(x,f(x),z)), x and y are bound variables, z is a free variable, and w is neither because it does not occur in the formula. ExampleIn mathematics the language of ordered abelian groups has one constant 0, one unary function −, one binary function +, and one binary relation ≤. So:
x Failed to parse (Missing texvc executable; please see math/README to configure.): \forall y ≤( +(x, y), z)) Failed to parse (Missing texvc executable; please see math/README to configure.): \rightarrow (Failed to parse (Missing texvc executable; please see math/README to configure.): \forall x =(+(x, y), 0)) is a formula, usually written as (Failed to parse (Missing texvc executable; please see math/README to configure.): \forall x Failed to parse (Missing texvc executable; please see math/README to configure.): \forall y x + y ≤ z) Failed to parse (Missing texvc executable; please see math/README to configure.): \rightarrow (Failed to parse (Missing texvc executable; please see math/README to configure.): \forall x x + y = 0). SubstitutionIf t is a term and φ(x) is a formula possibly containing x as a free variable, then φ(t) is defined to be the result of replacing all free instances of x by t, provided that no free variable of t becomes bound in this process. If some free variable of t becomes bound, then to substitute t for x it is first necessary to change the names of bound variables of φ to something other than the free variables of t. To see why this condition is necessary, consider the formula φ(x) given by Failed to parse (Missing texvc executable; please see math/README to configure.): \forall y y ≤ x ("x is maximal"). If t is a term without y as a free variable, then φ(t) just means t is maximal. However if t is y the formula φ(y) is Failed to parse (Missing texvc executable; please see math/README to configure.): \forall y y ≤ y which does not say that y is maximal. The problem is that the free variable y of t (=y) became bound when we substituted y for x in φ(x). So to form φ(y) we must first change the bound variable y of φ to something else, say z, so that φ(y) is then Failed to parse (Missing texvc executable; please see math/README to configure.): \forall z z ≤ y. Forgetting this condition is a notorious cause of errors. Inference rulesAn inference rule is a function from sets of (well-formed) formulas, called premises, to sets of formulas called conclusions. In most well-known deductive systems, inference rules take a set of formulas to a single conclusion. (Notice this is true even in the case of most sequent calculi.) Inference rules are used to prove theorems, which are formulas provable in or members of a theory. If the premises of an inference rule are theorems, then its conclusion is a theorem as well. In other words, inference rules are used to generate "new" theorems from "old" ones--they are theoremhood preserving. Systems for generating theories are often called predicate calculi. These are described in a section below. An important inference rule, modus ponens, states that if φ and φ Failed to parse (Missing texvc executable; please see math/README to configure.): \rightarrow ψ are both theorems, then ψ is a theorem. This can be written as following;
and Failed to parse (Missing texvc executable; please see math/README to configure.): T \vdash \varphi\rightarrow\psi , then Failed to parse (Missing texvc executable; please see math/README to configure.): T \vdash \psi where Failed to parse (Missing texvc executable; please see math/README to configure.): T \vdash \varphi indicates Failed to parse (Missing texvc executable; please see math/README to configure.): \varphi is provable in theory T. There are deductive systems (known as Hilbert-style deductive systems) in which modus ponens is the sole rule of inference; in such systems, the lack of other inference rules is offset with an abundance of logical axiom schemes. A second important inference rule is Universal Generalization. It can be stated as
, then Failed to parse (Missing texvc executable; please see math/README to configure.): T \vdash \forall x \, \varphi Which reads: if φ is a theorem, then "for every x, φ" is a theorem as well. The similar-looking schema Failed to parse (Missing texvc executable; please see math/README to configure.): \varphi\rightarrow\forall x \, \varphi is not sound, in general, although it does however have valid instances, such as when x does not occur free in φ (see Generalization (logic)). AxiomsHere follows a description of the axioms of first-order logic. As explained above, a given first-order theory has further, non-logical axioms. The following logical axioms characterize a predicate calculus for this article's example of first-order logic[1]. For any theory, it is of interest to know whether the set of axioms can be generated by an algorithm, or if there is an algorithm which determines whether a well-formed formula is an axiom. If there is an algorithm to generate all axioms, then the set of axioms is said to be recursively enumerable. If there is an algorithm which determines after a finite number of steps whether a formula is an axiom or not, then the set of axioms is said to be recursive or decidable. In that case, one may also construct an algorithm to generate all axioms: this algorithm simply builds all possible formulas one by one (with growing length), and for each formula the algorithm determines whether it is an axiom. Axioms of first-order logic are always decidable. However, in a first-order theory non-logical axioms are not necessarily such. Quantifier axiomsQuantifier axioms change according to how the vocabulary is defined, how the substitution procedure works, what are the formation rules and which inference rules are used. Here follows a specific example of these axioms
These are actually axiom schemata: the expression W stands for any wff in which x is not free, and the expression Z(x) stands for any wff with the additional convention that Z(t) stands for the result of substitution of the term t for x in Z(x). Thus this is a recursive set of axioms. Another axiom, Failed to parse (Missing texvc executable; please see math/README to configure.): Z \rightarrow \forall x Z , for Z in which x does not occur, is sometimes added. Equality and its axiomsThere are several different conventions for using equality (or identity) in first-order logic. This section summarizes the main ones. The various conventions all give essentially the same results with about the same amount of work, and differ mainly in terminology.
, we may define s = t to be an abbreviation for Failed to parse (Missing texvc executable; please see math/README to configure.): \forall x (s Failed to parse (Missing texvc executable; please see math/README to configure.): \in x Failed to parse (Missing texvc executable; please see math/README to configure.): \leftrightarrow t Failed to parse (Missing texvc executable; please see math/README to configure.): \in x) Failed to parse (Missing texvc executable; please see math/README to configure.): \wedge Failed to parse (Missing texvc executable; please see math/README to configure.): \forall x (x Failed to parse (Missing texvc executable; please see math/README to configure.): \in s Failed to parse (Missing texvc executable; please see math/README to configure.): \leftrightarrow x Failed to parse (Missing texvc executable; please see math/README to configure.): \in t). This definition of equality then automatically satisfies the axioms for equality.
s Failed to parse (Missing texvc executable; please see math/README to configure.): \forall t (Failed to parse (Missing texvc executable; please see math/README to configure.): \forall x (x Failed to parse (Missing texvc executable; please see math/README to configure.): \in s Failed to parse (Missing texvc executable; please see math/README to configure.): \leftrightarrow x Failed to parse (Missing texvc executable; please see math/README to configure.): \in t)) Failed to parse (Missing texvc executable; please see math/README to configure.): \rightarrow s = t.
t ≤ s. Predicate calculusThe predicate calculus is a proper extension of the propositional calculus that defines which statements of first-order logic are provable. Many (but not all) mathematical theories can be formulated in the predicate calculus. If the propositional calculus is defined with a suitable set of axioms and the single rule of inference modus ponens (this can be done in many ways), then the predicate calculus can be defined by appending to the propositional calculus several axioms and the inference rule called "universal generalization". As axioms for the predicate calculus we take:
A sentence is defined to be provable in first-order logic if it can be derived from the axioms of the predicate calculus, by repeatedly applying the inference rules "modus ponens" and "universal generalization". In other words:
If we have a theory T (a set of statements, called axioms, in some language) then a sentence φ is defined to be provable in the theory T if
of the theory T. In other words, if one can prove in first-order logic that φ follows from the axioms of T. This also means, that we replace the above procedure for finding provable sentences by the following one:
One apparent problem with this definition of provability is that it seems rather ad hoc: we have taken some apparently random collection of axioms and rules of inference, and it is unclear that we have not accidentally missed out some vital axiom or rule. Gödel's completeness theorem assures us that this is not really a problem: any statement true in all models (semantically true) is provable in first-order logic (syntactically true). In particular, any reasonable definition of "provable" in first-order logic must be equivalent to the one above (though it is possible for the lengths of proofs to differ vastly for different definitions of provability). There are many different (but equivalent) ways to define provability. The above definition is typical for a "Hilbert style" calculus, which has many axioms but very few rules of inference. By contrast, a "Gentzen style" predicate calculus has few axioms but many rules of inference. Provable identitiesThe following sentences can be called "identities" because the main connective in each is the biconditional. They are all provable in FOL, and are useful when manipulating the quantifiers:
(where Failed to parse (Missing texvc executable; please see math/README to configure.): x must not occur free in Failed to parse (Missing texvc executable; please see math/README to configure.): P )
(where Failed to parse (Missing texvc executable; please see math/README to configure.): x must not occur free in Failed to parse (Missing texvc executable; please see math/README to configure.): P ) Provable inference rulesThe main connective in the following sentences, also provable in FOL, is the conditional. These sentences can be seen as the justification for inference rules in addition to modus ponens and universal generalization discussed above and assumed valid:
(If c is a variable, then it must not be previously quantified in P(x))
(there must be no free instance of x in P(c)) Metalogical theorems of first-order logicSome important metalogical theorems are listed below in bulleted form. What they roughly mean is that a sentence is valid if and only if it is provable. Furthermore, one can construct an algorithm which works as follows: if a sentence is provable, the algorithm will tell us that in a finite but unknown amount of time. If a sentence is unprovable, the algorithm will run forever, and we will not know whether the sentence is unprovable or provable and the algorithm has just not yet told us that. Such an algorithm is called semidecidable or recursively enumerable. One may construct an algorithm which will determine in finite number of steps whether a sentence is provable (a decidable algorithm) only for simple classes of first-order logic.
Translating natural language to first-order logicConcepts expressed in natural language must be "translated" to first-order logic (FOL) before FOL can be used to address them, and there are a number of potential pitfalls in this translation. In FOL, Failed to parse (Missing texvc executable; please see math/README to configure.): p \or q means "p, or q, or both", that is, it is inclusive. In English, the word "or" is sometimes inclusive (e.g, "cream or sugar?"), but sometimes it is exclusive (e.g., "coffee or tea?" is usually intended to mean one or the other, not both). Similarly, the English word "some" may mean "at least one, possibly all", but other times it may mean "not all, possibly none". The English word "and" should sometimes be translated as "or" (e.g., "men and women may apply"). [2] Limitations of first-order logicAll mathematical notations have their strengths and weaknesses; here are a few such issues with first-order logic. Difficulty representing if-then-elseOddly enough, FOL with equality (as typically defined) does not include or permit defining an if-then-else predicate or function if(c,a,b), where "c" is a condition expressed as a formula, while a and b are either both terms or both formulas, and its result would be "a" if c is true, and "b" if it is false. The problem is that in FOL, both predicates and functions can only accept terms ("non-booleans") as parameters, but the "obvious" representation of the condition is a formula ("boolean"). This is unfortunate, since many mathematical functions are conveniently expressed in terms of if-then-else, and if-then-else is fundamental for describing most computer programs. Mathematically, it is possible to redefine a complete set of new functions that match the formula operators, but this is quite clumsy.[3] A predicate if(c,a,b) can be expressed in FOL if rewritten as Failed to parse (Missing texvc executable; please see math/README to configure.): (c \wedge a) \or (\neg c \wedge b) , but this is clumsy if the condition c is complex. Many extend FOL to add a special-case predicate named "if(condition, a, b)" (where a and b are formulas) and/or function "ite(condition, a, b)" (where a and b are terms), both of which accept a formula as the condition, and are equal to "a" if condition is true and "b" if it is false. These extensions make FOL easier to use for some problems, and make some kinds of automatic theorem-proving easier.[4] Others extend FOL further so that functions and predicates can accept both terms and formulas at any position. Typing (Sorts)FOL does not include types (sorts) into the notation itself, other than the difference between formulas ("booleans") and terms ("non-booleans"). Some argue that this lack of types is a great advantage [5], but many others find advantages in defining and using types (sorts), such as helping reject some erroneous or undesirable specifications[6]. Those who wish to indicate types must provide such information using the notation available in FOL. Doing so can make such expressions more complex, and can also be easy to get wrong. Single-parameter predicates can be used to implement the notion of types where appropriate. For example, in: Failed to parse (Missing texvc executable; please see math/README to configure.): \forall x \mathit{Man}(x) \rightarrow \mathit{Mortal}(x) , the predicate Failed to parse (Missing texvc executable; please see math/README to configure.): \mathit{Man}(x) could be considered a kind of "type assertion" (that is, that Failed to parse (Missing texvc executable; please see math/README to configure.): x must be a man). Predicates can also be used with the "exists" quantifier to identify types, but this should usually be done with the "and" operator instead, e.g.: Failed to parse (Missing texvc executable; please see math/README to configure.): \exists x \mathit{Man}(x) \wedge \mathit{Mortal}(x)
("there exists something that is both a man and is mortal").
It is easy to write Failed to parse (Missing texvc executable; please see math/README to configure.): \exists x \mathit{Man}(x) \rightarrow \mathit{Mortal}(x) , but this would be equivalent to Failed to parse (Missing texvc executable; please see math/README to configure.): (\exists x \neg \mathit{Man}(x)) \or \exists x \mathit{Mortal}(x)
("there is something that is not a man, and/or there exists something that is mortal"), which is usually
not what was intended. Similarly, assertions can be made that one type is a subtype of another type, e.g.: Failed to parse (Missing texvc executable; please see math/README to configure.): \forall x \mathit{Man}(x) \rightarrow \mathit{Mammal}(x)
("for all Failed to parse (Missing texvc executable; please see math/README to configure.): x
, if Failed to parse (Missing texvc executable; please see math/README to configure.): x is a man, then Failed to parse (Missing texvc executable; please see math/README to configure.): x is a mammal"). Difficulty in characterizing finiteness or countabilityIt follows from the Löwenheim–Skolem theorem that it is not possible to characterize finiteness or countability in first-order logic. For example, in first-order logic one cannot assert the least-upper-bound property for sets of real numbers, which states that every bounded, nonempty set of real numbers has a supremum; A second-order logic is needed for that. Graph reachability cannot be expressedMany situations can be modeled as a graph of nodes and directed connections (edges). For example, validating many systems requires showing that a "bad" state cannot be reached from a "good" state, and these interconnections of states can often be modelled as a graph. However, it can be proved that connectedness cannot be fully expressed in predicate logic. In other words, there is no predicate-logic formula Failed to parse (Missing texvc executable; please see math/README to configure.): \phi and Failed to parse (Missing texvc executable; please see math/README to configure.): R as its only predicate symbol (of arity 2) such that Failed to parse (Missing texvc executable; please see math/README to configure.): \phi holds in a interpretation Failed to parse (Missing texvc executable; please see math/README to configure.): I if and only if the extension of Failed to parse (Missing texvc executable; please see math/README to configure.): R in Failed to parse (Missing texvc executable; please see math/README to configure.): I describes a connected graph: that is, connected graphs cannot be axiomatized. Note that given a binary relation Failed to parse (Missing texvc executable; please see math/README to configure.): R encoding a graph, one can describe Failed to parse (Missing texvc executable; please see math/README to configure.): R in terms of a conjunction of first order formulas, and write a formula Failed to parse (Missing texvc executable; please see math/README to configure.): \phi_{R} which is satisfiable if and only if Failed to parse (Missing texvc executable; please see math/README to configure.): R is connected.[7] Comparison with other logics
|


