Hi,

sorry for keeping asking questions.  In my current CCS datatype, there's a
recursive constructor:

val _ = Datatype `CCS = nil
     | var 'a
...
     | rec 'a CCS `;

A term ``rec X (f (var X))`` is like the solution of an equation X = f(X),
or the fixed-point of f(), and its behavior is then defined by a set of
rules.  What the Datatype package gives me, is to make sure "rec" and "var"
are kind of *primitive* constants, such that they're part of the one_one
and distinctness theorems of the CCS. (if I simply define a constant
outside of the datatype, I don't have such benefits at all, and many
theorems will not be proved)

Now  (as a long-term plan) I want to implement the ultimate, original form
of Milner's CCS [1], in which there's a "fix" (fixed-point) constructor.
It's like a multi-variable version of above "rec" costructor, something
like:

fix X p1 Y p2 Z p3 ...

If you think above term as a multi-variable equation groups, then each part
in its solution will be defined as a valid CCS term.  Such a "solution" (as
a container of CCS terms) may be represented as a finite_map ``:('a |->
('a, 'b) CCS)`` or simply a list ``:('a, 'b) CCS list``.

Obviously I can't put this "fix" directly into the definition of above CCS
datatype (let's assume HOL4 can do support nesting recursive datatype),
because the type of ``fix ...`` is *not* CCS at all.   But what is it if I
want such a constant? some kind of specification?

Regards,

Chun Tian

-- 
Chun Tian (binghe)
University of Bologna (Italy)

[1] Milner, R.: Operational and Algebraic Semantics of Concurrent
Processes. 1–41 (2017).
------------------------------------------------------------------------------
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