Live data from Hacker News

The metaphysical presuppositions of formal logic

edwardfeser.blogspot.com

41–50 of 114 posts

Re: The metaphysical presuppositions of formal logic

#41
post #36
post #30

Earlier quoted context omitted.

The above is a false statement because if we say A is "true" then the statement becomes "true != true" which is obviously a false statement. In fact if we put anything in the place of A the results are the same. If, however, you wish to communicate the evaluation of a function such as "now()", then you would express that as two invocations of that function now() != now() or t != t' or simply A != B So simply using 'A…

I am not looking for an a debate; or to be “set straight”. I am telling you that in my model what I am saying is true . Yes I am talking about function invocation. In Ruby: a = lambda { Time.now } a.call != a.call Or… x = “Time.now != Time.now” eval(x) == true Not to get bogged down in any particular notation/syntax… I am expressing the same thing in different ways. f() != f() !( f() == f() ) A != A Now is not now. I…

No need to bring Ruby into this; every language with impure functions (which is almost every language) can reproduce your example.

    f() != f()
And it's not hard to find an f that will satisfy this. This is not surprising or insightful to anyone with programming experience.

Do note two things:

The notation f.call is the same as f(), i.e. function invocation. You're not comparing functions but invoking them and comparing their results.

I don't know the equivalent syntax in Ruby, but in other languages the following is always true:

    f == f
That is, comparing the actual function (something that is constant even if the function is impure) instead of invoking it twice and comparing the results.

Note that the assertion "two things that are not the same might be different" is completely unsurprising. We're just letting syntax confuse us in this discussion.

Re: The metaphysical presuppositions of formal logic

#42
post #36
post #30

Earlier quoted context omitted.

The above is a false statement because if we say A is "true" then the statement becomes "true != true" which is obviously a false statement. In fact if we put anything in the place of A the results are the same. If, however, you wish to communicate the evaluation of a function such as "now()", then you would express that as two invocations of that function now() != now() or t != t' or simply A != B So simply using 'A…

I am not looking for an a debate; or to be “set straight”. I am telling you that in my model what I am saying is true . Yes I am talking about function invocation. In Ruby: a = lambda { Time.now } a.call != a.call Or… x = “Time.now != Time.now” eval(x) == true Not to get bogged down in any particular notation/syntax… I am expressing the same thing in different ways. f() != f() !( f() == f() ) A != A Now is not now. I…

I read your point as similiar to u/tgflynn's point about modeling (upthread).

Being a simple bear, so formal logic breaks my head, I agree.

Just a hunch:

These "impedance mismatches" are one root cause for our society's current epistemological crisis. Cases where we can't even agree to a shared base truth.

Further, "now is not now" is a bit like paradox, no? The ability to hold two contradictory thoughts in your head at the same time. A large fraction of people recoil from ambiguity. Also a source of endless strife.

Re: The metaphysical presuppositions of formal logic

#43
post #2

This article does a great deal to point out the problem, but then just kicks the can down the road. Yes, metaphysics comes before Logic but metametaphysics comes before metaphysics. Ad infinitum. All this does is shift the discussion from the laws of logic to the laws of metaphysics - it is turtles all the way down. There is no way to get off this hamster wheel without a shift of perspective, but computer scientists…

This article does a great deal to point out the problem, but then just kicks the can down the road

Isn't this the problem with cynical criticism in general? It's an intellectual dead end, by definition.

Re: The metaphysical presuppositions of formal logic

#44
post #41
post #36

Earlier quoted context omitted.

I am not looking for an a debate; or to be “set straight”. I am telling you that in my model what I am saying is true . Yes I am talking about function invocation. In Ruby: a = lambda { Time.now } a.call != a.call Or… x = “Time.now != Time.now” eval(x) == true Not to get bogged down in any particular notation/syntax… I am expressing the same thing in different ways. f() != f() !( f() == f() ) A != A Now is not now. I…

No need to bring Ruby into this; every language with impure functions (which is almost every language) can reproduce your example. f() != f() And it's not hard to find an f that will satisfy this. This is not surprising or insightful to anyone with programming experience. Do note two things: The notation f.call is the same as f() , i.e. function invocation. You're not comparing functions but invoking them and compari…

I am bringing Ruby into the discussion so that I can simply point to an ostensive/empirical example - it spares all of us from the tedious "define it!" game.

It depends on which evaluation strategy you are using. Call by value or call by reference.

   def f
      return Time.now
   end
   f == f
It produces exactly the same effect as the one I am going for. Look past the syntax.

Re: The metaphysical presuppositions of formal logic

#45
post #40
post #26

Earlier quoted context omitted.

We are not talking about the same computation. What you think I mean is [1]. What I actually mean is [2]. [1] pry(main)> eval("a != a") NameError: undefined local variable or method `a' for main:Object from (pry):1:in `eval' [2] pry(main)> eval("Time.now != Time.now") => true I am not assigning the function to a variable - I am lazy-evaluating it. It's not equivocation because [2] is expressed exactly the same way in…

I disagree, because in both programming languages and in natural language, "now" is not a constant: it's a function that returns a different value depending on when it's called. While the syntax is "now", what you're really saying is now(Ti) for some i . So the sentence, in both natural language and most programming languages becomes: now(T0) != now(T1) Which is easier to understand, with all arguments made explicit.…

Yes! "Now" is not a constant. It's a function. It's a function that takes no arguments. It's also a function that can be lazy-evaluated.

  f() != f()
  A != A
You seem to be agreeing with me but your response to me starts with the English phrase "I disagree".

Re: The metaphysical presuppositions of formal logic

#46
post #45
post #40

Earlier quoted context omitted.

I disagree, because in both programming languages and in natural language, "now" is not a constant: it's a function that returns a different value depending on when it's called. While the syntax is "now", what you're really saying is now(Ti) for some i . So the sentence, in both natural language and most programming languages becomes: now(T0) != now(T1) Which is easier to understand, with all arguments made explicit.…

Yes! "Now" is not a constant. It's a function. It's a function that takes no arguments. It's also a function that can be lazy-evaluated. f() != f() A != A You seem to be agreeing with me but your response to me starts with the English phrase "I disagree".

I disagree, that's the thing: "now" is a function that takes one implicit argument: time.

So "now" is a trickery to hide the fact you're really saying "now(Ti)", for varying i.

I'm not tripping over syntax, but I think you are:

You think you're saying

    A != A
When you're really saying

    A1 != A2
(Or rather

    now(t0) != now(t1)
)

And of course the second form is unsurprising.

Re: The metaphysical presuppositions of formal logic

#47
post #44
post #41

Earlier quoted context omitted.

No need to bring Ruby into this; every language with impure functions (which is almost every language) can reproduce your example. f() != f() And it's not hard to find an f that will satisfy this. This is not surprising or insightful to anyone with programming experience. Do note two things: The notation f.call is the same as f() , i.e. function invocation. You're not comparing functions but invoking them and compari…

I am bringing Ruby into the discussion so that I can simply point to an ostensive/empirical example - it spares all of us from the tedious "define it!" game. It depends on which evaluation strategy you are using. Call by value or call by reference. def f return Time.now end f == f It produces exactly the same effect as the one I am going for. Look past the syntax.

I don't know Ruby. In your example, if you're comparing the function itself, it is true that

   f == f
But it's not true if that's function invocation and there are implicit arguments. Applying a function and comparing its definition are of course different.

The evaluation strategy must come after we agree whether we're comparing values after invocation or definitions. If it's invocations, the evaluation strategy you pick can change the meaning of the program, so that we must discuss semantics.

In all of these cases,

    A == A
Once we make all implicit assumptions explicit.

Re: The metaphysical presuppositions of formal logic

#48
post #46
post #45

Earlier quoted context omitted.

Yes! "Now" is not a constant. It's a function. It's a function that takes no arguments. It's also a function that can be lazy-evaluated. f() != f() A != A You seem to be agreeing with me but your response to me starts with the English phrase "I disagree".

I disagree, that's the thing: "now" is a function that takes one implicit argument: time. So "now" is a trickery to hide the fact you're really saying "now(Ti)", for varying i . I'm not tripping over syntax, but I think you are: You think you're saying A != A When you're really saying A1 != A2 (Or rather now(t0) != now(t1) ) And of course the second form is unsurprising.

You are talking about a different function.

The function I am talking about doesn't take any arguments.

    [1] pry(main)> Time.now(1)
    ArgumentError: wrong number of arguments (given 1, expected 0)

Re: The metaphysical presuppositions of formal logic

#49
post #47
post #44

Earlier quoted context omitted.

I am bringing Ruby into the discussion so that I can simply point to an ostensive/empirical example - it spares all of us from the tedious "define it!" game. It depends on which evaluation strategy you are using. Call by value or call by reference. def f return Time.now end f == f It produces exactly the same effect as the one I am going for. Look past the syntax.

I don't know Ruby. In your example, if you're comparing the function itself, it is true that f == f But it's not true if that's function invocation and there are implicit arguments. Applying a function and comparing its definition are of course different. The evaluation strategy must come after we agree whether we're comparing values after invocation or definitions. If it's invocations, the evaluation strategy you pi…

What does it mean to compare a function to itself without evaluating it?

Re: The metaphysical presuppositions of formal logic

#50

This seems too vague to me, like a lot of philosophical posts out there. > For example, if it is true that Aunt May believes that Spider-Man fights crime, then even though Spider-Man = Peter Parker, it does not follow that Aunt May believes that Peter Parker fights crime. If you can't substitute Peter Parker for Spider-Man, then they are by definition not equal...

Indeed, but the issue here is not whether Peter Parker is identical with Spider-Man, but whether two beliefs are the same. The conventional way of looking at it is that talking about what people believe or feel, rather than how the world is (putting aside the complication that this is a fictional character!) creates an "intensional context", in which the substitutability of one name or noun phrase for another is not a given, even if they designate the same thing.

For materialists, it is not difficult to see that the brain of Aunt May believing only "Spider-Man fights crime" would be in a different state than if she also believed "Peter Parker fights crime", as going from the former to the latter would require some physical change.

Post reply on HN