From f617ad8946b5472b6c79f3513ed43c6083976e59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Pl=C3=BCmicke?= Date: Thu, 24 May 2018 10:28:22 +0200 Subject: [PATCH] modified: ../../src/de/dhbwstuttgart/typeinference/typeAlgo/TYPEStmt.java Relationen auf verschiedene Numeric-Typen umgestellt im equals Null abgefragt --- .../typeinference/typeAlgo/TYPEStmt.java | 44 +- .../typeinference/unify/model/UnifyPair.java | 3 + test/bytecode/javFiles/While.jav | 2 +- test/logFiles/log | 479 +++++++++++++++--- 4 files changed, 449 insertions(+), 79 deletions(-) diff --git a/src/de/dhbwstuttgart/typeinference/typeAlgo/TYPEStmt.java b/src/de/dhbwstuttgart/typeinference/typeAlgo/TYPEStmt.java index 4cf58121..4dad9de6 100644 --- a/src/de/dhbwstuttgart/typeinference/typeAlgo/TYPEStmt.java +++ b/src/de/dhbwstuttgart/typeinference/typeAlgo/TYPEStmt.java @@ -272,10 +272,48 @@ public class TYPEStmt implements StatementVisitor{ binary.operation.equals(BinaryExpr.Operator.BIGGEREQUAL) || binary.operation.equals(BinaryExpr.Operator.BIGGERTHAN) || binary.operation.equals(BinaryExpr.Operator.LESSTHAN)){ - constraintsSet.addUndConstraint(new Pair(binary.lexpr.getType(), number, PairOperator.SMALLERDOT)); - constraintsSet.addUndConstraint(new Pair(binary.rexpr.getType(), number, PairOperator.SMALLERDOT)); + //eingefuegt PL 2018-05-24 + Set numericRelationConcatenation = new HashSet<>(); + Constraint numeric = new Constraint<>(); + numeric.add(new Pair(binary.lexpr.getType(), bytee, PairOperator.SMALLERDOT)); + numeric.add(new Pair(binary.rexpr.getType(), bytee, PairOperator.SMALLERDOT)); + numeric.add(new Pair(binary.getType(), bool, PairOperator.SMALLERDOT)); + numericRelationConcatenation.add(numeric); + numeric = new Constraint<>(); + numeric.add(new Pair(binary.lexpr.getType(), shortt, PairOperator.SMALLERDOT)); + numeric.add(new Pair(binary.rexpr.getType(), shortt, PairOperator.SMALLERDOT)); + numeric.add(new Pair(binary.getType(), bool, PairOperator.SMALLERDOT)); + numericRelationConcatenation.add(numeric); + numeric = new Constraint<>(); + numeric.add(new Pair(binary.lexpr.getType(), integer, PairOperator.SMALLERDOT)); + numeric.add(new Pair(binary.rexpr.getType(), integer, PairOperator.SMALLERDOT)); + numeric.add(new Pair(binary.getType(), bool, PairOperator.SMALLERDOT)); + numericRelationConcatenation.add(numeric); + numeric = new Constraint<>(); + numeric.add(new Pair(binary.lexpr.getType(), longg, PairOperator.SMALLERDOT)); + numeric.add(new Pair(binary.rexpr.getType(), longg, PairOperator.SMALLERDOT)); + numeric.add(new Pair(binary.getType(), bool, PairOperator.SMALLERDOT)); + numericRelationConcatenation.add(numeric); + numeric = new Constraint<>(); + numeric.add(new Pair(binary.lexpr.getType(), floatt, PairOperator.SMALLERDOT)); + numeric.add(new Pair(binary.rexpr.getType(), floatt, PairOperator.SMALLERDOT)); + numeric.add(new Pair(binary.getType(), bool, PairOperator.SMALLERDOT)); + numericRelationConcatenation.add(numeric); + numeric = new Constraint<>(); + numeric.add(new Pair(binary.lexpr.getType(), doublee, PairOperator.SMALLERDOT)); + numeric.add(new Pair(binary.rexpr.getType(), doublee, PairOperator.SMALLERDOT)); + numeric.add(new Pair(binary.getType(), bool, PairOperator.SMALLERDOT)); + numericRelationConcatenation.add(numeric); + + //***ACHTUNG: Moeglicherweise oder und und-Contraint falsch + constraintsSet.addOderConstraint(numericRelationConcatenation); + //***ACHTUNG: Moeglicherweise oder und und-Contraint falsch + + //auskommentiert PL 2018-05-24 + //constraintsSet.addUndConstraint(new Pair(binary.lexpr.getType(), number, PairOperator.SMALLERDOT)); + //constraintsSet.addUndConstraint(new Pair(binary.rexpr.getType(), number, PairOperator.SMALLERDOT)); //Rückgabetyp ist Boolean - constraintsSet.addUndConstraint(new Pair(bool, binary.getType(), PairOperator.EQUALSDOT)); + //constraintsSet.addUndConstraint(new Pair(bool, binary.getType(), PairOperator.EQUALSDOT)); }else{ throw new NotImplementedException(); } diff --git a/src/de/dhbwstuttgart/typeinference/unify/model/UnifyPair.java b/src/de/dhbwstuttgart/typeinference/unify/model/UnifyPair.java index b631e5ec..19dee99f 100644 --- a/src/de/dhbwstuttgart/typeinference/unify/model/UnifyPair.java +++ b/src/de/dhbwstuttgart/typeinference/unify/model/UnifyPair.java @@ -149,6 +149,9 @@ public class UnifyPair { UnifyPair other = (UnifyPair) obj; if (isUndefinedPair()) { + if (other.getBasePair() != basePair || (other.getBasePair() == null && basePair == null)) { + return false; + } if (!other.getBasePair().equals(basePair) || !other.getAllSubstitutions().equals(getAllSubstitutions())) { return false; diff --git a/test/bytecode/javFiles/While.jav b/test/bytecode/javFiles/While.jav index 5b983f3e..ed7e8356 100644 --- a/test/bytecode/javFiles/While.jav +++ b/test/bytecode/javFiles/While.jav @@ -2,7 +2,7 @@ import java.lang.Integer; // wenn nur ein Import da steht,wird die Type von // dem Literal 2 Number berechnet => Deswegen kann // nicht auf den Stack geladen. -//import java.lang.Long; +import java.lang.Long; public class While { m(x) { diff --git a/test/logFiles/log b/test/logFiles/log index 5d17ab28..03035949 100644 --- a/test/logFiles/log +++ b/test/logFiles/log @@ -1,107 +1,436 @@ FC:\{java.lang.Number=Elem: Node(java.lang.Number) Prec: [java.lang.Object, java.io.Serializable] -Desc: [java.lang.Integer] +Desc: [java.lang.Integer, java.lang.Long] + +, java.lang.Object=Elem: Node(java.lang.Object) +Prec: [java.lang.Object] +Desc: [java.lang.Number, java.lang.Object, java.lang.Integer, java.lang.Comparable, java.lang.Long, java.lang.Comparable, While, java.io.Serializable, java.lang.Comparable] , java.lang.Comparable=Elem: Node(java.lang.Comparable) Prec: [] -Desc: [java.lang.Integer] - -, java.lang.Comparable=Elem: Node(java.lang.Comparable) -Prec: [java.lang.Object] -Desc: [] +Desc: [java.lang.Integer, java.lang.Long] , java.lang.Integer=Elem: Node(java.lang.Integer) Prec: [java.lang.Number, java.lang.Object, java.lang.Comparable, java.io.Serializable] Desc: [] -, java.lang.Iterable=Elem: Node(java.lang.Iterable) +, java.lang.Comparable=Elem: Node(java.lang.Comparable) Prec: [java.lang.Object] Desc: [] -, java.lang.Iterable=Elem: Node(java.lang.Iterable) -Prec: [java.lang.Object] +, java.lang.Long=Elem: Node(java.lang.Long) +Prec: [java.lang.Number, java.lang.Object, java.lang.Comparable, java.io.Serializable] Desc: [] -, java.util.Collection=Elem: Node(java.util.Collection) -Prec: [] -Desc: [java.util.AbstractList, java.util.Vector, java.util.List, java.util.AbstractCollection] - -, java.util.AbstractCollection=Elem: Node(java.util.AbstractCollection) -Prec: [java.lang.Object, java.util.Collection] -Desc: [java.util.AbstractList, java.util.Vector] - -, java.util.AbstractList=Elem: Node(java.util.AbstractList) -Prec: [java.lang.Object, java.util.Collection, java.util.AbstractCollection, java.util.List] -Desc: [java.util.Vector] - -, java.lang.Cloneable=Elem: Node(java.lang.Cloneable) +, java.lang.Comparable=Elem: Node(java.lang.Comparable) Prec: [java.lang.Object] -Desc: [java.util.Vector] - -, java.lang.Comparable=Elem: Node(java.lang.Comparable) -Prec: [java.lang.Object] -Desc: [] - -, java.lang.Object=Elem: Node(java.lang.Object) -Prec: [java.lang.Object] -Desc: [java.lang.Number, java.lang.Comparable, java.lang.Integer, java.lang.Iterable, java.lang.Iterable, java.util.AbstractCollection, java.util.AbstractList, java.lang.Cloneable, java.lang.Comparable, Gen, java.lang.Object, java.util.Vector, java.util.Collection, java.util.RandomAccess, java.util.Collection, java.util.List, java.io.Serializable, java.lang.Iterable, java.util.Collection] - -, java.util.Vector=Elem: Node(java.util.Vector) -Prec: [java.util.AbstractList, java.lang.Cloneable, java.lang.Object, java.util.Collection, java.util.RandomAccess, java.io.Serializable, java.util.AbstractCollection, java.util.List] -Desc: [] - -, Gen=Elem: Node(Gen) -Prec: [java.lang.Object] -Desc: [] - -, java.util.Collection=Elem: Node(java.util.Collection) -Prec: [java.lang.Object, java.lang.Iterable] -Desc: [] - -, java.util.RandomAccess=Elem: Node(java.util.RandomAccess) -Prec: [java.lang.Object] -Desc: [java.util.Vector] - -, java.util.List=Elem: Node(java.util.List) -Prec: [java.lang.Object, java.util.Collection] -Desc: [] - -, java.util.Collection=Elem: Node(java.util.Collection) -Prec: [java.lang.Object, java.lang.Iterable] Desc: [] , java.io.Serializable=Elem: Node(java.io.Serializable) Prec: [java.lang.Object] -Desc: [java.lang.Number, java.util.Vector, java.lang.Integer] +Desc: [java.lang.Number, java.lang.Integer, java.lang.Long] -, java.lang.Iterable=Elem: Node(java.lang.Iterable) +, While=Elem: Node(While) Prec: [java.lang.Object] Desc: [] -, java.lang.Iterable=Elem: Node(java.lang.Iterable) -Prec: [] -Desc: [java.util.Collection, java.util.Collection, java.util.Collection] - -, java.util.Collection=Elem: Node(java.util.Collection) -Prec: [java.lang.Object, java.lang.Iterable] +, java.lang.Comparable=Elem: Node(java.lang.Comparable) +Prec: [java.lang.Object] Desc: [] -, java.util.List=Elem: Node(java.util.List) -Prec: [] -Desc: [java.util.AbstractList, java.util.Vector] - } -class Gen { +class While { - java.util.Vector m(java.util.Vector v)({ - return (v)::java.util.Vector; - })::TPH K + TPH K m(TPH L x)({ + while((x)::TPH L | 2.0)({ + (x)::TPH L = (x)::TPH L | 1.0; + })::TPH Q; + return (x)::TPH L; + })::TPH S - Gen()({ + While()({ super(()); - })::TPH N + })::TPH V -}Unifikation: [(java.util.Vector <. java.util.Vector, )] -Unifikation: [] -[] +}0 AA: [] +1 Unifikation: [(O <. java.lang.Long, 0), (L <. java.lang.Float, 1), (P <. java.lang.Long, 1), (M =. java.lang.Boolean, 0), (N <. java.lang.Float, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (P <. L, 1, 1), (L <. java.lang.Long, 1)] +1 UndefinedPairs; (L <. java.lang.Float, 1) +BasePair; null +RES: [] +0 AA: [] +1 Unifikation: [(L <. java.lang.Float, 1), (M =. java.lang.Boolean, 0), (N <. java.lang.Float, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (P <. java.lang.Number, 1), (L <. java.lang.Double, 1), (P <. L, 1, 1), (O <. java.lang.Double, 0), (P <. java.lang.Double, 1)] +1 UndefinedPairs; (L <. java.lang.Float, 1) +BasePair; null +RES: [] +0 AA: [] +1 Unifikation: [(L <. java.lang.Float, 1), (M =. java.lang.Boolean, 0), (N <. java.lang.Float, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (L =. java.lang.String, 1), (P <. L, 1, 1), (O =. java.lang.String, 0), (P =. java.lang.String, 1)] +1 UndefinedPairs; (L <. java.lang.Float, 1) +BasePair; null +RES: [] +0 AA: [] +1 Unifikation: [(L <. java.lang.Float, 1), (O <. java.lang.Byte, 0), (M =. java.lang.Boolean, 0), (N <. java.lang.Float, 0), (L <. java.lang.Byte, 1), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (P <. L, 1, 1), (P <. java.lang.Integer, 1)] +1 UndefinedPairs; (L <. java.lang.Float, 1) +BasePair; null +RES: [] +0 AA: [] +1 Unifikation: [(L <. java.lang.Float, 1), (M =. java.lang.Boolean, 0), (N <. java.lang.Float, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (P <. L, 1, 1), (O <. java.lang.Float, 0), (P <. java.lang.Float, 1)] +1 UndefinedPairs; (L <. java.lang.Float, 1) +BasePair; null +RES: [] +0 AA: [] +1 Unifikation: [(L <. java.lang.Float, 1), (L <. java.lang.Integer, 1), (M =. java.lang.Boolean, 0), (N <. java.lang.Float, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (P <. L, 1, 1), (O <. java.lang.Integer, 0), (P <. java.lang.Integer, 1)] +1 UndefinedPairs; (L <. java.lang.Float, 1) +BasePair; null +RES: [] +0 AA: [] +1 Unifikation: [(L <. java.lang.Float, 1), (M =. java.lang.Boolean, 0), (N <. java.lang.Float, 0), (M <. java.lang.Boolean, 0), (O <. java.lang.Short, 0), (L <. K, 1, -1), (L <. java.lang.Short, 1), (P <. L, 1, 1), (P <. java.lang.Integer, 1)] +1 UndefinedPairs; (L <. java.lang.Float, 1) +BasePair; null +RES: [] +0 AA: [] +1 Unifikation: [(O <. java.lang.Long, 0), (L <. java.lang.Integer, 1), (P <. java.lang.Long, 1), (M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (P <. L, 1, 1), (L <. java.lang.Long, 1), (N <. java.lang.Integer, 0)] +1 AA: [] +2 Unifikation: [(O <. java.lang.Long, 0), (java.lang.Integer <. K, , -1), (P <. java.lang.Long, 1), (M =. java.lang.Boolean, 0), (java.lang.Boolean <. java.lang.Boolean, ), (L =. java.lang.Integer, 1), (P <. java.lang.Integer, 1), (java.lang.Integer <. java.lang.Long, ), (N <. java.lang.Integer, 0)] +1 UndefinedPairs; (java.lang.Integer <. java.lang.Long, ) +BasePair; (L <. java.lang.Long, 1) +RES: [] +0 AA: [] +1 Unifikation: [(L <. java.lang.Integer, 1), (M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (P <. java.lang.Number, 1), (L <. java.lang.Double, 1), (P <. L, 1, 1), (O <. java.lang.Double, 0), (P <. java.lang.Double, 1), (N <. java.lang.Integer, 0)] +1 AA: [] +2 Unifikation: [(java.lang.Integer <. K, , -1), (M =. java.lang.Boolean, 0), (java.lang.Boolean <. java.lang.Boolean, ), (L =. java.lang.Integer, 1), (P <. java.lang.Number, 1), (java.lang.Integer <. java.lang.Double, ), (P <. java.lang.Integer, 1), (O <. java.lang.Double, 0), (P <. java.lang.Double, 1), (N <. java.lang.Integer, 0)] +1 UndefinedPairs; (java.lang.Integer <. java.lang.Double, ) +BasePair; (L <. java.lang.Double, 1) +RES: [] +0 AA: [] +1 Unifikation: [(L <. java.lang.Integer, 1), (M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (L =. java.lang.String, 1), (P <. L, 1, 1), (O =. java.lang.String, 0), (N <. java.lang.Integer, 0), (P =. java.lang.String, 1)] +1 AA: [] +2 Unifikation: [(java.lang.Integer <. K, , -1), (java.lang.Integer =. java.lang.String, ), (M =. java.lang.Boolean, 0), (java.lang.String <. java.lang.Integer, ), (java.lang.Boolean <. java.lang.Boolean, ), (L =. java.lang.Integer, 1), (O =. java.lang.String, 0), (P =. java.lang.String, 1), (N <. java.lang.Integer, 0)] +1 UndefinedPairs; (java.lang.Integer =. java.lang.String, ) +BasePair; (L =. java.lang.String, 1) +RES: [] +0 AA: [] +1 Unifikation: [(L <. java.lang.Integer, 1), (O <. java.lang.Byte, 0), (M =. java.lang.Boolean, 0), (L <. java.lang.Byte, 1), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (P <. L, 1, 1), (P <. java.lang.Integer, 1), (N <. java.lang.Integer, 0)] +1 AA: [] +2 Unifikation: [(java.lang.Integer <. K, , -1), (O <. java.lang.Byte, 0), (M =. java.lang.Boolean, 0), (java.lang.Integer <. java.lang.Byte, ), (java.lang.Boolean <. java.lang.Boolean, ), (L =. java.lang.Integer, 1), (P <. java.lang.Integer, 1), (N <. java.lang.Integer, 0)] +1 UndefinedPairs; (java.lang.Integer <. java.lang.Byte, ) +BasePair; (L <. java.lang.Byte, 1) +RES: [] +0 AA: [] +1 Unifikation: [(L <. java.lang.Integer, 1), (L <. java.lang.Float, 1), (M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (P <. L, 1, 1), (O <. java.lang.Float, 0), (P <. java.lang.Float, 1), (N <. java.lang.Integer, 0)] +1 AA: [] +2 Unifikation: [(java.lang.Integer <. K, , -1), (M =. java.lang.Boolean, 0), (java.lang.Boolean <. java.lang.Boolean, ), (L =. java.lang.Integer, 1), (java.lang.Integer <. java.lang.Float, ), (O <. java.lang.Float, 0), (P <. java.lang.Integer, 1), (P <. java.lang.Float, 1), (N <. java.lang.Integer, 0)] +1 UndefinedPairs; (java.lang.Integer <. java.lang.Float, ) +BasePair; (L <. java.lang.Float, 1) +RES: [] +0 AA: [] +1 Unifikation: [(L <. java.lang.Integer, 1), (M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (P <. L, 1, 1), (O <. java.lang.Integer, 0), (P <. java.lang.Integer, 1), (N <. java.lang.Integer, 0)] +1 AA: [] +2 Unifikation: [(java.lang.Integer <. K, , -1), (M =. java.lang.Boolean, 0), (java.lang.Boolean <. java.lang.Boolean, ), (L =. java.lang.Integer, 1), (O <. java.lang.Integer, 0), (P <. java.lang.Integer, 1), (N <. java.lang.Integer, 0)] +nextSet: [[(K =. java.lang.Object, -1)], [(K =. java.lang.Integer, -1)], [(K =. java.lang.Comparable, -1)], [(K =. java.lang.Number, -1)], [(K =. java.io.Serializable, -1)]] +2 AA: [] +3 Unifikation: [(M =. java.lang.Boolean, 0), (K =. java.lang.Integer, -1), (L =. java.lang.Integer, 1), (O <. java.lang.Integer, 0), (P <. java.lang.Integer, 1), (N <. java.lang.Integer, 0)] +nextSet: [[(P =. java.lang.Integer, 1)], [(P =. ? extends java.lang.Integer, 1)]] +3 AA: [] +4 Unifikation: [(M =. java.lang.Boolean, 0), (K =. java.lang.Integer, -1), (L =. java.lang.Integer, 1), (O <. java.lang.Integer, 0), (P =. ? extends java.lang.Integer, 1), (N <. java.lang.Integer, 0)] +nextSet: [[(O =. java.lang.Integer, 0)], [(O =. ? extends java.lang.Integer, 0)]] +4 AA: [] +5 Unifikation: [(M =. java.lang.Boolean, 0), (K =. java.lang.Integer, -1), (L =. java.lang.Integer, 1), (O =. java.lang.Integer, 0), (P =. ? extends java.lang.Integer, 1), (N <. java.lang.Integer, 0)] +nextSet: [[(N =. java.lang.Integer, 0)], [(N =. ? extends java.lang.Integer, 0)]] +5 AA: [] +6 Unifikation: [(M =. java.lang.Boolean, 0), (K =. java.lang.Integer, -1), (L =. java.lang.Integer, 1), (O =. java.lang.Integer, 0), (N =. java.lang.Integer, 0), (P =. ? extends java.lang.Integer, 1)] +[(M =. java.lang.Boolean, 0), (K =. java.lang.Integer, -1), (L =. java.lang.Integer, 1), (O =. java.lang.Integer, 0), (N =. java.lang.Integer, 0), (P =. ? extends java.lang.Integer, 1)] +Result1 [[(M =. java.lang.Boolean, 0), (K =. java.lang.Integer, -1), (L =. java.lang.Integer, 1), (O =. java.lang.Integer, 0), (N =. java.lang.Integer, 0), (P =. ? extends java.lang.Integer, 1)]] +Result1 [[(M =. java.lang.Boolean, 0), (K =. java.lang.Integer, -1), (L =. java.lang.Integer, 1), (O =. java.lang.Integer, 0), (N =. java.lang.Integer, 0), (P =. ? extends java.lang.Integer, 1)]] +Result1 [[(M =. java.lang.Boolean, 0), (K =. java.lang.Integer, -1), (L =. java.lang.Integer, 1), (O =. java.lang.Integer, 0), (N =. java.lang.Integer, 0), (P =. ? extends java.lang.Integer, 1)]] +Result1 [[(M =. java.lang.Boolean, 0), (K =. java.lang.Integer, -1), (L =. java.lang.Integer, 1), (O =. java.lang.Integer, 0), (N =. java.lang.Integer, 0), (P =. ? extends java.lang.Integer, 1)]] +Result1 [[(M =. java.lang.Boolean, 0), (K =. java.lang.Integer, -1), (L =. java.lang.Integer, 1), (O =. java.lang.Integer, 0), (N =. java.lang.Integer, 0), (P =. ? extends java.lang.Integer, 1)]] +Result1 [[(M =. java.lang.Boolean, 0), (K =. java.lang.Integer, -1), (L =. java.lang.Integer, 1), (O =. java.lang.Integer, 0), (N =. java.lang.Integer, 0), (P =. ? extends java.lang.Integer, 1)]] +RES: [[(M =. java.lang.Boolean, 0), (K =. java.lang.Integer, -1), (L =. java.lang.Integer, 1), (O =. java.lang.Integer, 0), (N =. java.lang.Integer, 0), (P =. ? extends java.lang.Integer, 1)]] +0 AA: [] +1 Unifikation: [(L <. java.lang.Integer, 1), (M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (O <. java.lang.Short, 0), (L <. K, 1, -1), (L <. java.lang.Short, 1), (P <. L, 1, 1), (P <. java.lang.Integer, 1), (N <. java.lang.Integer, 0)] +1 AA: [] +2 Unifikation: [(java.lang.Integer <. K, , -1), (M =. java.lang.Boolean, 0), (java.lang.Boolean <. java.lang.Boolean, ), (L =. java.lang.Integer, 1), (O <. java.lang.Short, 0), (java.lang.Integer <. java.lang.Short, ), (P <. java.lang.Integer, 1), (N <. java.lang.Integer, 0)] +1 UndefinedPairs; (java.lang.Integer <. java.lang.Short, ) +BasePair; (L <. java.lang.Short, 1) +RES: [] +0 AA: [] +1 Unifikation: [(O <. java.lang.Long, 0), (P <. java.lang.Long, 1), (M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (N <. java.lang.Short, 0), (L <. K, 1, -1), (L <. java.lang.Short, 1), (P <. L, 1, 1), (L <. java.lang.Long, 1)] +nextSet: [[(P =. java.lang.Long, 1)], [(P =. ? extends java.lang.Long, 1)]] +1 AA: [] +2 Unifikation: [(O <. java.lang.Long, 0), (? extends java.lang.Long <. L, , 1), (M =. java.lang.Boolean, 0), (java.lang.Boolean <. java.lang.Boolean, ), (N <. java.lang.Short, 0), (L <. K, 1, -1), (L <. java.lang.Short, 1), (L <. java.lang.Long, 1), (P =. ? extends java.lang.Long, 1)] +1 UndefinedPairs; (L <. java.lang.Short, 1) +BasePair; null +abhSubst: [] +a: [(P =. ? extends java.lang.Long, 1)] +Durchschnitt: [] +nextSet: [[(P =. java.lang.Long, 1)], [(P =. ? extends java.lang.Long, 1)]] +nextSetasList: [] +Number erased Elements (undef): 1 +Number erased Elements (undef): 1 +Number of Backtracking: 1 +RES: [] +0 AA: [] +1 Unifikation: [(M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (N <. java.lang.Short, 0), (L <. K, 1, -1), (L <. java.lang.Short, 1), (P <. java.lang.Number, 1), (L <. java.lang.Double, 1), (P <. L, 1, 1), (O <. java.lang.Double, 0), (P <. java.lang.Double, 1)] +1 UndefinedPairs; (L <. java.lang.Short, 1) +BasePair; null +RES: [] +0 AA: [] +1 Unifikation: [(M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (N <. java.lang.Short, 0), (L <. K, 1, -1), (L <. java.lang.Short, 1), (L =. java.lang.String, 1), (P <. L, 1, 1), (O =. java.lang.String, 0), (P =. java.lang.String, 1)] +1 UndefinedPairs; (L <. java.lang.Short, 1) +BasePair; null +RES: [] +0 AA: [] +1 Unifikation: [(O <. java.lang.Byte, 0), (M =. java.lang.Boolean, 0), (L <. java.lang.Byte, 1), (M <. java.lang.Boolean, 0), (N <. java.lang.Short, 0), (L <. K, 1, -1), (L <. java.lang.Short, 1), (P <. L, 1, 1), (P <. java.lang.Integer, 1)] +1 UndefinedPairs; (L <. java.lang.Byte, 1) +BasePair; null +RES: [] +0 AA: [] +1 Unifikation: [(L <. java.lang.Float, 1), (M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (N <. java.lang.Short, 0), (L <. K, 1, -1), (L <. java.lang.Short, 1), (P <. L, 1, 1), (O <. java.lang.Float, 0), (P <. java.lang.Float, 1)] +1 UndefinedPairs; (L <. java.lang.Float, 1) +BasePair; null +RES: [] +0 AA: [] +1 Unifikation: [(L <. java.lang.Integer, 1), (M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (N <. java.lang.Short, 0), (L <. K, 1, -1), (L <. java.lang.Short, 1), (P <. L, 1, 1), (O <. java.lang.Integer, 0), (P <. java.lang.Integer, 1)] +1 AA: [] +2 Unifikation: [(java.lang.Integer <. K, , -1), (M =. java.lang.Boolean, 0), (java.lang.Boolean <. java.lang.Boolean, ), (L =. java.lang.Integer, 1), (java.lang.Integer <. java.lang.Short, ), (N <. java.lang.Short, 0), (O <. java.lang.Integer, 0), (P <. java.lang.Integer, 1)] +1 UndefinedPairs; (java.lang.Integer <. java.lang.Short, ) +BasePair; (L <. java.lang.Short, 1) +RES: [] +0 AA: [] +1 Unifikation: [(M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (O <. java.lang.Short, 0), (N <. java.lang.Short, 0), (L <. K, 1, -1), (L <. java.lang.Short, 1), (P <. L, 1, 1), (P <. java.lang.Integer, 1)] +1 UndefinedPairs; (L <. java.lang.Short, 1) +BasePair; null +RES: [] +0 AA: [] +1 Unifikation: [(O <. java.lang.Long, 0), (P <. java.lang.Long, 1), (M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (P <. L, 1, 1), (L <. java.lang.Long, 1), (N <. java.lang.Long, 0)] +nextSet: [[(P =. java.lang.Long, 1)], [(P =. ? extends java.lang.Long, 1)]] +1 AA: [] +2 Unifikation: [(O <. java.lang.Long, 0), (? extends java.lang.Long <. L, , 1), (M =. java.lang.Boolean, 0), (java.lang.Boolean <. java.lang.Boolean, ), (L <. K, 1, -1), (L <. java.lang.Long, 1), (P =. ? extends java.lang.Long, 1), (N <. java.lang.Long, 0)] +2 AA: [] +3 Unifikation: [(O <. java.lang.Long, 0), (M =. java.lang.Boolean, 0), (L =. java.lang.Long, 1), (java.lang.Long <. K, , -1), (java.lang.Long <. java.lang.Long, ), (P =. ? extends java.lang.Long, 1), (N <. java.lang.Long, 0)] +nextSet: [[(K =. java.lang.Long, -1)], [(K =. java.lang.Object, -1)], [(K =. java.lang.Comparable, -1)], [(K =. java.lang.Number, -1)], [(K =. java.io.Serializable, -1)]] +3 AA: [] +4 Unifikation: [(O <. java.lang.Long, 0), (K =. java.lang.Long, -1), (M =. java.lang.Boolean, 0), (L =. java.lang.Long, 1), (P =. ? extends java.lang.Long, 1), (N <. java.lang.Long, 0)] +nextSet: [[(O =. java.lang.Long, 0)], [(O =. ? extends java.lang.Long, 0)]] +4 AA: [] +5 Unifikation: [(K =. java.lang.Long, -1), (M =. java.lang.Boolean, 0), (O =. java.lang.Long, 0), (L =. java.lang.Long, 1), (P =. ? extends java.lang.Long, 1), (N <. java.lang.Long, 0)] +nextSet: [[(N =. java.lang.Long, 0)], [(N =. ? extends java.lang.Long, 0)]] +5 AA: [] +6 Unifikation: [(K =. java.lang.Long, -1), (M =. java.lang.Boolean, 0), (O =. java.lang.Long, 0), (N =. java.lang.Long, 0), (L =. java.lang.Long, 1), (P =. ? extends java.lang.Long, 1)] +[(K =. java.lang.Long, -1), (M =. java.lang.Boolean, 0), (O =. java.lang.Long, 0), (N =. java.lang.Long, 0), (L =. java.lang.Long, 1), (P =. ? extends java.lang.Long, 1)] +Result1 [[(K =. java.lang.Long, -1), (M =. java.lang.Boolean, 0), (O =. java.lang.Long, 0), (N =. java.lang.Long, 0), (L =. java.lang.Long, 1), (P =. ? extends java.lang.Long, 1)]] +Result1 [[(K =. java.lang.Long, -1), (M =. java.lang.Boolean, 0), (O =. java.lang.Long, 0), (N =. java.lang.Long, 0), (L =. java.lang.Long, 1), (P =. ? extends java.lang.Long, 1)]] +Result1 [[(K =. java.lang.Long, -1), (M =. java.lang.Boolean, 0), (O =. java.lang.Long, 0), (N =. java.lang.Long, 0), (L =. java.lang.Long, 1), (P =. ? extends java.lang.Long, 1)]] +Result1 [[(K =. java.lang.Long, -1), (M =. java.lang.Boolean, 0), (O =. java.lang.Long, 0), (N =. java.lang.Long, 0), (L =. java.lang.Long, 1), (P =. ? extends java.lang.Long, 1)]] +Result1 [[(K =. java.lang.Long, -1), (M =. java.lang.Boolean, 0), (O =. java.lang.Long, 0), (N =. java.lang.Long, 0), (L =. java.lang.Long, 1), (P =. ? extends java.lang.Long, 1)]] +Result1 [[(K =. java.lang.Long, -1), (M =. java.lang.Boolean, 0), (O =. java.lang.Long, 0), (N =. java.lang.Long, 0), (L =. java.lang.Long, 1), (P =. ? extends java.lang.Long, 1)]] +RES: [[(K =. java.lang.Long, -1), (M =. java.lang.Boolean, 0), (O =. java.lang.Long, 0), (N =. java.lang.Long, 0), (L =. java.lang.Long, 1), (P =. ? extends java.lang.Long, 1)]] +0 AA: [] +1 Unifikation: [(M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (P <. java.lang.Number, 1), (L <. java.lang.Double, 1), (P <. L, 1, 1), (L <. java.lang.Long, 1), (O <. java.lang.Double, 0), (P <. java.lang.Double, 1), (N <. java.lang.Long, 0)] +nextSet: [[(P =. java.lang.Number, 1)], [(P =. java.lang.Integer, 1)], [(P =. java.lang.Long, 1)], [(P =. ? extends java.lang.Number, 1)], [(P =. ? extends java.lang.Integer, 1)], [(P =. ? extends java.lang.Long, 1)]] +1 AA: [] +2 Unifikation: [(M =. java.lang.Boolean, 0), (? extends java.lang.Number <. java.lang.Double, ), (java.lang.Boolean <. java.lang.Boolean, ), (L <. K, 1, -1), (L <. java.lang.Double, 1), (? extends java.lang.Number <. L, , 1), (L <. java.lang.Long, 1), (O <. java.lang.Double, 0), (P =. ? extends java.lang.Number, 1), (N <. java.lang.Long, 0)] +1 UndefinedPairs; (java.lang.Number <. java.lang.Double, ) +BasePair; (P <. java.lang.Double, 1) +1 UndefinedPairs; (L <. java.lang.Double, 1) +BasePair; null +abhSubst: [(P =. ? extends java.lang.Number, 1)] +a: [(P =. ? extends java.lang.Number, 1)] +Durchschnitt: [(P =. ? extends java.lang.Number, 1)] +nextSet: [[(P =. java.lang.Number, 1)], [(P =. java.lang.Integer, 1)], [(P =. java.lang.Long, 1)], [(P =. ? extends java.lang.Number, 1)], [(P =. ? extends java.lang.Integer, 1)], [(P =. ? extends java.lang.Long, 1)]] +nextSetasList: [[(P =. java.lang.Number, 1)], [(P =. java.lang.Integer, 1)], [(P =. java.lang.Long, 1)], [(P =. ? extends java.lang.Integer, 1)], [(P =. ? extends java.lang.Long, 1)]] +Number erased Elements (undef): 0 +Number erased Elements (undef): 0 +Number of Backtracking: 1 +2 AA: [] +3 Unifikation: [(P =. java.lang.Number, 1), (M =. java.lang.Boolean, 0), (java.lang.Boolean <. java.lang.Boolean, ), (java.lang.Number <. java.lang.Double, ), (L <. K, 1, -1), (L <. java.lang.Double, 1), (L <. java.lang.Long, 1), (O <. java.lang.Double, 0), (java.lang.Number <. L, , 1), (N <. java.lang.Long, 0)] +2 UndefinedPairs; (java.lang.Number <. java.lang.Double, ) +BasePair; (P <. java.lang.Double, 1) +2 UndefinedPairs; (L <. java.lang.Double, 1) +BasePair; null +abhSubst: [(P =. java.lang.Number, 1)] +a: [(P =. java.lang.Number, 1)] +Durchschnitt: [(P =. java.lang.Number, 1)] +nextSet: [[(P =. java.lang.Number, 1)], [(P =. java.lang.Integer, 1)], [(P =. java.lang.Long, 1)], [(P =. ? extends java.lang.Number, 1)], [(P =. ? extends java.lang.Integer, 1)], [(P =. ? extends java.lang.Long, 1)]] +nextSetasList: [[(P =. java.lang.Integer, 1)], [(P =. java.lang.Long, 1)], [(P =. ? extends java.lang.Integer, 1)], [(P =. ? extends java.lang.Long, 1)]] +Number erased Elements (undef): 0 +Number erased Elements (undef): 0 +Number of Backtracking: 2 +3 AA: [] +4 Unifikation: [(M =. java.lang.Boolean, 0), (java.lang.Boolean <. java.lang.Boolean, ), (? extends java.lang.Integer <. java.lang.Double, ), (L <. K, 1, -1), (L <. java.lang.Double, 1), (? extends java.lang.Integer <. L, , 1), (L <. java.lang.Long, 1), (O <. java.lang.Double, 0), (P =. ? extends java.lang.Integer, 1), (N <. java.lang.Long, 0)] +3 UndefinedPairs; (java.lang.Integer <. java.lang.Double, ) +BasePair; (P <. java.lang.Double, 1) +abhSubst: [(P =. ? extends java.lang.Integer, 1)] +a: [(P =. ? extends java.lang.Integer, 1)] +Durchschnitt: [(P =. ? extends java.lang.Integer, 1)] +nextSet: [[(P =. java.lang.Number, 1)], [(P =. java.lang.Integer, 1)], [(P =. java.lang.Long, 1)], [(P =. ? extends java.lang.Number, 1)], [(P =. ? extends java.lang.Integer, 1)], [(P =. ? extends java.lang.Long, 1)]] +nextSetasList: [[(P =. java.lang.Integer, 1)], [(P =. java.lang.Long, 1)], [(P =. ? extends java.lang.Long, 1)]] +Number erased Elements (undef): 0 +Number erased Elements (undef): 0 +Number of Backtracking: 3 +4 AA: [] +5 Unifikation: [(java.lang.Integer <. L, , 1), (M =. java.lang.Boolean, 0), (java.lang.Boolean <. java.lang.Boolean, ), (L <. K, 1, -1), (L <. java.lang.Double, 1), (P =. java.lang.Integer, 1), (L <. java.lang.Long, 1), (O <. java.lang.Double, 0), (java.lang.Integer <. java.lang.Double, ), (N <. java.lang.Long, 0)] +4 UndefinedPairs; (java.lang.Integer <. java.lang.Double, ) +BasePair; (P <. java.lang.Double, 1) +abhSubst: [(P =. java.lang.Integer, 1)] +a: [(P =. java.lang.Integer, 1)] +Durchschnitt: [(P =. java.lang.Integer, 1)] +nextSet: [[(P =. java.lang.Number, 1)], [(P =. java.lang.Integer, 1)], [(P =. java.lang.Long, 1)], [(P =. ? extends java.lang.Number, 1)], [(P =. ? extends java.lang.Integer, 1)], [(P =. ? extends java.lang.Long, 1)]] +nextSetasList: [[(P =. java.lang.Long, 1)], [(P =. ? extends java.lang.Long, 1)]] +Number erased Elements (undef): 0 +Number erased Elements (undef): 0 +Number of Backtracking: 4 +5 AA: [] +6 Unifikation: [(? extends java.lang.Long <. L, , 1), (M =. java.lang.Boolean, 0), (java.lang.Boolean <. java.lang.Boolean, ), (L <. K, 1, -1), (L <. java.lang.Double, 1), (? extends java.lang.Long <. java.lang.Double, ), (L <. java.lang.Long, 1), (O <. java.lang.Double, 0), (P =. ? extends java.lang.Long, 1), (N <. java.lang.Long, 0)] +5 UndefinedPairs; (java.lang.Long <. java.lang.Double, ) +BasePair; (P <. java.lang.Double, 1) +5 UndefinedPairs; (L <. java.lang.Double, 1) +BasePair; null +abhSubst: [(P =. ? extends java.lang.Long, 1)] +a: [(P =. ? extends java.lang.Long, 1)] +Durchschnitt: [(P =. ? extends java.lang.Long, 1)] +nextSet: [[(P =. java.lang.Number, 1)], [(P =. java.lang.Integer, 1)], [(P =. java.lang.Long, 1)], [(P =. ? extends java.lang.Number, 1)], [(P =. ? extends java.lang.Integer, 1)], [(P =. ? extends java.lang.Long, 1)]] +nextSetasList: [[(P =. java.lang.Long, 1)]] +Number erased Elements (undef): 0 +Number erased Elements (undef): 0 +Number of Backtracking: 5 +6 AA: [] +7 Unifikation: [(java.lang.Long <. java.lang.Double, ), (M =. java.lang.Boolean, 0), (java.lang.Boolean <. java.lang.Boolean, ), (L <. K, 1, -1), (L <. java.lang.Double, 1), (P =. java.lang.Long, 1), (java.lang.Long <. L, , 1), (L <. java.lang.Long, 1), (O <. java.lang.Double, 0), (N <. java.lang.Long, 0)] +6 UndefinedPairs; (java.lang.Long <. java.lang.Double, ) +BasePair; (P <. java.lang.Double, 1) +6 UndefinedPairs; (L <. java.lang.Double, 1) +BasePair; null +abhSubst: [(P =. java.lang.Long, 1)] +a: [(P =. java.lang.Long, 1)] +Durchschnitt: [(P =. java.lang.Long, 1)] +nextSet: [[(P =. java.lang.Number, 1)], [(P =. java.lang.Integer, 1)], [(P =. java.lang.Long, 1)], [(P =. ? extends java.lang.Number, 1)], [(P =. ? extends java.lang.Integer, 1)], [(P =. ? extends java.lang.Long, 1)]] +nextSetasList: [] +Number erased Elements (undef): 0 +Number erased Elements (undef): 0 +Number of Backtracking: 6 +RES: [] +0 AA: [] +1 Unifikation: [(M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (L =. java.lang.String, 1), (P <. L, 1, 1), (L <. java.lang.Long, 1), (O =. java.lang.String, 0), (N <. java.lang.Long, 0), (P =. java.lang.String, 1)] +1 AA: [] +2 Unifikation: [(M =. java.lang.Boolean, 0), (java.lang.Boolean <. java.lang.Boolean, ), (L =. java.lang.Long, 1), (java.lang.String <. java.lang.Long, ), (java.lang.Long <. K, , -1), (java.lang.Long =. java.lang.String, ), (O =. java.lang.String, 0), (P =. java.lang.String, 1), (N <. java.lang.Long, 0)] +1 UndefinedPairs; (java.lang.String <. java.lang.Long, ) +BasePair; (P <. java.lang.Long, 1) +RES: [] +0 AA: [] +1 Unifikation: [(O <. java.lang.Byte, 0), (M =. java.lang.Boolean, 0), (L <. java.lang.Byte, 1), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (P <. L, 1, 1), (L <. java.lang.Long, 1), (P <. java.lang.Integer, 1), (N <. java.lang.Long, 0)] +1 UndefinedPairs; (L <. java.lang.Byte, 1) +BasePair; null +RES: [] +0 AA: [] +1 Unifikation: [(L <. java.lang.Float, 1), (M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (P <. L, 1, 1), (O <. java.lang.Float, 0), (L <. java.lang.Long, 1), (P <. java.lang.Float, 1), (N <. java.lang.Long, 0)] +1 UndefinedPairs; (L <. java.lang.Float, 1) +BasePair; null +RES: [] +0 AA: [] +1 Unifikation: [(L <. java.lang.Integer, 1), (M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (P <. L, 1, 1), (O <. java.lang.Integer, 0), (L <. java.lang.Long, 1), (P <. java.lang.Integer, 1), (N <. java.lang.Long, 0)] +1 AA: [] +2 Unifikation: [(java.lang.Integer <. K, , -1), (M =. java.lang.Boolean, 0), (java.lang.Boolean <. java.lang.Boolean, ), (L =. java.lang.Integer, 1), (O <. java.lang.Integer, 0), (P <. java.lang.Integer, 1), (java.lang.Integer <. java.lang.Long, ), (N <. java.lang.Long, 0)] +1 UndefinedPairs; (java.lang.Integer <. java.lang.Long, ) +BasePair; (L <. java.lang.Long, 1) +RES: [] +0 AA: [] +1 Unifikation: [(M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (O <. java.lang.Short, 0), (L <. K, 1, -1), (L <. java.lang.Short, 1), (P <. L, 1, 1), (L <. java.lang.Long, 1), (P <. java.lang.Integer, 1), (N <. java.lang.Long, 0)] +1 UndefinedPairs; (L <. java.lang.Short, 1) +BasePair; null +RES: [] +0 AA: [] +1 Unifikation: [(O <. java.lang.Long, 0), (P <. java.lang.Long, 1), (M =. java.lang.Boolean, 0), (L <. java.lang.Byte, 1), (M <. java.lang.Boolean, 0), (N <. java.lang.Byte, 0), (L <. K, 1, -1), (P <. L, 1, 1), (L <. java.lang.Long, 1)] +nextSet: [[(P =. java.lang.Long, 1)], [(P =. ? extends java.lang.Long, 1)]] +1 AA: [] +2 Unifikation: [(O <. java.lang.Long, 0), (? extends java.lang.Long <. L, , 1), (M =. java.lang.Boolean, 0), (L <. java.lang.Byte, 1), (N <. java.lang.Byte, 0), (java.lang.Boolean <. java.lang.Boolean, ), (L <. K, 1, -1), (L <. java.lang.Long, 1), (P =. ? extends java.lang.Long, 1)] +1 UndefinedPairs; (L <. java.lang.Byte, 1) +BasePair; null +abhSubst: [] +a: [(P =. ? extends java.lang.Long, 1)] +Durchschnitt: [] +nextSet: [[(P =. java.lang.Long, 1)], [(P =. ? extends java.lang.Long, 1)]] +nextSetasList: [] +Number erased Elements (undef): 1 +Number erased Elements (undef): 1 +Number of Backtracking: 1 +RES: [] +0 AA: [] +1 Unifikation: [(M =. java.lang.Boolean, 0), (L <. java.lang.Byte, 1), (M <. java.lang.Boolean, 0), (N <. java.lang.Byte, 0), (L <. K, 1, -1), (P <. java.lang.Number, 1), (L <. java.lang.Double, 1), (P <. L, 1, 1), (O <. java.lang.Double, 0), (P <. java.lang.Double, 1)] +1 UndefinedPairs; (L <. java.lang.Byte, 1) +BasePair; null +RES: [] +0 AA: [] +1 Unifikation: [(M =. java.lang.Boolean, 0), (L <. java.lang.Byte, 1), (M <. java.lang.Boolean, 0), (N <. java.lang.Byte, 0), (L <. K, 1, -1), (L =. java.lang.String, 1), (P <. L, 1, 1), (O =. java.lang.String, 0), (P =. java.lang.String, 1)] +1 UndefinedPairs; (L <. java.lang.Byte, 1) +BasePair; null +RES: [] +0 AA: [] +1 Unifikation: [(O <. java.lang.Byte, 0), (M =. java.lang.Boolean, 0), (L <. java.lang.Byte, 1), (L <. java.lang.Byte, 1), (M <. java.lang.Boolean, 0), (N <. java.lang.Byte, 0), (L <. K, 1, -1), (P <. L, 1, 1), (P <. java.lang.Integer, 1)] +1 UndefinedPairs; (L <. java.lang.Byte, 1) +BasePair; null +RES: [] +0 AA: [] +1 Unifikation: [(L <. java.lang.Float, 1), (M =. java.lang.Boolean, 0), (L <. java.lang.Byte, 1), (M <. java.lang.Boolean, 0), (N <. java.lang.Byte, 0), (L <. K, 1, -1), (P <. L, 1, 1), (O <. java.lang.Float, 0), (P <. java.lang.Float, 1)] +1 UndefinedPairs; (L <. java.lang.Float, 1) +BasePair; null +RES: [] +0 AA: [] +1 Unifikation: [(L <. java.lang.Integer, 1), (M =. java.lang.Boolean, 0), (L <. java.lang.Byte, 1), (M <. java.lang.Boolean, 0), (N <. java.lang.Byte, 0), (L <. K, 1, -1), (P <. L, 1, 1), (O <. java.lang.Integer, 0), (P <. java.lang.Integer, 1)] +1 AA: [] +2 Unifikation: [(java.lang.Integer <. K, , -1), (M =. java.lang.Boolean, 0), (java.lang.Integer <. java.lang.Byte, ), (N <. java.lang.Byte, 0), (java.lang.Boolean <. java.lang.Boolean, ), (L =. java.lang.Integer, 1), (O <. java.lang.Integer, 0), (P <. java.lang.Integer, 1)] +1 UndefinedPairs; (java.lang.Integer <. java.lang.Byte, ) +BasePair; (L <. java.lang.Byte, 1) +RES: [] +0 AA: [] +1 Unifikation: [(M =. java.lang.Boolean, 0), (L <. java.lang.Byte, 1), (M <. java.lang.Boolean, 0), (N <. java.lang.Byte, 0), (O <. java.lang.Short, 0), (L <. K, 1, -1), (L <. java.lang.Short, 1), (P <. L, 1, 1), (P <. java.lang.Integer, 1)] +1 UndefinedPairs; (L <. java.lang.Byte, 1) +BasePair; null +RES: [] +0 AA: [] +1 Unifikation: [(O <. java.lang.Long, 0), (P <. java.lang.Long, 1), (M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (L <. java.lang.Double, 1), (P <. L, 1, 1), (N <. java.lang.Double, 0), (L <. java.lang.Long, 1)] +nextSet: [[(P =. java.lang.Long, 1)], [(P =. ? extends java.lang.Long, 1)]] +1 AA: [] +2 Unifikation: [(O <. java.lang.Long, 0), (? extends java.lang.Long <. L, , 1), (M =. java.lang.Boolean, 0), (java.lang.Boolean <. java.lang.Boolean, ), (L <. K, 1, -1), (L <. java.lang.Double, 1), (N <. java.lang.Double, 0), (L <. java.lang.Long, 1), (P =. ? extends java.lang.Long, 1)] +1 UndefinedPairs; (L <. java.lang.Double, 1) +BasePair; null +abhSubst: [] +a: [(P =. ? extends java.lang.Long, 1)] +Durchschnitt: [] +nextSet: [[(P =. java.lang.Long, 1)], [(P =. ? extends java.lang.Long, 1)]] +nextSetasList: [] +Number erased Elements (undef): 1 +Number erased Elements (undef): 1 +Number of Backtracking: 1 +RES: [] +0 AA: [] +1 Unifikation: [(M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (L <. java.lang.Double, 1), (P <. java.lang.Number, 1), (P <. L, 1, 1), (N <. java.lang.Double, 0), (O <. java.lang.Double, 0), (P <. java.lang.Double, 1)] +1 UndefinedPairs; (L <. java.lang.Double, 1) +BasePair; null +RES: [] +0 AA: [] +1 Unifikation: [(M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (L <. java.lang.Double, 1), (L =. java.lang.String, 1), (P <. L, 1, 1), (N <. java.lang.Double, 0), (O =. java.lang.String, 0), (P =. java.lang.String, 1)] +1 UndefinedPairs; (L <. java.lang.Double, 1) +BasePair; null +RES: [] +0 AA: [] +1 Unifikation: [(O <. java.lang.Byte, 0), (M =. java.lang.Boolean, 0), (L <. java.lang.Byte, 1), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (L <. java.lang.Double, 1), (P <. L, 1, 1), (N <. java.lang.Double, 0), (P <. java.lang.Integer, 1)] +1 UndefinedPairs; (L <. java.lang.Byte, 1) +BasePair; null +RES: [] +0 AA: [] +1 Unifikation: [(L <. java.lang.Float, 1), (M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (L <. java.lang.Double, 1), (P <. L, 1, 1), (N <. java.lang.Double, 0), (O <. java.lang.Float, 0), (P <. java.lang.Float, 1)] +1 UndefinedPairs; (L <. java.lang.Float, 1) +BasePair; null +RES: [] +0 AA: [] +1 Unifikation: [(L <. java.lang.Integer, 1), (M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (L <. K, 1, -1), (L <. java.lang.Double, 1), (P <. L, 1, 1), (N <. java.lang.Double, 0), (O <. java.lang.Integer, 0), (P <. java.lang.Integer, 1)] +1 AA: [] +2 Unifikation: [(java.lang.Integer <. K, , -1), (M =. java.lang.Boolean, 0), (java.lang.Boolean <. java.lang.Boolean, ), (L =. java.lang.Integer, 1), (N <. java.lang.Double, 0), (O <. java.lang.Integer, 0), (java.lang.Integer <. java.lang.Double, ), (P <. java.lang.Integer, 1)] +1 UndefinedPairs; (java.lang.Integer <. java.lang.Double, ) +BasePair; (L <. java.lang.Double, 1) +RES: [] +0 AA: [] +1 Unifikation: [(M =. java.lang.Boolean, 0), (M <. java.lang.Boolean, 0), (O <. java.lang.Short, 0), (L <. K, 1, -1), (L <. java.lang.Double, 1), (L <. java.lang.Short, 1), (P <. L, 1, 1), (N <. java.lang.Double, 0), (P <. java.lang.Integer, 1)] +1 UndefinedPairs; (L <. java.lang.Double, 1) +BasePair; null RES: []