proof

未能优化任何待定目标

我试图在 Isabelle 中证明一个定理,但我被困在这一步: theorem exists_prime_factor: " (n > Suc 0) ⟶ (∃xs::nat list. prod_list xs = n ∧ all_prime xs)" proof (induct n rule: less_induct) case (less k) assume HI: "... »

括号对的递归算法

我正在尝试回答以下问题:“实施一种算法来打印所有有效(即正确打开和关闭)的 n 对括号组合。” 答案说:“我们的第一个想法可能是应用递归方法,通过在 f(n - 1) 中添加一对括号来构建 f(n) 的解决方案。我们可以通过插入一个每个现有的括号内都有一对括号,以及字符串开头的一个。" 我很难理解我们如何保证在每对现有的括号中插入一对括号,以及在字符串的开头插入一个括号,将创建所有可能的解决方... »

如何找到循环不变量并证明正确性?

int i, temp; a is an array of integers [1...100] i = 1; while i < 100 if a[i] > a[i+1] temp = a[i] a[i] = a[i+1] a[i+1] = temp i = i+1 我无法理解如何找到循环不变量并为它... »

循环不变性和算法的证明

如何获得循环不变量并为以下算法证明它。 power(x,y): z = 1 m = 0 while m < y: z = z*x m = m+1 return z ... »

Theorem Prover:如何优化包含“无用规则 AND”的后向证明搜索

快速回顾: 推理规则=结论+规则+前提 证明树 = 结论 + 规则 + 子树 向后证明搜索:给定一个输入目标,尝试通过自下而上的方式应用推理规则来构建证明树(例如,目标是最终结论,应用规则后会生成一个新的列表场所内的子目标) 问题: 给定一个输入目标(例如A AND B,C),假设我们首先对A AND B应用规则AND,然后得到两个新的子目标,第一个是A,C,第二个是B,C。 问题是A 和... »

证明展开的聚变定律

我正在阅读 Jeremy Gibbons 在 origami programming 上的文章,但在练习 3.7 中遇到了困难,该练习要求读者证明列表展开的融合定律: unfoldL p f g . h = unfoldL p' f' g' 如果 p . h = p' f . h = f' g . h = h . g' 函数unfoldL,用于列表展开,定义如下: unf... »

(log n)^k = O(n)?对于 k 大于或等于 1

(log n)^k = O(n)? For k greater or equal to 1. 我的教授在课堂上向我们展示了这个陈述,但是我不确定时间复杂度为 O(n) 的函数意味着什么。即使像n^2 = O(n^2) 这样的东西,函数 f(x) 怎么会有运行时复杂度? 至于语句如何等于O(n)而不是O((logn)^k)? ... »

如何证明偏序归纳谓词的可判定性?

上下文 我试图在 Coq 中用关系 le 定义偏序 A ≤ B ≤ C,并证明它是可判定的:forall x y, {le x y} + {~le x y}。 我通过等效的布尔函数leb 成功地做到了这一点,但找不到直接证明它的方法(或该母校的le_antisym)。我陷入了以下情况: 1 subgoal H : le C A ________________________________... »

如何为这段代码找到最强的循环不变量?

我正在尝试为以下 while 循环提出一个循环不变量,但遇到了一些麻烦。 确定循环不变量后,我想整理一个证明表并显示所有中间断言 ASSERT(k >= 0) {i = 1; sum = 1; while (i <= k) { sum = sum + 2*i + 1; i = i+1; } //end-while } ASSERT( sum == (k+... »

面向未来的 defun - 如果可用,则使用,如果没有,则定义等效

我现在使用的是 emacs 24.3,所以hash-table-values 不可用。所以我想写这个函数,但前提是它不存在。这样,我的代码现在就可以工作了,当我切换到 emacs 24.4 时,它将使用默认函数。 在 PHP 中,我会写如下内容: if (!function_exists('hash_table_values')) { function hash_table_value... »

命题逻辑形式证明

我正在尝试正式证明以下等式,作为逻辑考试之前的练习。但是,我在制定这些步骤时遇到了一些困难。这是我正在使用的规则; A ∧ A ≡ A, A ∨ A ≡ A idempotence A ∧ B ≡ B ∧ A, A ∨ B ≡ B ∨ A commutativity A ∧ (B ∧ C ) ≡ (A ∧ B) ∧ C , A ∨ (B ∨ C ) ≡ (A ∨ B) ∨ C associat... »

Coq - 如何证明 eqb_neq?

我正在努力证明eqb_neq: Theorem eqb_neq : forall x y : nat, x =? y = false <-> x <> y. 这是我目前的证明状态: 在证明过程中,我到达了最后一步,我只需要证明附加辅助定理: Theorem eqb_false_helper : forall n m : nat, n <>... »

显示递归函数正确性的通用证明策略?

我想知道是否存在任何证明算法正确性的规则/方案?例如,我们在自然数上定义了一个函数 $F$,并定义如下: function F(n,k) begin if k=0 then return 1 else if (n mod 2 = 0) and (k mod 2 = 1) then return 0 else return F(n div 2, k div 2); end; 其中 ... »

丑数大 O 算法(蛮力法)

问题链接:Ugly Numbers 你如何找到丑数的蛮力(简单方法)解决方案的大 O。 我看到这部分代码: /* Function to check if a number is ugly or not */ int isUgly(int no) { no = maxDivide(no, 2); no = maxDivide(no, 3); no = maxDiv... »

自行车与人的最佳配对——寻求算法证明

所以这是一个算法问题。问题陈述如下: 给定自行车和人在 2D 网格(或显示每辆自行车和人的位置的 2D 网格)上的两个坐标列表(或每个长度 n),计算自行车和人的最佳配对,以便曼哈顿总距离所有对的最小化。保证每个人到所有自行车的距离不会相同,并且适用于每辆自行车。 this question 中有一个解决方案,它指出我们可以将所有距离从低到高排序,如果两者都未配对,则将自行车与人配对。复杂度显然... »

在 Coq 中证明一个假设是对另一个假设的否定

例如我有这两个假设(一个是对另一个的否定) H : forall e : R, e > 0 -> exists p : X, B e x p -> ~ F p H0 : exists e : R, e > 0 -> forall p : X, B e x p -> F p 目标 False 如何证明? ... »

阶乘数系统算法的形式证明

我想出了一个算法,用于在阶乘数字系统中找到给定数字的表示。我很难以正式的方式证明它的正确性。这是Python中的代码(注意k!= s): def fns(n): s = 1 k = 1 while s * (k + 1) <= n: k = k + 1 s = s * k while k >= 1: pri... »

一个红色节点可以在一棵红黑树中只有 1 个黑色子节点吗?

红黑树的规则: 每个节点不是红色就是黑色。 根是黑色的。 每片叶子 (NIL) 都是黑色的。 如果一个节点是红色的,那么它的两个子节点都是黑色的。 对于每个节点,从节点到后代叶子的所有简单路径都包含相同数量的黑色节点。 规则 4 提到红色节点需要两个黑色孩子,但如果一开始只有一个孩子怎么办?是否有论据可以证明或反驳这一点? ... »