Return-Path: <john.harrison-request@uk.ac.cam.cl>
Delivery-Date: 
Received: from ted.cs.uidaho.edu by swan.cl.cam.ac.uk with SMTP (PP-6.0) 
          id <03396-0@swan.cl.cam.ac.uk>; Wed, 15 Jul 1992 09:23:44 +0100
Received: by ted.cs.uidaho.edu (16.6/1.34) id AA10327;
          Wed, 15 Jul 92 01:14:03 -0700
Sender: info-hol-request@edu.uidaho.cs.ted
Errors-To: info-hol-request@edu.uidaho.cs.ted
Received: from Maui.CS.UCLA.EDU by ted.cs.uidaho.edu (16.6/1.34) id AA10322;
          Wed, 15 Jul 92 01:13:58 -0700
Received: from LocalHost.cs.ucla.edu 
          by maui.cs.ucla.edu (Sendmail 5.61c+YP/3.19) id AA01480;
          Wed, 15 Jul 92 01:15:03 -0700
Message-Id: <9207150815.AA01480@maui.cs.ucla.edu>
To: info-hol@edu.uidaho.cs.ted
Cc: chou@edu.ucla.cs
Subject: Recursive definition over sets
Date: Wed, 15 Jul 92 01:15:00 PDT
From: chou@edu.ucla.cs

(I apologize for the previous empty message; I hit the wrong key.)

Let f : * -> num be a mapping from "indices" to numbers
and s : * -> bool be a set of indices.  One can consider the
summation, SUM f s, of f(x)'s with x ranging over s, such that

    SUM f {} = 0
    SUM f (x INSERT s) = (x IN s) => (SUM f s) | (f x + SUM f s)

Similarly, one can consider maximum, minimum, product, etc. over sets;
in fact, for any operation that is independent of the order in which 
the operation is done.

My question is: Has anyone written the necessary code for performing
this kind of "recursive definitions" over sets?  I'd appreciate anything
that can save me the trouble of hacking it myself.

- Ching Tsun
