public class Unify
extends java.lang.Object
| Modifier and Type | Field and Description |
|---|---|
protected static SectionLogger |
inferencelog |
| Constructor and Description |
|---|
Unify() |
| Modifier and Type | Method and Description |
|---|---|
private static void |
adapt(Menge<Pair> H,
Pair PFC,
RefType TA1,
RefType TA2,
FC_TTO fc_tto)
Implementiert die adapt Regel des sub_unify
|
private static void |
adaptExt(Menge<Pair> H,
Pair PFC,
RefType TA1,
RefType TA2,
FC_TTO fc_tto)
Implementiert die adaptExt Regel des sub_unify
|
private static void |
adaptSup(Menge<Pair> H,
Pair PFC,
RefType TA1,
RefType TA2,
FC_TTO fc_tto)
Implementiert die adaptSup Regel des sub_unify
|
static Menge<RefType> |
allGreater(RefType ty,
Menge<Pair> FC) |
static Menge<RefType> |
allSmaller(RefType ty,
Menge<Pair> FC) |
private static Menge<ObjectType> |
CaptureConversion(Menge<ObjectType> TVec,
FC_TTO fc_tto)
Implementiert die CaptureConversion.
|
private static Type |
CaptureConversion(Type T,
FC_TTO fc_tto)
Erzeugt die CaptureConversion von einem Typ.
|
private static java.util.Hashtable<JavaClassName,Type> |
CaptureConversionHashtable(java.util.Hashtable<JavaClassName,Type> ht,
FC_TTO fc_tto) |
private static Menge<Menge<Pair>> |
cartProductPair(Menge<Menge<Pair>> vec)
Ãberladung der Funktion cartProductPair, damit der Programmierer beim ersten Aufruf nicht den 2.
|
private static Menge<Menge<Pair>> |
cartProductPair(Menge<Menge<Pair>> vec,
int index)
Erzeugt das Kartesische Product von mehreren Mengeen von Paaren.
|
private static Menge<Menge<Type>> |
cartProductType(Menge<Menge<Type>> vec)
Ãberladung der Funktion cartProductType, damit der Programmierer beim ersten Aufruf nicht den 2.
|
private static Menge<Menge<Type>> |
cartProductType(Menge<Menge<Type>> vec,
int index)
Erzeugt das Kartesische Product von mehreren Mengeen von Typen.
|
static Menge<Menge<Pair>> |
copyMengeMengePair(Menge<Menge<Pair>> vp) |
private static Menge<ObjectType> |
copyMengeObjectType(Menge<ObjectType> vec)
Kopiert einen Menge
|
static Menge<Pair> |
copyMengePair(Menge<Pair> vp) |
private static Menge<Type> |
copyMengeType(Menge<? extends Type> vec)
Kopiert einen Menge
|
private static boolean |
DelFreshWildcardTypeVar(Type T)
Gibt True zurück, wenn T eine FreshWildcard ist, oder im Falle eines RefTypes oder WildcardTypes eine FreshWildcard enthält.
|
private static Menge<Menge<Pair>> |
generateSetOfSetOfPair(Type TA1,
Menge<? extends Type> otherPairTypes)
Diese Methode generiert einen Menge
|
private static Menge<ObjectType> |
greater(ObjectType T,
FC_TTO fc_tto)
Erzeugt alle Typen die greater sind als T.
|
private static Menge<ObjectType> |
greater0(ObjectType T,
FC_TTO fc_tto)
greater0 Schritt von greater.
|
private static Menge<ObjectType> |
greater1(ObjectType T,
FC_TTO fc_tto)
greater1 Schritt von greater.
|
private static Menge<ObjectType> |
greater2(Menge<ObjectType> greater1Erg,
FC_TTO fc_tto)
greater2 Schritt von greater
|
private static Menge<ObjectType> |
greater3(Menge<ObjectType> greater2Erg,
FC_TTO fc_tto)
greater3 Schritt von greater
|
private static Menge<Type> |
greaterArg(Type T,
FC_TTO fc_tto)
greaterArg Schritt von greater
Für den Argumenttype FunN<...> werden keine ?
|
static boolean |
hasSolvedForm(Menge<Pair> E) |
static Menge<Menge<Pair>> |
instanceSmaller(Pair P,
FC_TTO fc_tto) |
static Pair |
isInFC(RefType R1,
RefType R2,
Menge<Pair> FC) |
private static Pair |
isInFClinks(RefType RT1,
RefType RT2,
Menge<Pair> FC) |
static Pair |
isInFCrechtsUnify(RefType RT1,
RefType RT2,
FC_TTO fc_tto) |
static boolean |
isRealSubClass(java.lang.String Basis,
java.lang.String Mutter,
FC_TTO fc_tto) |
static boolean |
isRXSimilarRY(RefType RFC,
RefType RY,
boolean allowTPH) |
static boolean |
isTVinRefType(TypePlaceholder TV,
RefType RT) |
static java.util.Hashtable |
match(RefType FCtype,
RefType tomatch,
java.util.Hashtable<JavaClassName,Type> ht) |
static java.util.Hashtable<JavaClassName,Type> |
MengePair2SubstHashtableMengePair(Menge<Pair> v) |
static int |
pi(int n,
java.lang.String C,
java.lang.String D,
Menge tto) |
static void |
printMenge(java.lang.String strMenge,
Menge<Pair> E,
int nDebug) |
static void |
printMengeUnifier(java.lang.String strMenge,
Menge<Menge<Pair>> Uni,
int nDebug) |
private static void |
reduce1(Menge<Pair> H,
RefType TA1,
RefType TA2,
Menge TTO)
Implementiert die reduce1 Regel des sub_unify
|
private static void |
reduce2(Menge<Pair> H,
RefType TA1,
RefType TA2,
Menge TTO)
Implementiert die reduce2 Regel des sub_unify
|
private static void |
reduceEq(Menge<Pair> H,
RefType TA1,
RefType TA2,
Menge TTO)
Implementiert die reduceEq Regel des sub_unify
Da in reduce2 unnötigerweise pi verwendet wird (siehe Kommentar in reduce2), kann reduceEq einfach an reduce2 deligieren.
|
private static void |
reduceExt(Menge<Pair> H,
RefType TA1,
RefType TA2,
Menge TTO)
Implementiert die reduceExt Regel des sub_unify
|
private static void |
reduceSup(Menge<Pair> H,
RefType TA1,
RefType TA2,
Menge TTO)
Implementiert die reduceSup Regel des sub_unify
|
static Menge<Menge<java.lang.Integer>> |
schnitt(Menge<Menge<TypePlaceholder>> vars)
Bildet Schnittmengen der Mengen von Typeplaceholders
Rueckgabe ist die Menge der Menge von Indizies die Schnittmengen sind.
|
(package private) static Menge<java.lang.Integer> |
schnitt1(Menge<TypePlaceholder> var,
Menge<Menge<TypePlaceholder>> vars,
Menge<java.lang.Integer> indexe)
PL 2014-10-25
schnitt1 checkt ob die Typeplaceholders aus in den Elemeneten aus vars enthalten sind
Rückgabe ist die Menge der Indizies von vars der Schnittmengen mit var nicht leer sind.
|
private static Menge<ObjectType> |
smaller(ObjectType T,
FC_TTO fc_tto)
Erzeugt alle Typen die smaller sind als T.
|
private static Menge<ObjectType> |
smaller0(ObjectType T,
FC_TTO fc_tto)
smaller0 Schritt von smaller
|
private static Menge<ObjectType> |
smaller1(Type T,
FC_TTO fc_tto)
smaller1 Schritt von smaller
|
private static Menge<ObjectType> |
smaller2(Menge<ObjectType> smaller1Erg,
FC_TTO fc_tto)
smaller2 Schritt von smaller
|
private static Menge<ObjectType> |
smaller3(Menge<ObjectType> smaller12Erg,
FC_TTO fc_tto)
smaller3 Schritt von smaller
|
private static Menge<ObjectType> |
smaller4(Menge<ObjectType> smallerErg)
smaller4 Schritt von smaller
|
private static Menge<Type> |
smallerArg(Type T,
FC_TTO fc_tto)
smallerArg Schritt von smaller
|
static Menge<Pair> |
sub_unify(Menge<Pair> E,
FC_TTO fc_tto) |
static Menge<Pair> |
sub_unify(Menge<Pair> E,
FC_TTO fc_tto,
boolean useSubst) |
static boolean |
Subst(Pair P,
int nTypnrInPair,
TypePlaceholder a,
Type o,
boolean bMitVorbedingung) |
static void |
SubstHashtable(RefType typterm,
java.util.Hashtable<JavaClassName,Type> ht) |
static Menge<Pair> |
SubstHashtable2MengePair(java.util.Hashtable<JavaClassName,Type> ht) |
static void |
SubstHashtableGeneric(RefType typterm,
java.util.Hashtable<JavaClassName,Type> ht) |
private static void |
testUnifyErg(Menge<Menge<Pair>> unifyErgs,
RefType test)
Diese Methode wird verwendet, um Zuordnungen z.B.
|
static MUB |
unify_Mub(Type ty1,
Type ty2,
FC_TTO fc_tto) |
static Menge<Menge<Pair>> |
unify(Menge<Pair> E,
FC_TTO fc_tto)
Einstieg in die Unifizierung mit Wildcards
|
static Menge<Menge<Pair>> |
unify(Type ty1,
Type ty2,
FC_TTO fc_tto)
Unifiziert ein Pair mit den Elementen ty1 und ty2 -> (ty1 < ty2)
|
static Menge<Menge<Pair>> |
unifyFiltered(Menge<Pair> E,
FC_TTO fc_tto,
boolean filter) |
static Menge<Menge<Pair>> |
unifyWC(Pair P,
FC_TTO fc_tto)
Einstieg in die Unifizierung mit Wildcards
|
static Menge<Menge<Pair>> |
unifyWC(Type ty1,
Type ty2,
FC_TTO fc_tto)
Einstieg in die Unifizierung mit Wildcards
|
static void |
varSubst(RefType typterm,
java.util.Hashtable<JavaClassName,Type> ht) |
protected static SectionLogger inferencelog
public static Menge<Menge<Pair>> unify(Type ty1, Type ty2, FC_TTO fc_tto)
ty1 - ty2 - fc_tto - public static Menge<Menge<Pair>> unifyWC(Type ty1, Type ty2, FC_TTO fc_tto)
ty1 - - Typ 1 der Unifizierungty2 - - Typ 2 der Unifizierungfc_tto - - Hilfsklasse mit FCpublic static Menge<Menge<Pair>> unifyWC(Pair P, FC_TTO fc_tto)
P - - Paar das unifiziert werden soll.fc_tto - - Hilfsklasse mit FCpublic static Menge<Menge<Pair>> unify(Menge<Pair> E, FC_TTO fc_tto)
E - - Menge von Paaren die unifiziert werden sollenfc_tto - - Hilfsklasse mit FCpublic static Menge<Menge<Pair>> unifyFiltered(Menge<Pair> E, FC_TTO fc_tto, boolean filter)
static Menge<java.lang.Integer> schnitt1(Menge<TypePlaceholder> var, Menge<Menge<TypePlaceholder>> vars, Menge<java.lang.Integer> indexe)
var - vars - indexe - public static Menge<Menge<java.lang.Integer>> schnitt(Menge<Menge<TypePlaceholder>> vars)
vars - private static void testUnifyErg(Menge<Menge<Pair>> unifyErgs, RefType test)
unifyErgs - - Ergebnisse des Unify, die geprüft werden sollen.test - - RefType gegen den geprüft werden soll.private static Menge<Menge<Pair>> generateSetOfSetOfPair(Type TA1, Menge<? extends Type> otherPairTypes)
TA1 - - Der Typ der immer vorne stehtotherPairTypes - - Die anderen Typenpublic static MUB unify_Mub(Type ty1, Type ty2, FC_TTO fc_tto) throws CTypeReconstructionException
CTypeReconstructionExceptionpublic static java.util.Hashtable match(RefType FCtype, RefType tomatch, java.util.Hashtable<JavaClassName,Type> ht) throws MatchException
MatchExceptionprivate static void reduce1(Menge<Pair> H, RefType TA1, RefType TA2, Menge TTO) throws SCException
SCExceptionprivate static void reduceExt(Menge<Pair> H, RefType TA1, RefType TA2, Menge TTO) throws SCException
SCExceptionprivate static void reduceSup(Menge<Pair> H, RefType TA1, RefType TA2, Menge TTO) throws SCException
SCExceptionprivate static void reduceEq(Menge<Pair> H, RefType TA1, RefType TA2, Menge TTO) throws SCException
SCExceptionprivate static void reduce2(Menge<Pair> H, RefType TA1, RefType TA2, Menge TTO) throws SCException
SCExceptionprivate static void adapt(Menge<Pair> H, Pair PFC, RefType TA1, RefType TA2, FC_TTO fc_tto)
private static void adaptExt(Menge<Pair> H, Pair PFC, RefType TA1, RefType TA2, FC_TTO fc_tto)
private static void adaptSup(Menge<Pair> H, Pair PFC, RefType TA1, RefType TA2, FC_TTO fc_tto)
private static java.util.Hashtable<JavaClassName,Type> CaptureConversionHashtable(java.util.Hashtable<JavaClassName,Type> ht, FC_TTO fc_tto)
public static Menge<Pair> SubstHashtable2MengePair(java.util.Hashtable<JavaClassName,Type> ht)
public static java.util.Hashtable<JavaClassName,Type> MengePair2SubstHashtableMengePair(Menge<Pair> v)
public static boolean isTVinRefType(TypePlaceholder TV, RefType RT)
public static boolean Subst(Pair P, int nTypnrInPair, TypePlaceholder a, Type o, boolean bMitVorbedingung)
public static void SubstHashtableGeneric(RefType typterm, java.util.Hashtable<JavaClassName,Type> ht)
public static void SubstHashtable(RefType typterm, java.util.Hashtable<JavaClassName,Type> ht)
public static boolean isRealSubClass(java.lang.String Basis,
java.lang.String Mutter,
FC_TTO fc_tto)
public static int pi(int n,
java.lang.String C,
java.lang.String D,
Menge tto)
throws SCException
SCExceptionpublic static void printMengeUnifier(java.lang.String strMenge,
Menge<Menge<Pair>> Uni,
int nDebug)
public static void varSubst(RefType typterm, java.util.Hashtable<JavaClassName,Type> ht)
private static Menge<ObjectType> CaptureConversion(Menge<ObjectType> TVec, FC_TTO fc_tto)
private static Type CaptureConversion(Type T, FC_TTO fc_tto)
T - - Ãbergebener Typ, von welchem die CaptureConversion gemacht werden soll.fc_tto - - Hilfsklasse.private static Menge<ObjectType> greater(ObjectType T, FC_TTO fc_tto)
private static Menge<ObjectType> greater0(ObjectType T, FC_TTO fc_tto)
private static Menge<ObjectType> greater1(ObjectType T, FC_TTO fc_tto)
private static Menge<Menge<Type>> cartProductType(Menge<Menge<Type>> vec)
private static Menge<Menge<Type>> cartProductType(Menge<Menge<Type>> vec, int index)
private static Menge<Menge<Pair>> cartProductPair(Menge<Menge<Pair>> vec)
private static Menge<Menge<Pair>> cartProductPair(Menge<Menge<Pair>> vec, int index)
private static Menge<Type> copyMengeType(Menge<? extends Type> vec)
private static Menge<ObjectType> copyMengeObjectType(Menge<ObjectType> vec)
private static Menge<Type> greaterArg(Type T, FC_TTO fc_tto)
private static Menge<ObjectType> greater2(Menge<ObjectType> greater1Erg, FC_TTO fc_tto)
private static Menge<ObjectType> greater3(Menge<ObjectType> greater2Erg, FC_TTO fc_tto)
private static Menge<ObjectType> smaller(ObjectType T, FC_TTO fc_tto)
private static Menge<ObjectType> smaller0(ObjectType T, FC_TTO fc_tto)
private static Menge<ObjectType> smaller1(Type T, FC_TTO fc_tto)
private static Menge<Type> smallerArg(Type T, FC_TTO fc_tto)
private static Menge<ObjectType> smaller2(Menge<ObjectType> smaller1Erg, FC_TTO fc_tto)
private static Menge<ObjectType> smaller3(Menge<ObjectType> smaller12Erg, FC_TTO fc_tto)
private static Menge<ObjectType> smaller4(Menge<ObjectType> smallerErg)
private static boolean DelFreshWildcardTypeVar(Type T)