type time = float type 'a value type 'a signal = 'a value option type 'a signal_t = ('a value * time) option val horizon : 'a value -> time val make : time * (time -> 'a) -> 'a value val apply : 'a value * time -> 'a val sustain : 'a -> 'a value val solve_ode45 : ('a -C-> 'b) -S-> 'a signal -D-> 'b signal_t val solve_sundials : ('a -C-> 'b) -S-> 'a signal -D-> 'b signal_t val synchr : ('a signal -D-> 'b signal_t) -S-> ('a signal -D-> 'c signal_t) -S-> 'a signal -D-> ('b * 'c) signal_t val iter : int -S-> ('a -D-> unit) -S-> 'a signal_t -D-> unit val iter_t : int -S-> (time * 'a -D-> unit) -S-> 'a signal_t -D-> unit val check : int -S-> ('a -D-> bool) -S-> 'a signal_t -D-> unit val check_t : int -S-> (time * 'a -D-> bool) -S-> 'a signal_t -D-> unit val period' : float -S-> ('a -D-> unit) -S-> 'a signal_t -D-> unit val period'_t : float -S-> (time * 'a -D-> unit) -S-> 'a signal_t -D-> unit