Information Technology Reference
In-Depth Information
constdefs CorrectComponentWeak:: Component bool
CorrectComponentWeak c == CorrectComponentStructure c
distinct (RqIdList c) distinct (map getName(cpList c))
constdefs CorrectComponentWeakList:: Component list bool
CorrectComponentWeakList CL == (CorrectComponentStructureList CL)
distinct (RqIdListList CL) distinct (map getName (cpListlist CL))
3.5
Basic Properties on Component Structure and Manipulation
In this section, we present a few properties that we proved. They deal with
the constructs presented in Section 3.2, and are unrelated to our definition of
states presented in the last section. Those lemmas are the basic building blocks
on which most of our proofs rely. On the set of more than 80 lemmas dealing
with cpSets and cpLists , we focus on the most useful and significant ones. In
particular, we choose to show rather lemmas dealing with the cpSet construct
because it is a higher-level one and thus reasoning on sets of components is
often preferable, when possible. Note however that most of the proofs dealing
with distinctness of component names will rather use cpLists .
We start by an easy lemma quite heavily used and very easy to prove. It states
that C is always in cpSet(C) (it is proved by cases on C ).
lemma cpSetFirst: C cpSet C
The set of components inside a composite one can be decomposed as follows. It
can be separated into the composite itself plus all the components in the cpSet
of each sub-component.
lemma cpSetcomposite:
cpSet (Composite N itfs sub b s)={Composite N itfs sub b s}
{C. C' set sub. C cpSet C'}
This lemma is proved by an induction on lists of subcomponents. Conversely, we
can prove that, if a component is in the cpSet of a subcomponent of a composite,
it is in the cpSet of the composite. We also present a more general variant of
this lemma stating that if C'' is inside C' and C' is inside C then C'' is inside C .
lemma cpSetcomposite_rev:
C set sub; C' cpSet C
= C' cpSet (Composite N itfs sub b s)
lemma cpSetcpSet:
C'' cpSet C';C' cpSet C = C'' cpSet C
Although those two lemmas are very easy to prove (by induction on the compo-
nent structure), they are massively used in the other proofs.
Another theorem almost automatically proved by Isabelle, but exceedingly
useful is the following one. It gives another formulation of the getCp construct.
lemma getCp_inlist: CL^N=Some C = C set CL getName C=N
 
Search WWH ::




Custom Search