Hacker News new | past | comments | ask | show | jobs | submit login

Intuitionistic logic is nearly classical logic. That is, we start by assigning statements one of the two values ‘True‘ and ’False’. While truth in the classical sense is abstract, it is concretized in intuitionistic logic with the meaning of ’we can prove it’. We know that there are statements that can neither be proved nor disproved, so we cannot make use of the law of excluded middle "a statement is true or it is not". Add that we are consistent, that is "not (a and not a)" for all a, and then negation must not be the inverse of itself, because we'd be able to proof the law excluded middle otherwise. You see, it is basically classical logic with some minor adaptions to take into account what we’ve learned.

I understand under "constructive reals" the computable reals, and there are only countably many of them.




It seems misleading to say that intuitionistic logic assigns statements to one of the two values, True or False. There's no symmetry between the notions of truth and falsity as there is in boolean logic.

You need to be very, very careful when talking about the size of the constructive reals. If you are working within constructive mathematics, if you describe the real numbers as setoids of Cauchy sequences with Cauchy-equivalence as the equivalence relation, then there are uncountably many real numbers. From a meta-theoretic perspective, it is obvious (as we are working in constructive mathematics) that every real number is in some sense "computable".

Your notion that there are countably many constructive reals probably comes from definitions of the constructive reals from within classical set theory, wherein you must internalize some notion of what it means for a real number to be constructible, and so you are, in a sense, working meta-theoretically. Then it is no surprise that the computable real numbers are countable. After all, Skolem's paradox says that, meta-theoretically, we could have countable models of the classical real numbers as well.

Additionally, meta-theoretically, we see that our definition of real numbers in constructive mathematics will also have a countable model when seen from the outside.


   if you describe the real numbers as setoids of Cauchy sequences
   with Cauchy-equivalence as the equivalence relation, then there
   are uncountably many real numbers.
I start with computable sequences (or — if want — with turing machines), define natural numbers based on them, go to the rational numbers, define real numbers as a setoid of cauchy-sequences (note: all these sequences will be computable by the way we constructed them) of rational numbers, and end up with countably many. So, it depends on what you start your constructive world with. I see no way to start with something uncountable.

You talk about meta-theory and models. I never saw the reason to complicate things with that. Care to elaborate?


The reals one defines thee reals constructively in essentially the same way as one does classically. When the parent commenter says the reals in constructive mathematics are uncountable, he means that inside of a constructive system one can prove the statement

    There does not exist a bijection between the natural numbers and the real numbers.
which is true. You are free to interpret constructive logic in various ways. If you interpret it as the logic of computable things, in which case this statement becomes interpreted as something like

    There is no computable bijection between the natural numbers and the computable reals.
If you interpret it into classical logic, it becomes (now in the classical sense)

    There is no bijection between the natural numbers and the reals.


ihm's response to you I think did a great job explaining what I meant to say, but let me elaborate further.

Just like you might define computable real numbers, you may similarly describe the "definable" real numbers, that is, those numbers which are uniquely specified by logical statements. You will inevitably find that the definable real numbers, like the computable reals, appear to be countable.

So the fact that something is computable, per se, isn't exactly what makes the real numbers countable rather than uncountable.

I use the vocabulary of meta-theory and models, because the practice of defining either the countable reals or the definable reals within a formal system looks a whole lot like defining a formal system within itself (i.e., metatheory). So the fact that the computable reals and the definable reals appear countable, is, at least to me, much like the statement that there are countable models of your favorite formal system.


HN doesn't allow comments with multiple parents, so I needed to choose one to reply to. ihm, please consider this comment also a reply to yours.

The more I talk about constructivism the less I feel it's adequate to label what I'm talking about, even though my approach to mathematics is completely constructive. Please don't treat every word I use as totally definite.

Mathematics is the science of formal reasoning. I call the rules of reasoning, that is the rules of manipulation of statements including their lexicon, syntax and semantic, a logic. I see intuitionistic logic as the most intuitive, universal and fruitful logic, in short: the logic.

To reason, we need something to reason about. Said somethings should be respresentable, so we can communicate about it. Let me call the things we reason about objects. What do we use to represent objects? Symbols, pictures, sounds, smells and many more things we have senses for. We transmit objects as a literal, or as an algorithm ("a turing machine") of how to recreate the object. All turing machines can be encoded with finite bit arrays.

It turns out we are able to make digital computers recreate symbols and pictures and sounds to a fidelity such that we can't notice any difference compared to the original. I see no fundamental difficulty besides physical limitations to recreate other literals. All literals in a computer can be encoded with finite bit arrays.

Finally, I conclude that finite bit arrays are the most general objects we can reason about; they have rich semantics by the possibility to interpret them as turing machines. What we end up with looks a lot like common programming languages.

Based on intuitionistic logic, finite bit arrays, and the ability to interpret them as turing machines, we can follow the canonical construction of the reals. In this world, every object is a finite bit array, plus some annotated interpretation ("a type"), which is just notation for a bigger finite array. There is simply no place for non-countability.

I long for a software that lets me mix logic and usual programming seamlessly, without unnecessary like meta-theories, meta-logic. Coq is near, but the programming is too unnatural.

One can reason about the logic of a Rust programm, discuss it with others, and even the compiler understands some of the meaning, but richer intuitionistic logic statements about the output or behaviour of the code are sadly beyond the compiler.

I'm about to start applying for my graduate studies of mathematics. Do you have any recommendations which university to apply to to research in the area I talked about?


I think there is no difference between constructive and classical logic here? The proof of "the powerset of the natural is uncountable" (or equivalently, expanding out the definition of uncountability, "there does not exist a bijection between N and P(N)") is constructive, and will hold just as well in intuinistic logic. You can't get away from uncountable sets.

On the other hand, you could prove a metatheoretic result, constructing a model which only contains sets which are forced to exist by some finite formula (and therefore the model is countable). But that you can do in ordinary classical set theory also (the Löwenheim-Skolem theorem, Gödel's constructible universe).

I guess this is analogous to how, in constructive logic every function is computable, but it is not possible to internalize this fact as an axiom in the logic. (https://existentialtype.wordpress.com/2012/08/09/churchs-law...)


So is your intuitionist discipline a subset of constructivism? I thought that constructivists generally accept the existence and uncountability of the real numbers.


I don’t feel safe enough with the vocabulary, so please let me use my own words to describe it. Construcive mathematics implies for me to construct all objects you talk about on the things you already declared (for example, recursion becomes a notational shortcut). So, we need to start with something. One simple approach would be finite bit arrays. The most general approach I see, and the one I take, is to start with computable sequences of bits. Consequently, everything based on that is countable.




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: