<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Simplifying Pointer Kleene Algebra</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Han-Hing Dang</string-name>
          <email>dang@informatik.uni-augsburg.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Bernhard Moller</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>A Matrix Model of Pointer Kleene Algebra</institution>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Institut fur Informatik, Universitat Augsburg D-86135 Augsburg</institution>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <fpage>20</fpage>
      <lpage>29</lpage>
      <abstract>
        <p>Pointer Kleene algebra has proved to be a useful abstraction for reasoning about reachability properties and correctly deriving pointer algorithms. Unfortunately it comes with a complex set of operations and de ning (in)equations which exacerbates its practicability with automated theorem proving systems but also its use by theory developers. Therefore we provide an easier access to this approach by simpler axioms and laws which also are more amenable to automatic theorem proving systems.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>with vertices in V as indices and subsets of L as entries. An entry A(x; y) = M L in a
matrix A means that in the represented graph there are jM j edges from vertex x to vertex y,
labelled with the elements of M . The complete algebraic structure is (P(L)V V ; [; ; ; 0; 1; &gt;)
with greatest element &gt; and operators, for arbitrary matrices A; B 2 P(L)V V and x; y 2 V ,
(A [ B)(x; y)
(A; B)(x; y)
&gt;(x; y)
0(x; y)
1(x; y)
=df
=df
=df
=df
=df</p>
      <p>A(x; y) [ B(x; y) ;
Sz2V (A(x; z) \ B(z; y)) ;
L ;
; ;
;
L if x = y ;
otherwise :</p>
      <p>As an example consider a tree structure with L =df fleft; right; valg. Clearly, the labels left
and right represent links to the left and right son (if present) of a node in a tree, respectively.
The destination of the label val is interpreted as the value of such a node. We will use \label"
and \link" as synonyms in the following. Figure 1 depicts a sample matrix and its corresponding
labelled directed graph, i.e., a tree with V =df fvi; ci : 1 i 3g.</p>
      <p>v1
v2
v3
c1
c2
c3
v1
;
;
;
;
;
;</p>
      <p>v2
fleftg</p>
      <p>v3
frightg</p>
      <p>c1
fvalg
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
c2
;
fvalg
;
;
;
;
c3
;
;
fvalg
;
;
;
c1 val v1</p>
      <p>left
c2
val v2
right
v3 val
c3</p>
      <p>Multiplication with the &gt; matrix turns out to be quite useful for a number of issues.
Leftmultiplying a matrix A with &gt; produces a matrix where each column contains the union of the
labels in the corresponding column of A. Dually, right-multiplying a matrix A with &gt; produces
a matrix where each row contains the union of the labels in the corresponding row of A. Finally,
multiplying A with &gt; from both sides gives a constant matrix where each entry consists of the
union of all labels occurring in A.</p>
      <p>0L11</p>
      <p>.
&gt; B@ ..</p>
      <p>Ln1</p>
      <p>0L1
Lnn</p>
      <p>L1</p>
      <p>Ln1</p>
      <p>... CA
Ln
0L11</p>
      <p>.</p>
      <p>B@ ..</p>
      <p>Ln1</p>
      <p>L1n 1
.</p>
      <p>.. CA
Lnn</p>
      <p>0M1</p>
      <p>Mn</p>
      <p>M1 1</p>
      <p>... CA
Mn
where Li = S1 j n Lij and Mj = S1 i n Lij . This entails
0L11</p>
      <p>.
&gt; B@ ..</p>
      <p>Ln1</p>
      <p>L1n 1</p>
      <p>... CA &gt; =
Lnn
0M</p>
      <p>M 1
... CA
M
where M =</p>
      <p>S S
1 j n 1 i n</p>
      <p>
        Lij . Such matrices can be used to represent sets of labels in the model.
(
        <xref ref-type="bibr" rid="ref1">1</xref>
        )
(
        <xref ref-type="bibr" rid="ref2">2</xref>
        )
3
      </p>
      <p>Basics and the Original Approach
(S; +; 0) forms an idempotent commutative monoid and (S; ; 1) a monoid. This means,
for arbitrary x; y; z 2 S,
x + (y + z) = (x + y) + z ; x + y = y + x ; x + 0 = 0 ; x + x = x ;</p>
      <p>x (y z) = (x y) z ; x 1 = x ; 1 x = x :
Moreover, has to distribute over + and 0 has to be a multiplicative annihilator, i.e., for
arbitrary x; y; z 2 S,
x (y + z) = (x y) + (x z) ; (x + y) z = (x z) + (y z) ;</p>
      <p>x 0 = 0 ; 0 x = 0 :
The natural order on an idempotent semiring is de ned by x y ,df x + y = y. It is easily
veri ed that the matrix model indeed forms an idempotent semiring in which the natural order
coincides with pointwise inclusion of matrices.</p>
      <p>Second, to form a quantale, (S; ) has to be a complete lattice and multiplication has to
distribute over arbitrary joins. By this, + coincides with the binary supremum operator t. The
binary in mum operator is denoted by u ; in the model it coincides with the pointwise \ of
matrices. The greatest element of the quantale is denoted by &gt;.</p>
      <p>This structure is now enhanced to a Kleene algebra [10] by an iteration operator ,
axiomatised by the following unfold and induction laws:
1 + x x = x , x y + z
1 + x x = x , y x + z
y ) x
y ) z x
z
y ,
y .</p>
      <p>Besides this, the algebra considers special subidentities p 1, called tests. Multiplication
by a test therefore means restriction. Tests can also be seen as an algebraic counterpart of
predicates and thus have to form a Boolean subalgebra. The de ning property is therefore that
a test must have a complement relative to 1, i.e., an element :p that satis es p + :p = 1 and
p :p = 0 = :p p. In the matrix model tests are matrices that have non-empty entries at most
on their main diagonal; multiplication of a matrix M with a test p means pointwise intersection
of the rows or columns of M with the corresponding diagonal entry in p.
3.1</p>
      <sec id="sec-1-1">
        <title>The Original Theory</title>
        <p>
          An essential ingredient of pointer Kleene algebra is an operation that projects all entries of a
given matrix to links of a subset L0 L. This is modelled by scalars1 [4], which are tests
; ; : : : that additionally commute with &gt;, i.e., &gt; = &gt; . Analogously to (
          <xref ref-type="bibr" rid="ref1">1</xref>
          ) and (
          <xref ref-type="bibr" rid="ref2">2</xref>
          ) these
are diagonal matrices which are constant on the main diagonal. We will use the notation L( )
to denote the unique set of labels that a scalar comes with. By this, a scalar in the model
corresponds to the matrix
(x; y) =
;
L( ) if x = y ;
otherwise :
1The origin of this term lies in fuzzy relation theory and has similar behaviour as scalars in vector spaces.
It is immediate from the axioms that 0 and 1 are scalars.
        </p>
        <p>Describing projection needs additional concepts. First, for arbitrary element x and scalar ,
nx = x + :
&gt; :
In the matrix model this adds the complement of L( ) to every entry in x. More abstractly, the
operation is a special instance of the left residual de ned by the Galois connection x ynz ,df
x y z; but this is of no further importance here.</p>
        <p>The next concepts employed are the completion operator " and its dual #, also known from
the algebraic theory of fuzzy sets [18]. For arbitrary x; y 2 S they are axiomatised as follows.</p>
        <p>x" y , x y# ,
is a scalar and 6= 0 implies " = 1 ,
(x y#)" = x" y# ,
(x# y)" = x# y" .</p>
        <p>
          In the matrix model they can be described for a matrix M as follows
(
          <xref ref-type="bibr" rid="ref3">3</xref>
          )
(
          <xref ref-type="bibr" rid="ref4">4</xref>
          )
(
          <xref ref-type="bibr" rid="ref5">5</xref>
          )
px x ;
p(p x)
p ;
x
x xq ;
(x p)q
p :
We note that a third pair of axioms, the modality laws p(x y) = p(x py) and (x y)q = (xq y)q,
is omitted here, because they are implied by another special property that holds for the matrix
M "(x; y) =
;
L if M (x; y) 6= ; ;
otherwise ;
        </p>
        <p>M #(x; y) =
;
L if M (x; y) = L ;
otherwise :
In both cases each node x is either totally linked or not linked at all with another node y. Such
matrices containing only the entries ; and L are also called crisp [4]. They behave analogous to
Boolean matrices where ; plays the role of 0 and L the one of 1. In the abstract algebra crisp
elements are characterised by the equation x" = x. In particular, M " maps a matrix M to the
least crisp matrix containing it, while M # maps M to the greatest crisp matrix it contains.</p>
        <p>Based on these operations and the particular elements of the algebra, projections P ( ) to
label sets L( ) represented by a scalar can be abstractly de ned for arbitrary x 2 S by
P (x) =df
( nx)# :
In the matrix model, projections w.r.t. scalars are used to restrict each entry of a matrix
exactly to L( ). As an example consider the resulting matrix of the following projection with
L( ) = fleft; rightg
0 ; frightg</p>
        <p>; ;
Pfleft;rightg(BB@fvalg fleft; rightg
;
fvalg
fleftg
;
;
;</p>
        <p>
          fvalg 1 0; ; ; ; 1
fleft; rightgCC) = BB; ; ; fleft; rightgCC :
; A @; fleft; rightg ; ; A
; ; ; ; ;
To see that this is achieved by Equation (
          <xref ref-type="bibr" rid="ref5">5</xref>
          ) consider rst the term nx in the matrix model.
This can be rewritten using Equation (
          <xref ref-type="bibr" rid="ref3">3</xref>
          ) into the term x + : &gt;. Hence residuals add to each
entry of x all labels not in L( ). The operation # is then used to keep only those entries in nx
that contain the full set of labels L while all other label sets will be mapped to ;. Finally the
multiplication with the scalar again reduces all remaining L entries to L( ).
        </p>
        <p>Finally we turn to the most important operator of pointer Kleene algebra. It calculates all
reachable nodes from a given set of nodes. The de nition uses domain and codomain operations
p and q. They are characterised by the following equations, for arbitrary element x and test p,
model and also the algebra of binary relations. For domain, it reads x &gt; = px &gt; and is called
subordination of domain, since the direction x &gt; px &gt; follows from the above axioms, but the
reverse one does not. This is equivalent [4] to px = x &gt; u 1, which we postulate as an additional
axiom. This and the dual one for codomain then entail the above-mentioned modality laws.</p>
        <p>Both operations are mappings from general elements to tests, i.e., the resulting matrices
in the model are diagonal matrices. More concretely, the domain operation extracts for every
vertex the set of labels on its outgoing edges while the codomain operator returns the labels on
the incoming edges. As a simple example for domain consider
p0</p>
        <p>; frightg
@ ; ;
fvalg fleft; rightg</p>
        <p>fleftg 1 0fleft; rightg
fleft; rightgA = @ ;
; ;</p>
        <p>;
fleft; rightg
;
;
;
fleft; right; valg
1
A :</p>
        <p>
          In [4] reachability is now de ned by a mapping that takes two arguments: One argument
represents the set of starting nodes or addresses from which the reachable vertices are computed.
The other argument represents the graph structure in which the reachability analysis takes
place. Address sets are represented in this approach by crisp tests: an address belongs to the
set represented by p i the corresponding entry in the main diagonal of p is L. Now assume
that m represents an address set. Then reach(m; x) is de ned using the iteration operator by
reach(m; x) = (m (x") )q :
(
          <xref ref-type="bibr" rid="ref6">6</xref>
          )
The mapping reach calculates a test representing the set of vertices that are reachable from m
using arbitrarily labelled graph links of x. This \forgetting" of the concrete label sets is modelled
by completing the graph using the completion operator ". Sample properties one wants to prove
about reach are
reach(m + n; x) = reach(m; x) + reach(n; x) ;
reach(reach(m; x); x) = reach(m; x) :
To restrict reachability analysis to a subset of labels, projections are combined with reach into
the mapping reach(m; P (x)) for a scalar . By this, non- links are deleted from x.
        </p>
        <p>Finally, an important operation in connection with pointer structures is overriding one
structure x by another one y, denoted yjx =df y + :py x. Here entries of x for which also y provides
a de nition are replaced by these and only the part of x not a ected by y is preserved. This
operator enjoys a rich set of derived algebraic properties. For instance, it is interesting to see in
which way an overwriting a ect reachability. One sample law for this is</p>
        <p>py" u reach(m; x) = 0 ) reach(m; yjx) = reach(m; x) ;
i.e., when the domain of the overriding structure is not reachable from the overridden one it
does not a ect reachability.
3.2</p>
      </sec>
      <sec id="sec-1-2">
        <title>A Discussion on Automation</title>
        <p>
          One sees that it is very onerous to de ne the domain speci c operations of pointer Kleene
algebra from the basic operations. For example projections already include special subidentities
of the algebra, residuals and completion and its dual, where each operator itself comes with
lots of (in)equations de ning behaviour. Furthermore by Equation (
          <xref ref-type="bibr" rid="ref6">6</xref>
          ) reach also uses crisp
subidentities and moreover includes the ", iteration and the codomain operation. The inclusion
of that many axioms often irritates the proof systems and additionally increases the search space.
        </p>
        <p>A naive encoding of these operations in the rst-order automated theorem proving system2
Prover9 [11] already revealed that only a small set of basic properties for projections and
reachability calculations could be derived automatically. We used this theorem prover since it performs
best for automated reasoning tasks within the presented basic algebraic structures [2]. Moreover,
it comes with the useful counterexample search engine Mace4 and outputs semi-readable proofs,
which often provide helpful hints. Of course, any other rst-order ATP system could also be
used with the abstract algebraic approach, e.g., through the TPTP problem library [17].</p>
        <p>
          The resulting ine ective automation could be due to the indirect axiomatisation of # through
" by a Galois connection (cf. De nition (
          <xref ref-type="bibr" rid="ref4">4</xref>
          )). In particular, deriving theorems for # will often
require to show results for " and vice versa. Furthermore, encoding subtypes as tests and
scalars by predicates may be another hindrance to a simple treatment of the axioms by ATP
systems. Such an encoding is also inappropriate for ATP systems like Waldmeister [6] which works
completely equation-based.
        </p>
        <p>
          Moreover, using the Galois characterisation of residuals instead of the explicit
characterisation in Equation (
          <xref ref-type="bibr" rid="ref3">3</xref>
          ) seems to additionally exacerbate the proof search. However, including that
characterisation does not seem to simplify the proof search signi cantly. Therefore we also got a
similar result with the application of ATP system when reasoning about restricted reachability.
        </p>
        <p>Finally the given axiomatisations of the speci c operators for this particular domain are
also di cult to grasp and handle for theory developers due to their complexity. Therefore, in
the next section we provide a simpler approach to pointer Kleene algebra which is easier to
understand and more amenable to ATP systems.
4</p>
        <p>A Simpler Theory for Pointer Kleene Algebra
The preceding section has shown that the original pointer algebra uses quite a number of concepts
and ingredients. The present section is intended to show that one can do with a smaller toolbox
which also is more amenable to automation. As a rst simpli cation we drop the assumption
that address sets need to be interpreted by crisp elements. Plain test elements also su ce to
represent source nodes for reach(p; x) since x is by de nition already completed.
4.1</p>
      </sec>
      <sec id="sec-1-3">
        <title>Projection</title>
        <p>We continue with the notion of projecting a graph to a subgraph that is restricted to a set of
labels. For this we rst want to nd representatives for sets of labels in our algebra.</p>
        <p>
          It is clear that constant matrices and sets of labels are in one-to-one correspondence. By
intersecting a constant matrix with the identity matrix one obtains a test which in the main
diagonal contains the represented set M of labels, see (
          <xref ref-type="bibr" rid="ref1">1</xref>
          ). Multiplying another matrix A with
this test from either side intersects all entries in A with M and hence projects A to the label
set M . The considered test can also be got by taking the domain of the resulting matrix. Note
that neither scalars nor residuals nor the operator # are involved here.
        </p>
        <p>
          The di erence of the just described way to project matrices and projections P (x) can be
made clear in the example given after Equation (
          <xref ref-type="bibr" rid="ref5">5</xref>
          ). By our approach only the fvalg entries of
the original matrix will be deleted while single fleftg and frightg entries remain. It is reasonable
also to consider such entries in reachability calculations.
        </p>
        <p>2We abbreviate the term \automated theorem proving system" to ATP system in the following.
4.2</p>
      </sec>
      <sec id="sec-1-4">
        <title>Domain and Codomain</title>
        <p>As a further simpli cation, plain test elements can be represented in the algebra by domain or
codomain elements. In particular, such elements form Boolean subalgebras, resp. We give their
axiomatisation through a(x) and ac(x) which are the complements of the domain and codomain
of x, resp. From these domain and codomain can be retrieved as px = a(a(x)) and xq = ac(ac(x)).
The axioms read as follows:</p>
        <p>a(x) x = 0 ;
a(a(x)) + a(x) = 1 ;
a(x y) a(x a(a(y))) ;</p>
        <p>x ac(x) = 0 ;
ac(ac(x)) + ac(x) = 1 ;
ac(x y) ac(ac(ac(x)) y) :
The idea with this approach is to avoid explicit subsorting, i.e., introducing the set of tests as
a sort of its own, say by using predicates that assert that certain elements are tests, and to
characterise the tests implicitly as the images of the antidomain/anticodomain operators. The
axioms entail that those images coincide and form a Boolean algebra with + and as join and
meet, resp.</p>
        <p>The given characterisation seems to be still di cult to handle for ATP systems in that form.
Often a lot of standard Boolean algebra properties have to be derived rst. Therefore we propose
an equivalent but more \e cient" axiomatisation at the end of the next section.
4.3</p>
      </sec>
      <sec id="sec-1-5">
        <title>Completion</title>
        <p>Next, we turn to the completion operator " which is useful in analysing link-independent
reachability in graphs. Rather than axiomatising it indirectly through a Galois connection we
characterise it jointly with its complement " similarly to domain and antidomain in Section 4.2. In
particular, we axiomatise x" as a left annihilator of x w.r.t. u, paralleling the statement that
a(x) is a left annihilator for x w.r.t. composition .</p>
        <p>The axioms show some similarity to the domain/antidomain ones, but also substantial
differences on which we will comment below. However, we still have, analogously to px = a(a(x)),
that x" = (x")"; for better readability we use this as an abbreviation in the axioms:
1" 1 ; x" u x
x" u y" = (x + y)" ;
(x y")" = x" y" ;
0 ;</p>
        <p>&gt;
x" + y" = (x" u y")" ;
(x" y)" = x" y" :
0" ;
Notice that the inequations can be strengthened to equations. The most striking di erence
to antidomain are the De-Morgan-like axioms and the axioms concerning multiplication. We
cannot use the axiom x y" (x y")" instead because it is not valid in the matrix model.
Therefore the De Morgan laws do not follow but rather have to be put as additional axioms.
They clearly state that the image of " is closed under u and +.</p>
        <p>We list a number of useful consequences of the axioms; they are all very quickly shown by
Prover9. A sample input le can be found in the appendix.</p>
        <p>x x" ;
(x")" = x" ;
&gt;" = &gt; ;
&gt;" = 0 ;
(x" + y")" = x" u y" ;
(x" + y")" = x" u y" ;
0" = 0 ;
0" = &gt; ;
(x" u y")" = x" + y" ;
(x" u y")" = x" + y" ;</p>
        <p>y" ;
x y ) y"
x" = 0 , x = 0 ;
(x")" = x" ;</p>
        <p>x" ; x y ) x"
x" = &gt; , x = 0 ;
(x" y")" = x" y" ;</p>
        <p>x" = 0 , x = 0 ;
(x + y)" = x" + y" :
In particular, the image of " and hence of ", i.e., the set of crisp elements, forms a Boolean
algebra. Moreover, " is a closure operator. By general results therefore " preserves all existing
suprema and, in a complete lattice, has an upper adjoint, which of course is #. To axiomatise
# we can use the Galois adjunction x" y , x y#. This entails standard laws as e.g.
(x y#)" = x" y# ;
(x# y)" = x" y# ;
(x#)"
x ;
x
(x")# :
With the help of # one can show that the image of " is also closed under the iteration . A last
speciality concerns the domain/codomain operation. By the subordination axiom for domain it
can be veri ed that p(x") = (px)".</p>
        <p>Altogether we retrieve Ehm's result that, in a semiring with domain, the image of ", forms
again a Kleene algebra with domain. Extending that, our axiomatisation yields that this algebra
is even Boolean.</p>
        <p>Inspired by the above axiomatisation, we now present a new axiomatisation of antidomain
and anticodomain that explicitly states De-Morgan-like dualities to facilitate reasoning.
a(x) x = 0 ; a(0) = 1 ;</p>
        <p>a(x) a(y) = a(x + y) ;
a(x) + a(y) = a(a(a(x)) a(a(y))) ;
a(x y) a(x a(a(y))) ;
x ac(x) = 0 ; ac(0) = 1 ;
ac(x) ac(y) = ac(x + y) ;
ac(x) + ac(y) = ac(ac(ac(x)) ac(ac(y))) ;
ac(x y) ac(ac(ac(x)) y) :
Using Prover9 we have shown that this axiomatisation is equivalent to the standard
axiomatisation of antidomain/anticodomain. And indeed, the automatic proofs of the Boolean algebra
properties of tests as well as of the mentioned properties of reach are much faster with it.
5</p>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>Outlook</title>
      <p>This work provides a more suitable axiomatisation of special operations used in pointer Kleene
algebra. These axioms are more applicable for ATP systems since less operations and less
subtypes of the algebra has to be considered. Moreover the (in)equations of our approach
enables a simpler encoding of the algebra for ATP systems due to explicit subsorting. This
will also partially include the usage of ATP systems as Waldmeister for such particular problem
domains.</p>
      <p>It can be seen that the axiomatisations of antidomain (or anticodomain) and anticompletion
are very similar. This motivates to further abstract from the concrete involved operations and
to de ne a restriction algebra that replays general derivations.</p>
      <p>Moreover, this approach will be used to characterise sharing and sharing patterns in pointer
structures within an algebraic approach to separation logic [3]. This will include the ability to
reason algebraically about reachability in abstractly de ned data structures.</p>
      <p>Prover9 Encoding of Pointer Kleene Algebra
1 op(450, infix, "+"). % Addition
2 op(440, infix, ";"). % Multiplication
3 op(420, infix, "^"). % Meet
4 op(400, postfix, "*"). % Iteration
5 op(410, prefix, "@"). % Antidomain
6 op(410, prefix, "!"). % Anticodomain
7 op(410, prefix, "?"). % Anticompletion
8 % --- Additive commutative and idempotent monoid
9 x+(y+z) = (x+y)+z.
10 x+y = y+x.
11 x+0 = x.
12 x+x = x.
13 % --- Order
14 x &lt;= y &lt;-&gt; x+y = y.
15 % --- Definition of top
16 x &lt;= T.
17 % --- Multiplicative monoid
18 x;(y;z) = (x;y);z.
19 1;x = x.
20 x;1 = x.
24 % ---Annihilation
25 0;x = 0.
26 x;0 = 0.
27 % --- Definition of meet
28 (x&lt;=y &amp; x&lt;=z) &lt;-&gt; x &lt;= y^z.
29 x^(y+z) = x^y + x^z.
37 % --- Definition of anticodomain
38 !0 = 1.
39 x;!x = 0.
40 !x;!y = !(x+y).
41 !x+!y = !(!!x;!!y).
42 !(x;y) = !(!!x;y).
43 !!x = (T;x) ^ 1. % --- Subordination of codomain
44 % --- Definition of completion
45 ??1 = 1.
46 ?0 = T.
47 ?x^x = 0.
48 ?x ^ ?y = ?(x + y).
49 ?x + ?y = ?(??x ^ ??y).
50 ??(x ; ??y) = ??x ; ??y.
51 ??(??x ; y) = ??x ; ??y.
52 % --- Iteration - Unfold laws
53 1 + x ; x* = x*.
54 1 + x* ; x = x*.
55 % --- Iteration - Induction laws
56 x;y + z &lt;= y -&gt; x* ; z &lt;= y.
57 y;x + z &lt;= y -&gt; z ; x* &lt;= y.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>J. H.</given-names>
            <surname>Conway</surname>
          </string-name>
          .
          <source>Regular Algebra and Finite Machines. Chapman &amp; Hall</source>
          ,
          <year>1971</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>H.-H.</given-names>
            <surname>Dang and P. H</surname>
          </string-name>
          <article-title>ofner. First-order theorem prover evaluation w</article-title>
          .r.t. relation
          <article-title>- and Kleene algebra</article-title>
          . In R. Berghammer,
          <string-name>
            <surname>B.</surname>
          </string-name>
          <article-title>Moller</article-title>
          , and G. Struth, editors,
          <source>Relations and Kleene Algebra in Computer Science | PhD Programme at RelMiCS 10/AKA 05, number 2008-04 in Technical Report</source>
          , pages
          <volume>48</volume>
          {
          <fpage>52</fpage>
          . Institut fur Informatik,
          <source>Universitat Augsburg</source>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>H.-H.</given-names>
            <surname>Dang</surname>
          </string-name>
          , P. Hofner, and
          <string-name>
            <surname>B.</surname>
          </string-name>
          <article-title>Moller. Algebraic separation logic</article-title>
          .
          <source>Journal of Logic and Algebraic Programming</source>
          ,
          <volume>80</volume>
          (
          <issue>6</issue>
          ):
          <volume>221</volume>
          {
          <fpage>247</fpage>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>T.</given-names>
            <surname>Ehm</surname>
          </string-name>
          .
          <article-title>The Kleene Algebra of Nested Pointer Structures: Theory and Applications</article-title>
          .
          <source>PhD thesis</source>
          , Fakultat fur Angewandte Informatik, Universitat Augsburg,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>T.</given-names>
            <surname>Ehm</surname>
          </string-name>
          .
          <article-title>Pointer Kleene algebra</article-title>
          . In R. Berghammer,
          <string-name>
            <surname>B.</surname>
          </string-name>
          <article-title>Moller</article-title>
          , and G. Struth, editors,
          <source>RelMiCS</source>
          , volume
          <volume>3051</volume>
          of Lecture Notes in Computer Science, pages
          <volume>99</volume>
          {
          <fpage>111</fpage>
          . Springer,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>T.</given-names>
            <surname>Hillenbrand</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Buch</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Vogt</surname>
          </string-name>
          , and
          <string-name>
            <surname>B.</surname>
          </string-name>
          <article-title>Lochner. WALDMEISTER - High-Performance Equational Deduction</article-title>
          .
          <source>Journal of Automated Reasoning</source>
          ,
          <volume>18</volume>
          :
          <fpage>265</fpage>
          {
          <fpage>270</fpage>
          ,
          <year>1997</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <surname>P.</surname>
          </string-name>
          <article-title>Hofner</article-title>
          and G. Struth.
          <article-title>Automated reasoning in Kleene algebra</article-title>
          . In F. Pfenning, editor,
          <source>Automated Deduction | CADE-21</source>
          , volume
          <volume>4603</volume>
          <source>of Lecture Notes in Arti cial Intelligence</source>
          , pages
          <fpage>279</fpage>
          {
          <fpage>294</fpage>
          . Springer,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <surname>P.</surname>
          </string-name>
          <article-title>Hofner</article-title>
          and
          <string-name>
            <given-names>G.</given-names>
            <surname>Struth</surname>
          </string-name>
          .
          <article-title>On automating the calculus of relations</article-title>
          . In A. Armando,
          <string-name>
            <given-names>P.</given-names>
            <surname>Baumgartner</surname>
          </string-name>
          , and G. Dowek, editors,
          <source>Automated Reasoning (IJCAR</source>
          <year>2008</year>
          ), volume
          <volume>5159</volume>
          of Lecture Notes in Computer Science, pages
          <volume>50</volume>
          {
          <fpage>66</fpage>
          . Springer,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <surname>P.</surname>
          </string-name>
          <article-title>Hofner</article-title>
          , G. Struth, and G. Sutcli e.
          <source>Automated veri cation of re nement laws. Annals of Mathematics and Arti cial Intelligence</source>
          ,
          <volume>55</volume>
          :
          <fpage>35</fpage>
          {
          <fpage>62</fpage>
          ,
          <year>February 2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>D.</given-names>
            <surname>Kozen</surname>
          </string-name>
          .
          <article-title>A completeness theorem for Kleene algebras and the algebra of regular events</article-title>
          .
          <source>Information and Computation</source>
          ,
          <volume>110</volume>
          (
          <issue>2</issue>
          ):
          <volume>366</volume>
          {
          <fpage>390</fpage>
          ,
          <year>1994</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>W.</given-names>
            <surname>McCune</surname>
          </string-name>
          .
          <article-title>Prover9 and Mace4</article-title>
          . &lt;http://www.cs.unm.edu/ mccune/prover9&gt;.
          <source>(accessed July 26</source>
          ,
          <year>2011</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <surname>B.</surname>
          </string-name>
          <article-title>Moller</article-title>
          .
          <article-title>Some applications of pointer algebra</article-title>
          . In M. Broy, editor,
          <source>Programming and Mathematical Method, number 88 in NATO ASI Series</source>
          , Series F: Computer and Systems Sciences, pages
          <volume>123</volume>
          {
          <fpage>155</fpage>
          . Springer,
          <year>1992</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <surname>B.</surname>
          </string-name>
          <article-title>Moller. Calculating with pointer structures</article-title>
          .
          <source>In Proceedings of the IFIP TC2/WG 2.1 International Workshop on Algorithmic Languages and Calculi</source>
          , pages
          <volume>24</volume>
          {
          <fpage>48</fpage>
          .
          <string-name>
            <surname>Chapman</surname>
          </string-name>
          &amp; Hall,
          <year>1997</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <surname>B.</surname>
          </string-name>
          <article-title>Moller. Calculating with acyclic and cyclic lists</article-title>
          .
          <source>Information Sciences</source>
          ,
          <volume>119</volume>
          (
          <issue>3-4</issue>
          ):
          <volume>135</volume>
          {
          <fpage>154</fpage>
          ,
          <year>1999</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>K. I.</given-names>
            <surname>Rosenthal</surname>
          </string-name>
          .
          <source>Quantales and their Applications</source>
          , volume
          <volume>234</volume>
          of Pitman Research Notes in Mathematics Series. Longman Scienti c &amp; Technical,
          <year>1990</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>G.</given-names>
            <surname>Struth</surname>
          </string-name>
          .
          <article-title>Reasoning automatically about termination and re nement</article-title>
          . In S. Ranise, editor,
          <source>6th International Workshop on First-Order Theorem Proving, volume Technical Report ULCS-07-018</source>
          , Department of Computer Science, pages
          <volume>36</volume>
          {
          <fpage>51</fpage>
          . University of Liverpool,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <surname>G.</surname>
          </string-name>
          <article-title>Sutcli e. The TPTP Problem Library and Associated Infrastructure: The FOF</article-title>
          and CNF Parts,
          <year>v3</year>
          .
          <source>5.0. Journal of Automated Reasoning</source>
          ,
          <volume>43</volume>
          (
          <issue>4</issue>
          ):
          <volume>337</volume>
          {
          <fpage>362</fpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>M.</given-names>
            <surname>Winter</surname>
          </string-name>
          .
          <article-title>A new algebraic approach to L-fuzzy relations convenient to study crispness</article-title>
          .
          <source>Information Sciences</source>
          ,
          <volume>139</volume>
          (
          <issue>3-4</issue>
          ):
          <volume>233</volume>
          {
          <fpage>252</fpage>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          21 %
          <string-name>
            <surname>--- Distributivity</surname>
          </string-name>
          laws
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          <article-title>22 x;(y+z) = x;y + x;z.</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          <article-title>23 (x+y);z = x;z + y;z.</article-title>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>