Update to my other answer: My HOL formulas are wrong
I don't explain why I operate this way, but I can't edit the other answer, and the HOL formulas are wrong. Correcting things like this ends up causing clutter, so I'll try to stay away from all this.
My correction ends up being longish, which could be perceived as creating even more clutter. If my 2 answers are deleted, I wouldn't really care. I just make an attempt to correct myself in several ways. Earlier, I submitted an edit to the 1st answer. If it goes through, things get even more clutter.
The short answer, about what's wrong, is that in the lambda calculus functions, I have a y x
where I should have put a x y
, which wouldn't have allowed the lemma
to be proved. One lesson is that a person can't prove anything untrue (assuming HOL's consistency), but a person can prove something meaningless, which I already knew, having proved many meaningless things.
Corrected, it's like this:
--{*| The consolidated form CORRECTED AND BOGUS. |*}
lemma "(((%x y. f(x + (y - x))) x) ---> f x) (at (0::real))"
apply(simp add: f_def )
(*GOAL: (%y::real. y) -- 0::real --> x*)
oops
My former attempt to investigate h
as a delta x
It seems to me that the basis of the question revolves around an attempt to make explicit the meaning of h
in a standard limit formula.
I think it's a legitimate exercise to go through. That the different limit formulas are equivalent can be trivially seen, but, for a particular person, not knowing how to formalize the trivial in HOL makes things non-trivial, where the end result may even be a case of "this is a trivial problem, why isn't it's formalization trivial?".
Taking an h form
to the x - c
form, failing to get it all in a HOL form
From my perspective, this is mainly related to two problems:
- In the use of standard limit formulas, they define something like
h = x - c
, where c
is a constant, but
- in my searches, I don't find any place where anyone ever explicitly substitutes
x - c
for h
,
- so I can't authoritatively check myself on whether my substitution follows standard, notational conventions,
- and I don't have the time to dig through real analysis books to make sure I have a precise understanding of any and all notation involved.
- Additionally, standard limit notation notation for 1-variable calculus needs to be converted into a HOL limit function, but
- I don't know how to do that. I generally like to operate under healthy paranoia, but here, I end up needing someone who knows HOL, but also has calculus and real analysis fresh on their mind.
Getting to the point (obfuscated point part 1)
I don't know what exactly the OP is and was thinking, but I take as a starting point the limit of a 1-variable, continuous function, since his f
is equivalent to id
. Here, I use my informal notation:
F0: limit[x -> c]f(x) = f(c).
In my first question, I say something like "for a fixed x, y varies to x". However, this is 1-variable calculus, so there's only one thing that varies, and that's x
. In the formula, c
is a constant. Having healthy paranoia, right now, I'm looking for my personal mathematician to say, "Yes, of course. That's trivial." If I was partially confused the first time, then what does that say? It could be deja vu all over again.
I want to think in terms of delta x, so I let h = x - c
, and I replace F0
by this next F1
:
F1: limit[h -> 0]f(c + h) = f(c).
I'm not liking this at all. The use of h
doesn't normally come into play until derivatives. My answer keeps getting longer, because I feel compelled to say things like, "I see stuff similar to this calculus books, but I want to find where it's completely formalized. I looked in Apostol's real analysis book at the limits and derivatives sections, and I didn't see any sloppy use of h
, but then I didn't see any use of h
for the short time I looked, and I don't have time to keep looking."
Anyway, I want to be explicit about what h
is, so I get this:
F2: limit[(x - c) -> 0]f(c + (x - c)) = f(c).
= F3: limit[(x - c) -> 0]f(x) = f(c).
Basing a "typical calculus book" on Stewart's textbook, the author will clarify what h
is, and here is one point where Stewart does that, in a limit where h -> 0
is being used:
Notice that as x
approaches c
[actually, 'a' in the book], h
approaches 0 (because h = x - c
) and so the expressions for the slope... [Stewart, 6th, page 145]
The formalization is all in his parenthesized phrase, "(because h = x - c
)", which is no formalization at all. But then, his books isn't meant to be a completely formal book on real analysis, though it is mostly rigorous.
The point? (finally, the final obfuscated point)
There's kind of a dilemma, the purpose of h
is to emphasize f(c + h)
, that h
is going to 0. But if you do the substitution, then you end up with just f(x)
, as in F3
. After the substitution, there's no variable in f
going to 0. We're back to x
going to c
, as with my starting point, F0
.
Finally, consider this HOL lemma:
lemma
"((%x. f(c + (x - c))) ---> f c) (at (0::real))"
apply(simp add: f_def )
(*GOAL: (%x::real. x) -- 0::real --> c*)
oops
That's not what I need, but it represents what I need. I need a fixed constant c
. The 0 alone is no good, because that's basically saying x
is going to 0. What I need is to say that x - c
is going to 0.
I don't know how to fix it all.
There are trivial simplifications involved, like with f(c + (x - c)) = f(x)
, but the right answer for me is not, "Well, it' trivially equal, can't you see that?" I think so, but I can also make the most trivial of mistakes.