⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 expert.pro

📁 prolog,人工智能推理程序,运行环境prolog
💻 PRO
字号:
/* Expert System Shell */
include"resort.pro"
predicates
      inference(data_type)
      check_rule(integer,data_type,data_list)
      process_rule(integer,data_type,data_list)
      process_facts(integer,data_list)
      getresponse(symbol)
      validresponse(symbol,symbol)
      get_first(data_list,data_type)
      delete(data_type,data_list,data_list)
      process(data_type)
      rmv_rule(data_type,data_list,data_list)
      check_ans(symbol,symbol)
      check_fact(integer,data_type)
      start
      
clauses 

      process(Query):-
          inference(Query),
          write("Your Question ",Query," has been proved.").
      process(Query):-
          write("Your question ",Query," can not be proved.").
 
      inference(Query):-
          not(rule(_, Query,_)).
      inference(Query):-
          check_rule(No,Query,Cond_list),
          get_first(Cond_list,Cond),
          inference(Cond),
          process_rule(No,Cond,Cond_list), !.   
          
      check_rule(No,Query,Cond_list):- !,
          rule(No,Query,Cond_list).
          
       process_rule(No,Query,Cond_list):-
           rmv_rule(Query,Cond_list,N1),!,
           process_facts(No,N1).
       
       rmv_rule(Query,Cond_list,N1):-
          rule(_, Query, _),
          delete(Query,Cond_list,N1).
       rmv_rule(_, Cond_list, Cond_list).  /* only facts */ 

       process_facts(_, []).  /* no more facts left */
       process_facts(Rno,Cond_list):-
          get_first(Cond_list,Prop),
          check_fact(Rno,Prop),
          delete(Prop,Cond_list,New_list),
          process_facts(Rno,New_list).

       check_fact(_,Fact):-
                             not(fact1(Fact)),!,
                             write(Fact),   
                             getresponse(R),
                             R=y,  
                             assert(fact1(Fact)).
       check_fact(_,_).

       getresponse(R):-readln(Ask),
                       check_ans(Ask,Rep),!,
                       R=Rep;
                       nl,write("Try another answer please"),nl,
                       getresponse(R).
       check_ans(yes,y).
       check_ans(y,y).
       check_ans(n,n).
       check_ans(no,n).
       
       validresponse(R,Y):-R=Y.
       get_first([H|_],H).
       
       delete(_,[],[]).
       delete(H,[H|T],T):-!.
       delete(Token,[H|T],[H|R]):-!,
                          delete(Token,T,R).
       start:-                   
             consult("fact1.dba"),
             readln(NAME), 
             process(is(Name,two_star)),
             save("fact1.dba").
   
  goal
       start.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -