@Override
  public W<DeltaTriple<Delta,Delta,Delta>> delta(DC obj)
  { if(obj instanceof Triple)
    { Triple that=(Triple)obj;
      if(this.r.instanceOf(that.r) && this.s.instanceOf(that.s) && this.t.instanceOf(that.t))
      { W wr=this.r.delta(that.r);
        W ws=this.s.delta(that.s);
        W wt=this.t.delta(that.t);
        
        if(wr.equa().getValue() && ws.equa().getValue() && wt.equa().getValue())
        {return new W(new Equality(true), new Similarity(0.0), new DeltaTriple.Id(this));}
        else
        { return new W( new Equality(false),
                        new Similarity((wr.simi().getValue()+ws.simi().getValue()+wt.simi().getValue())/3),
                        new DeltaTriple(wr.diff(),ws.diff(),wt.diff())
                      );
        }
      }      
      else
      { throw new RuntimeException("The fst element in the fst pair r1="+this.r+
                                   "\nThe fst element in the snd pair r2="+that.r+" they should be the same type. "+
                                   "\nThe snd element in the fst pair s1="+this.s+
                                   "\nThe snd element in the snd pair s2="+that.s+" they should be the same type. "+
                                   "\nThe trd element in the fst pair t1="+this.t+
                                   "\nThe trd element in the snd pair t2="+that.t+" they should be the same type. ");
      }    
    }
    else 
    { throw new RuntimeException(obj+" is NOT of W type?");
    }
  }