% A Aussagenvariable, K,L Literale, P Teilpfad, C,D Klauseln, M,N Matrizen

% komp_lit(K,L)  K und L sind komplementär.
komp_lit(+A,-A).
komp_lit(-A,+A).

% komp_pl(P,L)  Ein Literal von P ist komplementär zu L.
komp_pl(P,L):- member(K,P), komp_lit(K,L).

% komp_pm(P,M)  P und M sind komplementär.
komp_pm(_,[[]|_]).  %Wenn erste Klausel von M leer, dann P und M komplementär.
komp_pm(P,[[L|D]|M]):-
    komp_pl(P,L), !,
    komp_pm(P,[D|M]).
komp_pm(P,[[L|D]|M]):-
    komp_pm([L|P],M),
    komp_pm(P,[D|M]).

komp(M):- komp_pm([],M).


/************************************************************
Beispiele aus 03_AL_Konn-meth.beamer.pdf Folien 6 und 20 von 47.
?- komp([[+p,+q],[-p,+q,+r],[-q,+r],[-r]]).
true .
?- komp([[+p],[-p,+q],[-q,+p]]).
false.
************************************************************/
