One argument for keeping the properties + objects model around (versus the bundle of properties model) is that it is integrated into first order logic. However, it is relatively simple to construct a logical system with the same expressive power as first order logic without that model.

The system is as follows:

All rules of syntax are the same as first order logic, except that instead of atomic formulae of the form Px we instead have property bundles of the form {A, B, C, D …}. And quantifiers range over properties; i.e. members of bundles. Later we may treat these bundles in the same way as sets (using some of the same notation), and like sets their members should be considered unordered. However, unlike sets, the expression of a property bundle of the form {A, B, C} does not mean that it is necessarily limited to those three properties; it may contain additional, unlisted, properties. If necessary a property bundle can be named with a subscript, such as {A, B}_{a}.

The following rules of inference are also permitted (in addition to the usual ones)

X_{a} → Y_{a}, where Y ⊆ X

P_{1} = P_{2} → ({P_{1}, A, B, …}_{a} → {P_{2}, A, B, …}_{a})

X_{a} & Y_{a} → X∪Y_{a} (although this isn’t very useful until the second-order version of the system)

This has the same expressive power as first order logic, which can be demonstrated as follows:

Anything that can be expressed in first order logic can be expressed within this system via property bundle pairs (of the form {A, B}), and turn both designations for properties and objects under the old systems into properties under the new system. For example, ∀x(Fx → Px) becomes ∀x({F, x} → {P, x}). Likewise anything expressible under the new system can be expressed in the old system by treating each property as an object and taking being a member of a particular property bundle to be a unique predicate. For example ∀x({x, A, B}_{y} → {x, C}_{z}) becomes ∀x((Yx & Ya & Yb) → (Zx & Zc)).

Of course the system, as described, can’t express some ideas, such as the idea that if a property bundle has a certain property that it must also have a second property. ∀x({F, x} → {P, x}) only expresses the idea that if a property bundle with F and x exists that a second with P and x must also exist, not that the first bundle contains F, P, and x. A partial solution is to designate some properties as uniquely identifying a particular “object” (the property of being a particular person, for example), such that they exist only in a single bundle because, in a way, they describe the bundle itself. A stop-gap way to express such properties is to say that, for them, the following rule of inference holds:

({z, A_{1,1}, A_{1,2}, …} & {z, A_{2,1}, A_{2,2}, …} & … & {z, A_{n,1}, A_{n,2}, …}) → {z, A_{1,1}, A_{1,2}, …, A_{2,1}, A_{2,2}, …, …, A_{n,1}, A_{n,2}, …}, where z is a unique identifier

However, this simply guarantees that there is some bundle with all the properties associated with z, which is not quite what we wanted.

To really express the idea (as well as dependant properties, and other such things), we need to move to a second order logic, one where bundles can be quantified over as well (this is why I introduced the idea of naming them previously.)

Then we could define a unique identifier as follows:

∀x∀y({u}_{x} & {u}_{y} → ∀z({z}_{x} ↔ {z}_{y})), making u a unique identifier

Also we could express the idea that property Y depends on property X (i.e. any bundle that has Y must have X) as follows:

∀x({Y}_{x} → {X}_{x})