我如何证明具有具有示意图变量的假设的界变量的子目标?

发布于 2025-02-12 09:24:18 字数 725 浏览 1 评论 0原文

我是伊莎贝尔菜鸟。我有一个sublocale,它给我带有绑定变量的子目标。子目标是我在其他某些地区内拥有的假设的确切副本。当我实例化它们时,它们只能使用自由变量来完成。我如何解决这个问题?

这里给出的是我的子目标

 1. ⋀n. plus n zero = n
 2. ⋀n m. plus n (suc m) = suc (plus n m)
 3. ⋀n. times n zero = zero
 4. ⋀n m. times n (suc m) = plus (times n m) n
 5. ⋀x. (zero = zero ∨ (∃m. suc m = zero)) ∧
         (x = zero ∨ (∃m. suc m = x) ⟶
          suc x = zero ∨ (∃m. suc m = suc x)) ⟶
         (∀x. x = zero ∨ (∃m. suc m = x))

,我需要使用


locale th2 = th1 +
  fixes 
    plus :: "'a ⇒ 'a ⇒ 'a"
  assumes
     arith_1: "plus n zero = n"
    and plus_suc: "plus n (suc m) = suc ( plus n m)"

对假设的任何引用的任何假设中的一个(仅几个),最终具有示意性变量,我只能用自由变量替换它们。我该如何处理这个问题? 任何帮助都非常感谢

I am an isabelle noob. I have a sublocale that gives me subgoals that have bound variables. The subgoals are exact copies of assumptions I have inside some other locales. When I instantiate them, they can only be done with free variables. How do I work around this issue?

Given here are my subgoals

 1. ⋀n. plus n zero = n
 2. ⋀n m. plus n (suc m) = suc (plus n m)
 3. ⋀n. times n zero = zero
 4. ⋀n m. times n (suc m) = plus (times n m) n
 5. ⋀x. (zero = zero ∨ (∃m. suc m = zero)) ∧
         (x = zero ∨ (∃m. suc m = x) ⟶
          suc x = zero ∨ (∃m. suc m = suc x)) ⟶
         (∀x. x = zero ∨ (∃m. suc m = x))

Here is an (just a few) of the assumptions I will need to use


locale th2 = th1 +
  fixes 
    plus :: "'a ⇒ 'a ⇒ 'a"
  assumes
     arith_1: "plus n zero = n"
    and plus_suc: "plus n (suc m) = suc ( plus n m)"

Any reference to the assumptions ends up having schematic variables and I can only replace them with free variables. How do I deal with the issue?
Any help is widely appreciate

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

无名指的心愿 2025-02-19 09:24:18

您的环境定义并不意味着您认为它的作用。

在您的定义中:

  assumes
     arith_1: "plus n zero = n"
    and plus_suc: "plus n (suc m) = suc ( plus n m)"

表示nm已固定在整个语言环境中。您真正想要的是:

  assumes
     arith_1: "⋀n. plus n zero = n"
    and plus_suc: "⋀n m. plus n (suc m) = suc ( plus n m)"

起初这似乎有些奇怪,因为它与定理的行为相同,但不是最自然的行为。

Your locale definition does not mean what you think it does.

In your definition:

  assumes
     arith_1: "plus n zero = n"
    and plus_suc: "plus n (suc m) = suc ( plus n m)"

means that n and m are fixed in the entire locale. What you really want is:

  assumes
     arith_1: "⋀n. plus n zero = n"
    and plus_suc: "⋀n m. plus n (suc m) = suc ( plus n m)"

This seems a bit strange at first, because it is the same behavior as for the theorems, but not the most natural one.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文