enum tache=...;

int duree[tache]=...;

var int debut[tache] in 0..maxint;
var int fin in 0..maxint;

minimize
   fin

subject to {
      debut[T2] >= debut[T1] + duree[T1];
      debut[T4] >= debut[T2] + duree[T2];
      debut[T4] >= debut[T3] + duree[T3];
      debut[T5] >= debut[T4] + duree[T4];
   forall(t in tache)
      fin >= debut[t] + duree[t];   
};
