diff options
Diffstat (limited to 'sucl')
| -rw-r--r-- | sucl/pfun.dcl | 2 | ||||
| -rw-r--r-- | sucl/pfun.icl | 8 | 
2 files changed, 10 insertions, 0 deletions
diff --git a/sucl/pfun.dcl b/sucl/pfun.dcl index baea62f..022188a 100644 --- a/sucl/pfun.dcl +++ b/sucl/pfun.dcl @@ -45,3 +45,5 @@ instance toString Pfun dom ran | toString dom & toString ran     on the nodes in `dom' for which it is defined.  */  idpfun :: !.[dom] .(Pfun dom dom) -> Bool | == dom + +instance == (Pfun dom ran) | == dom & == ran diff --git a/sucl/pfun.icl b/sucl/pfun.icl index c303b7d..053799f 100644 --- a/sucl/pfun.icl +++ b/sucl/pfun.icl @@ -82,3 +82,11 @@ idpfun :: !.[dom] .(Pfun dom dom) -> Bool | == dom  idpfun domain pfun  = all idelem domain    where idelem x = total True (postcomp ((==) x) pfun) x + +instance == (Pfun dom ran) | == dom & == ran +where (==) EmptyPfun EmptyPfun = True +      (==) (Extend x1 y1 pf1) (Extend x2 y2 pf2) +            = x1==x2 && y1==y2 && pf1==pf2 +      (==) (Restrict x1 pf1) (Restrict x2 pf2) +            = x1==x2 && pf1==pf2 +      (==) _ _ = False  | 
