let update f item descr =
    match lookup f with
      | Undefined | Defined _ -> 
          declare { d_name=f ; d_item=item ; d_descr=descr }
      | Cyclic c ->
          if c.stable then
            begin
              match c.ccitem with
                | Cnone -> ()
                | Cdefault item0 | Cupdated(item0,_) ->
                    c.stable <- compatible item0 item
            end ;
          c.ccitem <- Cupdated(item,descr)