OOP math requires a totally different logic. Based on the traditional two-value logic, a statement can either be true or false and negation of true is false and so on. The many-value logic was then introduced. But the basis of many-value logic resembles two-value logic. It is based on a table that specifies how different operators affect each value. However, the logic of OOP math cannot be expressed by tables. Consider this example: A has a PC.
The negation of this statement is probably: A doesn’t have a PC. But the negation can also be: B has a PC. This is a many-value logic. If the question is whether A has a PC or a different person, the answer can be: No B has a PC. Or if the question is whether A has a PC or something else, the answer can be: No, A has a book. or even: No, A has many PCs. So one statement can be negated in different ways. For this reason, it’s better to express the expression as an object in OOP that consists of different elements. Each negation negates one element. For example, the expression, as an object in OOP, can include properties specifying who did the action, what type of objects were involved, how many objects were involved and so on. The object can very well include mechanisms, then the negation of mechanisms should also be defined in the OOP logic.
Some months ago, it was suggested that legal statements, as well as logical expressions, should be based on some universal format. It seems the universal format should refer to objects in OOP.
UPDATE 1:
The negation of a set can be its complement. The negation of a function can be defined to be its inverse.
Based on OOP logic, a logical structure can be built on top of another logic, and different logical structures can coexist in a system.