Compilerbau-Typausdrücke-allgemeinster Unifikator

Hallo !

Wie läßt sich folgende Aufgabe lösen :

Gegeben seien die folgenden Typausdrücke mit den Typvariablen
{a1,a2,b1,b2,c1,c2,d1,d2}:

a1 -> (a2->a2)

array(b1) -> (pointer(b1)->b2)

c1 -> c2

d1 -> (d1->d2)

Bestimmen Sie für alle Paare der vier Typausdrücke jeweils den allgemeinsten Unifikator, oder stellen Sie fest, dass keiner existiert.

Vielen Dank

Clemens