coq 的一点体会

article/2025/10/21 13:14:48

用coq做了一个作业,所以现在会一点点证明了。不过这只是coq中的很小很小的一部分,现在把我的理解写出来。

首先隆重介绍命题逻辑的5种基本连接词:

  • ~ 非
  • /\ 合取
  • \/ 析取
  • -> 蕴含
  • <-> 等价

每种连接都有两种基本规则:

  • introduction rule    引入规则
  • elimination rule   删除规则

这些规则是用来证明一个命题是否正确的根本。下面来分别介绍之,因为我的学术水平十分一般,所以接下来打算用最通俗的语言来解释~

1. 蕴含的引入规则   intros H

1

这么看是挺抽象的,这是一种表达方式。A和B都是公式,上面是前提,下面是结论。这个规则的意思就是,如果┏和A都成立推出B成立,那么┏成立可以推出A->B。

(大概是这么个意思,可能某些术语不对,毕竟学数理逻辑是三年前的事情了= =)。。

在coq中,是根据结果来一步步往上推,然后用前提条件将其消去。也就是说,coq中使用引入规则是将横线下的部分转换成横线上的部分来证明。

比如说当前状态是要证B。coq的显示为:

……

=================

A->B

我输入coq> intros H.

将获得一个前提A。

……

H :A

=================

B

2. 蕴含的删除规则   apply H

2

这个我就不解释了。。反正就是上面前提下面结论,coq里面倒着用。比如说我有一个前提H:B->A,可以用它来把要证的结论A替换成B。

输入coq>apply H.

下面来个综合示例。从PPT里偷来的。

coq输入:

Section Propositional_Logic.
Variables P Q R : Prop.
Lemma imp_dist : (P ->(Q -> R)) -> (P -> Q) -> P -> R.
Proof.

显示如下:

1 subgoal
P : Prop
Q : Prop
R : Prop
============================
(P –> Q –> R) –> (P –> Q) –> P –> R

输入coq>intros H H0 p.

显示如下,可以看到式子被分解了:

1 subgoal:
P : Prop
Q : Prop
R : Prop
H : P –>Q –> R
H0 : P –> Q
p : P
============================
R

输入coq>apply H.

显示如下:

2 subgoals:
P : Prop
Q : Prop
R : Prop
H : P -> Q -> R
H0 : P -> Q
p : P
============================
P
subgoal 2 is:
Q

coq>assumption.

这里解释一下,assumption表示要使用前提中为真的命题,p:P表示P已经为真了,我们可以直接拿来用。

然后显示如下:

1 subgoal:
P : Prop
Q : Prop
R : Prop
T : Prop
H : P -> Q -> R
H0 : P -> Q
p : P
============================
Q

继续输入:

coq>apply H0;assumption.

Proof completed

coq>Qed.

这样就算证完了一个命题了。

3. 等价的拆分 split

<->在数理逻辑里都是拆成两部分证明的,先证A->B再证B->A这样。在coq遇到这样的问题也是先拆,要拆结论的话命令是split。因为示例太占空间了,我这里就不显示了。

对于前提中的命题H : A<->B,拆分的方法是destruct H as [H1 H2],这样就可以看到自己获得了两个前提H1 : A->B  H2 : B->A。

这样的方法同样适用于A /\ B,接下来也会介绍。

4. 合取的引入规则 split

3

在coq中用这个命令就是将结论拆成两个分开来证明,因为coq是倒着证的。输入了coq>split.后,显示中的目标会变成2个,A和B都要证。

5. 合取的删除规则 destruct

4

使用destruct指令可以将前提拆分。假设H :A /\ B。那么输入coq>destruct H as [H1 H2]将生成两个新的前提:H1 : A 和 H2 : B。

下面举个例子:

Lemma and_comm : P /\ Q –> Q /\ P.
Proof.
intro H.

1 subgoal
P : Prop
Q : Prop
H : P /\ Q
============================
Q /\ P

destruct H as [H1 H2].

1 subgoal
P : Prop
Q : Prop
H1 : P
H2 : Q
============================
Q /\ P

split.

2 subgoals
P : Prop
Q : Prop
H1 : P
H2 : Q
============================
Q
subgoal 2 is:
P

...

6. 析取的引入规则 left & right


5

对目标结论输入coq>left.能够使目标变为A,同理right变成B。选择其中一个你觉得证起来比较简单的子式吧~

7. 析取的删除规则 destruct

6

如果有前提H : A \/ B,输入coq>destruct H as [H1|H2]将它拆分成两个前提。这个跟前面类似,只是用的是或连接符“|”,就不多说了。

8. 非的引入规则 intros H

非的引入规则是intros H。假设结果是~A。输入coq> intros H.将得到H : A,此时要证的结论是False。

9. 非的删除规则 elim H

非的删除规则用于将目标False替换为A,假如有前提H : ~A的话,反之亦然,只要输入coq>elim H.就行了。接下来就可以证明A了。

命题逻辑我知道的基本就这么多,关于谓词逻辑的,且听下回分解。>_<

本文原创,转载请注明出处:

http://blog.163.com/sara_athena/ 或

http://www.cnblogs.com/luluathena/

转载于:https://www.cnblogs.com/luluathena/archive/2010/08/19/1803065.html


http://chatgpt.dhexx.cn/article/SLinXeY4.shtml

相关文章

形式化方法 | Proof Engineering in Coq——Coq tatics 在命题逻辑证明中的应用

一、Coq的安装与使用 1、Coq简介 Coq是一款交互式证明辅助工具&#xff0c;提供一套证明系统&#xff0c;可以编写证明、检查证明&#xff1b;也提供一套形式化语言&#xff0c;可编写数学算法、定义、定理&#xff1b;它还可以用于程序的正确性证明。 2、Coq的安装 Coq-8.1…

coq学习笔记

coq在设置里把这些都勾选上&#xff0c;写代码会好用很多 Check关键字输出待测类型的&#xff0c;可以输出一个十进制数&#xff0c;但是还是类型的显示罢了 Compute计算定义的函数的输出值 simpl关键字是为了化简的可视化罢了&#xff0c;即显示化简的中间过程&#xff0c;不…

coq使用笔记

Coq 使用笔记 Coq中可分三部分&#xff1a; 1、vernacular&#xff1a;用来处理定义&#xff0c;使用大写字母开头&#xff0c;例如Theorem、Proof、Qed 2、tactics&#xff1a;用作证明过程&#xff0c;以小写字母开头&#xff0c;例如intros、exact 3、Gallina&#xff1a;用…

【coq】函数语言设计 笔记 06 -logic

参考博客&#xff1a;https://www.cnblogs.com/TheFutureIsNow/p/11993851.html Coq中的命题类型语句 Coq是一种类型化语言&#xff0c;这意味着它的世界中的每个合理表达式都有一个相关的类型。逻辑声明也不例外&#xff0c;任何一个可以证明的语句都有一个类型&#xff0c…

离散数学——coq学习笔记(一)

Coq学习笔记&#xff08;一&#xff09; BASICS函数编程枚举类型引例&#xff1a;Days of the week&#xff08;定义一个类型&#xff09; 一些基础语法定义TypeCheck命令多元组ModulesCompute命令定义一个新常量 BOOLEANS布尔表达式的构造相关定义布尔表达式的相关运算律用Exa…

求网络号、子网号、主机号、子网网络地址、子网广播地址

例题&#xff1a;某计算机的IP地址为10.38.51.21&#xff0c;子网掩码为255.255.0.0&#xff0c;写出该计算机的网络号、子网号、主机号以及子网网络地址、子网广播地址。 网络号&#xff1a;10子网号&#xff1a;38主机号&#xff1a;51.21子网网络地址&#xff1a;10.38.0.0子…

根据子网掩码算出 IP 地址 的网络号和主机号

我们如何根据子网掩码算出 IP 地址 的网络号和主机号呢&#xff1f; 举个例子&#xff0c;比如 10.100.122.0/24&#xff0c;后面的/24表示就是 255.255.255.0 子网掩码&#xff0c;255.255.255.0 二进制是「11111111-11111111-11111111-00000000」&#xff0c;大家数数一共多…

关于IP地址、网络号、主机号、子网掩码之间的关系

IP地址类似于我们的身份证号码 国家为了唯一确定我们每个人的身份&#xff0c;会为我们每个人分配一个唯一确定身份的号码&#xff0c;同理&#xff1a; 为了确切地标识Internet&#xff08;互联网&#xff09;中的每一台主机和路由器&#xff0c;TCP/IP建立了一套编址方案&a…

关于IP网络号和主机号的原理

网络号和主机号具体怎么弄出来的? ? ? ? 1、标准分类的ip地址的网络号是&#xff0c; A类是前8位 B类是前16位 C类是前24位 举一个例子 如172.16.10.2&#xff0c;因为172.16.10.2是B类地址&#xff0c;所以172.16所代表的位就是网络号的位&#xff0c;后面10.2代表的…

子网划分以及网络号的计算

目录 一、子网划分的作用 1.计算网络号&#xff0c;通过网络号选择正确的网络设备连接终端设备 2.根据网络的规模&#xff0c;可以对局域网(内网)进行网络地址规划 二、IP地址 1.IP地址的组成部分 2.IP地址的版本 三、IP地址的分类 1.IP地址分类 2.IP地址分类总结思维…

网络号,网络标识,广播地址,有效主机范围计算

网络计算 IP 地址计算网络号&#xff0c;网络标识&#xff0c;有效主机范围IP地址分类 IP 地址 IP地址&#xff1a;网络部分主机部分 网络部分&#xff1a;确定终端是不是在同一网段 主机部分&#xff1a;用来确定终端的容量大小&#xff08;最多可以容纳多少台&#xff09; 同…

网络号、主机号、子网号--例题

已知 IP&#xff1a;195.169.20.50 子网掩码&#xff1a;255.255.255.224 求网络号 子网号 主机号。答&#xff1a; IP为C类&#xff0c;一知道子网掩码值是224 所以网络被划分为8个子网网络号是用将你的IP和子网掩码255.255.255.224的二进制进行逻辑与运算得到转换为十进制为…

计算机网络:根据IP和子网掩码计算网络号

题目感觉有误&#xff0c;但是解题思路是正确的。 已知B类地址的子网掩码为255.255.0.0&#xff0c;假设某B类地址为127.24.36.55&#xff0c;那么它的网络号为&#xff1a;&#xff08;&#xff09; A、127.24.0.0 B、0.0.36.55 C、255.255.36.55 D、127.24.36.55 解题思路&…

网络号和主机号具体计算原理-ipv4篇

来自之前163网易博客&#xff0c;因博客倒闭&#xff0c;放CSDN供 大家学习。 1、标准分类的ip地址的网络号是&#xff0c; A类是前8位 B类是前16位 C类是前24位 举一个例子 如172.16.10.2&#xff0c;因为172.16.10.2是B类地址&#xff0c;所以172.16所代表的位就是网络号的位…

网络号的计算

子网掩码和ip地址结合使用,可区分出一个网络的网络号和主机号. 例如: 有一个c类地址为: 192.9.200.12 默认子网掩码为: 255.255.255.0 ① 将IP地址转化为二进制: 11000000 00001001 11001000 00001100 ② 将子网掩码转换为二进制:11111111 11111111 11111111 00000000 ③ 将子…

计算机网络号的学习

目录 一、子网的划分 1.1子网划分的作用 二、相同网络与不同网络 1、相同网络 2、不同网络 三、IP地址的组成与作用 1、IP地址的组成 2、各组成的作用 四、IPV4地址与IPV6地址 五、IP地址的分类 六、IP地址按用途分类 七、网络号的计算方法 八、网络地址的划分 1…

计算机网络中的子网号和网络号

IP地址是一个32为的二进制数。 IP地址&#xff1d;网络id 主机id 网络号 网络号就是网络id&#xff0c;是某个互联网中子网的地址&#xff0c;通过子网掩码和IP地址按位“与”得到。 如192.9.200.13/24&#xff0c;子网掩码为255.255.255.0&#xff0c;该IP地址的网络号就是1…

认识网络号与子网划分

目录 一、计算机网络号 二、网络号的构成 1.认识网络号 &#xff08;1&#xff09;IP地址 &#xff08;2&#xff09;子网掩码 &#xff12;.IP地址用途分类 &#xff08;&#xff11;&#xff09;私有地址 &#xff08;&#xff12;&#xff09;公有地址 三、网络号的…

IP地址、网络号、主机号、网络地址、子网掩码、网关、192.168.0.1/24是什么意思

IP地址 IP地址通俗上讲&#xff0c;就是台电脑在网络世界的唯一标识&#xff0c;它由32的二进制数组成&#xff0c;也就是4个字节&#xff0c;就像人的身份证一样&#xff0c;它能够唯一标识一台电脑。 IP地址的组成 IP地址网络ID主机ID&#xff0c;同一个网络的IP地址能够公用…

正方形的展开图

记得这个题目是我小学竞赛的最后一个题目&#xff0c;当时这个题目没有做出来 (^_^) 正方形的展开图共有11种。 分下面的4种情况&#xff1a;