我试图表达一个函数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
在作为假设出现时更容易使用吗?
答案 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)