学一些coq指令
f_equal用法,消去等号两边函数的相同部分
举例:
goal : x + (y + (-y)) + z = x + z
此时f_equal后,目标变为
goal : x + (y + (-y)) = x
rewrite !用法,相当于repeat rewrite
eg: rewrite !plus_Sn_m 相当于 repeat rewrite plus_Sn_m
progress (tac)
如果tac生效就继续,不成功就失败
eg: repeat progess (try rewrite lemmax).
rename
将变量重命名
eg: rename n into m.
change 将假设的自由变元改一下
eg: change (forall b, P b) in H0.
SearchAbout x 搜所有关于x的命题
eg: SearchAbout plus.
specialize (H a)对H里的forall x,将变量x实例化为a
P->Q的证明 实际上就是 P的证明到Q的证明的一个函数
Goal : forall P, ~ ~ P.
Proof.
intros.
exact (fun H0: ~ P => H0 H).
如果编译不通过,可以将上一个.v的代码写成下面这个形式粘贴过来
Module X.
...
End X.
End X.
Import X
Class Group : Type := {
A: Type
e: A
mul : A -> A -> A
inv : A -> A
assoc : forall x y z: A, mul (mul (x y)) z = mul x (mul y z)
left_unit : forall (x: A), mul (inv x) x = e
left_inv : forall (x: A), mul (inv x) x = e
}.
(*将Group的元素转化为一个类型*)
Coersion A : Group >-> Sortclass.
Theorem fact1 : forall (G: Group) (x: G) x + (- x) = 0.
revert m H 将假设里的H : P m 移至目标 变为 forall m, P m ->
同时归纳定义两种类型
Inductive A : Type :=
| a1 : A
| a2 : B -> A
with B : Type :=
| b1 : B
| b2 : A -> B -> B.

浙公网安备 33010602011771号