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

一、Coq的安装与使用

1、Coq简介

        Coq是一款交互式证明辅助工具,提供一套证明系统,可以编写证明、检查证明;也提供一套形式化语言,可编写数学算法、定义、定理;它还可以用于程序的正确性证明。

2、Coq的安装

Coq-8.11.0 安装包【Windows、MacOS】

链接:https://pan.baidu.com/s/1rAjW8D6G5GJI3sQP1JfG7g 
提取码:ects

安装完成之后,Coq自带CoqIde,对于形式化方法课程来说应该是够用了。

【我有尝试使用另外一种IDE:Proof General,但是没有成功,等成功之后再来更新吧,目前就先用CoqIde了hhhh】

3、Warm-up Test

(1)创建一个名为 coq_warm_up.v 的文件,保存如下代码:

【其中 “.v” 是Coq文件的默认后缀】

Inductive day : Type := 
| monday : day 
| tuesday : day 
| wednesday : day 
| thursday : day 
| friday : day 
| saturday : day 
| sunday : day. 

Definition next_weekday (d:day) : day := 
match d with 
| monday => tuesday 
| tuesday => wednesday 
| wednesday => thursday 
| thursday => friday 
| friday => monday 
| saturday => monday 
| sunday => monday 
end.

Eval compute in (next_weekday friday). 
Eval compute in (next_weekday (next_weekday saturday)). 

(2)运行CoqIde,打开上述文件;

(3)单击 Go to end 按钮,会得到如下的输出:

     = monday
     : day
     = tuesday
     : day

此时说明Coq安装成功。

4、Coq功能分区

  • Tool bar 工具栏:提供可执行的基本命令。
  • Script buffers 脚本缓冲区:用于打开和编辑脚本。
  • Goal window 目标窗口:显示待验证目标。
  • Message window 消息窗口

二、Coq Tactics——如果使用Coq进行proof development

在proof development的每个阶段,都有一个要证明的子目标列表。

最初,该列表由所要证明的新定理的本身组成;

应用某些策略之后,目标列表包含该策略生成的子目标,接下来的工作就是分别对这些子目标进行处理。

 

主要包括以下策略:intros, apply, inversion, split, right and left

 

A basic theorem:

Theorem ident body: type.
Proof.
    Tactics
Qed.
  • Theorem - Coq中的一个命令,声明了一个需要证明的新定理;

  • ident - 新定理的名称;

  • body - 新定理的主体;

  • type - 

        forall 新定理中出现的变量名(多个变量用空格隔开):Prop,

            所要证明的新定理.

  • Proof - 标示着证明新定理的开始

  • Tactics - 指导证明的过程,在结论和前提之间提出演绎规则,实现反向推理

  • Qed - 标示着证明新定理的完成

 

1、Implication(蕴含):intros and apply tactic

【蕴含的引入规则:intros】

主要用于拆分所要证明定理中的已知前提和所要证明的结论。【详见下方】

 

【蕴含的删除规则:apply】

【详见下方】

 

第一个栗子:证明定理 P -> P成立

证明代码如下:

Theorem example1: forall P: Prop, 
    P -> P.
Proof.
    intros.
    apply H.
Qed.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值