0

I am working with limits and I am unable to prove the following

definition func :: "real ⇒ real"
where "func = real"

lemma "(λh. (func (x+h))) -- 0 --> (func (x))"
unfolding func_def
apply (auto intro!: tendsto_eq_intros)

However if I replace the definition of func to

definition func :: "real ⇒ real"
where "func x = x"

the lemma is solved.

How can I solve this lemma when working with generic definitions?

creator22
  • 9
  • 1

1 Answers1

1

I believe, here the problem is that the function real has just a generic (overloaded) syntax, i.e., real :: 'a => real, but it is not necessarily defined for all possible types 'a. This is easily seen when using find_theorems: when searching for lemmas on real :: nat => real, you get plenty of results whereas searching for real :: real => real doesn't give you a single result.

find_theorems "real :: real => real"
find_theorems "real :: nat => real"

Consequently, you can not even prove a simple lemma like func x = x, since it is not specified that real :: real => real really is the identity function.

René Thiemann
  • 1,251
  • 6
  • 2