TRProg:
=======

In TRProg werden zunchst die unterschiedlichen Mengen von Typannahmen zusammengebaut.

V_fields_methods:
Die Typannahmen aller Membervariablen und aller Methoden (Parametertypen und Rckgabetyp)

V_1 bis V_n:
Die Typannahmen aller Parameter einer Methode V_i als Typannahmen fr lokale Variablen.

Danach wird TRStart gerufen, dessen Rckgabewert eine Menge von 2-Tupeln aus Unifiern und
Mengen von Typannahmen ist. Diese Tupel mssen eventuell noch ber einen Intersection-Typ
strukturiert werden, bilden aber prinzipiell das Ergebnis des Typrekonstruktionsalgorithmus:
Alle mglichen Typkombinationen fr diese Klasse in Form von unterschiedlichen Typannahmemengen.


TRStart:
========

TRStart bekommt als Argumente n TypeAssumptionSets V_n fr jede der n Methoden eine.

Fr jede der n Methoden wird TRNext aufgerufen, der m Triples (sigma_j, ty_j, V_j) zurck gibt.
D.h. m  mgliche Typkombinationen fr diese eine Methode.
Fr jede der m Mglichkeiten wird daraufhin eine Menge von mglichen Unifier fr den ReturnType berechnet.

Dann wird auf jedes V_j der m Mglichkeiten alle zugehrigen Unifier unify element unify_j angewendet
und eine Menge von Tupeln (sigma_z, V_z) gebildet. Diese Mengen von Tupeln aller V_j werden zu einer
Ergebnismenge vereinigt.

Dieser ganze Ablauf passiert fr jede der m Methode n Mal, wobei die Erkenntnisse der vorher gehenden
Durchlufe immer als Eingabewert fr den nchste Durchlauf dienen.
Nach dem letzten Durchlauf wird die Ergebnismenge von Tupeln (sigma, V) von TRStart zurckgegeben.


TRNext:
=======

TRNext hat im Prinzip die Aufgabe, die bisherigen Teilergebnisse in Form von Typannahmen um weitere
Informationen aus der aktuellen Methode zu erweitern.

Dabei werden fr alle n V_i der bergebenen Tupel (sigma, V) TRStatement des Blocks der aktuellen Methode
aufgerufen. Zuvor werden aus dem jeweiligen V_i noch die Typannahmen fr die Parameter der letzten Methode
(als lokale Variable) entfernt und um die Typannahmen der neuen Parameter (als lokale Variablen) erweitert.
Dabei werden die bisher ermittelten Unifier bercksichtigt, d.h. entsprechende Substitutionen gleich durchgefhrt.
