In an abstraction, the values of an element are reduced to a smaller, abstract set of values. Each
concrete value is mapped to a specific abstract value. Algorithms might choose to operate on the abstract
values rather than the concrete values.
Elements that undergo an abstraction use an abstraction scheme to govern it. The abstraction scheme
consists of two methods. The first, select, determines the representative points for the abstraction to
which all points are mapped. The second, map, maps a point to one of the representative points.
The map method is actually included in the PointMapper trait that AbstractionScheme extends. All elements
have a PointMapper, not just those that undergo an abstraction. This can be used in the implementation of
algorithms (see, e.g., Factor.scala). The implicit PointMapper is one that maps every point to itself, so
it can safely be used for every element that does not undergo an abstraction.
Probably the most common type of abstraction is discretization of continuous elements.
Currently the RegularDiscretization scheme is implemented, which uses evenly space abstract point.
There is an implicit abstraction scheme for Double elements using RegularDiscretization
so one does not have to be specified explicitly.
In an abstraction, the values of an element are reduced to a smaller, abstract set of values. Each concrete value is mapped to a specific abstract value. Algorithms might choose to operate on the abstract values rather than the concrete values.
Elements that undergo an abstraction use an abstraction scheme to govern it. The abstraction scheme consists of two methods. The first, select, determines the representative points for the abstraction to which all points are mapped. The second, map, maps a point to one of the representative points.
The map method is actually included in the PointMapper trait that AbstractionScheme extends. All elements have a PointMapper, not just those that undergo an abstraction. This can be used in the implementation of algorithms (see, e.g., Factor.scala). The implicit PointMapper is one that maps every point to itself, so it can safely be used for every element that does not undergo an abstraction.
Probably the most common type of abstraction is discretization of continuous elements. Currently the RegularDiscretization scheme is implemented, which uses evenly space abstract point. There is an implicit abstraction scheme for Double elements using RegularDiscretization so one does not have to be specified explicitly.