The object that is sold in some Purchasing-Agreement. If we decide to create Transaction, we might change the name of this predicate to transaction-object. Alternatively, we might make this even more general by creating something like object-acted-on.
(=> (And (Currency-Transferred ?Buy ?Price) (Object-Sold ?Buy ?Prod)) (List-Price ?Prod ?Price)) (=> (And (List-Price ?Prod ?Price) (Object-Sold ?Buy ?Prod)) (Currency-Transferred ?Buy ?Price)) (=> (Object-Sold $X $Y) (Product $Y)) (=> (Object-Sold $X $Y) (Purchasing-Agreement $X)) (=> (Purchasing-Agreement ?X) (Exists (@Y) (Object-Sold ?X ?Y)))