Emania

Untitled

Dec 20th, 2017
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.04 KB | None | 0 0
  1. % node(identifier,corresponding NNF formula,used rule,list of its sub-nodes/sons)
  2.  
  3. prove(Fin,UnExp,Lits,FreeV,VarLim, Proof) :- !,
  4. prove((top,Fin),UnExp,Lits,FreeV,VarLim, Proof, 1, _).
  5.  
  6. % prove(+Fml,+UnExp,+Lits,+FreeV,+VarLim)
  7. prove((Idp,(A,B)),UnExp,Lits,FreeV,VarLim, [N], Id, Up) :- !, write('0'),
  8. N=node(Id, A, and_rule(Idp), Nup), Id1 is Id + 1,
  9. prove((Id,A),[(and_rule(Idp),B)|UnExp],Lits,FreeV,VarLim, Nup, Id1, Up).
  10.  
  11. prove((Idp,(A;B)),UnExp,Lits,FreeV,VarLim, [N1, N2], Id, Up) :- !, write('1'),
  12. N1=node(Id, A, or_rule(Idp), N1up),
  13. N2=node(Up1, B, or_rule(Idp), N2up), Id1 is Id + 1,
  14. prove((Id,A),UnExp,Lits,FreeV,VarLim, N1up, Id1, Up1), Id2 is Up1,
  15. prove((Up1,B),UnExp,Lits,FreeV,VarLim, N2up, Id2, Up).
  16.  
  17. prove((Idp, all(X,Fml)),UnExp,Lits,FreeV,VarLim, [N], Id, Up) :- !, write('2'),
  18. N=node(Id, all(X, Fml), all_rule(Idp), Nup), Id1 is Id + 1,
  19. \+ length(FreeV,VarLim),
  20. copy_term((X,Fml,FreeV),(X1,Fml1,FreeV)),
  21. append(UnExp,[(all_rule(Id),all(X,Fml))],UnExp1),
  22. prove((Id, Fml1),UnExp1,Lits,[X1|FreeV],VarLim, Nup, Id1, Up).
  23.  
  24. prove((Idp, Lit),_,[(LId, L)|Lits],_,_, [N], Id, Up) :- write('3'),
  25. ( Lit = -Neg; -Lit = Neg ) ->
  26. (((unify_with_occurs_check(Neg,L), N=node(Id, false, closed_by(Idp, LId), [])), Up is Id + 1 );
  27. prove((LId, Lit),[],Lits,_,_, [N], Id, Up)).
  28.  
  29. prove((_, Lit),[(and_rule(Idr), Next)|UnExp],Lits,FreeV,VarLim, [N], Id, Up) :- write('4'),
  30. N = node(Id1, Next, and_rule(Idr), Proof1), Id1 is Id + 1,
  31. prove((Id, Next),UnExp,[(Id, Lit)|Lits],FreeV,VarLim, Proof1, Id1, Up).
  32.  
  33. prove((Idp, Lit),[(all_rule(Idr), Next)|UnExp],Lits,FreeV,VarLim, N, Id, Up) :- write('5'), %write('stack all '), write('Lit = '), write(Lit), write('\n'),
  34. prove((Idr, Next),UnExp,[(Idp, Lit)|Lits],FreeV,VarLim, N, Id, Up).
  35.  
  36. %% proof((fact,-fact),[node(1,fact,and_rule(top),[node(2,fact,and_rule(top),[node(3,false,closed_by(2,1),[])])])])
  37. %% proof((fact,-fact),[node(1,fact,and_rule(top),[node(2,-fact,and_rule(top),[node(3,false,closed_by(2,1),[])])])]).
Advertisement
Add Comment
Please, Sign In to add comment