Sorry, in previous mails I have wrongly copied the KLOP theorems for finite version. Below is the correct theorems for infinite version:
[Klop_0] Theorem |- ∀a. Klop a 0 = ABS_graph ({0},∅) [Klop_PROP0] Theorem |- ∀a n N. n ≤ N ⇒ STABLE (lts n (Klop a N)) [Klop_PROP1] Theorem |- ∀a n E N. n ≤ N ⇒ (lts n (Klop a N) --label a--> E ⇔ ∃m. m < n ∧ (E = lts m (Klop a N))) [Klop_PROP2] Theorem |- ∀a n m N. m < n ∧ n ≤ N ⇒ ¬(lts m (Klop a N) ∼ lts n (Klop a N)) [Klop_PROP2'] Theorem |- ∀a n m N. m < n ∧ n ≤ N ⇒ ¬(lts m (Klop a N) ≈ lts n (Klop a N)) And all my proof scripts can be found at [1]. These’re new developments, they’re not in HOL’s example/CCS folder. [1] https://github.com/binghe/informatica-public/tree/master/thesis > Il giorno 12 ott 2017, alle ore 11:51, Chun Tian <binghe.l...@gmail.com> ha > scritto: > > Hi, > > This mail is long, it’s very important for me, and it's a continuation of my > previous two big questions in 3 months ago, titled "On the use of new_axiom() > in formal projects” and "How to define "infinite sums" of custom datatypes?”. > > The good thing is, I have resolved the previous difficulties in expressing > infinite sums in process algebra, and have prevented using an axiom. I > didn’t use the paper of Dr. Andrei Popescu, simply because it’s too hard for > my current skills. I also didn’t use the idea from Michael Norrish, by > introducing another larger Datatype: > > Datatype`CCS = … existing def … (* with or without finite/binary sums *)` > Datatype`bigCCS = SUM (num -> CCS)` > > Because the "infinite sum” in my problem happens at infinite levels, but this > “bigCCS” cannot further include itself. > > My solution is to embed LTS (labeled transition system) into CCS datatype: > > val _ = type_abbrev ("LTS", ``:('a ordinal, 'b Action) graph``); > > (* Define the type of (pure) CCS agent expressions. *) > val _ = Datatype `CCS = nil > | var 'a > | prefix ('b Action) CCS > | sum CCS CCS > | par CCS CCS > | restr (('b Label) set) CCS > | relab CCS ('b Relabeling) > | rec 'a CCS > | lts ('a ordinal) (('a, 'b) LTS)`; > > here the type “:(‘a, ‘b) graph” is my creation in response of providing a > general graph theory formalization [1], ‘a is the type of vertex, ‘b is the > type of edge label. Currently it’s far from complete, with lots of possibly > wrong definitions but no much supporting theorems. But it worked for my > current needs. For my problem described in this mail, the structure of this > graph doesn’t matter, you can safely think it’s a set (defined by > pred_setTheory) with 'a ordinals as vertices. > > The “lts” constructor in above CCS datatype is my creation without knowing > any similar work. the term ``lts r G`` means a rooted LTS, where “r” is a > vertex in the graph G, as the root node. For this new constructor, I have > defined a single transition rule: > > val (TRANS_rules, TRANS_ind, TRANS_cases) = Hol_reln ` > (!E u. TRANS (prefix u E) u E) /\ > (* PREFIX *) > (!E u E1 E'. TRANS E u E1 ==> TRANS (sum E E') u E1) /\ (* SUM1 > *) > (!E u E1 E'. TRANS E u E1 ==> TRANS (sum E' E) u E1) /\ (* SUM2 > *) > ... > (!E u E' G. (E, u, E') IN (TS G) > ==> TRANS (lts E G) u (lts E' G)) `; (* LTS > *) > > That is, TRANS (lts E G) u (lts E' G) is true if and only if there is a > labeled edge E—u—>E’ in the graph G. The most surprising fact is, after > introducing such a new constructor “lts” and its transition rule, all my > previous proved theorems are still working. The only changes I have to do, > is very few theorems in which the TRANS_cases theorem is used, but the > additional sub-goal is trivial. > > So, all my definitions like Bisimulation, Weak bisimulation, etc. now also > work in pure transition systems (as rooted directed graphs). I feel so happy > for having LTS included in my formalization of CCS and prevented for > re-defining almost everything again. And the mixing of LTS and CCS is now > also meaningful: two graphs can be connected directly by algebraic > operators, and the combined transition characteristics still make perfect > sense. > > Now I have the following so-called Klop process, which is actually an set of > “Arbitrary many non-bisimiar process”: > > Klop l n = > ABS_graph ({m | m ≤ n},{{p} --label l--> {q} | p ≤ n ∧ q < p}): > > without any new axiom, now I can prove the following properties: > > [KLOP_PROP0] Theorem (all these processes are stable, i.e. has no > tau-transition) > > |- ∀a n. STABLE (KLOP a n) > > [KLOP_PROP1] Theorem (any transition from such a process, leads to a > smaller process by the same generator) > > |- ∀a n E. KLOP a n --label a--> E ⇔ ∃m. m < n ∧ (E = KLOP a m) > > [KLOP_PROP1'] Theorem (the same as above, but for weak transition, which > is actually strong transition because there’s no tau at all) > > |- ∀a n E. KLOP a n ==label a=-> E ⇔ ∃m. m < n ∧ (E = KLOP a m) > > [KLOP_PROP2] Theorem (two different sized such processes are not strong > bisimilar) > > |- ∀a n m. m < n ⇒ ¬(KLOP a m ∼ KLOP a n) > > [KLOP_PROP2'] Theorem (two different sized such processes are also not > weak bisimilar) > > |- ∀a n m. m < n ⇒ ¬(KLOP a m ≈ KLOP a n) > > Again, I feel so happy for successfully proved and defined above function and > its properties. Now it remains to use it for proving the ultimate “simple” > theorem above process algebra: > > ``!p q. OBS_CONGR p q = !r. WEAK_EQUIV (sum p r) (sum q r)`` (observation > congruence is the coarsest congruence contained in weak bisimulation) > > Now it’s touching my question and two difficulties: > > The proof of above theorem has been reduced to: finding a special process K, > which is not (weak) bisimilar with any node in the transition graph of two > given processes p and q. The informal proof [2] is like this: > > “Let c be the smallest infinite cardinal, such that NODES(p) and > NODES(q) has less than c nodes. So there are less than c processes in > NODES(p) and NODES(q). Then there’s a tau-free process K with NODES(K) < c, > such that k is not bisimiar with any nodes in NODES(p) and NODES(q), > BECAUSE: for each infinite cardinal c there are c ordinals smaller than c.” > > If I've learnt correctly, in standard set theory, all cardinals are ordinals, > but the reverse is not true, because not every ordinals “has the same number > (as itself) of smaller ordinals”. But in HOL’s currently formalization, > cardinalTheory is depended by ordinalTheory, and ordinalTheory didn’t define > “cardinal numbers” at all. Whenever an informal proof says "Let xxx be the > smallest infinite cardinal, such that …”, I don’t know how to formalize it at > all, because there’s no concept of “cardinal (number)” that I can use. > > Further more, my Klop function has the type: ‘a ordinal -> (‘a, ‘b) CCS. > I have no way to change the first type variable to ‘c so that it’s > independent with type variables used in CCS, because ordinal numbers were > actually written as part of the CCS processes (as vertices in the lts graph). > But this means I have no way to use my previous proved theorem: > > [ONE_ONE_IMP_NOTIN] Theorem > > |- ∀A f. ONE_ONE f ⇒ ∃n. f n ∉ A > > which is based on “univ_ord_greater_cardinal” in ordinalTheory. Because the > type unification will fail: for any set of type ``(:’a, ‘b) CCS -> bool``, I > have no way to say there’s always a bigger ‘a ordinal, which is “larger” than > the “cardinality” of the set. Also please noticed that, now my CCS is at > least as large as the “set" of all ‘a ordinals, because I do can inject each > single ordinals into a CCS process, i.e. my Klop function defined above. > > I hope I’ve explained well for my two questions, let me summarize them again: > > 1. How to express the cardinality of a set as “cardinal numbers” in HOL? > 2. How to find a larger ordinal for a set of custom-defined datatype, when > their type variables are related? > > Best regards, > > Chun Tian > > [1] > https://github.com/binghe/informatica-public/blob/master/thesis/GraphScript.sml > [2] van Glabbeek, R.J.: A characterisation of weak bisimulation congruence. > Lecture notes in computer science. 3838, 26–39 (2005). > >
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