Advertisement
Emania

LUP - hw05

Jan 21st, 2018
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 0.91 KB | None | 0 0
  1. %% prove(-Formula, -Depth)
  2. prove(Formula, Depth) :- !, my_prove([-Formula], Depth).
  3.  
  4. my_prove(_, 0) :- !, false.
  5.  
  6. %% Contradiction
  7. my_prove(Set, _) :-
  8.     select(A, Set, Set1),
  9.     select(-A, Set1, _).
  10.  
  11. %% Double Negation
  12. my_prove(Set, Depth) :-
  13.     select( -( -A), Set, Set1),
  14.     Depth2 is Depth-1,
  15.     my_prove([A| Set1], Depth2).
  16.  
  17. %% Conjunction
  18. my_prove(Set, Depth) :-
  19.     select((A,B), Set, Set1),
  20.     Depth2 is Depth-1,
  21.     my_prove([A, B | Set1], Depth2).
  22.  
  23. %% Negated Conjunction
  24. my_prove(Set, Depth) :-  
  25.     select( - (A,B), Set, Set1),
  26.     Depth2 is Depth-1,
  27.     my_prove([ -A | Set1], Depth2),
  28.     my_prove([ -B | Set1], Depth2).
  29.  
  30. %% Box
  31. my_prove(Set, Depth) :-    
  32.     select( - (box(A)), Set, Rest),
  33.     maplist(unbox, Rest, Unboxed),
  34.     Depth2 is Depth-1,
  35.     my_prove([ -A | Unboxed], Depth2).
  36.  
  37. %% Subset
  38. my_prove(Set, Depth) :-  
  39.     my_subset(A, Set),
  40.     Depth2 is Depth-1,
  41.     my_prove(A, Depth2).
  42.  
  43. unbox(box(X), X).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement