This file is indexed.

/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 =&gt; <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 -&gt; [<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 =&gt; [<a href="Data-Ranged-Ranges.html#t:Range">Range</a> v] -&gt; <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 =&gt; [<a href="Data-Ranged-Ranges.html#t:Range">Range</a> v] -&gt; <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 =&gt; [<a href="Data-Ranged-Ranges.html#t:Range">Range</a> v] -&gt; <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 =&gt; [<a href="Data-Ranged-Ranges.html#t:Range">Range</a> v] -&gt; [<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 =&gt; v -&gt; <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 =&gt; <a href="Data-Ranged-Boundaries.html#t:Boundary">Boundary</a> a -&gt; (<a href="Data-Ranged-Boundaries.html#t:Boundary">Boundary</a> a -&gt; <a href="Data-Ranged-Boundaries.html#t:Boundary">Boundary</a> a) -&gt; (<a href="Data-Ranged-Boundaries.html#t:Boundary">Boundary</a> a -&gt; <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)) -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; v -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; v -&gt; <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-">(-&lt;=-)</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <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-">(-&lt;-)</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <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 =&gt; <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 =&gt; <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 =&gt; [<a href="Data-Ranged-Ranges.html#t:Range">Range</a> a] -&gt; <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 =&gt; [<a href="Data-Ranged-Ranges.html#t:Range">Range</a> a] -&gt; a -&gt; <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> -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; a -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; a -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; a -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; a -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; a -&gt; <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 =&gt; a -&gt; <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 =&gt; a -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <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 =&gt; <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 =&gt; <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">&nbsp;</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) =&gt; <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">&nbsp;</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) =&gt; <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">&nbsp;</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) =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> a =&gt; <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">&nbsp;</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 -&gt; [<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 =&gt; [<a href="Data-Ranged-Ranges.html#t:Range">Range</a> v] -&gt; <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 =&gt; [<a href="Data-Ranged-Ranges.html#t:Range">Range</a> v] -&gt; <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 =&gt; [<a href="Data-Ranged-Ranges.html#t:Range">Range</a> v] -&gt; <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 =&gt; [<a href="Data-Ranged-Ranges.html#t:Range">Range</a> v] -&gt; [<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 =&gt; v -&gt; <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">&nbsp;</td></tr><tr><td class="src">=&gt; <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">-&gt; (<a href="Data-Ranged-Boundaries.html#t:Boundary">Boundary</a> a -&gt; <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">-&gt; (<a href="Data-Ranged-Boundaries.html#t:Boundary">Boundary</a> a -&gt; <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">-&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a</td><td class="doc empty">&nbsp;</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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; v -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; v -&gt; <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">(-&lt;=-)</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <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">(-&lt;-)</a> :: <a href="Data-Ranged-Boundaries.html#t:DiscreteOrdered">DiscreteOrdered</a> v =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> v -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <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 =&gt; <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 =&gt; <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 =&gt; [<a href="Data-Ranged-Ranges.html#t:Range">Range</a> a] -&gt; <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 =&gt; [<a href="Data-Ranged-Ranges.html#t:Range">Range</a> a] -&gt; a -&gt; <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> -&gt; <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 &quot;1&quot; up to 19999.
</p><pre> prop_unfold = (v &lt;= 99999 &amp;&amp; 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 &lt;= 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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; a -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; a -&gt; <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 &amp;&amp; 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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; a -&gt; <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 &amp;&amp; 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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; a -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; a -&gt; <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) ==&gt; 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 =&gt; a -&gt; <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 =&gt; a -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <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 -&lt;=- u &amp;&amp; rs2 -&lt;=- 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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <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 -&lt;=- rs1 &amp;&amp; i -&lt;=- 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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <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 -&lt;=- 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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <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 -&lt;- 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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <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))
    ==&gt; (rs2 -&lt;- (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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <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 =&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <a href="Data-Ranged-RangedSet.html#t:RSet">RSet</a> a -&gt; <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>