表示函数在集合上是常量

时间:2014-09-30 09:57:48

标签: isabelle

我试图表达一个函数f在集合S上是常量,值r我的第一个想法是

f ` S = {r}

但这不起作用,因为S可以为空。所以我目前正在与

合作
f ` S ⊆ {r}

它工作得很好,但我的印象是这仍然不适合标准自动化。特别是,auto将无法实现此目标(删除无关的事实)

 2. ⋀xa. thunks (delete x Γ) ⊆ thunks Γ ⟹
         ae ` thunks Γ ⊆ {up⋅0} ⟹
         xa ∈ thunks (delete x Γ) ⟹
         ae xa = up⋅0

大锤当然没有问题(metis image_eqI singletonD subsetCE),但有一些事情发生。 (一般情况下,似乎与auto的效果不如我预期的那样好。“

有更好的方法来表达这一点,即auto在作为假设出现时更容易使用吗?

1 个答案:

答案 0 :(得分:1)

我没有尝试过,因为我没有任何方便的例子。但您可以尝试以下设置。

definition "const f S r ≡ ∀x ∈ S. f x = r"

这相当于您的定义:

lemma
  "const f S r ⟷ f ` S ⊆ {r}"
  by (auto simp: const_def)

然后采用以下简单规则:

lemma [simp]:
  "const f S r ⟹ x ∈ S ⟹ f x = r"
  by (simp add: const_def)