Thu Oct 28 07:31:56 EDT 2004

```Stijn De Saeger <stijndesaeger at gmail.com> writes:

> But, like you mentioned in your post, now I find myself needing a
> notion of subset relations, and since you obviously can't define
> equality over functions, i'm stuck again.

Perhaps one can define an approximate equality, with an error bound?

Define the sets with a maximal boundary, and check points within the
combined boundary.  You can only be sure about the answer if it is
'False', 'True' should be interpreted as "maybe" :-).

An inplementation could look something like (untested):

data RSet = RSet {isin :: Double -> Bool, bounds :: (Double,Double) }

equals :: Double -> Rset -> RSet -> Bool
equals epsilon s1 s2 = and (map (equals1 s1 s2) [l,l+epsion..h]
where l = min (fst \$ bounds s1) (fst \$ bounds s2)
h = max (snd \$ bounds s1) (snd \$ bounds s2)

Or you could use randomly sampled values (and perhaps give a
statistical figure for confidence?), or you could try to identify the
boundaries of each set, or..

> Do you know any way around this problem, or have i hit a dead
> end...?

Simulating real numbers on discrete machinery is a mess.  Join the
club :-)

-kzm
--
If I haven't seen further, it is by standing in the footprints of giants
```