Boost logo

Boost :

Subject: [boost] [itl] Preview 4 of the Interval Template Library
From: Joachim Faulhaber (afojgo_at_[hidden])
Date: 2009-03-04 17:11:10

Dear list,

I am happy to announce that the Interval Template
Library (Boost.Itl) converges to a state, that conforms
the standards of the boost libraries. It now contains
substantial test suites and almost complete quickbook
documentation. I hope it will soon be mature for a formal
review after a last round of feedback and subsequent

Since the last progress report in November last year
the following work has been done.

+ Interoperability of interval_containers: Addition,
  subtraction, intersection and symmetric difference
  are now interoperable for all combinations of interval
  containers that make sense: You may for instance intersect
  a split_interval_map with an interval_map, an interval_set
  an interval or an element.

+ Added symmetric difference and renamed operators
  in accordance to other set class templates like
  e.g. boost::dynamic_bitset.

+ Introduced infix operators as itl::namespace global
  functions that are interoperable between interval_maps,
  sets, intervals and elements, so far as the combinations
  make sense.

+ Operators are now
  +=, +, |=, | : Set union / Map union with aggregation
  -=, - : Set difference / Map union with aggregation
  &=, & : Set intersection / Map intersection with aggregation
  ^=, ^ : Set symmetric difference / Map symmetric difference
          with aggregation.

+ Extended the test suite, specifically for the new operators
  and their overloadings.

+ Wrote quickbook documentation for the library.

Please note that the original ITL as presented in May 2008
has been split into 3 parts and only the *first* part is prepared
for boost now:

itl : Core library, interval containers, PREPARED FOR BOOST
itl_xt : Extensions like histories and generalized crosstables
validate: The law based test automaton (LaBatea). A validation
          tool using laws aka axioms.
So please focus on the core part (itl). Download the current
version 'preview 4' from the boost vault's containers section:

If you are interested in extended parts or LaBatea you may
download all parts as

The quickbook generated documentation is included in the zip
files and is also availabe online at

Sources are also available form the sandbox:

The documentation has a focus on tree aspects
(1) A short introduction, that wants to be easy to understand
and to provide good and use case related examples:

(2) Synoptical representations that allows to see the complete
'picture' of the library. For instance the function matrix
is supposed to give a complete overview over the most important
functions across all itl containers.

(3) A description of the semantics which is characterized by
sets of laws that apply for the different interval containers.

The semantical analysis, based on sets of laws, was a quite
interesting work, where software development sometimes
transformed into software discovery guided by the validation
tool LaBatea ;)
My main finding out of that process was, that the semantics
of the aggregating itl::Maps is determined by the semantics
of their data or codomain parameter U, so that
if U is model of concept C then itl::Map<T,U> is model of C
which is stated in section concept induction:

All your feedback is welcome.


Boost list run by bdawes at, gregod at, cpdaniel at, john at