Mathematics for computer science-Patterns of Proof

2、证明模式(Patterns of Proof)

2.1、公理法(The Axiomatic Method)

建立数学真理的标准程序是由公元前300年在埃及亚历山大里亚工作的数学家欧几里得发明的。他的想法是从五个基于直观经验且不可否认的几何假设开始。例如,“两点确定一条直线”就是其中一个假设,类似这种简洁并不可否认为真的命题被称作公理。

从公理出发,欧几里得通过给出相应的证明确定了很多额外命题的真伪。证明是从公理和已被证明的命题出发,并以提出问题的命题作为结论的一系列逻辑推理过程。你可能在高中几何课上写过很多证明,在这本书中,你也会见到很多。

对于已经被证明的命题,我们有几种不同的术语来表征其在更为广泛领域中的作用:

  • 重要的命题被称作定理(theorem)。

  • 引理(lemma)是用来证明后续命题的一个初始命题。

  • 推论(corollary)是由定理或引理经过少量逻辑推理步骤得到的命题。

以上定义并不十分精确,实际上,又是一个好的引理往往会比它欲证明的定理更为有用。

欧几里得的公理-证明方法现在被称作公理法(axiomatic method),是当今数学的基础。实际上,少数几个公理,统称为ZFC(包含选择公理的策梅洛弗兰克尔集合论),加上几个逻辑推理规则,足以推导出所有的数学。

2.1.1、我们的公理

在学习和证明数学基础中,ZFC公理起着很重要的作用,但是出于应用的目的考虑,它们又显得太过于原始。利用ZFC证明定理就像利用二进制编码进行编程而不是一门完善的程序语言。例如,利用ZFC证明“2+2=4”需要超过20000步的逻辑推导。因此我们会选取一些高中就接触过的公理作为我们的基础。

这可以让我们很快的入门,但是你可能也会对这套规范并不精确的公理系统感到困惑。比如在一个证明中,你可能会想知道“对于这个事实,我必须证明它还是说可以把它作为一个公理来使用?”你可以向他人寻求指导,但回答往往并不绝对,因为你得考虑到证明过程你所涉及的相关假设,也不要通过把所有要证明的命题定义为公理来逃避作业和考试。

2.1.2、逻辑推论

逻辑推论(推理规则)是被用来指明如何利用已被证明的命题来证明新的命题

“如果P且P Q是真,则Q为真”,这条推理规则被称作肯定前件(假言推理)。也被写作:

Rule 2.1.1(假言推理)

P,PQQ

横线上的是前提(前件),横线下的是结论(后件)。当前提得到证明时,我们可以得到结论也得到证明的结论。

推理规则的关键是必须合理健全的:使前提为真的所有真值分配都必须能保证结论为真。所有当我们以一个正确的前提开始,应用一个合理且正确的推理规则,那么我们所证明的任何结论都为真。

PQ 的真值表可以用来说明为什么假言推理是合理健全的,因为对于 P PQ都为真,且结论 Q 为真只存在一种情况

P Q PQ F F T F T T T F F T T T

如下是一些常用的推理规则:

Rule 2.1.2(前提三段论)

PQQRPR

Rule 2.1.3(拒取式)

PQNOT(Q)NOT(P)

Rule 2.1.4

NOT(P)NOT(Q)QP

如下推理并不是健全的

Non-Rule

NOT(P)NOT(Q)PQ

因为当命题 P 为真,且命题Q为假时;可知,前件为真但是结论为假。

一个命题推理规则合理健全的标准为其前件包含所有条件的AND蕴含其结论为真。

就公理而言,我们不会过于拘泥与这一系列的推理规则。证明中的每一步应该是简洁明了且符合逻辑的;并且在证明中应说明哪一个已被证明的事实被用来推导出新的结论。

2.1.3、证明模板

原则上一个证明可以是由公理或者已证明命题来推导问题中提到的命题的任何一系列逻辑推理步骤,这种构造证明过程的自由看起来十分有效,那么我们到底该如何开始进行一个证明呢?

好消息是,许多证明都遵循与少数几个证明的标准模板。当然每一个证明有着自己的细节,但是证明模板至少提供了一个证明大纲。在这一章接下来的几节中,我们会提到一些标准模板及其核心思想,以及常见的问题并给出一些示例。这些模板一起讨论,有的可以给你一个大纲,有的则可以提供给你相关的细节。我们会在第三章讨论其他更为复杂的证明技巧。

以下内容会具体到你在纸上应该写下什么,当然你可以用自己的方式来进行表述,我们只是提供一些可以用来描述的方法。

2.2、分类证明(Proof by Cases)

将复杂的证明进行划分,并分别对划分的不同情况进行证明是一个很有效的策略。实际上在前面我们利用真值表来判断某些命题为真还是为假是就隐式地运用到了这个策略。
。。。。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
后台采用apache服务器下的cgi处理c语言做微信小程序后台逻辑的脚本映射。PC端的服务器和客户端都是基于c语言写的。采用mysql数据库进行用户数据和聊天记录的存储。.zip C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语和数据结构,可以为编程学习和实践打下坚实的基础。
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语和数据结构,可以为编程学习和实践打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值