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

Well, that is a good question. It’s a concept I’ve always just taken for granted. How do you define it? I don’t know.



So the problem with logic and in particular model theory is that you always have to assume some sort of logic for the world where your models live in (a meta-logic) - otherwise you can't talk about anything.

If you take e.g. ZFC for granted in the world of your models, then you can talk about "the" natural numbers, where every number is finite, as a model of PA. And you can also define non-standard models of PA which include infinite numbers. If you use some other foundation, you can probably also define these models in some way. Now whether these constructions mean anything to you, or capture your intuition about "finiteness" is another thing entirely...

The problem is that from within the theory you cannot distinguish between these different models. There's no way of defining a predicate "finite" in first-order PA that agrees with the notion of "finite" that you've established in your meta-logic.

And in general, it's worse than that. As long as your first-order theory allows for any infinite model, there exist models of that theory of any infinite cardinality (this is the Löwenheim-Skolem theorem). So, in general, first-order logic cannot pin down structures uniquely. (Again, this is assuming ZFC in the world of our models.)

This btw also leads to the "Skolem paradox" which states that there are countable models of (first-order) ZFC, even though ZFC says that there exist uncountable sets. But this is only a "paradox" until you realise that "countable" and "uncountable" don't mean the same thing within the model as they do outside of the model.


> There's no way of defining a predicate "finite" in first-order PA that agrees with the notion of "finite" that you've established in your meta-logic.

Why doesn't this work?

Define the predecessor function P such that P(S(n)) = n for all n (and maybe S(P(n)) = n for all n != 0).

FINITE(n) := (n=0) OR FINITE(P(n))

i.e. a number is finite if it is zero or if it predecessor is finite.

Why doesn't that work?

BTW, as an aside, since you seem to know your stuff I thought I'd ask: I noticed as part of a separate discussion over on /r/math that AFAICT there is nothing in PA that distinguishes successor and predecessor until you get to the definition of multiplication. Is that right? Is it noteworthy?


> I noticed as part of a separate discussion over on /r/math that AFAICT there is nothing in PA that distinguishes successor and predecessor until you get to the definition of multiplication. Is that right? Is it noteworthy?

I'm not entirely sure what you mean by this. "PA without multiplication" is basically Presburger Arithmetic (https://en.m.wikipedia.org/wiki/Presburger_arithmetic). One of its axioms (as in PA) is that 0 has no predecessor - but clearly every number, including 0, has a successor. So that's a way of distinguishing predecessor and successor functions.

I believe that when you look at nonstandard models (which basically look like N + any number of copies of Z), the order isn't fixed in those copies of Z (unlike N), so you could swap predecessor and succesor within those copies, but I haven't really looked into that all that much.


Yeah, that's not quite what I meant. What I was trying to get at was more analogous to the ambiguity of i and -i. Suppose I wanted to create a system of math whose intended model was the negative naturals rather than the positive naturals. Let's call this new system NPA. NPA has the exact same axioms as PA except with predecessor instead of successor as the core axiomatic construct. So zero has a predecessor, but no successor. Everything works as before, except with the letter P instead of the letter S. Addition still works, you're just adding negative numbers and getting negative numbers as the result, which is what you would expect. It doesn't break down until you get to multiplication, where, if you follow the same definition as standard PA you get the "wrong" result because you want the product of two negative numbers to be a positive number, and there are no positive numbers in NPA. So AFAICT multiplication is required to distinguish PA from NPA. Which raises an interesting question: is there a non-trivial operation you can define to distinguish i from -i the way that multiplication allows you to distinguish 1 from -1?


In every model of a theory, you can just consistently relabel elements in order to get another model. But that doesn't really tell you anything because that model is just isomorphic to the old one (that term has a precise meaning, but I think the "relabeling" intuition captures it).

So your NPA is just a consistent relabeling of elements n to elements -n - it's fully isomorphic to PA. There's nothing particularly interesting about it. Notice that "the product of two negative numbers is positive" doesn't help because in your alternative model, "positive" (or rather, "nonnegative") just means something different (or more precisely, it doesn't even make sense to talk about "nonnegative numbers" because that's all of them).

It only becomes interesting when you have different non-isomorphic models of a theory - that then means that there are (distinguishable) properties of the model that the theory can't talk about.

In the case of the complex numbers, if you just exchange i and -i, I believe that you get a field which is fully isomorphic to C.


> In the case of the complex numbers, if you just exchange i and -i, I believe that you get a field which is fully isomorphic to C.

To add to this and expand a little, there are only two isomorphisms between C and itself which keep all the real numbers fixed: the identity and the conjugate map (which sends a+ib to a-ib, and in particular i to -i).

If you don't fix the real numbers there are other such isomorphisms but I believe you can only construct them via the axiom of choice (so you can't really "write them down").

In the case of the real numbers there's really only one such isomorphism, the identity.


Right. So in those terms, NPA is isomorphic to PA -- until you introduce multiplication, at which point the isomorphism goes away becauase S(0)S(0) is S(0) but P(0)P(0) is not P(0). That seems like an interesting fact to me, and feels like it might be a clue pointing to some deeper truth.

You can't define a model "NPA" in which all numbers are nonpositive but then define multiplication such that it can yield positive numbers - that just wouldn't be a function.

It's pretty easy to prove that S(0)*S(0) = S(0) with the axioms of PA. That has to be true no matter what interpretation you give "S" in your model, so in your proposed model "NPA", in which the domain are the nonpositive integers and S is the predecessor function, of course it has to be true that the "product" of two -1 and -1 is -1. It just means that in such a model, multiplication isn't what you think it is.

One should really be careful not to mix up logical systems and their models. The way you're using notation, it's really easy to get confused.


If you start with NPA it is identical as PA. You can apply all the same logic and all the first theorems. The problem with multiplication is not that the proofs fall apart, it is that multiplication does not mean what you want it to mean.

When you go to the complex numbers, you have a similar situation. The only thing that distinguishes i from -i is what you want the principal branch of sqrt to be. Otherwise nothing would change if you flip them.


> The problem with multiplication is not that the proofs fall apart, it is that multiplication does not mean what you want it to mean.

Well, yeah, that's kind of the point: the positiveness of the naturals is not just a convention, it is actually a logical consequence of something in the axioms. Specifically, it is a logical consequence of the definition of multiplication. I find that interesting.


That ties to one of the standard axioms of the real numbers in classical mathematics.

There exists a set P which is closed under addition and multiplication, such that for every real number x, one of these three things is true: x is in P, -x is in P, x = 0.

P is, of course, the positive numbers. This axiom makes the reals into an ordered field. Add in completeness, and the reals are unique (up to choice of set theory).


You can have an infinite chain of predecessors of non-standard numbers, each claiming being FINITE(). That satisfies your definition. This could be easily demonstrated in Robinson arithmetic, which has simple, understandable non-standard models.


Robinson arithmetic is an excellent example here.

Using ZFC, Robinson can take a standard model of the reals and construct a nonstandard model, and a function from the standard model to the nonstandard model. Every possible statement of first order logic that can be made about the standard model is true in the nonstandard model. Likewise every possible statement of first order logic that can be made in the nonstandard model only involving things that came from the standard model are also true of the standard model. This is his "transfer principle". However the nonstandard model comes with things like infinitesmals, and infinite numbers. So in the nonstandard world we can really do things like define a derivative as dy/dx, or an integral as an infinite sum. Then recover the classical definitions through the transfer principle.

See https://terrytao.wordpress.com/2007/06/25/ultrafilters-nonst... for an explanation of how this actually works in some detail. But if you get your head around it, you'll see exactly why first order logic cannot possibly capture the idea of being a standard model. Because, in first order logic, the nonstandard model really is indistinguishable. And so finite cannot be expressed in first order logic.


Note that i meant https://en.wikipedia.org/wiki/Robinson_arithmetic , while you wrote about results from different Robinson: https://en.wikipedia.org/wiki/Nonstandard_analysis .


Oops, thank you for the correction! I learned something today.

Though I'm sure you can see how I thought that the other Robinson fitted in the conversation,


> You can have an infinite chain of predecessors of non-standard numbers, each claiming being FINITE().

Ah. That makes sense. Thanks.

So surely someone has come up with a system that captures the intuitive spirit of mathematical induction, i.e. that the chain has to actually be rooted at 0 rather than have an infinite chain of predecessors or be a loop? How hard could that be?


How hard could that be?

It seems like it should be straightforward. But it's mathematically impossible.

Similarly, it seemed to David Hilbert like it should be possible to have a system of formal logic that all could accept, which would prove itself to be consistent. But that also proved to be impossible. And the logic which lead to that being proved impossible is deeply connected to the first line of reasoning that I gave you for why this is also impossible.

And in the end what they all come down to is some kind of self-reference. In this case, to have a finite statement define what it means to be finite, we must already know what finite means. Second order logic sort of assumes that we can simply know what finite means. First order logic doesn't allow you to wave your hands like that. You can't cheat in any way. And so you can't find a way to do it.


> Similarly, it seemed to David Hilbert like it should be possible to have a system of formal logic that all could accept, which would prove itself to be consistent.

Minor nitpick, but I don't think this fully captures the essence of Hilbert's program. If we had a system that could prove itself consistent, that would mean nothing, because the system could be inconsistent, therefore unsound and so its consistency "proof" wouldn't mean anything.

Rather, the goal was to start from an arguably "uncontroversial" base of mathematics (something like primitive recursive arithmetic, which intuitionists might also accept) and use that to bootstrap "infinitary mathematics" of the kind the formalists such as Hilbert were arguing for. The hope was that one could prove the consistency of such more abstract mathematics (PA or ZFC) from the more concrete foundations.

Unfortunately, Gödel's theorems completely demolish that idea. It's not just that a (sufficiently strong) theory can't prove itself consistent, it also can't be proven consistent by a strictly weaker theory such as PRA (because if such a proof existed in the weaker system, it would of course also exist in original system).

Interestingly, there are systems which are neither stronger nor weaker than PA which can prove PA consistent: https://en.m.wikipedia.org/wiki/Gentzen%27s_consistency_proo...


That goal is what I meant by the phrase "that all could accept". You're right that I could have expanded on it though.

That said, Gentzen's result is new to me. Though I have seen other results that are somewhat similar.


> Second order logic sort of assumes that we can simply know what finite means. First order logic doesn't allow you to wave your hands like that.

OK, this I do not understand. How does 2ndOL "sort of assume that we can simply know what finite means"? That seems like an extraordinarily imprecise characterization of 2ndOL. 2ndOL is a formal system just like 1stOL. Neither one lets you "wave your hands" about anything AFAICT.


Read https://plato.stanford.edu/entries/logic-higher-order/ if you wish.

I view the "for all properties" bit as handwaving. See particularly section 6 of that article, which at one point gives:

The semantics of second-order logic depending on these hard questions of set theory puts second-order logic into the same “basket” with set theory. Criticism of set theory becomes criticism of second-order logic and vice versa.

My Constructivist tendencies are due to my discomfort with accepting the validity of set-theoretic constructions with decisions based on unverifiable truths. Accepting second order logic requires accepting quantifying over similar collections of unverifiable claims. I'm going to be no more sympathetic.


Thanks.


In any model of PA, all natural numbers will be finite by this definition. Even if we, from outside of the model, know that many of them aren't.

You've been presented with two different ways to prove this, and a standard textbook. Perhaps read the textbook?

On your aside, in PA there is one element that is not the successor of any other. And it likewise has no predecessor. (It is a matter of convention whether you call that special number 0 or 1.) That special number is always the base case of all induction proofs.


You don't define it.

You list things that you want to be true of it. The Peano Axioms are examples. But no matter how long your list gets, it can always get longer. For example we can ask whether a particular polynomial has integer roots. See https://en.wikipedia.org/wiki/List_of_statements_independent.... (It doesn't, but you can't prove that in ZFC.)

Even so, there is always an, "...and so on." You never finish, because finite does not actually have a finite definition.

Second order logic gets around it because you can say something that simultaneously implies all the things that you want to say about "finite" in one go. Such as, "All possible functions from itself to itself that are onto are also one-to-one." A first order model need not capture the full intent of this statement, because it does not contain all possible functions. As we can see when we look at a model from within other models.

But when I look at what the second order idea of "all possible functions" actually means, I think we're just begging the question of what it means to be finite.

The way that I think about it is that some things are finite. Some things are infinite. And some things on the boundary are not yet determined. But then again, I do have Constructivist sympathies. And this is not a point of view that most mathematicians are very sympathetic towards.




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

Search: