% Blatt 9 Aufgabe 5

% Programm zur Anwendung des Assoziativgesetzes zum Umklammern nach links.
% A => B, A ==> B und A ==>* B bedeuten: Term A wird durch Umklammern zu B.
% Aufrufmodus jeweils +-.
% =>: 1 Schritt mit aeusserstem Klammerpaar.
% ==>: 1 Schritt an beliebiger Stelle im Term.
% ==>*: 0 oder mehr Schritte. Erste Antwort ist voll linksgeklammert.

:- op(800,xfx,=>).
:- op(800,xfx,==>).
:- op(800,xfx,==>*).

A+(B+C) => (A+B)+C.

A ==> B :-
    A => B.
A+C ==> B+C :-
    A ==> B.
A+B ==> A+C :-
    B ==> C.

A ==>* C :-
    A ==> B,
    B ==>* C.
A ==>* A.

% ?- a+(b+c+a)+(c+d)+(a+(b+c)) ==>* X.
