Crate chronologic

source ·
Expand description

Time constraint reasoning

This crate is dedicated to reasoning about time. It deals with time constraints, propagate them and maintain an agenda of all the possible dates consistent with the user constraints.

Time structures

Several time structures (interval, sets) are provided to make easier time manipulation.

This time data defines several operators for union, intersection, translation in two ways:

  • by using standard operators (& for intersection, | for unsion, +/- for translation)
  • by using iterator traits (see module iter) which allows time manipulation with saving memory allocation (no intermediate structures needed)

Time constraint management

The module graph deals with time constraints graph and mainly provides two structures:

  • graph::TimeGraph: the time constraints graph, a time constraint is defined as an interval of duration between two instants, a graph could be considered as a collection of time constraints
  • graph::TimeScheduler: the scheduler maintains a set of slots (one for each instant) according to its time graph

Any modification of constraints are automatically propagated (see graph::TimeGraph for more informations about the propagation algorithm).


  • Time constraints management
  • Iterators over time windows for efficient algorithms



Type Aliases