diff --git a/.classpath b/.classpath
index 5877484d..8d756e94 100644
--- a/.classpath
+++ b/.classpath
@@ -16,7 +16,6 @@
-
diff --git a/src/de/dhbwstuttgart/typeinference/unify/RuleSet.java b/src/de/dhbwstuttgart/typeinference/unify/RuleSet.java
index 2b641125..06134d6b 100644
--- a/src/de/dhbwstuttgart/typeinference/unify/RuleSet.java
+++ b/src/de/dhbwstuttgart/typeinference/unify/RuleSet.java
@@ -575,8 +575,9 @@ public class RuleSet implements IRuleSet{
if(pair.getPairOp() == PairOperator.EQUALSDOT
&& pair.getLhsType() instanceof PlaceholderType)
lhsType = (PlaceholderType) pair.getLhsType();
+ rhsType = pair.getRhsType(); //PL eingefuegt 2017-09-29 statt !((rhsType = pair.getRhsType()) instanceof PlaceholderType)
if(lhsType != null
- && !((rhsType = pair.getRhsType()) instanceof PlaceholderType)
+ //&& !((rhsType = pair.getRhsType()) instanceof PlaceholderType) //PL geloescht am 2017-09-29 Begründung: auch Typvariablen muessen ersetzt werden.
&& typeMap.get(lhsType) > 1 // The type occurs in more pairs in the set than just the recent pair.
&& !rhsType.getTypeParams().occurs(lhsType)) {
Unifier uni = new Unifier(lhsType, rhsType);
diff --git a/src/de/dhbwstuttgart/typeinference/unify/TypeUnifyTask.java b/src/de/dhbwstuttgart/typeinference/unify/TypeUnifyTask.java
index be67ea09..09bb15b8 100644
--- a/src/de/dhbwstuttgart/typeinference/unify/TypeUnifyTask.java
+++ b/src/de/dhbwstuttgart/typeinference/unify/TypeUnifyTask.java
@@ -119,7 +119,7 @@ public class TypeUnifyTask extends RecursiveTask>> {
// Sets of the "second level"
Set undefinedPairs = new HashSet<>();
Set>>> secondLevelSets = calculatePairSets(eq2s, fc, undefinedPairs);
-
+ //PL 2017-09-20: Im calculatePairSets wird möglicherweise O .< java.lang.Integer nicht ausgewertet Faculty Beispiel im 1. Schritt
// If pairs occured that did not match one of the cartesian product cases,
// those pairs are contradictory and the unification is impossible.
if(!undefinedPairs.isEmpty())
@@ -169,7 +169,10 @@ public class TypeUnifyTask extends RecursiveTask>> {
* Step 6 a) Restart (fork) for pairs where subst was applied
*/
if(parallel) {
- if (eqPrime.equals(eq))
+ if //(eqPrime.equals(eq)) //PL 2017-09-29 auskommentiert und durch
+ (!eqPrimePrime.isPresent()) //PL 2071-09-29 dies ersetzt
+ //Begruendung: Wenn in der Substitution keine Veraenderung
+ //(!eqPrimePrime.isPresent()) erfolgt ist, ist das Ergebnis erzielt.
eqPrimePrimeSet.add(eqPrime);
else if(eqPrimePrime.isPresent()) {
TypeUnifyTask fork = new TypeUnifyTask(eqPrimePrime.get(), fc, true);
@@ -183,7 +186,10 @@ public class TypeUnifyTask extends RecursiveTask>> {
}
}
else { // sequentiell (Step 6b is included)
- if (eqPrime.equals(eq))
+ if //(eqPrime.equals(eq)) //PL 2017-09-29 auskommentiert und durch
+ (!eqPrimePrime.isPresent()) //PL 2071-09-29 dies ersetzt
+ //Begruendung: Wenn in der Substitution keine Veraenderung
+ //(!eqPrimePrime.isPresent()) erfolgt ist, ist das Ergebnis erzielt.
eqPrimePrimeSet.add(eqPrime);
else if(eqPrimePrime.isPresent())
eqPrimePrimeSet.addAll(unify(eqPrimePrime.get(), fc, false));