Advertisement
Guest User

Untitled

a guest
May 23rd, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 2.81 KB | None | 0 0
  1. is_var(a).
  2. is_var(b).
  3. is_var(c).
  4.  
  5. :- op(610, fy, nu).
  6. :- op(620, yfx, si).
  7. :- op(620, yfx, sau).
  8. :- op(630, xfx, imp).
  9.  
  10. table_nu(0, 1).
  11. table_nu(1, 0).
  12.  
  13. table_si(0, 0, 0).
  14. table_si(0, 1, 0).
  15. table_si(1, 0, 0).
  16. table_si(1, 1, 1).
  17.  
  18. table_sau(0, 0, 0).
  19. table_sau(0, 1, 1).
  20. table_sau(1, 0, 1).
  21. table_sau(1, 1, 1).
  22.  
  23. table_imp(0, 0, 1).
  24. table_imp(0, 1, 1).
  25. table_imp(1, 0, 0).
  26. table_imp(1, 1, 1).
  27.  
  28. formula(X) :- is_var(X).
  29. formula(nu X) :- formula(X).
  30. formula(X si Y) :- formula(X), formula(Y).
  31. formula(X sau Y) :- formula(X), formula(Y).
  32. formula(X imp Y) :- formula(X), formula(Y).
  33.  
  34. test :- catch(read(X), _, false), X.
  35.  
  36. find_vars_helper(X, [X]) :- is_var(X).
  37. find_vars_helper(nu X, V) :- find_vars_helper(X, V).
  38. find_vars_helper(X si Y, Vfin) :- find_vars_helper(X, V1), find_vars_helper(Y, V2), append(V1, V2, Vfin).
  39. find_vars_helper(X sau Y,Vfin) :- find_vars_helper(X, V1), find_vars_helper(Y, V2), append(V1, V2, Vfin).
  40. find_vars_helper(X imp Y,Vfin) :- find_vars_helper(X, V1), find_vars_helper(Y, V2), append(V1, V2, Vfin).
  41.  
  42. find_vars(X, _, Vfin) :- find_vars_helper(X, Vaux), sort(Vaux, Vfin).
  43.  
  44. firstList(0, []) :- !.
  45. firstList(N, [0 | List]) :- M is N - 1, firstList(M, List).
  46.  
  47. addOne([0 | L], [1 | L]).
  48. addOne([1 | L], [0 | Res]) :- addOne(L, Res).
  49.  
  50. generate_all(0, _, []) :- !.
  51. generate_all(N, L, [Laux | Res]) :- addOne(L, Laux), M is N - 1, generate_all(M, Laux, Res).
  52.  
  53. all_assigns(0, [[]]) :- !.
  54. all_assigns(N, [FList | Res]) :- firstList(N, FList), M is 2**N - 1, generate_all(M, FList, Res).
  55.  
  56. var_value(Variable, [Variable | _], [TruthValue | _], TruthValue).
  57. var_value(Variable, [_ | VarListRest], [_ | TruthValuesRest], TruthValue) :-
  58.     var_value(Variable, VarListRest, TruthValuesRest, TruthValue).
  59.  
  60. truth_value(X, Var, A, Val) :- is_var(X), var_value(X, Var, A, Val).
  61. truth_value(nu X, Var, A, Val) :- truth_value(X, Var, A, ValAux), table_nu(ValAux, Val).
  62. truth_value(X si Y, Var, A, Val) :- truth_value(X, Var, A, ValAux1), truth_value(Y, Var, A, ValAux2), table_si(ValAux1, ValAux2, Val).
  63. truth_value(X sau Y, Var, A, Val) :- truth_value(X, Var, A, ValAux1), truth_value(Y, Var, A, ValAux2), table_sau(ValAux1, ValAux2, Val).
  64. truth_value(X imp Y, Var, A, Val) :- truth_value(X, Var, A, ValAux1), truth_value(Y, Var, A, ValAux2), table_imp(ValAux1, ValAux2, Val).
  65.  
  66. all_values(_, _, [], []).
  67. all_values(X, Var, [LaHead | LaTail], [ValRes | LRec]) :- truth_value(X, Var, LaHead, ValRes), all_values(X, Var, LaTail, LRec).
  68.  
  69. values_all_assigns(X, LVal) :- find_vars(X, [], Var), length(Var, VarLength),
  70.     all_assigns(VarLength, LA), all_values(X, Var, LA, LVal).
  71.  
  72. is_taut_helper([]) :- print('este tautologie').
  73. is_taut_helper([0 | _]) :- print('nu este tautologie').
  74. is_taut_helper([1 | Tail]) :- is_taut_helper(Tail).
  75.  
  76. is_taut(X) :- values_all_assigns(X, LVal), is_taut_helper(LVal).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement