在Isabelle中证明拓扑语句

时间:2015-03-13 16:51:43

标签: isabelle

我一直在处理限制和拓扑,我想证明以下问题:

lemma fixes f g :: "real ⇒ real"
assumes
"open S"
"∀a b. a < b <--> f a < f b"
"∀a. (f a)>0"
"continuous_on UNIV (f)"
"∀w∈S. ∀h. (w+h)∈S --> h * (f w) ≤ g (w+h) - g w"
shows  "∀w∈S. eventually (λh. f w ≤ (g (w + h) - g w)/h) (at 0)"
using assms unfolding eventually_at
apply (auto simp: divide_simps mult_ac)

我已经成功地为两个不同的场景证明了这一点:

这里,不等式中h的所有实例都被| h |替换。几乎可以立即找到解决方案。

lemma 
fixes f g :: "real ⇒ real"
assumes "open S" "∀w∈S. ∀h. (w+h)∈S --> abs(h) * (f w) ≤ g (w+abs(h)) - g w"
shows "∀w∈S. eventually (λh. f w ≤ (g (w + abs(h)) - g w)/abs(h)) (at 0)"
using assms unfolding eventually_at
apply (simp add: divide_simps mult_ac)
by (metis (no_types, hide_lams) add.commute diff_0 diff_add_cancel 
diff_minus_eq_add dist_norm open_real_def)

在另一个场景中,我没有使用集合S,而是使用实数集合(UNIV),然后(简单地添加:)我只剩下一个案例来证明哪个大锤找到了解决方案。< / p>

lemma compuniv:
fixes f g :: "real ⇒ real"
assumes "S=UNIV" "open S"
"∀w∈S. ∀h. (w+h)∈S --> h * (f w) ≤ g (w+h) - g w"
shows  "∀w∈S. eventually (λh. f w ≤ (g (w + h) - g w)/h) (at 0)"
using assms unfolding eventually_at
apply (simp add: divide_simps mult_ac)

具体来说,我很难理解为什么当S = UNIV时,可以找到解决方案。即使是一种减少问题以证明一个子案例(如S = UNIV)的方法也会有很大帮助。如何扩展上述两个案例的证明来证明主要问题?

更大的图片

这个结果构成了使用real_tendsto_sandwich定理证明结果的基础。

 lemma 
 fixes f g :: "real ⇒ real"
 assumes
 "open S"
 "∀a b. a < b <-> f a < f b"
 "∀a. f a > 0"
 "continuous_on S (f)"
 "∀w∈S. (λh. f (w+h)) -- 0 --> f w"
 "∀w∈S. (λh. f w) -- 0 --> f w"
 "∀w∈S. eventually (λh. (h ≥ 0 --> f (w+h) ≥ (g (w + h) - g w)/h) ∧ 
 (h ≤ 0 --> f (w+h) ≤ (g (w + h) - g w)/h)) (at 0)"
 "∀w∈S. eventually (λh. (h ≥ 0 --> f w ≤ (g (w + h) - g w)/h) ∧ 
 (h ≤ 0 --> f w ≥ (g (w + h) - g w)/h)) (at 0)"
 shows "∀w∈S. ((λh. (g (w+h) - g w)/h) ---> f w) (at 0)"
 using assms real_tendsto_sandwich`

根据假设,显然(g (w + h) - g w)/h)f (w+h)f w限制h ≥ 0h ≤ 0因此限制为{{1}在两种情况下都会产生结果h --> 0。因此,在数学上,最终结果将是相同的。困难在于如何在(g (w + h) - g w)/h) --> f wh ≥ 0之间合并结果以证明最终结果?

1 个答案:

答案 0 :(得分:1)

更新: 我在非正式的解释中错了,但我想我已修好了。我添加了一些我的意见,但我把它们放在最后,因为你没有要求他们。)

(我假设你使用<-->是一个错误,它应该是<->。)

在这一切中,我正在研究我认为数学在Topological_Spaces.thy中意味着什么的直观想法。你正在研究一些微积分是件好事;这给了我一点希望。

(一般抱怨:THY中的形式主义水平相当高,它没有直接与基于ZFC的理论同步,并且与src/HOL的所有开发人员一样典型在法新社,作者没有以教科书的形式解释任何一种,甚至没有以专着的方式解释,也没有任何风格。风格要求没有空白。)

如果我在这里给你的不是你想要的,你可以告诉我删除它,保持没有答案,以便其他人可能会有更好的东西。

概述

下面,首先我讨论一些关于UNIV的事情,并在你的上一个引理中提及其他一些问题,以及你在最后两段中所说的内容。

然后,我将重点放在这样一个事实上:当h > 0从一侧移动到另一侧时,所有这一切的关键是弄清h < 0h如何影响不等式。

您可能无法理解 UNIV

的内容

你在倒数第二段中使用的一个关键词是&#34;而不是有一个集合S,我使用的是实数组(UNIV)&#34; 。< / p>

如果您将S::real set表示为实数的任何子集,而不是UNIV::real set,这是所有实数,那么这是有意义的,但所有引理中的S是类型推断real set类型,如果显示类型,可以在输出面板中看到。

此外,UNIV是一种多态类型'a set,如src/HOL/Set.thy#l60中此来源所示。

subsubsection {* The universal set -- UNIV *}

abbreviation UNIV :: "'a set" where
  "UNIV ≡ top"

lemma UNIV_def:
  "UNIV = {x. True}"
  by (simp add: top_set_def top_fun_def)

我不明白你用&#34来谈论什么解决方案;我很难理解为什么当S = UNIV时,可以找到解决方案&#34; ,或者你正在谈论的两个案例。我只在所有的引理中看到一个证据目标。不过,在下面,我最终将2个案例作为连词的一部分。

从你的lemmas消除 UNIV

我认为UNIV在这里至关重要。此外,您的引理可能存在一些不需要的条件,尽管我尽量少改变。

我确实摆脱了UNIV,因为如果我能证明任何real set的定理,那么UNIV::real set也是如此。考虑一下:

lemma "(∀S. continuous_on S f) ==> continuous_on UNIV f"
  by(simp)

还有:

lemma "open (UNIV::real set)"
  by(simp)

你上一个定理的第一部分是:

lemma
  fixes f g :: "real => real"
  assumes "S = UNIV" 
      and "open S"
...

因为您假定S = UNIV,所以您不需要open S。正因为如此,并且因为没有理解你所说的一些事情,我现在离开了你的上一个lemma和最后两段。

我在你的第一个引理中使用了两次 abs ,并摆脱了 UNIV

我的目标,就像你的目标一样,是在不使用abs h的情况下证明定理。根据您所做的事情,中级点在您的第一个abs h中插入lemma两次使用:

lemma
  fixes f g :: "real => real"
  assumes "open S"
      and "∀a b. a < b <-> f a < f b"
      and "∀a. f a > 0"
      and "continuous_on S f"
      and "∀w∈S. ∀h. (w + h)∈S --> abs h * f w ≤ g (w + h) - g w"
  shows  "∀w∈S. eventually (λh. f w ≤ (g (w + h) - g w)/abs h) (at 0)"
using assms unfolding eventually_at
apply (auto simp: divide_simps mult_ac)
by(metis (no_types, hide_lams) add.commute add_diff_cancel add_left_cancel 
  assms(2) assms(3) diff_0 diff_0_right diff_minus_eq_add dist_norm 
  monoid_add_class.add.left_neutral mult.commute open_real_def)

在那里,我删除了UNIV的使用,并使用了S,任何一组实数。

不平等中的正面或负面是关键点

与此相关的是以下基本不等式:

lemma "∀h > 0::real. h * x ≤ y <-> x ≤ y/h"
  by(auto simp add: mult_imp_le_div_pos less_eq_real_def mult.commute 
    pos_less_divide_eq)

在平等中,当乘数h为正数时,生活就很容易,因为不平等的方向不会发生变化,无论x和{{1 }}

至少在Sledgehammer中,这就是为什么在使用y时很容易证明这些定理的原因。我们不必担心公式abs h,关于任何一方是积极还是消极。

以下是我最终修改你的第一个引理

的方法

它喜欢这个:

f w ≤ g (w + h) - g w

以下是我的解释(案例: h&gt; 0 h&lt; 0

引理中的两个条件是lemma fixes f g :: "real => real" assumes "open S" and "∀a b. a < b <-> f a < f b" and "∀a. f a > 0" and "continuous_on S f" and "∀w∈S. ∀h. (w + h)∈S --> h * f w ≤ g (w + h) - g w" shows "∀w∈S. eventually (λh. (h > 0 --> f w ≤ (g (w + h) - g w)/h) ∧ (h < 0 --> f w ≥ (g (w + h) - g w)/h)) (at 0)" using assms unfolding eventually_at apply (auto simp: divide_simps mult_ac) by(metis add.commute add_diff_cancel assms(3) assms(4) assms(5) diff_0_right dist_norm not_less open_real_def) ∀a b. a < b <-> f a < f b,因此∀a. f a > 0是一个正的单调递增函数。我没有看到其中任何一个被使用过。

案例: h&gt; 0 (w + h) S 的元素

因为f,然后是∀w ∈ S. ∀h. (w + h) ∈ S --> h * f w ≤ g (w + h) - g wh > 0,那么

(w + h) ∈ S

如果h * f w ≤ g (w + h) - g w. 不等于0,我们可以乘以1/h,并且不等式的方向保持不变。在h中,我假设虚拟变量永远不会等于0,因此当eventually变为0时,连接的前半部分将eventually为真。

案例: h&lt; 0 (w + h) S 的元素

同样,当hh < 0时,

(w + h) ∈ S

但是因为h * f w ≤ g (w + h) - g w. ,如果我们乘以h < 0,我们就必须改变不平等的方向。

因此,当1/h变为0时,lambda函数中连接的后半部分将为eventually为真。

令人讨厌的更新: 您没有询问我对Stackoverflow礼仪的看法,我自己也可以成为礼节的滥用者,例如也许有这个答案,但我认为每个h应该用来监管他们自己。不幸的是,礼节规则在这里没有明确说明,例如在reddit Rust网站reddit.com/r/rust。我最终这样做了,这也没有好处,但也许它可以帮助影响真正有影响力的人。

如果你在这里接受我的回答,我不在乎,你可能有理由不接受已经给你的一些答案,但作为一个例子,我认为你应该接受R. Thiemann对Substitution in Isabelle给出的答案。

不接受答案,你基本上是在说,&#34;我还没有收到答案,这些答案会给我提供我想要的信息&#34;。此外,未接受的答案显示在Isabelle tag unanswered category

我认为每个人都应该了解世界上很少有人能够回答有关非平凡数学问题的问题,当在Isabelle / HOL中实施时。我猜想全世界约有200人积极使用Isabelle,他们可以被认为是知识渊博,精通用户。除此之外,在他们的脑海中保持微积分,真实分析和拓扑结构的人数更少,并且正如在Isabelle / HOL中实施的那样

Isabelle的使用是一门混合学科,结合了正式的数学,逻辑和计算机科学,并且处于通常处于4年后水平的形式主义水平,部分原因是因为没有。在本科阶段解释Isabelle / HOL逻辑和数学的教科书,部分原因是它只是很难,研究生水平的逻辑和数学。

所需的人数,具有研究生水平的拓扑知识,以及有时间和愿望回答有关拓扑的问题,更有可能在mathoverflow.net (this links to a question)math.stackexchange.com上运作。 (注意:我选择了这个问题和答案,表明在该网站上的许多答案都很长或很长,因为他们试图解释证据的基础数学。使用Isabelle,如果一个人进入那种事情和我一样,然后还有很多次要解释。可以用数学来解释,然后Isabelle / HOL语法在数学上的含义细节,比如我对"tag community"下面的评论。)

我说上面是因为,就个人而言,当我提出一个问题时,我开始假设我不会得到答案,如果一个人不得不多思考,比方说,15分钟。不,做那5分钟。

如果我得到有用的信息,可以给我一些见解,那么我接受答案。如果我得到正确的信息非常重要,我不会接受答案。对于数学问题,总有比人们可以解释的问题更多的问题,所以一般情况下,你只能期望指向正确的方向。

你没有要求我的8段意见,但我不仅仅是和你说话。正如我所看到的,人们试图在Isabelle / HOL中学习数学的问题是一个大问题。我们不能说,&#34;哦,你需要看看Topology in Isabelle/HOL, by James Munkres。在法新社上有Topology之类的东西,但这与一本体面的教科书或专着相差甚远。

如果最终成为我应该做的事情,我可以删除这个答案或答案的这一部分。