In the 2nd half of the 20th century the American mathematician Haskell Curry and logician William Alvin Howard discovered an analogy between logical proofs and working computer programs. This is known as the Curry-Howard correspondence. Mathematical proofs are working computer programs. https://en.wikipedia.org/wiki/Curry%E2%80%93Howard_correspondence

Computers are physical entities obeying the laws of physics, so if there exists any object in the PHYSICAL UNIVERSE which behaves contrary to the Law of Non-Contradiction (LNC) we have living proof that the LNC is a false authority.

Therefore all I need to do to render the LNC meaningless is to present a computer program which EVALUATES ( ( A = A ) and (A != A) ) to True without producing an error.

Like this: https://repl.it/repls/UrbanUniquePixels

I have invented an object in space-time which behaves exactly contrary to what the LNC prescribes.

So if contradictions can and do exist physical form, but logic prescribes that they don't then surely you need to go with empiricism on this one and discard the LNC?

Is this sufficient proof that the LNC is a meaningless "law"? A false authority!

EDIT (after some feedback): This is NOT a quantum effect. By implementing it on a classical computer I am manifesting this duality in the classical realm.

  • 4
    And see also Quine' Holism : if our "received" scientific worldview is contradicted by facts, we have to modify some theories on which the said worldview is based. There are "layers" of theories and the mathematical and logical ones lays at the deeper level: but, if necessary, we have to consider to modify also them. Feb 28, 2019 at 8:09
  • 2
    There is an analogy between logical proofs and working computer programs. Computers are physical entities obeying the laws of physics. Therefore, if there exists an object which behaves contrary to the Law of Non-Contradiction we have living proof that the LNC is a false authority. This argument is fallacious. First, analogy is not a logical connection. Second, computers are physical, but computer programs are not, they are abstractions. And third, logic is grammar used to express and test physical laws, it makes no sense to say that an object behaves according or contrary to a logical law.
    – Conifold
    Feb 28, 2019 at 19:39
  • 5
    Your program does not evaluate a contradiction. Your implementation of A != A simply returns the internal state of a Human and negates this value as a side effect. Evaluating A != A on its own will return true and then false alternately, while evaluating A == A resets the internal state to true. Since each evaluation of A != A comes immediately after an evaluation of A == A both will evaluate to true, and so the conjunction evaluates to true and its negation to false.
    – Bumble
    Mar 1, 2019 at 0:02
  • 5
    Your second program is completely different from your first, but is equally nonsensical. You have simply redefined the equality and inequality functions to be something entirely different from their ordinary meanings. When I speak of identity, I have in mind Butler's characterisation of it: everything is what it is and not another thing. The fact that your new program evaluates A == A to false shows you are not using any recognisable notion of identity. As to equality being different from identity, I agree, but this can be handled in modern logic by distinguishing extension and intension.
    – Bumble
    Mar 1, 2019 at 11:16
  • 3
    OP is spamming this "thesis" all over the internet, for what it's worth.
    – user4894
    Mar 1, 2019 at 20:21

4 Answers 4


No, you did not contradict LNC. In your program (( A == A ) and (A != A)) is true, but you also changed the function of '==' and '!=' so that '!=' is not longer a negation of '==':

Your '==' function always returns True:

def __eq__(self, other):
    self.last = True
    return self.last

But your '!=' function no longer behaves as the negation of '==':

  def __ne__(self, other):
    self.last = not self.last
    return not self.last

Since '!=' is no longer a negation of '==', this says absolutely nothing about LNC.

  • This was intentional. I decoupled the meaning of "==" and "!=". In doing so I am able to make A behave LIKE a quantum object. Where the LNC is a classical object. This is precisely my point. LNC exists outside of time. This universe is temporal/quantum. Mar 1, 2019 at 6:00
  • You have made the same error as every Aristotelian :) You have conflated identity and equality! ID(A) == ID(A) A != A A == A These are THREE distinct operations that can have THREE distinct meaning in English. Paraconsistent logic... repl.it/repls/RoughRegularLead Mar 1, 2019 at 6:09
  • What you should infer from the fact that "A == x" evaluates as true is that you need to define what you mean by "==" ;) Identity is maintained. Equality is not. What does it mean for a Cat to be equal to a Cat ? Are they entangled or what? Mar 1, 2019 at 7:11
  • 3
    @TypeTheorist Point taken. Equality is not identity. But you're missing my main point: you've shown that "eq(A,A) & ne(A,A)" is true. But ne is not a negation of eq in your definition. So that does not say anything about LNC, since LNC refers to statements of the form "X & ~X".
    – E...
    Mar 1, 2019 at 20:07
  • 6
    @TypeTheoris You can do whatever you like with X's value. LNC says that contradictions aren't true. Once you change X's value in between, it's no longer a contradiction. You could have made eq to always return True and ne to always return True, and it would work just the same. Would that show anything? No.
    – E...
    Mar 1, 2019 at 20:18

Sentences, unlike their corresponding propositions, are not abstract entities, and as tokens are composed of matter.

But sentences too can violate the LNC:

I am either a toad or a frog because I am neither.

And the fact I can utter this sentence does not make any physical law act to violate the LNC.

I am just doing so in my imagination, whereas your program does so in its analysis.

The only important difference I see is that the above reads like nonsense, whereas your computer program actually makes sense: but that's because how it behaves can be made sense of with the LNC. Just as my (confusing) expression might express some unusual, but not physiologically impossible, state of mind.

Interesting project though!

  • I don't see a contradiction ;) It's just semantically/grammatically meaningless. You are getting bogged down in language now. A computer program has a continued effect on the future. After it has been uttered. A linguistic expression stops after the final punctuation mark. Feb 28, 2019 at 21:39
  • i get what you mean... that your program actually does violate the LNC rather than merely appear to. but, even supposing that people only seem to imagine violating the LNC, i don't think your software physically does, only in some abstract sense... real types?
    – user35983
    Feb 28, 2019 at 21:53
  • In a paradigm of constructive mathematics anything that can be constructed (read: defined) is real. You are in the Matrix! If the LNC is defined it exists. And because contradictions don't exist it contradicts itself out of existence. Feb 28, 2019 at 22:38
  • i am sad that my answer was downvoted, i don't see what's wrong with it... i guess cos it was thought to be badly written?
    – user35983
    Mar 1, 2019 at 0:26

Maybe you would understand @Logikal comments if you think about it like this: A physical machine (computer) takes a set of input conditions, then evaluates/operate according to a predetermined logic to produce a new set, then repeat... Time is intrinsic to the operation. (Your program works by exploiting the time aspect.) However formal logic has no time operation. When a logical proof is done with "pen and paper" it is not "operation", as above, from one step to the the next. Rather it is discovery of the next step, a revealing of something that must of been there all along... "x" don't change on paper, everywhere it is used x has the same identity, and the same value. In a computer program x is a variable, it can change between clock cycles; in Formal logic x is a statement, a different x is a different statement.

So what the question now becomes is: Does Logic actually apply to physical reality? Answer is: "Yes, within a specified domain." The existence of your computer itself is proof of that. Did you disprove LNC? No, not the LNC of Logic. What did you prove? That logical formalism plus time has a slightly larger domain of application than logic alone... Sure. That Reality cannot be fully described with a consistent logical system... Maybe. (And maybe you have the beginnings of a refutation of Tegmark's mathematical universe.)

  • I think using computers to justify the LNC is a bad example. Computers are temporal phenomena... Clocks, timing and synchronicity are fundamental to their correct functioning. It is precisely because they are temporal is why I was able to do what I did. If they were static (like pen and paper) I can't produce this result. Mar 4, 2019 at 0:25
  • Important to remember it is not the static nature that prevents the result, rather it is the nature of Logic itself. Computer logic is also static, but only for that moment of evaluation at the end of a clock cycle. The temporal aspect of a computer program allows you to add something... An external and stronger Logic can check the completeness of a weaker one, similarly an external rationality (you) in conjunction with the computer's (physical) logic can produce results not possible for the physical alone. Note, there is work on temporal logics: en.wikipedia.org/wiki/Temporal_logic
    – christo183
    Mar 4, 2019 at 7:34
  • The Aristotelian universe is so far removed from the Temporal one it's uncanny. If a contradiction means (p and not p) at "the same time" the shortest possible time-interval is experienced at the scale of a Planck length. Mar 4, 2019 at 7:42
  • If I draw the truth table for an "and gate", and you draw the truth table for an "and gate": Did we draw different tables, more to the point did we use different logic? If you have an "and gate" and give it inputs, then at a later time give it the same inputs: Did the logic change? - We are far removed from the Aristotelian universe, today it's best to think of Logic as a non-temporal abstraction (handy as it is). There are also some pertinent subtleties, concerning eg. simultaneity, that remain in debate. - also see: philosophy.stackexchange.com/a/53745/33787 and
    – christo183
    Mar 4, 2019 at 9:06
  • 1
    But then it wouldn't be an AND-gate would it? Regardless, it is your interference that makes it misbehave not a fault in the logic...As mentioned, a logical system has a defined domain, the real world is a far larger domain: If you add something to Logic in order to "have control", then you don't have the logic to which LNC is applicable anymore.
    – christo183
    Mar 4, 2019 at 18:28

I feel there is much misunderstanding here. In order for the LNC to be properly applied to a contradictory-pair of statements one member of the pair must be true and the other must be false. This is a rule. If we don't know that one is true and the other false then we cannot apply the LNC.

This is Aristotle's rule for contradictory pairs. It is remarkable, crazy even, how often it is ignored by philosophers. Where we ignore we reduce the dialectic to rubble and cease to think reasonably.

There is no known example of nature breaking the LNC and there never will be. It is defined so as to be foolproof. Where it is broken it does not apply. Aristotle was no slouch. If the LNC does not apply to pair of propositions then it should not be applied. The definition is a completely secure tautology.

  • The problem I am pointing out is conceptual. (p and not p) cannot be true at the SAME TIME. And in the vagueness of "same time" I have merely exploited the definition. The concept of "same time" can only be defined as a bounded interval. It requires duration whereas the LNC is "timeless". And so two things can be true and false in very rapid succession. It's called an oscillator. And given an oscillator the following is true: P and not-P and P and not-P and P and not-P and P... Time waits for nobody. Not even Aristotle. Mar 4, 2019 at 0:20
  • Fundamentally what I am exploiting is a concept that any computer scientist understands as "atomicity". en.wikipedia.org/wiki/Atomicity_(database_systems) we can't do it without "pausing" the universe e.g locking. Mar 4, 2019 at 0:35
  • 3
    @TypeTheorist - I struggle to see the relevance of time. I'd agree with Christo's answer and say that that time has no role in dialectic logic.
    – user20253
    Mar 4, 2019 at 10:37
  • then your logic does not describe this universe. Mar 4, 2019 at 17:57
  • @TypeTheorist - I find your view difficult to understand. A and not-A cannot both be true (or false) at the same time or at different times. This is what 'A' and 'not-A' mean.
    – user20253
    Mar 5, 2019 at 11:20

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .