To the best of my knowledge I am the first person that ever broke these things down into their atomic constituents. The reason that they seem paradoxical is because everyone conflates two distinctly separate Boolean constituents together as a single value.

Every WFF (or declarative sentence) has several constituent parts:
(1) WFF.Assertion                                         // Its assertion.
(2) Boolean Satisfied(WFF.Assertion) // Whether or not its assertion is satisfied.
(3) Boolean WFF.Truth_Value               // Whether or not the whole WFF is satisfied.

“This sentence is not true” asserts that its truth value is not Boolean.TRUE.

If its truth value was Boolean.TRUE that would contradict its assertion making this assertion Boolean.FALSE. On this basis we can eliminate Boolean.TRUE as a possible correct truth value. By eliminating Boolean.TRUE a possible correct truth value we know that the assertion is satisfied.

Boolean Satisfied(WFF.Assertion) = Boolean.TRUE
Boolean WFF.Truth_Value = ~Boolean.TRUE

We just determined that the assertion is satisfied which concurrently determines that the sentence is not Boolean.TRUE. When-so-ever the truth value of a sentence contradicts the truth value of its assertion this sentence is self-contradictory thus semantically ill-formed.

Copyright 2016, 2018, 2019