@Override
  public W delta(DC obj)
  { if(obj instanceof List)
    { List that=(List)obj;
      Set<Pair<PT<Integer>,T>> baseSetA=this.getBaseSet();
      Set<Pair<PT<Integer>,T>> baseSetB=that.getBaseSet();
      Set<Pair<Pair<PT<Integer>,T>,Pair<PT<Integer>,T>>> phiMax=getPhiMax(getAllPhis(baseSetA,baseSetB));
      Equality equ=getPhiEqu(phiMax);
      int m=this.size();
      int n=that.size();
      double diffMeasure=(2*getIndexedSim(phiMax).getValue()+Similarity.sizeBalance(m,n))/(m+n);
      if(equ.getValue()&&m==n&&phiMax.size()==m)
      { return new W(new Equality(true), new Similarity(0.0), new DeltaList.Id(this));
      }
      else
      { return new W(new Equality(false), 
                     new Similarity(diffMeasure), 
                     new DeltaList( dMax(phiMax),
                                    baseSetA.less(dom(phiMax)),
                                    baseSetB.less(codom(phiMax))
                                  )
                                  
                       );
      }
    }
    else
    { throw new RuntimeException(obj+" is NOT of type List");} 
  }