我在嘗試使用一些簡單的實際分析問題來學習伊莎貝爾。以下是我的一個證明。它檢查直到最後。伊莎貝爾的習慣性微積分證明
theory l2
imports
"~~/src/HOL/Multivariate_Analysis/Multivariate_Analysis"
"~~/src/HOL/Multivariate_Analysis/Derivative"
"~~/src/HOL/Multivariate_Analysis/Integration"
"~~/src/HOL/Complex_Main"
"~~/src/HOL/Library/Inner_Product"
"~~/src/HOL/Real_Vector_Spaces"
begin
thm linear.scaleR
lemma line_fundamental_theorem_calculus:
fixes x y :: "'a :: real_inner"
and s :: "real"
and f :: "'a ⇒ real"
assumes "∀v. (f has_derivative (f' v)) (at v) "
shows "((λt. f(x+t*⇩R(y-x))) has_derivative (λt. t *⇩R ((f'(x + s*⇩R(y-x))) (y-x)))) (at s)"
proof -
let ?z = "(λt. x + t*⇩R(y-x)) :: real ⇒ 'a"
let ?dzdt = " (λt. t*⇩R(y-x))"
have c1: "f ∘ ?z = (λt. f(x+t*⇩R(y-x)))" by auto
have c2: "(f'(x + s*⇩R(y-x))) ∘ (λt. t*⇩R(y-x)) = (λt. (f'(x + s*⇩R(y-x))) (t*⇩R(y-x)))" by auto
have a1: "(f has_derivative (f' (x + s*⇩R(y-x)))) (at (x + s*⇩R(y-x))) " using assms by auto
have c3: "linear (f'(x + s*⇩R(y-x)))" using assms has_derivative_linear by auto
have c5: "(f'(x + s*⇩R(y-x))) (t*⇩R(y-x)) = t *⇩R ((f'(x + s*⇩R(y-x))) (y-x))" using c3 linear.scaleR by blast
have h1: "(?z has_derivative ?dzdt) (at s)" by (fastforce intro: derivative_eq_intros)
hence "((f ∘ ?z) has_derivative ((f'(x + s*⇩R(y-x))) ∘ ?dzdt)) (at s) " using assms a1 c1 by (fastforce intro: derivative_eq_intros)
hence "((f ∘ ?z) has_derivative ((f'(x + s*⇩R(y-x))) ∘ (λt. t*⇩R(y-x)))) (at s) " by auto
hence "((f ∘ ?z) has_derivative (λt. (f'(x + s*⇩R(y-x))) (t*⇩R(y-x)))) (at s) " by (auto simp: c2)
hence "((f ∘ ?z) has_derivative (λt. t *⇩R ((f'(x + s*⇩R(y-x))) (y-x)))) (at s) "
then show ?thesis
qed
end
我有幾個問題:
- 如何完成證明嗎?它在我看來,我可以申請c5來證明最後的,但我試過的自動,簡單等各種組合似乎並沒有這樣做。
- 這個證明的更多isabelle-idomatic版本是什麼?我期望使用has_vector_derivative而不是has_derivative會更簡單,但我更感興趣的是用has_derivative來保持它,但重組。 Isabelle文檔中給出的例子似乎在這些陳述之間做出了更大的步驟,在這裏有沒有辦法做到這一點?
- 我發現我需要在這裏使用derivative_eq_intros。是否有另外一個fastforce簡介:衍生_eq_intros行會更快?現在需要幾秒鐘。
- 一般來說,對於這種涉及向量和演算的證明,是否還有其他規則集,比如我應該知道的derivative_eq_intros?什麼是默認使用real_inner數量與simp?我可以在這裏應用代數方法嗎?
- 大錘在這個證明中是無用的,我是否需要傳遞一些參數或一組定理,以便它有機會證明這裏的一些步驟?
附錄:自Isabelle 2016-1以來,Multivariate_Analysis已重命名爲Analysis,因此正確的命令行調用將是'-l HOL-Analysis'。這樣可以創建一次HOL分析堆圖像並將來使用它,這樣,每次啓動Isabelle時都不必重新處理所有理論。 –