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
improvements.

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:
itl.zip
http://www.boostpro.com/vault/index.php?action=downloadfile&filename=itl.zip&directory=Containers

If you are interested in extended parts or LaBatea you may
download all parts as itl_plus.zip
http://www.boostpro.com/vault/index.php?action=downloadfile&filename=itl_plus.zip&directory=Containers

The quickbook generated documentation is included in the zip
files and is also availabe online at
http://herold-faulhaber.de/boost_itl/doc/libs/itl/doc/html/index.html

Sources are also available form the sandbox:
https://svn.boost.org/svn/boost/sandbox/itl/

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:
http://herold-faulhaber.de/boost_itl/doc/libs/itl/doc/html/index.html#boost_itl.introduction
http://herold-faulhaber.de/boost_itl/doc/libs/itl/doc/html/boost_itl/examples.html

(2) Synoptical representations that allows to see the complete
'picture' of the library. For instance the function matrix
http://herold-faulhaber.de/boost_itl/doc/libs/itl/doc/html/boost_itl/interface.html#boost_itl.interface.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:
http://herold-faulhaber.de/boost_itl/doc/libs/itl/doc/html/boost_itl/semantics.html#boost_itl.semantics.concept_induction

All your feedback is welcome.

Cheers
Joachim


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk