Each condition has a validation function that returns either FULFILLED,
ABORTED or UNFULFILLED. When a condition is successfully solved, we call
it FULFILLED. If a condition cannot be FULFILLED anymore due to a timeout
or other types of counter-proofs, the condition is ABORTED. UNFULFILLED
values imply that a condition has not been provably FULFILLED or ABORTED.
All initialized conditions start out as UNFULFILLED.