5 | | Laurent Claessens defined a class Interval that represents an interval (can be open, closed, half open, unbounded), and implemented union() and intersection() methods, as well as the __contains__() method that tests if a number is contained in the interval. Also defined the class ContinuousSet represening finite union and intersections of intervals by a list of disjoint intervals, and for this class ContinuousSet, union() and __contain__() methods were implemented. |

6 | | |

7 | | We extend the previous work of Laurent Claessens defining the class RealSet, that describes any real set as a list of disjoint intervals and a list of isolated points. We define the class RInterval of real intervals. A RInterval is now a RealSet, consituted as a list of disjoint intervals with a unique element and an empty list of isolated points. Our class RInterval is now always an open interval. The boundary/ies can be added as isolated point/s if necessary, constituting a RealSet. |

8 | | |

9 | | For the class RealSet, we implement the intersection(), union() and __contain__(). We implement the function subsets that, given two different real sets A and B, returns if A is a (proper) subset of B, and the function setdiff that returns the difference of two given real sets. We implement also the infimum and the supremum of a RealSet. |

10 | | |

11 | | Also we support definite integration over a RealSet. |

12 | | |

| 3 | For example |

| 4 | {{{ |

| 5 | sage: RealSet(0,2) + RealSet.unbounded_above_closed(10) |

| 6 | (0, 2) + [10, +Infinity) |

| 7 | }}} |