Booleans seem to be the most primitive building blocks of programming languages, because they can actually take only two (or in some cases three) "singleton" values: true, false (and sometimes undeterminded/null)
But it seems that sometimes language design might allow someone to write code where actually "true is false" or "true is not true". I usually thought that this only applies to weakly typed languages, where (inconsistent) implicit conversions will result in "true==false", like in this case. But actually this problem might arise in more strong typed languages, like in C++.
The question is how can you do this kind of anomaly in your programming language? I'm more interested in languages that have strong typing, because there it should be harder to do this (if it's not impossible). I'd actually be surprised, if this anomaly could be reproduced in logical programming languages, like Prolog.