sig
  type time = int
  type ('a, 'b) animated =
      [ `Evol of
          IpTimed.time * IpTimed.time *
          (IpTimed.time -> IpTimed.time -> IpTimed.time -> 'b -> 'a) * 'b
      | `From of IpTimed.time * 'a ]
  type ('a, 'b) timed =
      [ `Animated of ('a, 'b) IpTimed.animated list | `Static of 'a ]
  val val_at : IpTimed.time -> ('a, 'b) IpTimed.animated list -> 'a
  val get_val : IpTimed.time -> ('a, 'b) IpTimed.timed -> 'a
  val finished : IpTimed.time -> ('a, 'b) IpTimed.animated list -> bool
  module Labels :
    sig
      val val_at :
        t:IpTimed.time -> anim:('a, 'b) IpTimed.animated list -> 'a
      val get_val : t:IpTimed.time -> tv:('a, 'b) IpTimed.timed -> 'a
    end
end