In logic, predicate abstraction is the result of creating a predicate from a formula. If Q is any formula then the predicate abstract formed from that sentence is (λx.Q), where λ is an abstraction operator and in which every occurrence of x that is free in Q is bound by λ in (λx.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 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):
\BoxA(t)
2. (DE RE):
(λx.\BoxA(x))(t)
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.