/usr/share/doc/libghc-ranged-sets-doc/html/Data-Ranged-RangedSet.html is in libghc-ranged-sets-doc 0.3.0-5build2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Data.Ranged.RangedSet</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_Data-Ranged-RangedSet.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Data-Ranged-RangedSet.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">Ranged-sets-0.3.0: Ranged sets for Haskell</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr></table><p class="caption">Data.Ranged.RangedSet</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1">Ranged Set Type
</a></li><li><a href="#g:2">Ranged Set construction functions and their preconditions
</a></li><li><a href="#g:3">Predicates
</a></li><li><a href="#g:4">Set Operations
</a></li><li><a href="#g:5">Useful Sets
</a></li><li><a href="#g:6">QuickCheck Properties
</a><ul><li><a href="#g:7">Construction
</a></li><li><a href="#g:8">Basic Operations
</a></li><li><a href="#g:9">Some Identities and Inequalities
</a></li></ul></li></ul></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">data</span> <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => <a href="#t:RSet">RSet</a> v</li><li class="src short"><a href="#v:rSetRanges">rSetRanges</a> :: <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> [<a href="Data-Ranged-Ranges.html#t:Range">Range</a> v]</li><li class="src short"><a href="#v:makeRangedSet">makeRangedSet</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => [<a href="Data-Ranged-Ranges.html#t:Range">Range</a> v] -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v</li><li class="src short"><a href="#v:unsafeRangedSet">unsafeRangedSet</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => [<a href="Data-Ranged-Ranges.html#t:Range">Range</a> v] -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v</li><li class="src short"><a href="#v:validRangeList">validRangeList</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => [<a href="Data-Ranged-Ranges.html#t:Range">Range</a> v] -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:normaliseRangeList">normaliseRangeList</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => [<a href="Data-Ranged-Ranges.html#t:Range">Range</a> v] -> [<a href="Data-Ranged-Ranges.html#t:Range">Range</a> v]</li><li class="src short"><a href="#v:rSingleton">rSingleton</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => v -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v</li><li class="src short"><a href="#v:rSetUnfold">rSetUnfold</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-Boundaries.html#t:Boundary">Boundary</a> a -> (<a href="Data-Ranged-Boundaries.html#t:Boundary">Boundary</a> a -> <a href="Data-Ranged-Boundaries.html#t:Boundary">Boundary</a> a) -> (<a href="Data-Ranged-Boundaries.html#t:Boundary">Boundary</a> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Data-Ranged-Boundaries.html#t:Boundary">Boundary</a> a)) -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a</li><li class="src short"><a href="#v:rSetIsEmpty">rSetIsEmpty</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:rSetIsFull">rSetIsFull</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:-45--63--45-">(-?-)</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> v -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:rSetHas">rSetHas</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> v -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:-45--60--61--45-">(-<=-)</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:rSetIsSubset">rSetIsSubset</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:-45--60--45-">(-<-)</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:rSetIsSubsetStrict">rSetIsSubsetStrict</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:-45--92--47--45-">(-\/-)</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v</li><li class="src short"><a href="#v:rSetUnion">rSetUnion</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v</li><li class="src short"><a href="#v:-45--47--92--45-">(-/\-)</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v</li><li class="src short"><a href="#v:rSetIntersection">rSetIntersection</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v</li><li class="src short"><a href="#v:-45--33--45-">(-!-)</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v</li><li class="src short"><a href="#v:rSetDifference">rSetDifference</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v</li><li class="src short"><a href="#v:rSetNegation">rSetNegation</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a</li><li class="src short"><a href="#v:rSetEmpty">rSetEmpty</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a</li><li class="src short"><a href="#v:rSetFull">rSetFull</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a</li><li class="src short"><a href="#v:prop_validNormalised">prop_validNormalised</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => [<a href="Data-Ranged-Ranges.html#t:Range">Range</a> a] -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:prop_has">prop_has</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => [<a href="Data-Ranged-Ranges.html#t:Range">Range</a> a] -> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:prop_unfold">prop_unfold</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Prelude.html#t:Integer">Integer</a> -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:prop_union">prop_union</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:prop_intersection">prop_intersection</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:prop_difference">prop_difference</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:prop_negation">prop_negation</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:prop_not_empty">prop_not_empty</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> a -> <a href="/usr/share/doc/libghc-quickcheck2-doc/html/Test-QuickCheck-Property.html#t:Property">Property</a></li><li class="src short"><a href="#v:prop_empty">prop_empty</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:prop_full">prop_full</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:prop_empty_intersection">prop_empty_intersection</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:prop_full_union">prop_full_union</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:prop_union_superset">prop_union_superset</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:prop_intersection_subset">prop_intersection_subset</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:prop_diff_intersect">prop_diff_intersect</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:prop_subset">prop_subset</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:prop_strict_subset">prop_strict_subset</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:prop_union_strict_superset">prop_union_strict_superset</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="/usr/share/doc/libghc-quickcheck2-doc/html/Test-QuickCheck-Property.html#t:Property">Property</a></li><li class="src short"><a href="#v:prop_intersection_commutes">prop_intersection_commutes</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:prop_union_commutes">prop_union_commutes</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:prop_intersection_associates">prop_intersection_associates</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:prop_union_associates">prop_union_associates</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:prop_de_morgan_intersection">prop_de_morgan_intersection</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:prop_de_morgan_union">prop_de_morgan_union</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a></li></ul></div><div id="interface"><h2 id="g:1">Ranged Set Type
</h2><div class="top"><p class="src"><span class="keyword">data</span> <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => <a name="t:RSet" class="def">RSet</a> v <a href="src/Data-Ranged-RangedSet.html#RSet" class="link">Source</a></p><div class="doc"><p>An RSet (for Ranged Set) is a list of ranges. The ranges must be sorted
and not overlap.
</p></div><div class="subs instances"><p id="control.i:RSet" class="caption collapser" onclick="toggleSection('i:RSet')">Instances</p><div id="section.i:RSet" class="show"><table><tr><td class="src"><a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Eq.html#t:Eq">Eq</a> (<a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v)</td><td class="doc empty"> </td></tr><tr><td class="src">(<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> v, <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v) => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> (<a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v)</td><td class="doc empty"> </td></tr><tr><td class="src">(<a href="/usr/share/doc/libghc-quickcheck2-doc/html/Test-QuickCheck-Arbitrary.html#t:Arbitrary">Arbitrary</a> v, <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v, <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> v) => <a href="/usr/share/doc/libghc-quickcheck2-doc/html/Test-QuickCheck-Arbitrary.html#t:Arbitrary">Arbitrary</a> (<a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v)</td><td class="doc empty"> </td></tr><tr><td class="src">(<a href="/usr/share/doc/libghc-quickcheck2-doc/html/Test-QuickCheck-Arbitrary.html#t:CoArbitrary">CoArbitrary</a> v, <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v, <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> v) => <a href="/usr/share/doc/libghc-quickcheck2-doc/html/Test-QuickCheck-Arbitrary.html#t:CoArbitrary">CoArbitrary</a> (<a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Monoid.html#t:Monoid">Monoid</a> (<a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a)</td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:rSetRanges" class="def">rSetRanges</a> :: <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> [<a href="Data-Ranged-Ranges.html#t:Range">Range</a> v]<a href="src/Data-Ranged-RangedSet.html#rSetRanges" class="link">Source</a></p></div><h2 id="g:2">Ranged Set construction functions and their preconditions
</h2><div class="top"><p class="src"><a name="v:makeRangedSet" class="def">makeRangedSet</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => [<a href="Data-Ranged-Ranges.html#t:Range">Range</a> v] -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v<a href="src/Data-Ranged-RangedSet.html#makeRangedSet" class="link">Source</a></p><div class="doc"><p>Create a new Ranged Set from a list of ranges. The list may contain
ranges that overlap or are not in ascending order.
</p></div></div><div class="top"><p class="src"><a name="v:unsafeRangedSet" class="def">unsafeRangedSet</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => [<a href="Data-Ranged-Ranges.html#t:Range">Range</a> v] -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v<a href="src/Data-Ranged-RangedSet.html#unsafeRangedSet" class="link">Source</a></p><div class="doc"><p>Create a new Ranged Set from a list of ranges. <code>validRangeList ranges</code>
must return <code>True</code>. This precondition is not checked.
</p></div></div><div class="top"><p class="src"><a name="v:validRangeList" class="def">validRangeList</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => [<a href="Data-Ranged-Ranges.html#t:Range">Range</a> v] -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a><a href="src/Data-Ranged-RangedSet.html#validRangeList" class="link">Source</a></p><div class="doc"><p>Determine if the ranges in the list are both in order and non-overlapping.
If so then they are suitable input for the unsafeRangedSet function.
</p></div></div><div class="top"><p class="src"><a name="v:normaliseRangeList" class="def">normaliseRangeList</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => [<a href="Data-Ranged-Ranges.html#t:Range">Range</a> v] -> [<a href="Data-Ranged-Ranges.html#t:Range">Range</a> v]<a href="src/Data-Ranged-RangedSet.html#normaliseRangeList" class="link">Source</a></p><div class="doc"><p>Rearrange and merge the ranges in the list so that they are in order and
non-overlapping.
</p></div></div><div class="top"><p class="src"><a name="v:rSingleton" class="def">rSingleton</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => v -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v<a href="src/Data-Ranged-RangedSet.html#rSingleton" class="link">Source</a></p><div class="doc"><p>Create a Ranged Set from a single element.
</p></div></div><div class="top"><p class="src"><a name="v:rSetUnfold" class="def">rSetUnfold</a><a href="src/Data-Ranged-RangedSet.html#rSetUnfold" class="link">Source</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a</td><td class="doc empty"> </td></tr><tr><td class="src">=> <a href="Data-Ranged-Boundaries.html#t:Boundary">Boundary</a> a</td><td class="doc"><p>A first lower boundary.
</p></td></tr><tr><td class="src">-> (<a href="Data-Ranged-Boundaries.html#t:Boundary">Boundary</a> a -> <a href="Data-Ranged-Boundaries.html#t:Boundary">Boundary</a> a)</td><td class="doc"><p>A function from a lower boundary to an upper boundary, which must
return a result greater than the argument (not checked).
</p></td></tr><tr><td class="src">-> (<a href="Data-Ranged-Boundaries.html#t:Boundary">Boundary</a> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Data-Ranged-Boundaries.html#t:Boundary">Boundary</a> a))</td><td class="doc"><p>A function from a lower boundary to <code>Maybe</code> the successor lower
boundary, which must return a result greater than the argument
(not checked). If ranges overlap then they will be merged.
</p></td></tr><tr><td class="src">-> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a</td><td class="doc empty"> </td></tr></table></div><div class="doc"><p>Construct a range set.
</p></div></div><h2 id="g:3">Predicates
</h2><div class="top"><p class="src"><a name="v:rSetIsEmpty" class="def">rSetIsEmpty</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a><a href="src/Data-Ranged-RangedSet.html#rSetIsEmpty" class="link">Source</a></p><div class="doc"><p>True if the set has no members.
</p></div></div><div class="top"><p class="src"><a name="v:rSetIsFull" class="def">rSetIsFull</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a><a href="src/Data-Ranged-RangedSet.html#rSetIsFull" class="link">Source</a></p><div class="doc"><p>True if the negation of the set has no members.
</p></div></div><div class="top"><p class="src"><a name="v:-45--63--45-" class="def">(-?-)</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> v -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a><a href="src/Data-Ranged-RangedSet.html#-%3F-" class="link">Source</a></p><div class="doc"><p>True if the value is within the ranged set. Infix precedence is left 5.
</p></div></div><div class="top"><p class="src"><a name="v:rSetHas" class="def">rSetHas</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> v -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a><a href="src/Data-Ranged-RangedSet.html#rSetHas" class="link">Source</a></p><div class="doc"><p>True if the value is within the ranged set. Infix precedence is left 5.
</p></div></div><div class="top"><p class="src"><a name="v:-45--60--61--45-" class="def">(-<=-)</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a><a href="src/Data-Ranged-RangedSet.html#-%3C%3D-" class="link">Source</a></p><div class="doc"><p>True if the first argument is a subset of the second argument, or is
equal.
</p><p>Infix precedence is left 5.
</p></div></div><div class="top"><p class="src"><a name="v:rSetIsSubset" class="def">rSetIsSubset</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a><a href="src/Data-Ranged-RangedSet.html#rSetIsSubset" class="link">Source</a></p><div class="doc"><p>True if the first argument is a subset of the second argument, or is
equal.
</p><p>Infix precedence is left 5.
</p></div></div><div class="top"><p class="src"><a name="v:-45--60--45-" class="def">(-<-)</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a><a href="src/Data-Ranged-RangedSet.html#-%3C-" class="link">Source</a></p><div class="doc"><p>True if the first argument is a strict subset of the second argument.
</p><p>Infix precedence is left 5.
</p></div></div><div class="top"><p class="src"><a name="v:rSetIsSubsetStrict" class="def">rSetIsSubsetStrict</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a><a href="src/Data-Ranged-RangedSet.html#rSetIsSubsetStrict" class="link">Source</a></p><div class="doc"><p>True if the first argument is a strict subset of the second argument.
</p><p>Infix precedence is left 5.
</p></div></div><h2 id="g:4">Set Operations
</h2><div class="top"><p class="src"><a name="v:-45--92--47--45-" class="def">(-\/-)</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v<a href="src/Data-Ranged-RangedSet.html#-%5C%2F-" class="link">Source</a></p><div class="doc"><p>Set union for ranged sets. Infix precedence is left 6.
</p></div></div><div class="top"><p class="src"><a name="v:rSetUnion" class="def">rSetUnion</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v<a href="src/Data-Ranged-RangedSet.html#rSetUnion" class="link">Source</a></p><div class="doc"><p>Set union for ranged sets. Infix precedence is left 6.
</p></div></div><div class="top"><p class="src"><a name="v:-45--47--92--45-" class="def">(-/\-)</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v<a href="src/Data-Ranged-RangedSet.html#-%2F%5C-" class="link">Source</a></p><div class="doc"><p>Set intersection for ranged sets. Infix precedence is left 7.
</p></div></div><div class="top"><p class="src"><a name="v:rSetIntersection" class="def">rSetIntersection</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v<a href="src/Data-Ranged-RangedSet.html#rSetIntersection" class="link">Source</a></p><div class="doc"><p>Set intersection for ranged sets. Infix precedence is left 7.
</p></div></div><div class="top"><p class="src"><a name="v:-45--33--45-" class="def">(-!-)</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v<a href="src/Data-Ranged-RangedSet.html#-%21-" class="link">Source</a></p><div class="doc"><p>Set difference. Infix precedence is left 6.
</p></div></div><div class="top"><p class="src"><a name="v:rSetDifference" class="def">rSetDifference</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v<a href="src/Data-Ranged-RangedSet.html#rSetDifference" class="link">Source</a></p><div class="doc"><p>Set difference. Infix precedence is left 6.
</p></div></div><div class="top"><p class="src"><a name="v:rSetNegation" class="def">rSetNegation</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a<a href="src/Data-Ranged-RangedSet.html#rSetNegation" class="link">Source</a></p><div class="doc"><p>Set negation.
</p></div></div><h2 id="g:5">Useful Sets
</h2><div class="top"><p class="src"><a name="v:rSetEmpty" class="def">rSetEmpty</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a<a href="src/Data-Ranged-RangedSet.html#rSetEmpty" class="link">Source</a></p><div class="doc"><p>The empty set.
</p></div></div><div class="top"><p class="src"><a name="v:rSetFull" class="def">rSetFull</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a<a href="src/Data-Ranged-RangedSet.html#rSetFull" class="link">Source</a></p><div class="doc"><p>The set that contains everything.
</p></div></div><h2 id="g:6">QuickCheck Properties
</h2><h3 id="g:7">Construction
</h3><div class="top"><p class="src"><a name="v:prop_validNormalised" class="def">prop_validNormalised</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => [<a href="Data-Ranged-Ranges.html#t:Range">Range</a> a] -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a><a href="src/Data-Ranged-RangedSet.html#prop_validNormalised" class="link">Source</a></p><div class="doc"><p>A normalised range list is valid for unsafeRangedSet
</p><pre> prop_validNormalised ls = validRangeList $ normaliseRangeList ls
</pre></div></div><div class="top"><p class="src"><a name="v:prop_has" class="def">prop_has</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => [<a href="Data-Ranged-Ranges.html#t:Range">Range</a> a] -> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a><a href="src/Data-Ranged-RangedSet.html#prop_has" class="link">Source</a></p><div class="doc"><p>Iff a value is in a range list then it is in a ranged set
constructed from that list.
</p><pre> prop_has ls v = (ls `rangeListHas` v) == makeRangedSet ls -?- v
</pre></div></div><div class="top"><p class="src"><a name="v:prop_unfold" class="def">prop_unfold</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Prelude.html#t:Integer">Integer</a> -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a><a href="src/Data-Ranged-RangedSet.html#prop_unfold" class="link">Source</a></p><div class="doc"><p>Verifies the correct membership of a set containing all integers
starting with the digit "1" up to 19999.
</p><pre> prop_unfold = (v <= 99999 && head (show v) == '1') == (initial1 -?- v)
where
initial1 = rSetUnfold (BoundaryBelow 1) addNines times10
addNines (BoundaryBelow n) = BoundaryAbove $ n * 2 - 1
times10 (BoundaryBelow n) =
if n <= 1000 then Just $ BoundaryBelow $ n * 10 else Nothing
</pre></div></div><h3 id="g:8">Basic Operations
</h3><div class="top"><p class="src"><a name="v:prop_union" class="def">prop_union</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a><a href="src/Data-Ranged-RangedSet.html#prop_union" class="link">Source</a></p><div class="doc"><p>Iff a value is in either of two ranged sets then it is in the union of
those two sets.
</p><pre> prop_union rs1 rs2 v =
(rs1 -?- v || rs2 -?- v) == ((rs1 -\/- rs2) -?- v)
</pre></div></div><div class="top"><p class="src"><a name="v:prop_intersection" class="def">prop_intersection</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a><a href="src/Data-Ranged-RangedSet.html#prop_intersection" class="link">Source</a></p><div class="doc"><p>Iff a value is in both of two ranged sets then it is n the intersection
of those two sets.
</p><pre> prop_intersection rs1 rs2 v =
(rs1 -?- v && rs2 -?- v) == ((rs1 -/\- rs2) -?- v)
</pre></div></div><div class="top"><p class="src"><a name="v:prop_difference" class="def">prop_difference</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a><a href="src/Data-Ranged-RangedSet.html#prop_difference" class="link">Source</a></p><div class="doc"><p>Iff a value is in ranged set 1 and not in ranged set 2 then it is in the
difference of the two.
</p><pre> prop_difference rs1 rs2 v =
(rs1 -?- v && not (rs2 -?- v)) == ((rs1 -!- rs2) -?- v)
</pre></div></div><div class="top"><p class="src"><a name="v:prop_negation" class="def">prop_negation</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a><a href="src/Data-Ranged-RangedSet.html#prop_negation" class="link">Source</a></p><div class="doc"><p>Iff a value is not in a ranged set then it is in its negation.
</p><pre> prop_negation rs v = rs -?- v == not (rSetNegation rs -?- v)
</pre></div></div><div class="top"><p class="src"><a name="v:prop_not_empty" class="def">prop_not_empty</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> a -> <a href="/usr/share/doc/libghc-quickcheck2-doc/html/Test-QuickCheck-Property.html#t:Property">Property</a><a href="src/Data-Ranged-RangedSet.html#prop_not_empty" class="link">Source</a></p><div class="doc"><p>A set that contains a value is not empty
</p><pre> prop_not_empty rs v = (rs -?- v) ==> not (rSetIsEmpty rs)
</pre></div></div><h3 id="g:9">Some Identities and Inequalities
</h3><div class="top"><p class="src"><a name="v:prop_empty" class="def">prop_empty</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a><a href="src/Data-Ranged-RangedSet.html#prop_empty" class="link">Source</a></p><div class="doc"><p>The empty set has no members.
</p><pre> prop_empty v = not (rSetEmpty -?- v)
</pre></div></div><div class="top"><p class="src"><a name="v:prop_full" class="def">prop_full</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a><a href="src/Data-Ranged-RangedSet.html#prop_full" class="link">Source</a></p><div class="doc"><p>The full set has every member.
</p><pre> prop_full v = rSetFull -?- v
</pre></div></div><div class="top"><p class="src"><a name="v:prop_empty_intersection" class="def">prop_empty_intersection</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a><a href="src/Data-Ranged-RangedSet.html#prop_empty_intersection" class="link">Source</a></p><div class="doc"><p>The intersection of a set with its negation is empty.
</p><pre> prop_empty_intersection rs =
rSetIsEmpty (rs -/\- rSetNegation rs)
</pre></div></div><div class="top"><p class="src"><a name="v:prop_full_union" class="def">prop_full_union</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a><a href="src/Data-Ranged-RangedSet.html#prop_full_union" class="link">Source</a></p><div class="doc"><p>The union of a set with its negation is full.
</p><pre> prop_full_union rs v =
rSetIsFull (rs -\/- rSetNegation rs)
</pre></div></div><div class="top"><p class="src"><a name="v:prop_union_superset" class="def">prop_union_superset</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a><a href="src/Data-Ranged-RangedSet.html#prop_union_superset" class="link">Source</a></p><div class="doc"><p>The union of two sets is the non-strict superset of both.
</p><pre> prop_union_superset rs1 rs2 =
rs1 -<=- u && rs2 -<=- u
where
u = rs1 -\/- rs2
</pre></div></div><div class="top"><p class="src"><a name="v:prop_intersection_subset" class="def">prop_intersection_subset</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a><a href="src/Data-Ranged-RangedSet.html#prop_intersection_subset" class="link">Source</a></p><div class="doc"><p>The intersection of two sets is the non-strict subset of both.
</p><pre> prop_intersection_subset rs1 rs2 =
i -<=- rs1 && i -<=- rs2
where
i = rs1 -/\- rs2
</pre></div></div><div class="top"><p class="src"><a name="v:prop_diff_intersect" class="def">prop_diff_intersect</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a><a href="src/Data-Ranged-RangedSet.html#prop_diff_intersect" class="link">Source</a></p><div class="doc"><p>The difference of two sets intersected with the subtractand is empty.
</p><pre> prop_diff_intersect rs1 rs2 =
rSetIsEmpty ((rs1 -!- rs2) -/\- rs2)
</pre></div></div><div class="top"><p class="src"><a name="v:prop_subset" class="def">prop_subset</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a><a href="src/Data-Ranged-RangedSet.html#prop_subset" class="link">Source</a></p><div class="doc"><p>A set is the non-strict subset of itself.
</p><pre> prop_subset rs = rs -<=- rs
</pre></div></div><div class="top"><p class="src"><a name="v:prop_strict_subset" class="def">prop_strict_subset</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a><a href="src/Data-Ranged-RangedSet.html#prop_strict_subset" class="link">Source</a></p><div class="doc"><p>A set is not the strict subset of itself.
</p><pre> prop_strict_subset rs = not (rs -<- rs)
</pre></div></div><div class="top"><p class="src"><a name="v:prop_union_strict_superset" class="def">prop_union_strict_superset</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="/usr/share/doc/libghc-quickcheck2-doc/html/Test-QuickCheck-Property.html#t:Property">Property</a><a href="src/Data-Ranged-RangedSet.html#prop_union_strict_superset" class="link">Source</a></p><div class="doc"><p>If rs1 - rs2 is not empty then the union of rs1 and rs2 will be a strict
superset of rs2.
</p><pre> prop_union_strict_superset rs1 rs2 =
(not $ rSetIsEmpty (rs1 -!- rs2))
==> (rs2 -<- (rs1 -\/- rs2))
</pre></div></div><div class="top"><p class="src"><a name="v:prop_intersection_commutes" class="def">prop_intersection_commutes</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a><a href="src/Data-Ranged-RangedSet.html#prop_intersection_commutes" class="link">Source</a></p><div class="doc"><p>Intersection commutes.
</p><pre> prop_intersection_commutes rs1 rs2 = (rs1 -/\- rs2) == (rs2 -/\- rs1)
</pre></div></div><div class="top"><p class="src"><a name="v:prop_union_commutes" class="def">prop_union_commutes</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a><a href="src/Data-Ranged-RangedSet.html#prop_union_commutes" class="link">Source</a></p><div class="doc"><p>Union commutes.
</p><pre> prop_union_commutes rs1 rs2 = (rs1 -\/- rs2) == (rs2 -\/- rs1)
</pre></div></div><div class="top"><p class="src"><a name="v:prop_intersection_associates" class="def">prop_intersection_associates</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a><a href="src/Data-Ranged-RangedSet.html#prop_intersection_associates" class="link">Source</a></p><div class="doc"><p>Intersection associates.
</p><pre> prop_intersection_associates rs1 rs2 rs3 =
((rs1 -/\- rs2) -/\- rs3) == (rs1 -/\- (rs2 -/\- rs3))
</pre></div></div><div class="top"><p class="src"><a name="v:prop_union_associates" class="def">prop_union_associates</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a><a href="src/Data-Ranged-RangedSet.html#prop_union_associates" class="link">Source</a></p><div class="doc"><p>Union associates.
</p><pre> prop_union_associates rs1 rs2 rs3 =
((rs1 -\/- rs2) -\/- rs3) == (rs1 -\/- (rs2 -\/- rs3))
</pre></div></div><div class="top"><p class="src"><a name="v:prop_de_morgan_intersection" class="def">prop_de_morgan_intersection</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a><a href="src/Data-Ranged-RangedSet.html#prop_de_morgan_intersection" class="link">Source</a></p><div class="doc"><p>De Morgan's Law for Intersection.
</p><pre> prop_de_morgan_intersection rs1 rs2 =
rSetNegation (rs1 -/\- rs2) == (rSetNegation rs1 -\/- rSetNegation rs2)
</pre></div></div><div class="top"><p class="src"><a name="v:prop_de_morgan_union" class="def">prop_de_morgan_union</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a => <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a><a href="src/Data-Ranged-RangedSet.html#prop_de_morgan_union" class="link">Source</a></p><div class="doc"><p>De Morgan's Law for Union.
</p><pre> prop_de_morgan_union rs1 rs2 =
rSetNegation (rs1 -\/- rs2) == (rSetNegation rs1 -/\- rSetNegation rs2)
</pre></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.13.2</p></div></body></html>
|