@Override
  public W<DeltaSet> delta(DC obj)
  { if(obj instanceof Set)
    { Set that=(Set)obj;
    
      Set<Pair<T,T>> phiMax=getPhiMax(getAllPhis(this,that));
      Equality equ=getPhiEqu(phiMax);
      int m=this.size();
      int n=that.size();
      double diffMeasure=(2*getPhiSim(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 DeltaSet.Id(this));
      }
      else
      { return new W(new Equality(false), 
                     new Similarity(diffMeasure),
                     new DeltaSet( dMax(phiMax),
                                   this.less(dom(phiMax)),
                                   that.less(codom(phiMax))
                                 )
                    ); 
      }
    }
    else
    { throw new RuntimeException(obj+" is NOT of type Set.");}  
  }