问题标签 [logical-foundations]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
99 浏览

coq - 如何为构造函数设置隐式参数

玩 nostutter excersizes 我发现了另一种奇怪的行为。这是代码:

展开后的状态是这样的:

当我specialize (H2 eq_refl).在加载其他逻辑基础文件的 IndProp.v 中运行时,它可以工作。不知何故,它明白需要将“1”作为参数。IndProp.v 的标题是这样的:

当我将代码移动到另一个文件“nostutter.v”中时,同样的代码给出了预期的错误:

术语“eq_refl”的类型为“RelationClasses.Reflexive Logic.eq”,而预期的类型为“1 = 1”。

nostutter.v 的标头:

我必须明确添加一个参数eq_reflspecialize (H2 (eq_refl 1)).

我认为这与专业无关。它是什么?怎么修?

0 投票
1 回答
66 浏览

coq - Rev.v le_antisymmetric

我来到了这一点:

输出:

我的计划是使用传递性le

a <= b -> b <= c -> a <= c

并替换 a := a, b := (S b') 和 c := a。

所以我们会得到:

a <= (S b') -> (S b') <= a -> a <= a

我将使用 H1 和 H2 作为所需的 2 个假设并得到 Ha:a <= a。然后对其进行反演,得到构造 this is a = a 的唯一方法。

但是我应该使用什么语法来应用我的 2 个假设的传递性来得到 Ha?

0 投票
1 回答
81 浏览

coq - Rel: le_antisymmetric 理解

来自逻辑基础的 Rel 章节。我得到了我试图理解的 excersize 的解决方案:

我不明白,介绍模式如何[| b' H1]工作?介绍后显示:

第二个子目标:

我知道它相当于破坏,但是什么样的破坏呢?这绝对不是一个简单的destruct b.

我也试图理解使用absurd (S b' <= b')战术背后的逻辑。这是否意味着,如果我们a = S b'在这种情况下证明这一点,就意味着我们在 H1 中重写后,我们得到:a,这是一个普遍错误的陈述(荒谬)?S b'S b' <= b'

0 投票
1 回答
477 浏览

coq - How to define exp for Church Numerals in coq?

I am currently learning coq thanks to the Software Fondation's ebook. I successfully wrote the addition as follow:

But I'm stuck with exp because of the following error:

Since they wrote:

If you hit a "Universe inconsistency" error, try iterating over a different type. Iterating over cnat itself is usually problematic. I tried using the definition of cnat:

But then I have:

I do not ask for a solution, but I'd really like to understand these errors. Thanks for your lights !

0 投票
1 回答
41 浏览

coq - 如何将引理应用于 2 个假设

我们得到这个:

我们还有一个先前证明的定理:

我们知道那(n+m)是偶数而且(n+p)是偶数。如何通过将 ev_sum 应用于 Hnm 和 Hnp 在上下文中创建新假设:

?

0 投票
1 回答
78 浏览

coq - Coq:帮助形式化一个非正式的证明

输出:

现在 n 可以是偶数也可以不是偶数。

  • 如果 n 是偶数,则 m 也是偶数。那么由ev_sum定理 (n+m) 也是偶数。

  • 如果 n 不是偶数,它的形式为 (n' + 1),其中 n' 是偶数。m 也不是偶数,形式为 (m' + 1),其中 m' 是偶数。所以它们的总和等于:

    n + m = n' + 1 + m' + 1 => n + m = (n' + m') + 2。

偶数 ((n' + m') + 2)。在apply ev_SS我们得到偶数 (n' + m') 之后。我们知道 n' 是偶数并且 m' 是偶数,我们apply ev_sum. 这证明了这个定理。

如何在 coq 中编写这个非正式的证明?

0 投票
5 回答
95 浏览

coq - IndProp:证明 Prop 不可证明

任务。

假设我们给 Coq 定义如下:

以下哪个命题是可证明的?

我证明了三分之二。

第三个是不可证明的,因为c3只会增加n,永远不会等于list的头部+1。但是如何正式证明它是不可证明的呢?

更新 1

0 投票
1 回答
35 浏览

coq - 选项的 Ord 类型类实例

在软件基础“QuickChick”的第 4 卷中,我们进行了以下练习:

但是得到一个错误:

它突出了match opt1 with.

  • 也许,我的解决方案非常原始:它只是模式匹配所有可能的情况。有更好的吗?

  • 是什么导致此语法错误?

0 投票
1 回答
323 浏览

coq - Coq:一元到二进制的转换

任务:编写一个将自然数转换为二进制数的函数。

第二个函数给出错误,因为它在结构上不是递归的:

我应该怎么做才能证明它总是终止,因为 q 总是小于 n。

0 投票
1 回答
24 浏览

coq - Quick Chick eqBoolArrowA_correct theorem

从软件基础通过 Quick Chick 课程我陷入了以下定理:

在这里我们得到:

证明true = true -> (eqb f1 f2) = true似乎是不可能的,因为(eqb f1 f2)可能是错误的,在这种情况下,我们进入false = true了空的上下文,这是无法证明的。

这个定理是不正确的还是我遗漏了什么?