<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">On Correctness of Graph Programs Relative to Recursively Nested Conditions</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Nils</forename><forename type="middle">Erik</forename><surname>Flick</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution">Carl von Ossietzky Universität</orgName>
								<address>
									<postCode>26111</postCode>
									<settlement>Oldenburg</settlement>
									<country key="DE">Germany</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">On Correctness of Graph Programs Relative to Recursively Nested Conditions</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">016C32E15163581C40553E40F50BC8DF</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-23T22:23+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>We propose a new specification language for the proof-based approach to verification of graph programs by introducing µ-conditions as an alternative to existing formalisms which can express path properties. The contributions of this paper are the lifting of constructions from nested conditions to the new, more expressive conditions, and a proof calculus for partial correctness relative to µ-conditions.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1">Introduction</head><p>Graph transformations provide a formal way to model the graph-based behaviour of a wide range of systems by way of diagrams. Such systems can be formally verified. One approach to verification proceeds via model checking of abstractions, notably Gadducci et al., <ref type="bibr">Baldan et al.</ref>, <ref type="bibr">König et al.,</ref><ref type="bibr">Rensink et al. [4,</ref><ref type="bibr" target="#b0">1,</ref><ref type="bibr" target="#b9">10,</ref><ref type="bibr" target="#b17">18]</ref>. This can be contrasted with the proof-based approaches of Habel, Pennemann and Rensink <ref type="bibr" target="#b6">[7,</ref><ref type="bibr" target="#b5">6]</ref> and Poskitt and Plump <ref type="bibr" target="#b14">[15]</ref>. Here, state properties are expressed by nested graph conditions, and a program can be proved correct with respect to a precondition c and a postcondition d. The following figure presents a schematic overview of the approach, which is also our starting point: The correctness proof is done in the style of Dijkstra's <ref type="bibr" target="#b1">[2]</ref> predicate transformer approach in Pennemann's thesis <ref type="bibr" target="#b11">[12]</ref>, while Poskitt's thesis <ref type="bibr" target="#b13">[14]</ref> features a Hoare <ref type="bibr" target="#b7">[8]</ref> logic for partial and total correctness. Both works are based on nested conditions, which cannot express non-local properties of graphs, such as connectivity. In this paper, we consider non-local properties, and we present an extension to the proof calculus from <ref type="bibr" target="#b11">[12]</ref>.</p><p>Our formalism is an extension of nested conditions by recursive definitions. While several extensions of nested graph conditions to non-local conditions already exist (Radke <ref type="bibr" target="#b16">[17]</ref>, Poskitt and Plump <ref type="bibr" target="#b15">[16]</ref>), we argue that as opposed to the former, ours already offers a weakest precondition calculus that can handle any condition expressible in it; as compared to the latter, which relies more heavily on expressing properties directly in (monadic second-order) logic, ours is more closely related to nested conditions and shares the same basic methodology. Therefore µ-conditions, albeit still work in progress, offer a new viewpoint that may be sufficiently different from existing ones to be worth investigating.</p><p>The outline of the paper is as follows: Section 2 recalls graph programs and conditions. Sections 3 and 4 introduce µ-conditions and correctness under µconditions, respectively, together with an exemplary application of the method, Section 5 provides context by listing related work and Section 6 concludes with an outlook. After the main text, there is an appendix with the proofs.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2">Graph Conditions and Programs</head><p>In this section, we introduce graph conditions and graph programs. We assume familiarity with graph transformation systems in the sense of Ehrig et al. <ref type="bibr" target="#b2">[3]</ref>, and the basic notions of category theory. For standard definitions and more details, we refer the reader to Ehrig et al. <ref type="bibr" target="#b2">[3]</ref>. For an in-depth introduction to nested conditions and graph programs and practical approaches to semi-automatic theorem proving in this context, we refer the reader to Pennemann <ref type="bibr" target="#b11">[12]</ref>.</p><p>Notation. The domain and codomain of a morphism f : G → H are denoted by dom(f ) = G and cod(f ) = H. Injective morphisms (monomorphisms) are distinguished typographically by a curly arrow f : G ֒→ H while double-tailed arrows f : G ։ H denote surjective ones (epimorphisms). We use the symbol M to denote the class of all graph monomorphisms. A partial morphism is a pair of monomorphisms with the same domain. The empty graph is denoted by ∅.</p><p>All graphs in this paper are assumed to be finite.</p><p>A brief review of nested conditions follows. Nested graph conditions were proposed by Habel and Pennemann. Finite nested conditions were later shown to be equally expressive as graph-interpreted first-order predicate logic. Graph conditions can be used as constraints to specify state properties, or as application conditions to restrict the applicability of a rule.</p><p>Definition 1 (Nested Graph Conditions). Let Cond be the class of nested conditions, defined inductively as follows (where P, C ′ , C are graphs):</p><p>-If J is a countable set and for all j ∈ J, c j is a condition (over P ), then j∈J c j is a condition (over P ). This includes the case J = ∅ (for any P ).</p><p>-If c is a condition (over P ), then ¬c is also a condition (over P ).</p><p>-If a : P ֒→ C ′ is a monomorphism, ι : C ֒→ C ′ is a monomorphism and c ′ is a condition (over C), then ∃(a, ι, c ′ ) is a condition (over P ).</p><p>We call c ′ a direct subcondition of ∃(α, ι, c ′ ), ¬c ′ and c ′ ∨c ′′ and use subcondition for the reflexive and transitive closure of this syntactically defined relation.</p><p>Notation. If c is a condition over P , then P is its type<ref type="foot" target="#foot_0">1</ref> and we write c : P , and Cond P is the class of all conditions over P . We may write ∃(a, c) instead of ∃(a, id cod(a) , c). The usual abbreviations define the other standard operators: is ¬ ¬, ∀ is ¬∃¬. No morphism satisfies the disjunction over the empty index set. We introduce false as a notation for it, and true for ¬false. We may omit the subcondition true (together with ι), writing ∃(a) for ∃(a, ι, true).</p><p>When all the index sets are finite, one obtains the finite nested conditions. The morphism ι serves to unselect<ref type="foot" target="#foot_1">2</ref> a part of C ′ , which will become necessary later.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Definition 2 (Satisfaction).</head><p>A monomorphism f : P ֒→ G satisfies a condition c :</p><formula xml:id="formula_0">P , denoted f |= c, iff c = true, c = ¬c ′ and f |= c ′ , or c = j∈J c j and there is a j ∈ J such that f |= c j , or c = ∃(a, ι, c ′ ) (a : P ֒→ C ′ , ι : C ֒→ C ′ , c ′ : C) and there exists a monomorphism q : C ′ ֒→ G such that f = q • a and q • ι |= c ′ . ∃(P C ′ C, ) G a ι q f q • ι c ′ |= A graph G satisfies a condition c : ∅ iff the unique morphism ∅ ֒→ G satisfies c.</formula><p>In the diagram of Def. 2, the triangle indicates that C is the type of the subcondition c ′ which appears nested inside ∃(α, ι, c ′ ).</p><p>Remark 1 (No Added Expressivity). Our conditions with ι are equally expressive as the nested conditions defined in <ref type="bibr" target="#b11">[12]</ref>. The proof, which we omit here, relies on the transformation A from <ref type="bibr" target="#b11">[12]</ref>. Definition 3. ≡ denotes logical equivalence, i.e. for conditions c, c ′ : P , c ≡ c ′ iff for all monomorphisms m with domain</p><formula xml:id="formula_1">P , ⇒ m |= c ⇔ m |= c ′ .</formula><p>Notation. As one can see in Fig. <ref type="figure">1</ref>, the notation for graph conditions customarily only depicts source or target graphs of morphisms. The tiny blue numbers show the morphisms' node mappings. We also adopt the convention of not explicitly representing the morphism ι in a situation ∃(a, ι, x i ); we prefer to annotate the variable's type graph with the images of items under ι in parentheses.</p><p>Next, we introduce graph transformations. We follow the double pushout approach with injective rules and injective matches. For technical reasons, we define graph transformations in terms of four elementary steps, namely selection, deletion, addition and unselection. Deletion and addition always apply to a selected subgraph, and selection and unselection allow the selection to be changed. skip is a no-op used in the definition of sequential composition. The definition below allows for somewhat more general combinations of the basic steps, which cannot be expressed by sets of graph transformation rules.</p><p>The semantics of a graph program is a triple of two monomorphisms and one partial morphism. The two monomorphisms represent the selected subgraphs before and after the execution of the program respectively, and the partial morphism records the changes effected by the program. Our programs are a proper subset of those in Pennemann <ref type="bibr" target="#b11">[12]</ref>, and use the same semantics.</p><p>Definition 4 (Graph Programs).</p><p>In the following table, x, l, r, y, m in and m out are monomorphisms, with x, l, r and y arbitrarily chosen to define a program step, while m in and m out are called interfaces and universally quantified in the set comprehensions that appear in the definitions below.</p><formula xml:id="formula_2">Name Program P Semantics P selection Sel(x) {(m in , m out , x) | m out • x = m in } deletion Del(l) {(m in , m out , l −1 ) | ∃l ′ , (m out , l, m in , l ′ ) pushout} addition Add(r) {(m in , m out , r) | ∃r ′ , (m in , r, m out , r ′ ) pushout} unselection U ns(y) {(m in , m out , y −1 ) | m out = m in • y} skip skip {(m, m, id dom(m) ) | m ∈ M}</formula><p>If P and Q are graph programs, then so are their disjunctive {P, Q} and sequential (P ; Q) composition. The semantics of disjunction is a set union P ∪ Q and the semantics of sequence is</p><formula xml:id="formula_3">P ; Q = {(m, m ′ , p) | ∃(m, m ′′ , p ′ ) ∈ P , (m ′′ , m ′ , p ′′ ) ∈ Q , p = p ′ ; p ′′ }, where composition p ′ ; p ′′ of partial morphisms p ′ = G 1 l1 ←֓ D 1 r1 ֒→ H 1 , p ′′ = H 1 l2 ←֓ D ′ 2 r2 ֒→ H 2 is defined as G l1•l ′ 2 ←֓ D ′′ r2•r ′ 1 ֒→ H 2 using the pullback (r ′ 1 , l ′ 2 ) of (r 1 , l 2 )</formula><p>. If P is a graph program, then so is its iteration P * ; P * = j∈N P j where P j = P ; P j−1 for j ≥ 1 and P 0 = skip. In this section, we define µ-conditions on the basis of nested graph conditions. These are capable of expressing path and connectivity properties, which frequently arise in the study of the correctness of programs with recursive data structures, or in the modelling of networks. We then define and prove the correctness of some basic constructions. An example is provided at the end of this section to illustrate the constructions step by step.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1">Defining µ-Conditions</head><p>Nested conditions are a very successful approach to the specification of graph properties for verification. However, they are unable to express non-local properties such as connectedness. Our idea is to generalise nested conditions to capture certain non-local properties by adding recursion. The resulting formalism will be similar to first order fixed point logics, see e.g. Kreutzer <ref type="bibr" target="#b8">[9]</ref>. The reader might want to compare our µ-conditions to a distinct formalism towards expressing non-local properties, the very powerful grammar-based HR * conditions of Radke <ref type="bibr" target="#b16">[17]</ref>. We argue that µ-conditions are worth looking into despite the availability of strong contenders for the extension of nested conditions to nonlocal properties, such as MSO-conditions <ref type="bibr" target="#b15">[16]</ref> because µ-conditions provide a new and different generalisation of nested conditions, and neither is it immediately clear how the respective expressivities compare. The related work section, Sec. 5, contains a summary on different non-local graph condition formalisms. Specifically, we will show in this section that the weakest liberal precondition transformation, core of the Dijkstra-style approach, can be adapted.</p><p>Notation. Sequences (of graphs, placeholders, morphisms) are written as bold letters P , x, f , and their components are numbered starting from 1. The length of a sequence P is denoted by P . Indexed typewriter letters x 1 stand for placeholders, i.e. variables. The notation c : P indicating that c has type P is also extended to sequences: c : P (provided c = P ).</p><p>To define fixed point conditions, we need something to take fixed points of, and to ascertain that the fixed point exists. Choosing a partial order on Cond P , one can define monotonic operators on Cond P . The semantics of satisfaction already defines a pre-order: c ≤ c ′ iff every morphism that satisfies c also satisfies c ′ , which is obviously transitive and reflexive. As in every pre-order, ≤ ∩ ≤ −1 is an equivalence relation compatible with ≤ and comparing representants via ≤ partially orders its equivalence classes. We introduce variables as placeholders where further conditions can be substituted<ref type="foot" target="#foot_2">3</ref> .</p><p>To represent systems of simultaneous equations, we work on tuples of conditions. If P = P 1 , . . . , P P is a sequence of graphs, then Cond P is the set of all Ptuples c of conditions, whose i-th element is a condition over the i-th graph of P . Satisfaction is defined component-wise:</p><formula xml:id="formula_4">f |= c iff ∀k ∈ {1, . . . , P } f k |= c k .</formula><p>By definition, and of countable sets of Cond P conditions exist for any P , and they are easily seen to be least upper and greatest lower bounds of the sets. This makes Cond ≡P a complete lattice. Let Cond P be ordered with the product order by defining f |= c to be true when the conjunction holds. This again induces a partial order on the set of equivalence classes, Cond ≡P . Thus, Cond ≡P is also a complete lattice, and monotonic operators have least fixed points by the Knaster-Tarski theorem <ref type="bibr" target="#b19">[20]</ref>, given by the limit of F n (false) for all n ∈ N . This ensures that systems of equations as defined below yield least fixed point solutions, which is crucial in the definition of a µ-condition. We extend the inductive definition from Def. 1 as follows:</p><p>Definition 5 (Graph Conditions with Placeholders). Given a graph P and a finite sequence P of graphs or morphisms, a condition with placeholders from P over P is a (graph) condition with placeholders is either ∃(a, ι, c), or ¬c, or j∈J c j , or x i , 1 ≤ i ≤ P where x i is a variable of type P i .</p><p>A condition can be substituted for a variable of same type: Definition 6 (Substitution). If P is a list of graphs and F is a condition with placeholders x over P , then if c ∈ Cond P , then F[x/c] is obtained by substituting each occurrence of x i by c i for all i ∈ {1, ..., P }.</p><p>Satisfaction of conditions with placeholders by a morphism f is defined in the obvious way relative to a valuation, which is an assignment of true or false to each monomorphism of the type graph of the variable into cod(f ).</p><p>As discussed above, a least fixed point will be sought only up to logical equivalence. To guarantee existence of the least fixed point, the operator must be monotonic (c ≤ d ⇒ F (c) ≤ F (d) for any c, d ∈ Cond P ). Monotonicity can be enforced syntactically for substitutions by never placing a variable under an odd number of negations, which is proved by structural induction as in fixed point logics or the modal µ calculus.</p><p>Definition 7 (µ-Condition). Given a finite list P , if {F i } i∈{1,..., P } are conditions with placeholders from P , over the graphs of P respectively, then µ[P ]F denotes the least fixed point of the operator c → F [x/c].</p><p>A µ-condition is a pair (b, l) consisting of a condition with placeholders b, and a finite list of pairs l = (x i , F i (x)) of a variable x i : P i and a condition F i (x) : P i , with placeholders from x, for some graph P i , such that F is monotonic.</p><p>Notation. we write the list of pairs l = (x i , F i (x)) as a system of equations x = F (x). We call b the main body and l the recursive specification of (b, l), and F (c) is understood as substitution of conditions c for the variables x.</p><p>Thus each condition with placeholders typed over P defines a unary operator on Cond P .</p><p>Remark 3 (First Example: µ-Conditions are More General than Nested).</p><p>1. µ-conditions generalise nested conditions, consequently all examples for nested conditions are examples for µ-conditions (with no variables or equations). 2. µ-conditions are strictly more general than nested conditions: the following expresses the existence of a path of unknown length between two given nodes.</p><formula xml:id="formula_5">x 1 [<label>1 2</label></formula><p>] where x 1 [</p><formula xml:id="formula_6">1 2 ] = ∃(<label>1 2</label></formula><p>) ∨ ∃(</p><formula xml:id="formula_7">1 2 3 , x 1 [ 1(3) 2(2)</formula><p>])</p><p>It is read as follows: the word "where" separates the main body from the equations. Here, x 1 is the only variable, and its type graph is indicated in square brackets. The second existential quantifier uses a morphism to unselect node 1 and the sole edge: its source is the type graph of x 1 , which is indeed syntactically required for using the variable in that place. The unselection morphism ι is implicit in the notation, and is only expressed by adding small blue numbers in parentheses to the node numbers in its source graph to specify the mapping. This compact notation for ι is why the second existential quantifier in the example has only two fields. To ease reading and writing, we adopt the convention to always use precisely the same layout for the type graph of a given variable.</p><p>The following statement is not needed in the proofs that will follow, but it helps motivate the use of the "unselection" morphisms. We therefore view it as justified to leave the proof as an exercise:</p><p>Remark 4 (Why ι). A µ-condition where ι is the identity in all subconditions of the main body and of the components F i (x) is equivalent to a nested condition.</p><p>The following fact is well-known: A morphism satisfies a given µ-condition iff it satisfies the finite nested condition obtained by unrolling the recursive specification up to some finite depth and substituting the resulting nested conditions into the main body:</p><formula xml:id="formula_8">Proposition 1 (Satisfaction at Finite Recursion Depth). f |= b | x = F (x) iff ∃n ∈ N, f |= b[x/F n (false)].</formula><p>Theorem 1 (Deciding Satisfaction of µ-conditions). Given a morphism f : P ֒→ G and a µ-condition c, it is decidable whether f |= c.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.2">Weakest Liberal Preconditions of µ-conditions</head><p>In this subsection, we present a construction to compute the weakest liberal precondition of any given µ-condition with respect to any graph program P that does not use iteration ("liberal" means that termination of P is not implied, and is redundant in the absence of iteration, as only iteration causes non-termination).</p><p>Definition 9 (Weakest Liberal Precondition). The weakest liberal precondition (wlp) of c with respect to the program P , wlp(P, c), is the least condition with respect to implication such that</p><formula xml:id="formula_9">f ′ |= c ⇒ f |= wlp(P, c) if (f, f ′ , p) ∈ P</formula><p>for some partial morphism p.</p><p>We will show that under this assumption there is a µ-condition that expresses precisely the weakest liberal precondition of a given µ-condition with respect to a rule, and it can be computed. The result is similar to the situation for nested conditions. To derive it, we use the shift transformation A m (c) from <ref type="bibr" target="#b11">[12]</ref> whose fundamental property is to transform any nested condition c into another nested condition such that m ′′ |= A m (c) iff m ′′ • m |= c for all composable pairs m ′′ , m of monomorphisms (Lemma 5.4 from <ref type="bibr" target="#b11">[12]</ref>). Since this and similar constructions play an important role in this section, we recall here the case c = ∃(a, c ′ ): if (m ′ , a ′ ) is the pushout of (m, a), let Epi be the set of all epimorphisms e with domain cod(m ′ ) that compose to monomorphisms b := e • a ′ and r</p><formula xml:id="formula_10">:= e • m ′ . Then A m (∃(a, c ′ )) = e∈Epi ∃(b, A r (c ′ )).</formula><p>With help of the unselection ι in ∃(a, ι, c), it is at first glance trivial to exhibit a weakest liberal precondition with respect to U ns(y). However, to handle the addition and deletion steps, a construction becomes necessary that makes the affected subgraph explicit again. This information is crucial to obtain the weakest liberal precondition with respect to Add(r) and Del(l) and must not be forgotten at any nesting level in order to obtain the correct result. To that aim, we define a partial shift construction which makes sure that the type graph of the main body is never unselected in the µ-condition but is instead mapped in a consistent way as a subgraph of the type graph of each variable. The following serves to obtain the new type graphs containing the type of the main body:</p><p>Construction 1 (New type graphs for partial shift).</p><p>We assume that an arbitrary total order on all graph morphisms is fixed.</p><formula xml:id="formula_11">If c = b | µ[K]F is a µ-condition, then for a variable x i of K, X R,c (x i</formula><p>) is defined as the sequence of morphisms f obtained as below, in ascending order.</p><p>The morphisms f are obtained from P ′ by collecting all epimorphisms that compose to monomorphisms with the pushout morphisms in the diagram:</p><formula xml:id="formula_12">∅ P i R X P ′ j f Construction 2 (Partial shift).</formula><p>Given monomorphisms x : G ֒→ H and y : R ֒→ H,</p><formula xml:id="formula_13">P x,y (b | µ[K]F) := P x,y (b) | µ[K ′ ]F ′ ,</formula><p>where the new list of variables K ′ and their respective types P ′ are obtained by concatenating all X R,c (x i ) of the variables of K in order. where the new variables and equations are obtained by applying P f,y to the variables of the left hand sides with all possible morphisms f from R, as below, and accordingly to the right hand sides.</p><formula xml:id="formula_14">P x,y (x i ) = x y i if x i : G, where x y i : H is a new variable, H = cod(y). P x,y (∃(P a ֒→ C ′ ι ←֓ C, c ′ )</formula><p>) is constructed as follows: Let Epi be the set of all epimorphisms e with domain H ′ that compose to monomorphisms r = e • x ′ and b = e • h with the pushout morphisms. P x,y (∃(P ֒→ C ′ ←֓ C, c ′ ) = Epi ∃(H ֒→ E ←֓ J, P i,y ′ (c ′ )): for each member of the disjunction, form the pullback of r • ι and b • y, then pushout the obtained morphisms to (y ′ , i) as in the diagram:</p><formula xml:id="formula_15">P C ′ C H H ′ J R E B y h x x ′ ι e i y ′ ι ′ c ′</formula><p>Boolean combinations of conditions are transformed to the corresponding combinations of the transformed members.</p><p>Remark 7 (Ambiguous Variable Contexts). Note that in a µ-condition it is not necessarily true that in all contexts where x i is used, it appears with the same morphism R ֒→ P i (where R is the type of b). It is however possible to equivalently transform every µ-condition into a "normal form" that has that property. Applying P id R ,id R will by construction result in a µ-condition with unambiguous inclusions R ֒→ P i for all variables (namely the morphisms from the sequences X R,c ), and this property is also preserved by the constructions introduced later in this section. Unreachable variables created by X and P can be pruned to obtain an equivalent, but sometimes smaller µ-condition.</p><p>Equivalence of conditions with placeholders (unlike µ-conditions) is only defined for conditions using the same sets of variables, as equivalence in the sense of nested conditions for each valuation. We extend A to conditions with placeholders by defining A m (x) to be ∃(id cod(m) , m, x) if x : P .</p><p>One can show that P x,y is equivalent to A x . The reason for introducing P x,y is that it allows precise control over the types of the variables in the transformed condition, which should include the type of the main body. Intuitively, as this corresponds to the currently selected subgraph of a graph program, additions and deletions are applied to that subgraph and one must make sure that the changes apply to the whole µ-condition to obtain the correct result.</p><p>Lemma 1. The conditions P x,y (c) and A x (c) are equivalent.</p><p>We introduce the transformations δ ′ m (c), α ′ m (c) (based on auxiliary transformations δ m,y (c) and α m,y (c), repsectively), which are used in the computation of the weakest liberal precondition (with respect to addition and deletion, respectively <ref type="foot" target="#foot_3">4</ref> ), of a µ-condition that has already undergone partial shift: Definition 10 (Transformations δ ′ and α ′ ).</p><p>Let c : G be a condition with placeholders. If r : K ֒→ R and y : R ֒→ G (resp. l : K ֒→ L and y : K ֒→ G) are monomorphisms, then δ r,y (c) (α l,y (c)) is defined as follows: δ r,y (¬c) = ¬δ r,y (c) and δ r,y ( j∈J c j ) = j∈J δ r,y (c j ) (respectively: α l,y (¬c) = ¬α l,y (c) and α l,y ( j∈J c j ) = j∈J α l.y (c j )).</p><p>For c = ∃(a, ι, c ′ ), the following constructions are used:</p><formula xml:id="formula_16">P C ′ C R W X V K a ι y y ′ r h a ′ ι ′ r ′′ r ′ r ′′′ c ′ δ r,y ′′ (c ′ ) P C ′ C K W X V L a ι y y ′ l h a ′ ι ′ l ′ l ′′ l ′′′ c ′ δ r,y ′′ (c ′ )</formula><p>Case of δ m,y (c ′ ): If the pushout complement of r and a • y does not exist, then δ m,y (c) = f alse. Otherwise, obtain it as x ′ and r ′ and pullback (a, r ′ ) to (a ′ , r ′′ ) with source W ; this yields a morphism h from K to W to make the diagram commute and the special PO-PB lemma <ref type="bibr" target="#b2">[3]</ref> applicable. Pullback (ι, r ′ ) to (ι ′ , r ′′′ ), (x ′ = a ′ • h) and let δ m,y (c) = ∃(a ′ , ι ′ , δ m,y ′′ (c ′ )) (the pullback property yields existence and uniqueness of y ′′ between K and V to make it commute).</p><p>Case of α l,y (c): pushout (y, l) to (l ′ , h); pushout (l ′ , a) to (l ′′ , a ′ ); pullback (a ′ • h, l ′′ •ι) and pushout to (y ′′ , l ′′′ ) over the pullback (not drawn in the figure except for the morphism l ′′′′ ). The commuting morphism from the pushout object V to X fills in to yield ∃(a ′ , ι ′ , α l,y (c ′ )). The commuting morphism from L to V is y ′′ .</p><p>For variables, δ m,y (x i ) = x ′ i is a new variable of type K, likewise α m (x i ) has type L (see Rem. 7). Finally, δ ′ m (c) = δ m,id (P id,id (c)) and α ′ m (c) = α m,id (P id,id (c)).</p><p>In contrast to P, the transformations α ′ and δ ′ leave the number of variables unchanged. Only the types of the variables are modified. We recall that for any l : K ֒→ L, there is a condition ∆(l) that expresses the possibility of effecting Del(l), i.e. ∆(l) is satisfied exactly by the first components of tuples in Del(l) . We describe ∆(l) only informally: f |= ∆(l) states the non-existence of edges that are in im(f ) but incident to a node in im(f</p><formula xml:id="formula_17">) − im(f • l).</formula><p>Theorem 2 (Weakest Liberal Precondition for µ-conditions). For each rule ̺, there is a transformation Wlp ̺ that transforms µ-conditions to µ-conditions and assigns to each condition c such that m ′ |= c another condition Wlp ̺ (c)</p><p>with the property that m |= Wlp ̺ (c) whenever (m ′ , m, p) ∈ ̺ and Wlp ̺ (c) is the least condition with respect to implication having this property.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.3">A Weakest Liberal Precondition Example</head><p>In this subsection, we construct a weakest liberal precondition of a µ-condition step by step. Figure <ref type="figure" target="#fig_2">2</ref> shows a single-rule graph program which matches a node with exactly one incoming and one outgoing edge and replaces this by a single edge. The effect of the rule is to contract paths, and it can be applied as long as no other edges are attached to the middle node.</p><formula xml:id="formula_18">Sel ∅ ֒→ ; Del 1 3 2 ←֓<label>1 2</label></formula><p>; Add ֒→ ; U ns ←֓ ∅ Fig. <ref type="figure" target="#fig_2">2</ref>. A path-contracting rule ̺contract = Selc; Delc; Addc; U nsc.</p><p>Figure <ref type="figure">3</ref> shows a µ-condition whose weakest liberal precondition we wish to compute. It is a typical example of a µ-condition, which evaluates to true on those graphs that contain some node which has a path to every other node.</p><p>∃(</p><p>, x 1 )) where x 1 [</p><formula xml:id="formula_20">1 2 ] = ∃(<label>1 2</label></formula><p>) ∨ ∃(</p><p>])</p><p>Fig. <ref type="figure">3</ref>. A µ-condition c3 = (b, l) expressing the existence of a node from which there exists a path to every other node.</p><p>∃(</p><formula xml:id="formula_22">1 2 ←֓ ∅, ∀(<label>1 2</label></formula><p>, x 1 )) where x 1 [</p><formula xml:id="formula_23">1 2 ] = ∃(<label>1 2</label></formula><p>) ∨ ∃(</p><formula xml:id="formula_24">1 2 3 , x 1 [ 1<label>(3) 2(2)</label></formula><p>])</p><p>Fig. <ref type="figure">4</ref>. Wlp(U nsc, c3). Note that the nodes under the universal quantifier are not the same as those of the outer existential quantifier, as these have been unselected: the type of the subcondition ∀(...) is ∅.</p><p>In Figures <ref type="figure" target="#fig_4">5 and 6</ref>, a partial shift has been applied to the condition of Figure <ref type="figure">4</ref> (Wlp(U ns c , c 3 )), and the modifications the condition undergoes in the computation of the weakest precondition with respect to Add c and Del c are highlighted in various colours (see Figure <ref type="figure" target="#fig_5">7</ref> for a legend). Construction 1 has yielded a new list of variables<ref type="foot" target="#foot_4">5</ref> , x 1 , ..., x 7 , the corresponding equations are shown in 6. Note that the representation is somewhat further abbreviated: type graphs of variables are suppressed in the notation in subconditions ∃(a, ι, x i ), when the mapping ι from the type graph to the target of a is the identity. No other simplifications were applied. We have highlighted in yellow and red the type of the main body of Wlp(U ns c , c 3 ) throughout Figure <ref type="figure" target="#fig_3">5</ref>; edges that are highlighted in red are deleted to compute Wlp(Add c , Wlp(U ns c , c 3 )) as per Def. 10; the edges and nodes highlighted in red are not present initially, but added to compute Wlp(Del c , Wlp(Add c , Wlp(U ns c , c 3 ))) as per Def. 10, which is obtained by conjoining ∆(l) to the main body (which we have not represented, as it is easy to compute and would only encumber the illustration). In the end, a universal</p><formula xml:id="formula_25">∃ 1 2 5 , ∀ 1 2 3 4 5 , x 7 ∧ ∀ 1 2 3 5 , x 6 ∧ ∀ 1 2 3 5 , x 4 ∧ ∀ 1 2 3 5 , x 5 ∧ ∀ 1 2 5 3 , x 3 ∧ ∀ 1 2 5 , x 1 ∧ ∀ 1 2 5</formula><p>, x 2 Fig. <ref type="figure" target="#fig_3">5</ref>. Construction of Wlp(Delc; Addc; U nsc, ̺c): main body (variables: see below).</p><p>x</p><formula xml:id="formula_26">1 1 2 5 = ∃ 1 2 5 ∨ ∃ 1 2 5 ∨ ∃ 1 2 5 3 , x 6 1(1) 2(2) 3(3) 5(5) x 2 1 2 5 = ∃ 1 2 5 ∨ ∃ 1 2 5 3 , x 5 1(1) 2(2) 5<label>(5) 3(3)</label></formula><p>x</p><formula xml:id="formula_27">3 1 2 3 5 = ∃ 1 2 3 5 ∨ ∃ 1 2 3 4 5 , x<label>7 1(1) 2(2) 5(5) 2(3) 3(4)</label></formula><p>∨ ∃</p><formula xml:id="formula_28">1 2 5 3(3) , x 4 1(1) 2(2) 5<label>(5) 3(3)</label></formula><p>∨ ∃</p><formula xml:id="formula_29">1 2 5 3(3) , x 4 1(1) 2(2) 5<label>(5) 3(3)</label></formula><p>x 4 1 2</p><formula xml:id="formula_30">5 3 = ∃ 1 2 5 3 ∨ ∃ 1 2 3 4 5 , x<label>7 1(1) 2(2) 5(5) 3(4) 2(3)</label></formula><p>∨ ∃</p><formula xml:id="formula_31">1 2 5 3(3) , x 3 1(1) 2(2) 5<label>(5) 3(3)</label></formula><p>x 5</p><formula xml:id="formula_32">1 2 3 5 = ∃ 1 2 3 5 ∨ ∃ 1 2 5 3 4 , x 5 1(1) 2(2) 5<label>(5) 3(4)</label></formula><p>∨ ∃</p><formula xml:id="formula_33">1 2 5 3 , x 2 1(1) 2(2) 5<label>(5)</label></formula><p>x 6 1 2 node/edge decoration meaning items (nodes and edges) selected for W lp(U ns(y), c) items to be deleted to obtain W lp(Add(r), c) items to be added to obtain W lp(Del(l), c) quantification with morphism ∅ ֒→ L completes the weakest precondition with respect to the rule, as in the construction for nested conditions <ref type="bibr" target="#b11">[12]</ref>.</p><p>The outer existential quantifier in Fig. <ref type="figure" target="#fig_3">5</ref>, where the unselection morphism is not shown in the abbreviated representation, is really as in Fig. <ref type="figure" target="#fig_6">8</ref>:</p><formula xml:id="formula_34">∃ 1 2 5 ←֓ 1 2 5</formula><p>, ... When following the construction through the nesting levels, please keep in mind that one may sometimes choose among isomorphic pushout objects and the numbers of new nodes are arbitrary, but the nodes 1, 2 and (as created by the transformation α ′ ) 5 are never "unselected" and therefore present in every type graph occurring in the weakest preconditions, similarly for the edges (not numbered because their mapping is unambiguous in the example).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4">Correctness Relative to µ-conditions</head><p>In the previous section, we have shown how the weakest liberal precondition construction for nested conditions carries over to µ-conditions. The next task is to develop methods for deducing correctness relative to µ-conditions and extend the proof calculus, for which we offer a partial solution in this section.</p><p>The soundness of Pennemann's calculus K has been established in the publications introducing them, and recently a tableaux based completeness proof of K was published <ref type="bibr" target="#b10">[11]</ref>. The proof rules of K are easily seen to be sound for µ-conditions as well, however the recursive definitions requires an extension.</p><p>For our calculus K µ , we adopt the resolution-style rules of K and add an induction principle to deal with certain situations involving fixed points. This proved to be sufficient to handle all the situations encountered in the examples.</p><p>We employ a sequent notation: the inference rules manipulate objects Ctx : Γ ⊢ ∆, with the intended meaning that the disjunction of ∆ can be deduced from the conjunction of Γ in the context Ctx. The context Ctx is a pair of a left hand side of a sequent and an operator on µ-conditions. Γ and ∆ are sets of expressions, which differ from conditions in that identifiers can be used for the main bodies of µ-conditions and both these and variables can be annotated with their recursion depth, an implicitly universally quantified natural number. x (n) i then stands for F (n) i (false) and an auxiliary rule permits to unroll it to the i-th component of F applied to x (n−1) . The induction rule announced above is (where H i,j for each i ∈ {1, ..., I }, j ∈ {1, ..., J } is any condition with placeholders):</p><formula xml:id="formula_35">∀i,j x (m) i ∧ ¬y (n) j ⊢ H i,j (x (m−1) 1 ∧¬y (n) 1 , ..., x (m−1) I ∧¬y (n) J ) ⊢ ∀i, j H i,j (false) = false x i ∧ ¬y i ⊢ false (IndMuEmpty) Theorem 3. K µ := K ∪ {IndMuEmpty} is sound.</formula><p>There are a number of details hidden in the discussion above: Boolean operations must be lifted to µ-conditions, which entails variable renaming and union of the systems of equations; rules for exploiting logical equivalences between different Boolean combinations are necessary to equivalently transform conditions into a form suitable for the application of the rules of K; in <ref type="bibr" target="#b11">[12]</ref>, each Boolean combination appearing inside a nested condition is put into conjunctive normal form prior to the application of rules. Proof trees in the sequent-style calculus K µ start with instances of the axiom (A ⊢ A is derivable by a rule with no antecedents), and make use of all the classical sequent rules <ref type="bibr" target="#b4">[5]</ref> not involving quantifiers.</p><p>Our handling of nested contexts relies on substitutions: a context is a pair of a left hand side of a sequent, and a graph condition with a special variable. The rule for manipulating the context is usable both ways:</p><formula xml:id="formula_36">⊢ Ctx(x) Ctx ⊢ x (Ctx)</formula></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5">Related Work</head><p>Recently, Poskitt and Plump <ref type="bibr" target="#b15">[16]</ref> have presented a weakest precondition calculus for a different extension of nested conditions (monadic second-order conditions) and demonstrated how to use it in a Hoare logic. The method is arguably closer to reasoning directly in a logic and less graph condition like, but seems successful at solving some of the same problems in a different way. HR * conditions <ref type="bibr" target="#b16">[17]</ref> are another approach towards the same goal; they have already been mentioned in the main text and recently there has been an effort at extending the weakest precondition calculus to a subclass including path expressions. Verification of graph transformation system has also been performed within general-purpose theorem proving environments by Strecker et al. <ref type="bibr" target="#b18">[19,</ref><ref type="bibr" target="#b12">13]</ref>, with positive path conditions. Verification of graph transformation systems via model checking of abstractions, as opposed to the prover-based approach pursued here, can be found in A summary overview of graph conditions for non-local properties is attempted below (a proof calculus is presented in <ref type="bibr" target="#b15">[16]</ref> but completeness of a proof calculus has only recently been obtained by Lambers and Orejas <ref type="bibr" target="#b10">[11]</ref> for nested conditions and remains to be researched for the other approaches). Note that while HR * conditions are known to properly contain the monadic second-order definable properties <ref type="bibr" target="#b16">[17]</ref>  </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="6">Conclusion and Outlook</head><p>We have introduced µ-conditions and achieved several results, mainly a weakest liberal precondition transformation (Theorem 2), soundness of a proof calculus (Theorem 3), and discussed correctness relative to µ-conditions, which appears to be a fruitful ground for further investigations.</p><p>In analogy to the equivalence between first-order predicate graph logic and nested graph conditions, we are investigating whether µ-conditions have the same expressivity as fixed point extensions to classical first-order logic for finite graphs.</p><p>Also, the expressivity of HR * conditions <ref type="bibr" target="#b16">[17]</ref> or even MSO likely surpasses that of µ-conditions, but the precise relationship remains to be examined. As the examples show, the weakest precondition calculus (which is still a research question for HR * conditions <ref type="bibr" target="#b16">[17]</ref> but readily available by logical means in the MSOconditions formalism <ref type="bibr" target="#b15">[16]</ref>) produces quite unwieldy expressions due to partial shift. The blowup is exponential in the size of the interface graphs used in the rule, and seems unavoidable because of the need to use a fixed set of type graphs for the finitely many variables (and a blowup is also inherited from the weakest precondition calculus of <ref type="bibr" target="#b11">[12]</ref>). Rule IndMuEmpty also contributes because it involves a Cartesian product between variable sets. We have devised heuristics to simplify the expressions, but even if many of the cases can be resolved automatically, this issue still raises concerns as to the practical applicability.</p><p>Future work will also include tool support with special attention to semi-automated reasoning, based on the reasoning engine Enforce implemented in <ref type="bibr" target="#b11">[12]</ref>.</p><p>To extend the weakest liberal precondition construction to programs with iteration, one would have to provide, or have the prover attempt to determine, an invariant, as in the original work of Pennemann; to obtain termination, one could proceed as in <ref type="bibr" target="#b13">[14]</ref> and prove a termination variant. We plan a further generalisation to correctness under adverse conditions, i.e. systems subject to environmental interference, also modelled as a graph program. Furthermore, it appears that µ-conditions might readily generalise to temporal properties, even with the option to nest temporal operators inside quantifiers, which would allow properties such as the preservation of a specific node to be expressed (but require further proof rules). This could be achieved by introducing a temporal next operator parameterised on atomic subprograms (the basic steps of Def. 4) and since in the semantics of these program steps the relationship between the interfaces is deterministic, this would again confer an unambiguous type to such an expression and make it suitable for use as a subcondition. Whether this offers any new insights remains to be seen. Eventually, we would also like to deal with algebraic operations on attributes and extend our work to a practical verification method that separates the graph specific concerns from other aspects and allows proofs of properties that depend on both, for example involving data structures whose elements should remain ordered. Finally, the limitations imposed by undecidability prompt the search for of restricted decidable classes.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>2 Fig. 1 .</head><label>21</label><figDesc>Fig.1. A nested graph condition (stating the existence of two nodes linked by an edge, where the second node does not have a self-loop) and a graph satisfying it.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Remark 2 .</head><label>2</label><figDesc>The definitions generalise the state transitions in plain graph transformation, a rule ̺ = (L l ←֓ K r ֒→ R) being precisely simulated by the program Sel(∅ ֒→ L); Del(l); Add(r); U ns(∅ ֒→ R).</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head>Remark 5 .</head><label>5</label><figDesc>The least fixed point of F is equivalent to n∈N F n (false).Definition 8 (Satisfaction). The µ-condition b | x = F (x) with x : P is satisfied by a morphism f iff f |= b[x/µ[P]F].Remark 6 (No Infinite Nesting). By the characterisation of the least fixed point as an infinite disjunction, every µ-condition is equivalent to an infinite nested condition. Infinitely deep nesting does not arise, because the characterisation in Remark 5 yields a countable disjunction of finitely deeply nested conditions.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_4"><head>Fig. 6 .</head><label>6</label><figDesc>Fig. 6. Construction of Wlp(Delc; Addc; U nsc, ̺c): equations for the variables.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_5"><head>Fig. 7 .</head><label>7</label><figDesc>Fig. 7. Legend for Figure 5.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_6"><head>Fig. 8 .</head><label>8</label><figDesc>Fig.8. Outer nesting level of the conditions in Fig.5</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_1"><head></head><label></label><figDesc>and nested conditions are a special case of each of the other three, we have not yet been able to separate µ-conditions from MSO or HR * :</figDesc><table><row><cell>reference</cell><cell cols="2">[12] (here)</cell><cell>[17]</cell><cell>[16]</cell></row><row><cell>conditions</cell><cell cols="2">Nested µ-</cell><cell>HR  *</cell><cell>MSO-</cell></row><row><cell>wlp</cell><cell>yes</cell><cell cols="3">yes incomplete 6 yes</cell></row><row><cell cols="2">complete proof calculus yes</cell><cell></cell><cell>future work</cell></row><row><cell>theorem prover</cell><cell>yes</cell><cell></cell><cell>future work</cell></row></table></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="1" xml:id="foot_0">when we mention "type graphs" in the text, we just mean graphs used as types.</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="2" xml:id="foot_1">We will use the term "unselection" anytime a morphism is used in the inverse direction: in Def. 1, the morphism ι is used to base subconditions on a smaller subgraph, in effect reducing the selected subgraph; it will also appear in our definition of graph programs as the name of an operation that reduces the current selection, i.e. the subgraph the program is currently working on -similarly for "selection".</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="3" xml:id="foot_2">Note that in our approach variables stand only for subconditions, not for attributes or parts of graphs. Wherever confusion with similarly named concepts from the literature could arise, we will use the word "placeholder" meaning "variable".</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="4" xml:id="foot_3">The letters were chosen so as to indicate the effect of the transformation: to compute the weakest precondition with respect to addition, δ ′ needs to delete portions of the morphisms in the condition, and vice versa.</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="5" xml:id="foot_4">Although the original µ-condition needed only one variable, the partial shift yields a µ-condition with multiple variables in general.</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="6" xml:id="foot_5"> Radke, personal communication.   </note>
		</body>
		<back>

			<div type="acknowledgement">
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Acknowledgements</head><p>We thank Annegret Habel, many other members of SCARE and the anonymous reviewers for constructive criticism of the approach and the paper.</p></div>
			</div>


			<div type="funding">
<div xmlns="http://www.tei-c.org/ns/1.0"><p>⋆ This work is supported by the German Research Foundation (DFG), grant GRK 1765 (Research Training Group -System Correctness under Adverse Conditions)</p></div>
			</div>

			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">A logic for analyzing abstractions of graph transformation systems</title>
		<author>
			<persName><forename type="first">P</forename><surname>Baldan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>König</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>König</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Static Analysis</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2003">2003</date>
			<biblScope unit="page" from="255" to="272" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<monogr>
		<title level="m" type="main">A discipline of programming</title>
		<author>
			<persName><forename type="first">E</forename><forename type="middle">W</forename><surname>Dijkstra</surname></persName>
		</author>
		<imprint>
			<date type="published" when="1976">1976</date>
			<publisher>Prentice Hall</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">Fundamentals of Algebraic Graph Transformation</title>
		<author>
			<persName><forename type="first">H</forename><surname>Ehrig</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Ehrig</surname></persName>
		</author>
		<author>
			<persName><forename type="first">U</forename><surname>Prange</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Taentzer</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="s">Monographs in Theoretical Computer Science</title>
		<imprint>
			<date type="published" when="2006">2006</date>
			<publisher>Springer</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">A fully abstract model for graph-interpreted temporal logic</title>
		<author>
			<persName><forename type="first">F</forename><surname>Gadducci</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Heckel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Koch</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">TAGT&apos;98. LNCS</title>
				<imprint>
			<date type="published" when="1998">1998</date>
			<biblScope unit="volume">1764</biblScope>
			<biblScope unit="page" from="310" to="322" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Untersuchungen über das logische Schließen</title>
		<author>
			<persName><forename type="first">G</forename><surname>Gentzen</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">I. Mathematische Zeitschrift</title>
		<imprint>
			<biblScope unit="volume">39</biblScope>
			<biblScope unit="issue">1</biblScope>
			<biblScope unit="page" from="176" to="210" />
			<date type="published" when="1935">1935</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">Correctness of high-level transformation systems relative to nested conditions</title>
		<author>
			<persName><forename type="first">A</forename><surname>Habel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><forename type="middle">H</forename><surname>Pennemann</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Math. Struct. in Comp. Sci</title>
		<imprint>
			<biblScope unit="volume">19</biblScope>
			<biblScope unit="issue">2</biblScope>
			<biblScope unit="page" from="245" to="296" />
			<date type="published" when="2009">2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Weakest preconditions for high-level programs</title>
		<author>
			<persName><forename type="first">A</forename><surname>Habel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><forename type="middle">H</forename><surname>Pennemann</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Rensink</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">ICGT 2006. LNCS</title>
				<imprint>
			<date type="published" when="2006">2006</date>
			<biblScope unit="volume">4178</biblScope>
			<biblScope unit="page" from="445" to="460" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">An axiomatic basis for computer programming</title>
		<author>
			<persName><forename type="first">C</forename><forename type="middle">A R</forename><surname>Hoare</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Communications of the ACM</title>
		<imprint>
			<biblScope unit="volume">26</biblScope>
			<biblScope unit="issue">1</biblScope>
			<biblScope unit="page" from="53" to="56" />
			<date type="published" when="1983">1983</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<monogr>
		<title level="m" type="main">Pure and Applied Fixed-Point Logics</title>
		<author>
			<persName><forename type="first">S</forename><surname>Kreutzer</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2002">2002</date>
		</imprint>
		<respStmt>
			<orgName>RWTH Aachen</orgName>
		</respStmt>
	</monogr>
	<note type="report_type">Dissertation thesis</note>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Counterexample-guided abstraction refinement for the analysis of graph transformation systems</title>
		<author>
			<persName><forename type="first">B</forename><surname>König</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><surname>Kozioura</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">LNCS</title>
		<imprint>
			<biblScope unit="volume">3920</biblScope>
			<biblScope unit="page" from="197" to="211" />
			<date type="published" when="2006">2006</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">Tableau-based reasoning for graph properties</title>
		<author>
			<persName><forename type="first">L</forename><surname>Lambers</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Orejas</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Graph Transformation</title>
				<imprint>
			<date type="published" when="2014">2014</date>
			<biblScope unit="volume">8571</biblScope>
			<biblScope unit="page" from="17" to="32" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<monogr>
		<title level="m" type="main">Development of Correct Graph Transformation Systems</title>
		<author>
			<persName><forename type="first">K</forename><forename type="middle">H</forename><surname>Pennemann</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2009">2009</date>
		</imprint>
		<respStmt>
			<orgName>Universität Oldenburg</orgName>
		</respStmt>
	</monogr>
	<note type="report_type">Ph.D. thesis</note>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">Rule-level verification of graph transformations for invariants based on edges&apos; transitive closure</title>
		<author>
			<persName><forename type="first">C</forename><surname>Percebois</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Strecker</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><forename type="middle">N</forename><surname>Tran</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">SEFM 2013. LNCS</title>
				<imprint>
			<date type="published" when="2013">2013</date>
			<biblScope unit="volume">8137</biblScope>
			<biblScope unit="page" from="106" to="121" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<monogr>
		<title level="m" type="main">Verification of Graph Programs</title>
		<author>
			<persName><forename type="first">C</forename><forename type="middle">M</forename><surname>Poskitt</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2013">2013</date>
		</imprint>
		<respStmt>
			<orgName>University of York</orgName>
		</respStmt>
	</monogr>
	<note type="report_type">Ph.D. thesis</note>
</biblStruct>

<biblStruct xml:id="b14">
	<analytic>
		<title level="a" type="main">Verifying total correctness of graph programs</title>
		<author>
			<persName><forename type="first">C</forename><forename type="middle">M</forename><surname>Poskitt</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Plump</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Electronic Communications of the EASST</title>
		<imprint>
			<biblScope unit="volume">61</biblScope>
			<date type="published" when="2013">2013</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<analytic>
		<title level="a" type="main">Verifying monadic second-order properties of graph programs</title>
		<author>
			<persName><forename type="first">C</forename><forename type="middle">M</forename><surname>Poskitt</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Plump</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Graph Transformation</title>
				<imprint>
			<date type="published" when="2014">2014</date>
			<biblScope unit="volume">8571</biblScope>
			<biblScope unit="page" from="33" to="48" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<analytic>
		<title level="a" type="main">HR* graph conditions between counting monadic second-order and second-order graph formulas</title>
		<author>
			<persName><forename type="first">H</forename><surname>Radke</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Electronic Communications of the EASST</title>
		<imprint>
			<biblScope unit="volume">61</biblScope>
			<date type="published" when="2013">2013</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b17">
	<analytic>
		<title level="a" type="main">Abstract graph transformation</title>
		<author>
			<persName><forename type="first">A</forename><surname>Rensink</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Distefano</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">ENTCS</title>
		<imprint>
			<biblScope unit="volume">157</biblScope>
			<biblScope unit="issue">1</biblScope>
			<biblScope unit="page" from="39" to="59" />
			<date type="published" when="2006">2006</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b18">
	<analytic>
		<title level="a" type="main">Modeling and verifying graph transformations in proof assistants</title>
		<author>
			<persName><forename type="first">M</forename><surname>Strecker</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">ENTCS</title>
		<imprint>
			<biblScope unit="volume">203</biblScope>
			<biblScope unit="issue">1</biblScope>
			<biblScope unit="page" from="135" to="148" />
			<date type="published" when="2008">2008</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b19">
	<analytic>
		<title level="a" type="main">A lattice-theoretical fixpoint theorem and its applications</title>
		<author>
			<persName><forename type="first">A</forename><surname>Tarski</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Pacific J. Math</title>
		<imprint>
			<biblScope unit="volume">5</biblScope>
			<biblScope unit="issue">2</biblScope>
			<biblScope unit="page" from="285" to="309" />
			<date type="published" when="1955">1955</date>
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
