99信息:理论与观点信息记录材料2022年12月第23卷第12期0引言编程语言的发展经历了机器语言、汇编语言、高级语言、函数语言、逻辑语言[1]。其中,逻辑编程语言亦被称作第五代编程语言。最早的逻辑语言是列表处理语言LISP(LIStProcessing),其特点是用符号表达式而不是数字进行计算;不足是数值运算能力较弱和数学语义不清晰[2]。后来PROLOG问世,其特点是基于符号逻辑进行运算,通过模式匹配完成计算,语言清晰、可读、简洁[3-4];不足是对规则和目标的表示有严格限制,难以适用于复杂的应用环境[5-7]。具体改进如下:第一,COOL支持面向过程与面向对象,便于应用于生产项目;第二,COOL支持将表达式作为函数声明以及函数返回,同时支持将函数参数嵌入函数名字字符串中;第三,COOL引入了权重机制并通过累计权重法加速推理过程;第四,COOL引入正向函数、逆向函数的概念,以处理逻辑上具有先后顺序约束的问题;第五,通过回溯算法和动态规划算法实现计算机利用正向求解过程推导逆向求解过程;第六,引入预执行步骤,将推理过程从程序的执行过程中分离,提升程序的执行速度。1语法1.1函数函数构成了COOL的推理框架。此节介绍了返回表达式的函数、返回运算值的函数、附加权重的函数、正向函数、逆向函数、函数权重。在COOL中函数由函数声明和函数体两部分组成,表示相加的函数可以用如代码1的方式进行定义。代码1函数声明示例:@add(a,b){return:a+b;}通过为函数声明加上属性“exp”来表明此函数的返回是一个表达式。这种函数用来表述变换规则,用户不能直接调用此类函数,如代码2通过函数描述乘法分配律的逆运算。代码2返回表达式的函数示例:exp:@{a*c+b*c}{return:(a+b)*c;}正向函数与逆向函数均指返回运算值的函数;返回表达式的函数不具备此属性。正向函数,即所有函数参数均确定,函数返回值待定的函数。正向函数的执行过程即利用输入参数推导函数的返回值。逆向函数,即函数返回值确定,函数输入参数中存在待定参数的函数。逆向函数的执行过程即利用函数的返回值与确定的输入参数计算待定的输入参数。函数权重用于控制推理系统的推理方向。用户可以为那些更容易导向正确推理结果的变换赋予更大的权重,不容易导向正确推理结果的变换赋予更小的权重。函数的权重在函数声明时确定,例如代码3中定义了一个权重为10的函数:代码3具有权重的函数示例:@(10){$a==b;}{a=b;}1.2变量COOL的非临时变量在使用前必须被声明。变量的类型由最近一次所赋值...