我只想用命题逻辑(如notI、notE、impI、impE)中的基本自然演绎规则(ND)将这一证明转化为ab练习(供我学习)。等)。
我可以很容易地在应用脚本中做到这一点:
lemma very_simple0: "A ⟶ A ∨ B"
apply (rule impI) (* A ⟹ A ∨ B *)
thm disjI1 (* ?P ⟹ ?P ∨ ?Q *)
apply (rule disjI1) (* A ⟹ A *)
by assumption
但我试图证明Isar失败了:
lemma very_simple1: "A ⟶ A ∨ B"
我在研究半环,为了证明某些结构是实际的半环,我必须证明它们尊重某些性质,比如结合性。
对于半环(Bool, \/, /\, False, True),我可以证明以下语句吗?
forall a b c : Prop, (a \/ b \/ c) = ((a \/ b) \/ c)
我的问题是表达的两个成员之间的平等。我更喜欢使用<->而不是=,但是我对半环的定义只使用=。
还可以证明吗?还是我必须将我的半环的定义修改为“基于命题逻辑的”半环的特殊情况?
假设我们有目标
a + b + c + d = a + c + b + d
a, b, c, d: nat与Arith中的引理plus_comm
plus_comm
: forall n m : nat, n + m = m + n
这是有可能的
rewrite plus_comm.获得d + (a + b + c) = a + c + b + d和
rewrite (plus_comm a b).获得b + a + c + d = a + c + b + d。
但是执行rewrite (plus_comm b c)或rewrite (plus_comm c d)会引
我试图生成一个特定程序的最弱前提条件,其中总共存在44个临时变量。假设2个临时变量的值。所有其他变量都是从这两个变量派生出来的。此外,还有两个输入变量。下面是我的代码片段。
void main(int err1_10, int err2_10){
int x_mkfirm1,x_mkfirm2;
int dist_00=0, dist_10=5, a00=0, a01=0, a10=-1, a11=0, b00=1,b10=0, u=2;
int K_00=-1, K_01=1, x0_00=0,x0_10=3;
int x1_00,x2_00,x3_00,..
我正在测试Coq重写策略,模块结合性和交换性(aac_tactics)。下面的示例适用于整数(Z),但是当整数被理性主义(Q)替换时会产生错误。
Require Import ZArith.
Import Instances.Z.
Goal (forall x:Z, x + (-x) = 0)
-> forall a b c:Z, a + b + c + (-(c+a)) = b.
intros H ? ? ?.
aac_rewrite H.
当将Require Import ZArith.替换为Require Import QArith.等时,会出现一个错误:
错误:战术失
在试图通过归纳法证明关于函数的连续传递形式的引理时,我遇到了一个自由类型变量的问题。在我的归纳假设中,延续是一个图式变量,但它的类型涉及一个自由类型变量。因此,当我尝试应用i.h时,Isabelle无法将类型变量与具体类型统一起来。我想出了一个极小的例子:
fun add_k :: "nat ⇒ nat ⇒ (nat ⇒ 'a) ⇒ 'a" where
"add_k 0 m k = k m" |
"add_k (Suc n) m k = add_k n m (λn'. k (Suc n'))"
lemma add
我试图证明以下含义:
lemma Max_lemma:
fixes s::nat and S :: "nat set"
shows " ((Max S) = (0::nat)) ⟹ (∀ s ∈ S . (s = 0))"
sorry
(*
Note: I added additional parentheses just to be sure.*)
我认为这将是相当微不足道的,这就是为什么我试图得到一个证明使用大锤。不幸的是,这次失败了。或者我的定义是错误的,或者有一些困难的自动证明涉及大运算符,如Max。
我试图通过查看它们的定义以及我能找到的
我试图用一元表示法来模拟自然数(O,(S O),(S (S O)),.)并证明了加法的交换性。以下是我的尝试:
; a NATURAL is 'O or a list ('S n') where n' is a NATURAL
(defun naturalp (n)
(cond ((equal n 'O) t)
(t (and (true-listp n)
(equal (length n) 2)
(equal (first n) 'S)
我在COQ中是新的,我试图证明反例定理。
Variable A B:Prop.
Hypothesis R1: ~A->B.
Hypothesis R2: ~B.
Theorem ej: A.
当我们研究逻辑学时,我们学习了RAA技术,但是在COQ中,这并没有增加一个新的假设,现在我们被困住了。
所以我们试着:
Proof.
tauto.
Show Proof.
下面的输出,但是我们不知道它意味着什么。
(NNPP A
(fun H : ~ A => let H0 : B := R1 H in let H1 : False := R2 H0 in False_ind Fal
我有一组符号变量:
int a, b, c, d, e;
受若干公理约束的一组未知函数:
f1(a, b) = f2(c, b)
f1(d, e) = f1(e, d)
f3(b, c, e) = f1(b, e)
c = f1(a, b)
b = d
这里的函数f1,f2,f3都是未知的,但都是固定的。因此,这不是uninterpreted functions的理论。
我想证明以下说法是正确的:
c = f2(f1(a, b), b)
f3(d, f2(c, b), e) = f1(e, b)
使用基于上述公理等式的替换。
是否有一种理论,对于这样的定理,只会用提供的等式来试图结合答案,而不