1化为子句集的九步法一、实验目的:熟悉谓词公式化为子句集的九个步骤,理解消解(谓词公式化为子句集)规则,能把任意谓词公式转换成子句集,掌握基于规则推理的基本方法。二、实验原理产生式系统用来描述若干个不同的以一个基本概念为基础的系统,这个基本概念就是产生式规则或产生式条件和操作对。在产生式系统中,论域的知识分为两部分:用事实表示静态知识;用产生式规则表示推理过程和行为。任一谓词公式通过九步法可以化成一个子句集。九步法消解包括消去蕴含和等价符号、把否定符号移到紧靠谓词的位置上、变量标准化、消去存在量词、化为前束型、化为Skolem标准形、略去全称量词、消去合取词,把母式用子句集表示、子句换变量标准化,依次变换即可得到子句集。三、实验内容代码:voidmain(){cout------------------求子句集九步法演示-----------------------endl;system(color0A);//orign=Q(x,y)%~(P(y);//orign=(@x)(P(y)P);//orign=~(#x)y(x);//orign=~((@x)x!b(x));//orign=~(x!y);//orign=~(~a(b));stringorign,temp;charcommand,command0,command1,command2,command3,command4,command5,command6,command7,command8,command9,command10;//=============================================================================cout请输入(Y/y)初始化谓词演算公式endl;cincommand;if(command=='y'||command=='Y')initString(orign);elseexit(0);//=================================================================2============cout请输入(Y/y)消除空格endl;cincommand0;if(command0=='y'||command0=='Y'){//del_blank(orign);//undonecout消除空格后是endlorignendl;}elseexit(0);//=============================================================================cout请输入(Y/y)消去蕴涵项endl;cincommand1;if(command1=='y'||command1=='Y'){orign=del_inlclue(orign);cout消去蕴涵项后是endlorignendl;}elseexit(0);//=============================================================================cout请输入(Y/y)减少否定符号的辖域endl;cincommand2;if(command2=='y'||command2=='Y'){do{temp=orign;orign=dec_neg_rand(orign);}while(temp!=orign);cout减少否定符号的辖域后是endlorignendl;}elseexit(0);//=============================================================================cout请输入(Y/y)对变量进行标准化endl;cincommand3;if(command3=='y'||command3=='Y')3{orign=standard_var(orign);cout对变量进行标准化后是endlorignendl;}elseexit(0);//=============================================================================cout请输入(Y/y)消去存在量词endl;cincommand4;if(command4=='y'||command4=='Y'){orign=del_exists(orign);cout消去存在量词后是(w=g(x)是一个Skolem函数)endlorignendl;}elseexit(0);//=============================================================================cout请输入(Y/y)化为前束形endl;cincommand5;if(command5=='y'||command5=='Y'){orign=convert_to_front(orign);cout化为前束形后是endlorignendl;}elseexit(0);//=============================================================================cout请输入(Y/y)把母式化为合取方式endl;cincommand6;if(command6=='y'||command6=='Y'){orign=convert_to_and(orign);cout把母式化为合取方式后是endlorignendl;}elseexit(0);//=================================================================4============cout请输入(Y/y)消去全称量词endl;cincommand7;if(command7=='y'||command7=='Y'){orign=del_all(orign);cout消去全称量词后是endlorignendl;}elseexit(0);//=============================================================================cout请输入(Y/y)消去连接符号endl;cincommand8;if(command8=='y'||command8=='Y'){orign=del_and(orign);cout消去连接符号后是endlorignendl;}elseexit(0);//=============================================================================cout请输入(Y/y)变量分离标准化endl;cincommand9;if(command9=='y'||command9=='Y'){orign=change_name(orign);cout变量分离标准化后是(x1,x2,x3代替变量x)endlorignendl;}elseexit(0);//============================================================================cout-------------------------完毕-----------------------------------endl;cout(请输入Y/y)结束endl;do{}while('y'==getchar()||'Y'==getchar());exit(0);5}stringchange_name(stringtemp)//更换变量名称{charctemp[100];strcpy(ctemp,temp.c_str());stringoutput=;inti=0,j=0,falg=0;while(ctemp[i]!='\0'&&itemp.length()){falg++;while('\n'!=ctemp[i]&&itemp.length()){if('x'==ctemp[i]){output=output+ctemp[i];output=output+numAfectChar(falg);}elseoutput=output+ctemp[i];i++;}output=output+ctemp[i];i++;}returnoutput;}boolisAlbum(chartemp){if(temp='Z'&&temp='A'||temp='z'&&temp='a')returntrue;returnfalse;}charnumAfectChar(inttemp)//数字显示为字符{chart;switch(temp){case1:t='1';break;case2:t='2';break;case3:6t='3';break;case4:t='4';break;default:t='89';break;}returnt;}四、实验步骤:71对默认谓词公式进行转换。进入程序,点击“语法检查”,再依次点击消解过程的九个步骤按钮,得到转换结果。2自定义转换目标。点击“清除”删除默认公式,利用界面键盘输入新的转换目标,用“大写字母”、“小写字母”按键进行输入中的字母变换。3语法检查。点击“语法检查”检查输入谓词公式的语法错误。如无错误,则依次点击步骤按钮进行转换。4重复运行2、3步,熟悉消解原理和转换过程。五、实验报告要求:1了解每一步消解的规则和原则。2给出一个谓词公式转换为子句的详细过程和结果。3分析消解原理的特点和原理。六、心得体会:在本次课程设计过程中,我学到了好多东西。在此特别感谢老师教诲。老师不仅上课生动、幽默,平时上机时又悉心的指导。同时感谢学校给我们提供了非常优越的设计环境,对于我顺利完成这次课程设计起到了关键性的作用。通过对本次实验的操作,我较全面的掌握了化为子句集的九步法,并在实验操作中进一步的提高我的能力,但是自己还有一些不足之处有待提高。