Interpreting “$X \text{ but } Y$“ as $$X \wedge Y \wedge \diamond(X\wedge\neg Y)$$ is a reasonable starting point. (“X and Y and it would be possible to have X and not Y”.)
This works for the basic examples I found in online dictionaries:
- “He stumbled but did not fall”
- “She fell but wasn’t hurt”
- “He was poor but proud”
- “She’s 83 but she still goes swimming every day”
- “My brother went but I did not”
This correctly identifies that “he is a bachelor but unmarried” is not an appropriate use of “but”.
And this also shows the difference between such examples as:
- “That comment was harsh but fair.” (It was harsh and fair, while some critiques are harsh and unfair.)
- “That comment was fair but harsh.” (It was fair and harsh, while some critiques are fair and compassionate.)