The Hoare Cube
johnwickerson.wordpress.com
johnwickerson.wordpress.com
(Exhibit 1: No single completely satisfactory form of logical negation)
https://archive.org/details/georg-wilhelm-friedrich-hegel-sc...
* including subheads such as "Moments of Becoming" and "Sublation of Becoming".
(ok, reading pp106-108 suggests that although Becoming is not Nothing for Hegel, it is self-contradictory and hence a special kind of a non-being, a determinate being?)
EDIT: aufheben seems more transparent than "sublation"
> Das Werden ist das Verschwinden von Seyn in Nichts, und von Nichts in Seyn, ... Es widerspricht sich also in sich selbst, ... eine solche Vereinigung aber zerstört sich. Dieß Resultat ist das Verschwundenseyn, aber nicht als Nichts; ... Das Werden so Übergehen in die Einheit des Seyns und Nichts, ... ist das Daseyn.
(Becoming is the disappearance of Being in Nothing, and of Nothing in Being, ... It contradicts itself ... such a union destroys itself. This result is the disappearance, but not into Nothing ... Becoming, passing thus into the unity of Being and Nothing, ... is Existence.) ??
https://www.gutenberg.org/cache/epub/6729/pg6729-images.html...
A more recent idea was to flip this correctness logic to get an incorrectness logic, which says if you can reach a "bad" state (this is useful for bug detection.) In such a logic, you only want to know about reachable states, so the formula gets flipped: if the final program state satisfies the postcondition, then there must be a program state satisfying the precondition that can execute the program and terminate in that final state.
The difference between these two logics is one axis of this cube. There are other possible logics: you can ask if a precondition is necessary - that is, is the postcondition only reachable from states satisfying the precondition? It turns out there are two orthogonal approaches to stating such a property, and they form the other two axes of the cube.