12.07.2015 Views

Logik und Logische Programmierung Einführung

Logik und Logische Programmierung Einführung

Logik und Logische Programmierung Einführung

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

:- op(300,fx,'~').!:- op(400,xfy,'&').!:- op(500,xfy,'or'). /* Note: + has 500, * has 400 as priority */!:- op(600,xfy,'=>').!:- op(700,xfy,'').!:- use_module(library(terms),[term_variables/2]).!enum([]).!enum([H|T]) :- (H=t ; H=f), enum(T).!print_vars([]) :- print('||').!print_vars([H|T]) :- print('|'),print(H),!print_vars(T).!!analyze(Formula) :- term_variables(Formula,Vars), numbervars(Formula,0,_),!print_vars(Vars), print(Formula),nl,fail.!analyze(Formula) :- term_variables(Formula,Vars),!enum(Vars), print_vars(Vars),!truth_value(Formula,TF), print(TF), nl,!fail.!analyze(_) :- nl.!!truth_value(t,t).!truth_value(f,f).!truth_value(~ X, T) :- truth_value(X,TX), neg(TX,T).!truth_value(X & Y, T) :- truth_value(X,TX), truth_value(Y,TY), and(TX,TY,T).!truth_value(X or Y, T) :- truth_value(X,TX), truth_value(Y,TY), or(TX,TY,T).!truth_value(X => Y, T) :- truth_value(~X or Y, T).!truth_value(X Y, T) :- truth_value(X & Y or ~X & ~Y, T).!neg(f,t). neg(t,f).!and(f,_,f). and(t,f,f). and(t,t,t).!or(t,_,t). or(f,f,f). or(f,t,t).!Prolog

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!