« first day (321 days earlier)      last day (1858 days later) » 

7:21 AM
@johnny09: By the way, related to induction (which we discussed earlier), you may be interested in my comments on a recent thread starting here.
 
8:16 AM
> [Michael Bachtold] I think I understand contexts well enough to see what you are trying to say. To my mind, the student introduces the context as soon as he says "x is a real number". Now, it is true that we don't want f to be a constant function, and that might be easy to explain in this example. But I don't think you can convince the student so easily if he did the same mistake with x^x as discussed here. cont.
> Your explanation that "you cannot use x to define g" is not correct, since x is bound in g. It doesn't matter that x was already in the context. I still don't see how you can really get to the bottom of the issue without discussing variable capture and alpha equivalence. But I'm still intrigued by your claim that you have formalized the idea of variables/constants and functions of things long ago
Concerning the first point, the mistake is the same. Students first have to be taught correct logical reasoning, and given simple examples of mistakes, and then they will understand more complicated mistakes as simply the failure to follow sound logical reasoning. In my teaching experience (and I have excellent feedback both in real life and here in chat), when an error arises due to illogical reasoning, one should tackle that logically invalid step directly, rather than in a messy example.
Once students understand how to perform sound logical reasoning, they not only will automatically not make any error even in a messy situation, and they can on their own pinpoint the error in the messy example.
Concerning the second point, you're referring to only one particular flavour of first-order logic, definitely not the one I use and teach, nor the one mathematicians use in practice. In the flavour you are using, "∀x ∃y ∀x ( x=y )" is a valid first-order sentence. In the flavour I am using, it is syntactically illegal. Similarly, if you translate your flavour to Fitch-style, variable-shadowing would be allowed. But most mathematicians (and many programming languages) don't do/permit it!
So for me there is absolutely no need/use to discuss variable capture, because there is none! All students (and mathematicians who don't know logic) can readily grasp and accept the rule that if you use a variable to refer to some object in some context, you cannot use the same variable to refer to anything in the same context.
 
8:43 AM
As for α-equivalence, I always forget what it means because I don't use that terminology. I've no trouble explaining to students why we need dummy variables for quantification and function definition. They replace the highly ambiguous pronouns in natural language. In my opinion, one must explain this aspect of precision in basic logical reasoning before even moving on to mathematics.
Consider:
> For every friend of John, there is someone he/she knows that John does not.
It should be obvious to you that there is an ambiguity... Natural language has some ways of solving it (i.e. "that friend knows"), but the logical way to solve it is by using a variable to label the entity that we wish to refer to:
> For every friend X of John, there is someone X knows that John does not.
If you explain it like this, it is trivially obvious to every student that using a different variable name does not change the meaning:
> For every friend Y of John, there is someone Y knows that John does not.
As long as, for each object that you label, you use the same variable each time you want to refer to it, which is just common sense. And as long as you don't go and use the same variable name to label objects that you don't know are the same, which is also common sense.
Similarly, you should not explain what a function is in set-theoretic terms nor type-theoretic terms nor some fancy logic system. Instead, just draw a box with one in-arrow from "Input" and one out-arrow to "Output", and explain that a function is a machine (point to the box) such that when you put in some input of the right type it produces some output. Again, when we want to refer to a function we can use a variable like "f" (write "f" inside the box).
How do we refer to the output of f on some input x? We use the notation "f(x)" to denote exactly "the output of f on input x". Draw a second diagram with the same box with "f" inside and now the in-arrow from "x" and out-arrow to "f(x)". Emphasize that f (point to the box) is not the same as f(x) (point to the output)!
Given the students' understanding of quantified variables (as I said that must be done first), it is easy for them to see that if the input is y, the output of f on y is f(y). The function f is a fixed object regardless of what input you stuff into it.
Finally, explain how to define a function. Clearly, to define the output on an input, we need to use a temporary variable name for the input and express the output in terms of that input variable. Also, a function only accepts certain type of inputs, which we must specify whenever we define a function.
For example let's define a function that only accepts natural numbers as input, and produces its square as output. If we use the variable k for the input from N, then we can define the output as k·k. Emphasize that "k·k" makes sense because k is a natural number in the context where we are defining the output given the input k from N.
I personally favour a typed-lambda-expression syntax "( N k ↦ k·k )" to represent the definition of the above function, but this is not conventional. Alternatively, in line with current convention, require students to write:
> Let f be the function with domain (i.e. input type) N such that f(k) = k·k for every k in N.
I say "require" because if you don't then it is not surprising if students don't see the need for or meaning of the dummy variable. From the explanation and required format it is clear that the following defines the same function:
> Let f be the function with domain (i.e. input type) N such that f(x) = x·x for every x in N.
Point out the obvious parallel between quantified statements and function definition; a function definition is nothing more than the declaration of its name and domain together with a forall-quantified statement that captures the input-ouput behaviour.
 
9:18 AM
I want to add that the above must be done independent of the chosen foundational system. That doesn't mean that it should come first, but rather that it should be done in the same way transparently on top of your choice of foundational system. I personally prefer a Fitch-style system like the one sketched here and used in both teaching and mathematical work, but that's a personal decision.
I reiterate that the systems you find in logic papers/textbooks will not be user-friendly, because that is almost never the goal. Mostly they are rather minimalistic, and use Hilbert-style or sequent-style. So you'll have to devise your own (or adopt the one I linked) that can actually be used by students, if you wish them to have 100% grasp of mathematics.
 
I'm afraid that you are not convincing me in any way, with this wave of comments that go of in all sorts of tangents (to my mind). Can we first agree that there are two issues here: one is your claim that the accepted answer is wrong and missing the point, the other is how to make your answer precise?
And maybe we an focus on your answer first
 
Let me finish what I was going to say before I forget.
 
well I'm a afraid I wont read it until I have grasped the basics of what you are actually trying to say
 
Very few people are even aware that there is such a thing as Fitch-style. If you want to understand what "context" truly means, it is made precise in Fitch-style systems.
 
So you are telling me that in order for me (or a student) to understand your answer I first have to study fitch style logic?
 
9:25 AM
@MichaelBächtold I didn't say that; I have taught many students without going into logic, but you are a teacher so you have to know the underlying logic before you can teach it well.
@MichaelBächtold I'll specifically answer this query now, but I urge you to read about Fitch-style because you already have the background knowledge of first-order logic and it's very easy for you to grasp it. (And all my students that I taught Fitch-style have no trouble with it...)
My answer is already precise in the sense that you cannot use "x" until you have declared what it is, and so you if in some context you declare it as something then you can't reuse it to refer to the input variable in your definition of some function. Here "context" can be loosely explained as "situation" if you don't want to use Fitch-style.
But if you want to use Fitch-style, then it's quite self-explanatory. For example you can do this:
Given any real x:
  Let f be the function with domain R such that f(y) = x for every y in R.
  // In this context, f is a constant function since x is fixed.
// Outside, f is **not** even defined.
The mistake is with not having a valid definition of a function, which I fully explained already above.
It is impossible for any student who knows how to validly define functions to make such mistakes.
@MichaelBächtold As for what is wrong with Taemyr's answer, I already said that you cannot write down something that is not even well-defined. It is exactly the same as claiming "1/(1/0) = 0" and then saying "however, 1/0 is undefined". No, you cannot even claim "1/(1/0) = 0"!
 
9:52 AM
Concerning formalization of variables (in the original sense as varying quantities) in a rigorous but usable foundational system, I'll be able to explain that once you've roughly understood contexts. Ping me so that I'll see your message.
 
I'm busy now and I will need more time to read everything you wrote. But I get the impression that you are just throwing all kinds of things at me so that I don't get a chance to say anything. Not a nice way to lead a conversation...
 
@MichaelBächtold I'm not sure why you have that impression. I attempted to give you the most concise yet precise and coherent explanation to satisfy your inquiries. You on the other hand seem to assume bad characteristics of me. Don't. Take your time to read, and feel free to inquire further on any point, no matter how many days later.
 
10:22 AM
I don't assume bad characteristics of you, but I have trouble finding you trustworthy. For instance: you started the whole discussion blaming others of missing the point. Besides coming of as arrogant, I think that you are wrong: others have grasped the point. Then you add comments that are irrelevant for a scientific discussion, like mentioning that you are a logician and know right from wrong or...
that you get good evaluations from your students. Moreover you have not shown any interest in understanding the accepted answer, and finally: its strange talking with someone who hides behind a number as a name.
Nevertheless I'll try to give you the benefit of the doubt.
 
10:59 AM
I was blunt, yes, but what if I'm right? Anyway I don't have hard feelings against you, that's why I spent the time writing all these here. Teaching feedback is relevant (to me) in justifying that my approach to teaching the material is actually viable, rather than just wishful thinking on my part. Formal systems you find in logic textbooks are not practical; they have never actually been designed or tested for classroom use.
As for anonymity... Just as I was considering switching to my real name, there was a serious incident in which a user (now suspended) threatened to send emails to another user's institution (falsely) claiming immoral behaviour on SE... After that I decided to stay anonymous... Sigh...
 
11:49 AM
Well thanks for taking the time. I'll respond when I have time.
 

« first day (321 days earlier)      last day (1858 days later) »