procedure ustar(var v: vector; var u: ltuple);
var
  ok: boolean;
  s0: scalar;
  vt: vector;
begin { ustar }
  vt:=v;
  venlarge(vt);  { contains the neighborhood W' }
  findu(vt,u);

  szero(s0);
  ok:= ssub(sone,u[0]) and ssub(s0,u[1]) and ssub(sone,u[2]) and ssub(s0,u[3]);
  ok:= ok and uok(u,vt);

  if not ok then writeln('ustar: error - u out of range');
end { ustar };

