Reasoning about truth in first-order logic