In logic, predicate abstraction is the result of creating a predicate from a sentence. If Q is any formula then the predicate abstract formed from that sentence is (?y.Q), where ? is an abstraction operator and in which every occurrence of y occurs bound by ? in (?y.Q). The resultant predicate (?x.Q(x)) is a monadic predicate capable of taking a term t as argument as in (?x.Q(x))(t), which says that the object denoted by 't' has the property of being such that Q.
The law of abstraction states ( ?x.Q(x) )(t) ? Q(t/x) where Q(t/x) is the result of replacing all free occurrences of x in Q by t. This law is shown to fail in general in at least two cases: (i) when t is irreferential and (ii) when Q contains modal operators.
In modal logic the "de re / de dicto distinction" is stated as
1. (DE DICTO):
2. (DE RE): .
In (1) the modal operator applies to the formula A(t) and the term t is within the scope of the modal operator. In (2) t is not within the scope of the modal operator.
For the semantics and further philosophical developments of predicate abstraction see Fitting and Mendelsohn, First-order Modal Logic, Springer, 1999.