dawrehxyz

valid000

Dec 11th, 2016
272
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 0.88 KB | None | 0 0
  1. verify(Input) :-
  2.   see(Input), read(T), read(L), read(S), read(F), seen,
  3.   check(T, L, S, [], F, false).
  4.  
  5. check(T, L, S, U, F, Neg) :-
  6.   verifyState(F, S, L, Neg) ;
  7.   (
  8.     (neg(_) = F, neg(T, L, S, U, F, Neg)) ;
  9.     (or(_) = F , or(T, L, S, U, F, Neg)) ;
  10.     (and(_) = F , and(T, L, S, U, F, Neg)) ;
  11.     (ax(_) = F , ax(T, L, S, U, F, Neg)) ;
  12.     (ag(_) = F , ag(T, L, S, U, F, Neg)) ;
  13.     (af(_) = F , af(T, L, S, U, F, Neg)) ;
  14.     (ex(_) = F , ex(T, L, S, U, F, Neg)) ;
  15.     (eg(_) = F , eg(T, L, S, U, F, Neg)) ;
  16.     (ef(_) = F , ef(T, L, S, U, F, Neg))
  17.   ), !.
  18.  
  19. neg(T, L, S, U, F, Neg) :-
  20.   check(T, L, S, U, F, true).
  21.  
  22. and(T, L, S, U, F, Neg) :- !.
  23.  
  24. or(T, L, S, U, F, Neg) :- !.
  25.  
  26.  
  27. verifyState(F, S, L, Neg) :-
  28.   member([S, A], L),
  29.   (
  30.     (Neg = false, member(F, A)) ;
  31.     not(member(F, A))
  32.   ).
  33.  
  34. nextState(S, T, NextS) :-
  35.   member([S, A], T),
  36.   member(NextS, A).
Advertisement
Add Comment
Please, Sign In to add comment