用计算机证明数学公式,用计算机程序验证数学证明合法性的方法

本文介绍了一种基于一阶逻辑的计算机化语言,用于严格表达和快速验证数学证明的合法性,旨在解决现有数学证明复杂性和验证困难的问题。通过上下文无关语法定义常量、变量、函词和谓词,以及推导规则,该语言允许计算机高效判断证明的正确性。
摘要由CSDN通过智能技术生成

用计算机程序验证数学证明合法性的方法

【技术领域】

[0001 ]本发明涉及计算机语言,数学证明,使用计算机程序对数学证明合法性的验证。

【背景技术】

[0002]目前,数学证明日益复杂,导致要严格的对一个数学证明的合法性进行验证非常困难,一些数学证明的验证需要多个数学家用长达数月的时间进行验证,才能验证证明的正确性;数学公式采用图形化的方式描述,使得数学证明的验证非常困难,数学证明的表达也不严格;数学没有一个完全形式化的,表达能力足够的,对数学家足够直观的,能使用计算机进行分析的计算机化的数学语言。

【发明内容】

[0003]本发明的目的是解决当前数学证明的不完全严格性,不利于使用计算机进行分析的弊端;本发明提出一种包含一阶逻辑的计算机化的语言,使得数学证明能用这种语言表达,用计算机迅速的判断出证明的合法性。

[0004]本发明的目是这样实现的:先按照一阶逻辑的形式化定义,用上下文无关语法明确定义构建常量、变量,声明函词、声明谓词、定义函词、定义谓词,构成合式公式、推理的语法、引入公理的语法;然后定义了什么是合法的证明,然后通过编译器来检验证明是否合法。

[0005]依据以上语法,定义一个包含一阶逻辑的计算机语言,把这个语言称为a语言,a语言的语法定义如下。

[0006]a语言使用Unicode字符集,包含目前常用的数学符号,也包含目前世界上大多数国家的语言。

[0007]a语言使用“const regex;”来声明常量,regex是一个正则表达式,regex中不能包含分号,表不与regex匹配的字符串都是常量。

[0008]a语言中的变量用命名字符串来表示,变量一般不用事先声明,常量和已经是其他类型的名称的字符串不是变量名,命名字符串不能以数字开头,命名字符串是不包含小括号、空格、分号、逗号等特殊字符的字符串。

[0009]a语言使用“op digit, string;”来声明左缀函词,digit是一个数字,string是一个命名字符串。

[0010]a语言使用“mid string;”来声明中缀函词,string是一个命名字符串,表示要声明的函词的元数;中缀函词都是二元的,中缀函词都是左结合的;如“mid +;”声明加法函

Τ.κ| ο

[0011]a语言使用“pair digit, stringl, stringl来声明配对函词,digit是一个数字,表示要声明的函词的元数;stringl和string2是一个命名字符串;如我们可以使用“pair 2,〈,>;”来声明集合论中常用的有序对〈X,y>函词。

[0012I a语言使用“pred digit, string;”来声明左缀谓词,digit是一个数字,表示要声明的谓词的元数;S tr i ng是一个命名字符串。

[0013]a语言使用“relat1n string;”来声明中缀谓词,string是一个命名字符串;中缀谓词都是二元的,中缀谓词都是左结合的。

[0014]声明的函词都是函词,且只有声明过的函词才是函词;声明的谓词都是谓词,且只有声明过的谓词才是谓词。

[0015]按下面方法递归构成项:如果χ1、χ2、...χη,是项,fn是η元左缀函词,则fn(xl, x2,???xn)是项,xl,x2是项,op是中缀函词,贝Ij xl op x2是项,如果left ,right是η元配对函词,则left xl, χ2,…xn right是项,如果χ是项,则(χ)是项,常量和变量是项。

[0016]按下面方法递归构成原子公式:如果χ?,χ2...χη,是项,ρη是η元左缀谓词,op是中缀谓词,则pn(xl, x2, "in)是原子公式,xl op x2是原子公式,xl = x2是原子公式。

[0017]按下面方法递归构成公式:原子公式是公式,如果f是公式,χ是变量,则(f)、xf、xf、xf、π f是公式,是全称量词,是存在量词,是存在唯一量词;如f I和f 2是公式,则flf2、flA f2、flV f2、fl ^ f2是公式。

[0018]按下面方法构成公式序列:fl、f2、…fn是公式,n>=0,则“fl,f2,…色”是公式序列。

[0019]按下面构成推导:S1、S2是公式序列,则SIhS2是推导,SI # S2是推导;SI卜S2是表示SI中的公式都成立,则可以推导出S2中最少有一个成立;SI # S2表示SI # S2和S2 # S3同时成立;如果T是推导,N是命名字符串,则N’ T是推导,这里的N称为推导的标号,例如:“rl’ χ nx^d h ny^d; ”是推导,rl’的作用是给T 一个临时标号;如果T是推导,NI,Ν2...Νη是标号,或者推导名,或者推导,或者形如NUMBER’,其中NUMBER是正整数,则“...Ν1,Ν2...Νη: Τ”是推导,这里NI,Ν2...Νη的作用是一个提示,表示是从NI,Ν2...Νη得到的Τ,形如的服]|^1?’字符串,如1’表示上一个推导,2’表示上上个推导,“:附』2"_他:”称为推导的说明,推导去掉标号和说明后的剩余部分叫做有效部分;推导的说明部分给阅读证明的人和检查证明的计算机提示,本推导是怎么推理来的,能使计算机更快的检查证明是否合法,也能避免计算机程序找不到当前推导的前提的情况出现。。

[0020]按下面方法给推导命名:S是推导,“name sname: S;”给推导命名,sname是一个命名字符串,是推导的名称,名称后必须跟冒号。

[0021 ] 按下面方法构成导入公理:SI推导或推导名,则“ax1m SI;”是公理导入规则,公理导入规则“import SI;”表示推导SI成为了公理,SI不能包含自由变量。

[0022]可以按下面方法对左缀函词定义:如果11^2-^,111+1是变量,5是公式序列,?是公式,3的所有公式的自由变量包含在11,12"111,111+1中,S[~xlx2xn xn+1 F已证,贝Ijdefine funct1n(xl,χ2...χη) S 卜 xn+1 F定义了函词funct1n,funct1n 是一个声明过的η元左缀函词。

[0023]可以按下面方法对配对函词定义:如果11^2-^,111+1是变量,5是公式序列,?是公式,S的所有公式的自由变量包含在χ?,χ2...χη,xn+1中,S[~xlx2xn xn+1 F已证,贝Ijdefine R xl,x2…xn L S |- xn+1 F定义了配对函词R和L,R和L是声明过的配对η元函

Τ.κ| ο

[0024]可以按下面方法对中缀函词定义:如果xl,χ2,χ3是变量,S是公式序列,F是公式,S的所有公式的自由变量包含在xl,χ2,χ3中,Shxlx2 x3 F已证,则define xl M x2 Sh x3 F定义了函词M,M是声明过的中缀函词。

[0025]可以按下面方法对左缀函词定义:如果χ?,χ2...χη是变量,f I是项,f I中的变量包含在 xl,χ2...χη 中,则 define funct1n(xl,χ2...χη) fl 定义了函词 funct1n,funct1n 是一个声明过的η元左缀函词。

[0026]可以按下面方法对配对函词定义:如果χ I,χ2是变量,fl是项,fl中的变量包含在xl,x2…xn中,贝Ijdefine R xl,x2…xn L fl定义了配对函词R和L,R和L是声明过的配对η元函词。

[0027]可以按下面方法对中缀函词定义:如果xl,χ2是变量,fl是项,fl的变量包含在xl,x2中,贝Ij define xl M x2 fl定义了函词M,M是声明过的中缀函词。

[0028]可以按下面方法对左缀谓词定义:如果χ1、χ2、...、χη是变量,fl是公式,fl中的自由变量包含在 xl,x2,…,xn 中,则 define predicate (xl,x2,…,xn) f l(xl,x2,…,xn)定义了谓词predicate ,predicate是一个声明过的n元左缀谓词。

[0029]可以按下面方法对中缀谓词定义:如果xl、x2是变量,fl是公式,fl中的变量包含在xl,x2中,贝Ijdefine xl R x2 fl(xl,x2)定义了谓词R,R是声明过的中缀谓词。

[0030]a语言的一串推导Τ1、Τ2、...Τη,如果在Tn后添加字符“”,则构成一个证明,Tn成为被证明的推导。

[0031]上面是a语言的语法定义,下面说明什么证明是合法的,由一串推导Τ1、Τ2、…Tn构成的证明,如果符合以下规则,则证明是合法的。

[0032]关于自由变量和可代入的说明:公式为tA、tA或者tA,称A为变量t的辖域;t在公式B中的出现,如果是在t的辖域中,则称为约束出现,否则称为自由出现;如果一个变量t在B中的所有出现都是自由出现,则称t在B中自由;如果一个变量s的所有出现都不是在t的辖域里,则称s在B中可替换t。

[0033]在下面关于合法证明规则的说明中,A、B、C、D指示公式,Γ、Δ、Π、Σ指示公式序列,也叫做上下文;x、y、s、t指示变量;m,n指示项;A[t]指示一个公式A,在其中变量t在公式A中自由;A[s/t]指示在A中s可代入t,并且把在A[t]中的t的所有出现代换为s的公式。

[0034]对一个证明是否合法,采用下面方法判断。

[0035]a语言的一串推导Τ1、Τ2、...Τη;如果对任意的Tz ζ<=η,Τζ满足如下的条件:

Tz的有效部分是公理;

或Tz的有效部分是以下等值逻辑公理:

1:Α 朴 Α,

2:Α 卄 π -\Α,

3:A^B 卄 nAVB,

4: π (AVB)卄 ~|ΑΛπΒ,

5: (A^B) Λ (B^A)朴 Α?Β,

6:Α-Β 朴(ΠΑ) - (ΠΒ),

7:Α?Β 卄 Β?Α,

8:AVB 卄 BVA,

9:(AVB)VC 朴 AV(BVC),

10:ΑΛΒ 朴 ΒΛΑ, Il-(AAB)AC 朴 ΑΛ(ΒΛ。),

12:χΑ 卄 ~ιχπΑ,

13:CA (AVB)=(CAA) V (CAB),

14:CV (AAB) = (CVA)A(CVB);

或Tz的有效部分是以下蕴含公理:

1:A h A,

2: |- ~|AVA,

3: xA 卜 xA,

4:xA 卜 A[e/x],

5:A[x] |- eA[e/x];

或对Tz存在Ty; y

l:Ty的有效部分是A # B;Tz的有效部分是C # D,其中D是把C中的A替换为B得到的,并且A # B是逻辑等值公理,

2: Ty的有效部分是Γ Δ ;Tz的有效部分是Γ h A,

3: Ty的有效部分是Γ|~ xA;Tz的有效部分是Γ,A[t/x] AA[y/x]卜t = y,

4: Ty的有效部分是Γ h B;Tz的有效部分是Γ h A—B,

5:Ty的有效部分是Γ,Ah B;Tz的有效部分是Γ,ΠΑ,

6:Ty的有效部分是Γ ,A h Δ ;Tz的有效部分是Γ ,ΑΛΒ卜Δ,

7: Ty的有效部分是Γ ,BhA ;Tz的有效部分是Γ ,ΑΛΒ卜Δ,

8: Ty的有效部分是Γ hA,Δ ;Τζ的有效部分是Γ hAVB,Δ,

9: Ty的有效部分是Γ hB,Δ ;Tz的有效部分是Γ hAVB,Δ,

10:Ty的有效部分是r hA,Δ ;Tz的有效部分是Γ,nAh A ,

11: Ty的有效部分是Γ , Ah A ;Tz的有效部分是Γ卜ΠΑ, Δ ,

12: Ty的有效部分是Γ,A[t] h A ;Tz的有效部分是Γ,xA[x/t

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值