Hi,

Currently I have the following Datatype "(‘a, ‘b) CCS" which supports binary 
“sum” operation:

val _ = Datatype `CCS = nil
                      | var 'a
                      | prefix ('b Action) CCS
                      | sum CCS CCS
...`;

I also have a recursive function for calculating the “sum” of this datatype 
stored in a function: f(0) + f(1) + f(2) + … + f(n)

val CCS_SIGMA_def = Define `
   (CCS_SIGMA (f :num -> ('a, 'b) CCS) 0 = f 0) /\
   (CCS_SIGMA f (SUC n) = sum (CCS_SIGMA f n) (f (SUC n))) `;

val _ = overload_on ("SIGMA", ``CCS_SIGMA``);

I don’t like above CCS_SIGMA_def, maybe later I’ll switch to another definition 
more like the SUM_IMAGE defined in HOL’s pred_setTheory:

val SUM_IMAGE_DEF = new_definition(
  "SUM_IMAGE_DEF",
  ``SUM_IMAGE f s = ITSET (\e acc. f e + acc) s 0``);

which takes a set of numbers as the second parameter, looks more flexible. But 
it seems that all related theorems have to assume the finiteness of the set 
parameter.

My questions are:

1. is it possible to define a special SUM_IMAGE for my CCS datatype, and it 
also supports (countable) infinite sums: ``SUM_IMAGE p (UNIV: num)`` valid and 
meaningful?

2. if this is impossible, what’s the necessary modification to the original 
datatype definition?

3. what’s the necessary modification to support sums over limit ordinals (using 
HOL’s ordinalTheory in examples)?  that is, for L a limit ordinal, I need to 
construct a sum of all ordinals M smaller than L: SUM f(M), for all M < L

Regards,

Chun Tian

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
hol-info mailing list
hol-info@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hol-info

Reply via email to