<?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">Generalization Strategies for the Verification of Infinite State Systems</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Fabio</forename><surname>Fioravanti</surname></persName>
							<email>fioravanti@sci.unich.it</email>
							<affiliation key="aff0">
								<orgName type="department">Dipartimento di Scienze</orgName>
								<orgName type="institution">University &apos;G. D&apos;Annunzio&apos;</orgName>
								<address>
									<addrLine>Viale Pindaro 42</addrLine>
									<postCode>I-65127</postCode>
									<settlement>Pescara</settlement>
									<country key="IT">Italy</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Alberto</forename><surname>Pettorossi</surname></persName>
							<email>pettorossi@disp.uniroma2.it</email>
							<affiliation key="aff1">
								<orgName type="department">DISP</orgName>
								<orgName type="institution">University of Rome Tor Vergata</orgName>
								<address>
									<addrLine>Via del Politecnico 1</addrLine>
									<postCode>I-00133</postCode>
									<settlement>Rome</settlement>
									<country key="IT">Italy</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Maurizio</forename><surname>Proietti</surname></persName>
							<email>maurizio.proietti@iasi.cnr.it</email>
							<affiliation key="aff2">
								<orgName type="institution">IASI-CNR</orgName>
								<address>
									<addrLine>Viale Manzoni 30</addrLine>
									<postCode>I-00185</postCode>
									<settlement>Rome</settlement>
									<country key="IT">Italy</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Valerio</forename><surname>Senni</surname></persName>
							<email>senni@disp.uniroma2.it</email>
							<affiliation key="aff1">
								<orgName type="department">DISP</orgName>
								<orgName type="institution">University of Rome Tor Vergata</orgName>
								<address>
									<addrLine>Via del Politecnico 1</addrLine>
									<postCode>I-00133</postCode>
									<settlement>Rome</settlement>
									<country key="IT">Italy</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Generalization Strategies for the Verification of Infinite State Systems</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">76159C2AB90C752B4EFF392F22A0706A</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-24T17:31+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 present a comparative evaluation of some generalization strategies which are applied by a method for the automated verification of infinite state reactive systems. The verification method is based on (1) the specialization of the constraint logic program which encodes the system with respect to the initial state and the property to be verified, and (2) a bottom-up evaluation of the specialized program. The generalization strategies are used during the program specialization phase for controlling when and how to perform generalization. Selecting a good generalization strategy is not a trivial task because it must guarantee the termination of the specialization phase itself, and it should be a good balance between precision and performance. Indeed, a coarse generalization strategy may prevent one to prove the properties of interest, while an unnecessarily precise strategy may lead to high verification times. We perform an experimental evaluation of various generalization strategies on several infinite state systems and properties to be verified.</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>One of the most challenging problems in the verification of reactive systems, is the extension of the model checking technique (see <ref type="bibr" target="#b8">[9]</ref> for a thorough overview) to infinite state systems. In model checking the evolution over time of an infinite state system is modelled as a binary transition relation over an infinite set of states (such as n-tuples of integers or rationals) and the properties of that evolution are specified by means of propositional temporal formulas. In particular, in this paper we consider the Computation Tree Logic (CTL, for short), which is a branching time propositional temporal logic by which one can specify, among others, the so-called safety and liveness properties <ref type="bibr" target="#b8">[9]</ref>.</p><p>Unfortunately, when considering infinite state systems, the verification of CTL formulas is an undecidable problem, in general. In order to cope with this limitation, various decidable subclasses of systems and formulas have been identified (see, for instance, <ref type="bibr" target="#b0">[1,</ref><ref type="bibr" target="#b13">14]</ref>). Other approaches enhance finite state model checking by using more general deductive techniques (see, for instance, <ref type="bibr" target="#b29">[30,</ref><ref type="bibr" target="#b32">33]</ref>) or using abstractions, that is, mappings by which one can reduce an infinite state system to a finite state system, preserving the property of interest (see, for instance, <ref type="bibr" target="#b1">[2,</ref><ref type="bibr" target="#b34">35]</ref>).</p><p>Also logic programming and constraint logic programming have been proposed as frameworks for specifying and verifying properties of reactive systems. Indeed, the fixpoint semantics of logic programming languages allows us to easily represent the fixpoint semantics of various temporal logics <ref type="bibr" target="#b12">[13,</ref><ref type="bibr" target="#b26">27,</ref><ref type="bibr" target="#b30">31]</ref>. Moreover, constraints over the integers or the rationals can be used for providing finite representations of infinite sets of states <ref type="bibr" target="#b12">[13,</ref><ref type="bibr" target="#b16">17]</ref>.</p><p>However, for programs which specify infinite state systems, the proof procedures normally used in constraint logic programming (CLP), such as the extension to CLP of SLDNF resolution or tabled resolution <ref type="bibr" target="#b7">[8]</ref>, very often diverge when trying to check some given temporal properties. This is due to the limited ability of these proof procedures to cope with infinitely failed derivations. For this reason, instead of using direct program evaluation, many logic programmingbased verification methods make use of reasoning techniques such as: (i) static analysis <ref type="bibr" target="#b4">[5,</ref><ref type="bibr" target="#b12">13]</ref> or (ii) program transformation <ref type="bibr" target="#b14">[15,</ref><ref type="bibr" target="#b22">23,</ref><ref type="bibr" target="#b24">25,</ref><ref type="bibr" target="#b27">28,</ref><ref type="bibr" target="#b31">32]</ref>.</p><p>In this paper we further develop the verification method presented in <ref type="bibr" target="#b14">[15]</ref> and we assess its practical value. That method is applicable to specifications of CTL properties of infinite state systems encoded as constraint logic programs and it makes use of program specialization.</p><p>The specific contributions of this paper are the following. First, we have reformulated the specialization-based verification method of <ref type="bibr" target="#b14">[15]</ref> as a two-phase method. Phase (1): the CLP specification is specialized w.r.t. the initial state of the system and the temporal property to be verified, and Phase (2): a bottom-up evaluation of the specialized program is performed. By doing so we are able to better evaluate the role of program specialization in the verification technique.</p><p>Then, we have defined various generalization strategies which can be used during Phase (1) of our verification method, for controlling when and how to perform generalization. Selecting a good generalization strategy is not a trivial task: it must guarantee the termination of the specialization phase itself, by introducing a finite number of specialization sub-problems, and it should provide a good balance between precision and performance. Indeed, the use of a too coarse generalization strategy may prevent one to prove the properties of interest, while an unnecessarily precise strategy may lead to verification times which are too high. The generalization strategies we consider in this paper have been specifically designed for CLP programs using the constraint domain of linear inequations over rationals.</p><p>We have implemented these strategies on the MAP transformation system <ref type="bibr" target="#b25">[26]</ref>, and we have applied them to several infinite state systems and properties taken from the literature. We have performed a comparative evaluation of generalization strategies in terms of efficiency and power, based on the analysis of the experimental results.</p><p>Finally, we have compared our MAP implementation with various constraintbased model checkers for infinite state systems and, in particular, with ALV <ref type="bibr" target="#b6">[7]</ref>, DMC <ref type="bibr" target="#b12">[13]</ref>, and HyTech <ref type="bibr" target="#b18">[19]</ref>.</p><p>The paper is organized as follows. In Section 2 we recall how CTL properties of infinite state systems can be encoded by using locally stratified CLP programs. In Section 3 we present our two-phase method for verification. In Section 4 we describe various strategies that can be applied during the specialization phase. These strategies differ for the generalization techniques used for ensuring the termination of the program specialization phase. In Section 5 we report on some experiments we have performed by using a prototype implementation of the MAP transformation system. Finally, we compare the results we have obtained using the MAP system with the results we have obtained using other verification systems.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2">Specifying CTL Properties by CLP Programs</head><p>We will model an infinite state system as a Kripke structure and we will represent a property to be verified as a formula of the Computation Tree Logic (CTL, for short). The fact that a CTL formula ϕ holds in a state s of a Kripke structure K will be denoted by K,s |= ϕ. (The reader who is not familiar with these notions may refer to the Appendix or to <ref type="bibr" target="#b8">[9]</ref>.) A Kripke structure can be encoded as a constraint logic program as indicated in the following four points <ref type="bibr" target="#b14">[15,</ref><ref type="bibr" target="#b24">25,</ref><ref type="bibr" target="#b26">27]</ref>. <ref type="bibr" target="#b0">(1)</ref> The set S of states is given as a set of n-tuples of the form t 1 , . . . , t n , where for i = 1, . . . , n, the term t i is either a rational number or an element of a finite domain. For reasons of simplicity, when denoting a state we will feel free to use a single variable X, instead of an n-tuple of variables of the form X 1 , . . . , X n .</p><p>(2) The set I of initial states is given as a set of clauses of the form: initial (X) ← c(X), where c(X) is a constraint. (3) The transition relation R is given as a set of clauses of the form:</p><p>t(X, Y ) ← c(X, Y ) where c(X, Y ) is a constraint. Y is called a successor state of X. We also define a predicate ts such that, for every state X, ts(X, Ys) holds iff Ys is a list of all the successor states of X, that is, for every state X, the state Y belongs to the list Ys iff t(X, Y ) holds. We refer to <ref type="bibr" target="#b15">[16]</ref> for conditions that guarantee that Ys is a finite list and for an algorithm to construct the clauses defining ts from the clauses defining t. (4) The elementary properties which are associated with each state X by the labeling function L, are given by a set of clauses of the form: elem(X, e) ← c(X) where e is a constant, that is, the name of an elementary property, and c(X) is a constraint.</p><p>Given a Kripke structure K encoded by the clauses defining the predicates initial , t, ts, and elem, the satisfaction relation |= can be encoded by a predicate sat defined by the following clauses <ref type="bibr" target="#b14">[15,</ref><ref type="bibr" target="#b24">25,</ref><ref type="bibr" target="#b26">27]</ref></p><formula xml:id="formula_0">: 1. sat(X, F ) ← elem(X, F ) 2. sat(X, not(F )) ← ¬sat(X, F ) 3. sat(X, and (F 1 , F 2 )) ← sat(X, F 1 ), sat(X, F 2 ) 4. sat(X, ex (F )) ← t(X, Y ), sat(Y, F ) 5. sat(X, eu(F 1 , F 2 )) ← sat(X, F 2 ) 6. sat(X, eu(F 1 , F 2 )) ← sat(X, F 1 ), t(X, Y ), sat(Y, eu(F 1 , F 2 )) 7.</formula><p>sat(X, af (F )) ← sat(X, F ) 8. sat(X, af (F )) ← ts(X, Ys), sat all (Ys, af (F )) 9. sat all ([ ], F ) ← 10. sat all ([X|Xs], F ) ← sat(X, F ), sat all (Xs, F ) Let P K denote the constraint logic program consisting of clauses 1-10 together with the clauses defining the predicates initial , t, ts, and elem. Now we will present a method for proving that a given CTL formula ϕ holds. We start by defining a new predicate prop as follows:</p><p>prop ≡ def ∀X(initial (X) → sat(X, ϕ)) This definition can be encoded by the following two clauses:</p><formula xml:id="formula_1">γ 1 : prop ← ¬negprop γ 2 : negprop ← initial (X), sat(X, not(ϕ))</formula><p>The correctness of this encoding is stated by the following Theorem 1 and it is a consequence of the fact that program P K ∪ {γ 1 , γ 2 } is locally stratified and, hence, it has a unique perfect model M (P K ∪ {γ 1 , γ 2 }) <ref type="bibr" target="#b3">[4]</ref>. The proof proceeds by structural induction on the CTL formula ϕ and is omitted for lack of space (see <ref type="bibr" target="#b15">[16]</ref> for details).</p><p>Theorem 1 (Correctness of Encoding). Let K be a Kripke structure, let I be the set of initial states of K, and let ϕ be a CTL formula. Then, (for all states s ∈ I, K, s |= ϕ) iff prop ∈ M (P K ∪ {γ 1 , γ 2 }).</p><p>Example 1. Let us consider the reactive system depicted in Figure <ref type="figure" target="#fig_0">1</ref>, where a term of the form s(X 1 , X 2 ) denotes the pair X 1 , X 2 of rationals. The Kripke structure K which models that system, is defined as follows. The initial states are given by the clause:</p><formula xml:id="formula_2">&amp;% '$ ' &amp; W X1 ≥ 1 X2 := X2 −1 s(X1,X2) $ % X1 ≤ 2 X2 := X2 +1</formula><formula xml:id="formula_3">11. initial (s(X 1 , X 2 )) ← X 1 ≤ 0, X 2 = 0 The transition relation R is given by the clauses: 12. t(s(X 1 , X 2 ), s(Y 1 , Y 2 )) ← X 1 ≥ 1, Y 1 = X 1 , Y 2 = X 2 −1 13. t(s(X 1 , X 2 ), s(Y 1 , Y 2 )) ← X 1 ≤ 2, Y 1 = X 1 , Y 2 = X 2 +1</formula><p>The elementary property negative is given by the clause:</p><p>14. elem(s(X 1 , X 2 ), negative) ← X 2 &lt; 0 Let P K denote the program consisting of clauses 1-14. We omit the clauses defining the predicate ts, which are not needed in this example.</p><p>Suppose that we want to verify the following property: in every initial state s(X 1 , X 2 ), where X 1 ≤ 0 and X 2 = 0, the CTL formula not(eu(true, negative)) holds, that is, from any initial state it is impossible to reach a state s(X 1 , X 2 ) where X 2 &lt; 0. By using the fact that not(not(ϕ)) is equivalent to ϕ, this property is encoded by the following two clauses:</p><formula xml:id="formula_4">γ 1 : prop ← ¬negprop γ 2 : negprop ← X 1 ≤ 0, X 2 = 0, sat(s(X 1 , X 2 )</formula><p>, eu(true, negative)) Thus, by Theorem 1, in order to verify that in every initial state of K the CTL formula not(eu(true, negative)) holds, we need to show that prop ∈ M (P K ∪ {γ 1 , γ 2 }).</p><p>One of the most important features of the model checking techniques for finite state systems is the ability to find witnesses and counterexamples <ref type="bibr" target="#b8">[9]</ref>. Our encoding of the Kripke structure can easily be extended to handle the generation of witnesses of formulas of the form eu(ϕ 1 , ϕ 2 ) and counterexamples of formulas of the form af (ϕ). For details, the interested reader may refer to Section 7 of <ref type="bibr" target="#b15">[16]</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3">Verifying Infinite State Systems by Specializing CLP Programs</head><p>In this section we present a method for checking whether or not prop ∈ M (P K ∪ {γ 1 , γ 2 }), where P K ∪ {γ 1 , γ 2 } is a CLP specification of an infinite state system and prop is a predicate encoding the satisfiability of a given CTL formula, as indicated in Section 2.</p><p>The checking technique based on the bottom-up construction of the perfect model M (P K ∪ {γ 1 , γ 2 }) is not feasible, in general, because this model may be infinite. Moreover, the proof procedures normally used in constraint logic programming, such as the extension of SLDNF resolution and tabled resolution to CLP, very often diverge when trying to check whether or not prop ∈ M (P K ∪ {γ 1 , γ 2 }). This is due to the limited ability of these proof procedures to cope with infinite failure.</p><p>It has been shown in <ref type="bibr" target="#b14">[15]</ref> that program specialization often improves the treatment of infinite failure. In this section we present a reformulation of the method proposed in <ref type="bibr" target="#b14">[15]</ref> by defining a verification algorithm working in two phases: <ref type="bibr" target="#b0">(1)</ref> in the first phase we specialize the program P K ∪ {γ 1 , γ 2 } w.r.t. the query prop, that is, w.r.t. initial state of the system and the temporal property to be verified, and (2) in the second phase we construct the perfect model of the specialized program by a bottom-up evaluation. This separation into two phases allows the assessment of the effect of program specialization on the verification process as indicated in Section 5.</p><p>It is often the case that the specialization phase improves the termination of the construction of the perfect model. Indeed, in many cases the bottomup construction of the perfect model of the program P K ∪ {γ 1 , γ 2 } does not terminate because it does not take into account the information about the query to be evaluated and, in particular, about the initial states of the system. The specialization phase modifies the initial program P K ∪ {γ 1 , γ 2 } by incorporating into the specialized program P s the knowledge about the constraints that hold in the initial states. Therefore, the bottom-up construction of the perfect model of P s may exploit those constraints and terminate more often than the bottom-up construction of the perfect model of the initial program</p><formula xml:id="formula_5">P K ∪ {γ 1 , γ 2 }.</formula><p>The Verification Algorithm Input:</p><formula xml:id="formula_6">The program P K ∪ {γ 1 , γ 2 }. Output: An Herbrand interpretation M s such that prop ∈ M (P K ∪ {γ 1 , γ 2 }) iff prop ∈ M s . (Phase 1) Specialize(P K ∪ {γ 1 , γ 2 }, P s ); (Phase 2) BottomUp(P s , M s )</formula><p>The Specialize procedure of Phase (1) implements a program specialization strategy which makes use of the following transformation rules only: definition introduction, constrained atomic folding, positive unfolding, constrained atomic folding, removal of clauses with unsatisfiable body, and removal of subsumed clauses. Thus, Phase (1) is simpler than the specialization strategy presented in <ref type="bibr" target="#b14">[15]</ref> which uses some extra rules such as negative unfolding, removal of useless clauses, and contextual constraint replacement.</p><p>Procedure Specialize Input: The Unfold procedure takes as input a clause γ ∈ InDefs of the form H ← c(X), sat(X, ψ), and returns as output a set Γ of clauses derived from γ as follows. The Unfold procedure first unfolds once γ w.r.t. sat(X, ψ) and then applies zero or more times the unfolding as long as in the body of a clause derived from γ there is an atom of one of the following forms: (i) t(s 1 , s 2 ), (ii) ts(s, ss), (iii) sat(s, e), where e is an elementary property, (iv) sat(s, not(ψ 1 )), (v) sat(s, and (ψ 1 , ψ 2 )), (vi) sat(s, ex (ψ 1 )), and (vii) sat all (ss, ψ 1 ), where ss is a non-variable list. Then the set of clauses derived from γ by applying the unfolding rule is simplified by removing: (i) every clause whose body contains an unsatisfiable constraint, and (ii) every clause which is subsumed a clause of the form H ← c, where c is a constraint. Due to the structure of the clauses defining the predicates t, ts, sat, and sat all , the Unfold procedure terminates for any ground term denoting a CTL formula ψ occurring in γ.</p><formula xml:id="formula_7">The program P K ∪ {γ 1 , γ 2 }. Output: A stratified program P s such that prop ∈ M (P K ∪ {γ 1 , γ 2 }) iff prop ∈ M (P s ).</formula><p>The Generalize&amp;Fold procedure takes as input the set Γ of clauses produced by the Unfold procedure and the set Defs of clauses, called definitions. A definition in Defs is a clause of the form newp(X) ← d(X), sat(X, ψ) which can be used for folding. The Generalize&amp;Fold procedure introduces a set NewDefs of new definitions (which are then added to Defs) and, by folding the clauses in Γ using the definitions in Defs ∪ NewDefs, derives a new set Φ of clauses, called specialized clauses, which are added to the program P s . The specialized clauses in Φ are derived as follows. Suppose that η: H ← e, L 1 , . . . , L n is a clause in Γ , where for i = 1, . . . , n, L i is of the form either sat(X, ψ i ) or ¬sat(X, ψ i ). For i = 1, . . . , n, if there exists a definition δ i : newp(X) ← d i (X), sat(X, ψ i ) in Defs such that e implies d i (X), then γ is folded using δ i , that is, sat(X, ψ i ) is replaced by newp(X), else a new definition ν i : newp(X) ← g(X), sat(X, ψ i ), such that e implies g(X), is added to NewDefs and γ is folded using ν i . More details on the Generalize&amp;Fold procedure will be given in the next section.</p><p>An uncontrolled application of the Generalize&amp;Fold procedure may lead to the introduction of infinitely many new definitions and, therefore, it may determine the non-termination of the Specialize procedure. In order to guarantee termination, we will extend to constraint logic programs some techniques which have been proposed for controlling generalization in positive supercompilation <ref type="bibr" target="#b33">[34]</ref> and partial deduction <ref type="bibr" target="#b21">[22,</ref><ref type="bibr" target="#b23">24]</ref>.</p><p>The output program P s of the Specialize procedure is a stratified program and the procedure BottomUp computes the perfect model M s of P s by considering a stratum at a time, starting from the lowest stratum and going up to the highest stratum of P s (see, for instance, <ref type="bibr" target="#b3">[4]</ref>). Obviously, the model M s may be infinite and the BottomUp procedure may not terminate. In order to get a terminating procedure, we could compute an approximation of M s by applying some standard techniques which are used in the static analysis of programs <ref type="bibr" target="#b9">[10]</ref>. Indeed, in order to prove that prop ∈ M s , we could construct a set A ⊆ M s such that prop ∈ A. Approximations (also called abstractions) are often used for the verification of infinite state systems (see, for instance, <ref type="bibr" target="#b1">[2,</ref><ref type="bibr" target="#b4">5,</ref><ref type="bibr" target="#b12">13,</ref><ref type="bibr" target="#b34">35]</ref>). In this paper, however, we will not study these techniques based on approximations and we will focus our attention on the design of the Specialize procedure only. In Section 5 we show that the construction of the model M s terminates in several significant cases.</p><p>Example 2. Let us consider the reactive system K of Example 1. We want to check whether or not prop ∈ M (P K ∪ {γ 1 , γ 2 }), where prop expresses the fact that not(eu(true, negative)) holds in every initial state. Now we have that: (i) by using a traditional Prolog system, the evaluation of the query prop does not terminate in the program P K ∪{γ 1 , γ 2 }, because negprop has an infinitely failed SLD tree, (ii) by using the XSB logic programming system which uses tabled resolution, the query prop does not terminate, and (iii) the bottom-up construction of M (P K ∪ {γ 1 , γ 2 }) does not terminate (even if we restrict the program to clauses 1, 2, 5, 6, 11-14, which are the clauses actually needed for evaluating the query prop).</p><p>In our verification algorithm we overcome those difficulties encountered by traditional Prolog systems and XSB by applying the Specialize procedure to the program P K ∪ {γ 1 , γ 2 } (with a suitable generalization strategy, as illustrated in the next section). By doing so, we derive the following specialized program P s :</p><p>prop</p><formula xml:id="formula_8">← ¬negprop negprop ← X 1 ≤ 0, X 2 = 0, new 1(X 1 , X 2 ) new 1(X 1 , X 2 ) ← X 1 ≤ 0, X 2 = 0, Y 1 = X 1 , Y 2 = 1, new 2(Y 1 , Y 2 ) new 2(X 1 , X 2 ) ← X 1 ≤ 0, X 2 ≥ 0, Y 1 = X 1 , Y 2 = X 2 + 1, new 2(Y 1 , Y 2 )</formula><p>The BottomUp procedure computes the perfect model of P s , which is M s = {prop}, in a finite number of steps. Thus, the property not(eu(true, negative)) holds in every initial state of K.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4">Generalization Strategies</head><p>The design of a powerful generalization strategy should meet two conflicting requirements: (i) the strategy should enforce the termination of the Specialize procedure, and (ii) over-generalization may produce a specialized program P s with an infinite perfect model which may cause the non-termination of the Bot-tomUp procedure. In this section we present several generalization strategies for coping with those conflicting requirements. These strategies combine various by now standard techniques used in the fields of program transformation and static analysis, such as well-quasi orderings, widening, and convex hull operators, and variants thereof. All these strategies guarantee the termination of the Specialize procedure. However, as we deal with an undecidable verification problem, the power and effectiveness of the various generalization strategies can only be assessed by an experimental evaluation, which will be presented in the next section.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.1">The Generalize&amp;Fold Procedure</head><p>The Generalize&amp;Fold procedure makes use of a tree, called Definition Tree, whose root is labelled by clause γ 2 (recall that {γ 2 } is the initial value of InDefs) and the non-root nodes are labelled by the clauses in Defs. Since, by construction, the clauses in Defs are all distinct, we will identify each clause with a node of that tree. The children of a clause γ in Defs are the clauses NewDefs derived by applying Unfold (γ, Γ ) followed by Generalize&amp;Fold(Defs, Γ, NewDefs, Φ).</p><p>Similarly to <ref type="bibr" target="#b21">[22,</ref><ref type="bibr" target="#b23">24,</ref><ref type="bibr" target="#b33">34]</ref>, our generalization technique is based on the combined use of well-quasi ordering relations and clause generalization operators. The well-quasi orderings guarantee that generalization is eventually applied, while generalization operators guarantee that each definition can be generalized a finite number of times only.</p><p>Let C be the set of all constraints and D be a fixed interpretation for the constraints in C. We assume that: (i) every constraint in C is either an atomic constraint or a finite conjunction of constraints (we will denote conjunction by comma), and (ii) C is closed under projection, where the projection of a constraint c w.r.t. the variable X is a constraint, denoted project(c, X), such that D |= ∀(project(c, X) ↔ ∃Xc). We define a partial order on C as follows: for any two constraints c 1 and c 2 in C, we have that</p><formula xml:id="formula_9">c 1 c 2 iff D |= ∀ (c 1 → c 2 ).</formula><p>Definition 1 (Well-Quasi Ordering). A well-quasi ordering (wqo, for short) on a set S is a reflexive, transitive, binary relation such that, for every infinite sequence e 0 , e 1 , . . . of elements of S, there exist i and j such that i &lt; j and e i e j . Given e 1 and e 2 in S, we write e 1 ≈ e 2 if e 1 e 2 and e 2 e 1 . We say that a wqo is thin iff for all e ∈ S, the set {e ∈ S | e ≈ e } is finite. Similarly to the widening operator ∇ used in abstract interpretations <ref type="bibr" target="#b9">[10]</ref>, every infinite sequence of constraints constructed by using the generalization operator eventually stabilizes, that is, for every infinite sequence d 0 , d 1 , . . . of constraints, in the infinite sequence c 0 , c 1 , . . . defined as follows: c 0 = d 0 and for any i ≥ 0, c i+1 = c i d i+1 , there exist 0 ≤ m &lt; n, such that c m = c n . Procedure Generalize&amp;Fold Input: (i) a set Defs of definitions, and (ii) a set Γ of clauses obtained from a clause γ by the Unfold procedure. Output: (i) A set NewDefs of new definitions, and (ii) a set Φ of folded clauses.</p><p>NewDefs := ∅ ; Φ := Γ ; while in Φ there exists a clause η: H ← e, G 1 , L, G 2 , where L is either sat(X, ψ) or ¬sat(X, ψ) do Generalize: Let e p (X) be project(e, X). 1. if in Defs there exists a clause δ: newp(X) ← d(X), sat(X, ψ) such that e p (X) d(X) (modulo variable renaming) then NewDefs := NewDefs 2. elseif there exists a clause α in Defs such that:</p><p>(i) α is of the form newq(X) ← b(X), sat(X, ψ), and (ii) α is the most recent ancestor of γ in the Definition Tree such that b(X) e p (X) then NewDefs := NewDefs ∪ {newp(X) ← b(X) e p (X), sat(X, ψ)} 3. else NewDefs := NewDefs ∪ {newp(X) ← e p (X), sat(X, ψ)}</p><formula xml:id="formula_10">Fold: Φ := (Φ − {η}) ∪ {H ← e, G 1 , M, G 2 }, where M is newp(X), if L is sat(X, ψ),</formula><p>and</p><formula xml:id="formula_11">M is ¬newp(X), if L is ¬sat(X, ψ) end-while</formula><p>The following theorem, whose proof is given in <ref type="bibr" target="#b15">[16]</ref>, establishes that the Specialize procedure, which uses the Unfold and the Generalize&amp;Fold subprocedures, always terminates and preserves the perfect model semantics.</p><p>Theorem 2 (Termination and Correctness of the Specialize Procedure). For every input program P K ∪{γ 1 , γ 2 }, for every thin wqo , for every generalization operator , the Specialize procedure terminates. If P s is the output program of the Specialize procedure, then prop ∈ M (P K ) iff prop ∈ M (P s ).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.2">Well-Quasi Orderings and Generalization Operators on Linear</head><p>Constraints In this section we describe the wqo's and the generalization operators we have used in our verification experiments.</p><p>We will consider the set Lin k of constraints defined as follows. The atomic constraints of Lin k are linear inequations constructed by using the predicate symbols &lt; and ≤, the k distinct variables X 1 , . . . , X k , and the integer coefficients q i 's. The constraints in Lin k are interpreted over the rationals in the usual way. Every constraint c ∈ Lin k is the conjunction a 1 , . . . , a m of m (≥ 0) distinct atomic constraints and, for i = 1, . . . , m, (1) a i is of the form either p i ≤ 0 or p i &lt; 0, and (2) p i is a polynomial of the form q 0 + q 1 X 1 + . . . q k X k , where the q i 's are integer coefficients. An equation r = s is considered as an abbreviation of the conjunction of the two inequations r ≤ s and s ≤ r.</p><p>In every infinite state system we will consider, the state is represented as an n-tuple t 1 , . . . , t n , where k terms, with k ≤ n, are rationals and the remaining n−k terms are elements of a finite domain. As illustrated in Section 2, the initial states and the elementary properties are specified by constraints in Lin k and the transition relation is specified by constraints in Lin 2k . (The n−k components of a state which are elements of a finite domain, are specified by their values.)</p><p>Well-Quasi Orderings. Now we present three wqo's between the polynomials and between the constraints on Lin k that we will use in the verification examples of the next section.</p><p>(1) The wqo HomeoCoeff, denoted by HC , compares sequences of absolute values of integer coefficients occurring in polynomials. The HC ordering is based on the notion of a homeomorphic embedding (see, for instance, <ref type="bibr" target="#b21">[22,</ref><ref type="bibr" target="#b23">24,</ref><ref type="bibr" target="#b33">34]</ref>) and takes into account commutativity and associativity of addition and conjunction. Given two polynomials with integer coefficients p 1 = def q 0 + q 1 X 1 + . . . + q k X k , and p 2 = def r 0 + r 1 X 1 + . . . + r k X k , we have that p 1 HC p 2 iff there exist a permutation 0 , . . . , k of the indexes 0, . . . , k such that, for i = 0, . . . , k, |q i | ≤ |r i |. Given two atomic constraints a 1 = def p 1 &lt; 0 and a 2 = def p 2 &lt; 0, we have that a 1 HC a 2 iff p 1 HC p 2 . Similarly, if we consider a 1 = def p 1 ≤ 0 and a 2 = def p 2 ≤ 0. Given two constraints c 1 = def a 1 , . . . , a m , and c 2 = def b 1 , . . . , b n , we have that c 1 HC c 2 iff there exist m distinct indexes 1 , . . . , m , with m ≤ n, such that a i HC b i , for i = 1, . . . , m.</p><p>(2) The wqo MaxCoeff, denoted by MC , compares the maximum absolute value of coefficients occurring in polynomials. For any atomic constraint a i of the form p &lt; 0 or p ≤ 0, where p is q 0 + q 1 X 1 + . . . + q k X k , we have that maxcoeff (a i ) = max {|q 0 |, |q 1 |, . . . , |q k |}, and for any two atomic constraints a 1 , a 2 , we have that a 1 MC a 2 iff maxcoeff (a 1 ) ≤ maxcoeff (a 2 ). Given two constraints c 1 = def a 1 , . . . , a m , and c 2 = def b 1 , . . . , b n , we have that c 1 MC c 2 iff, for i = 1, . . . , m, there exists j ∈ {1, . . . , n} such that a i MC b j .</p><p>(3) The wqo SumCoeff, denoted by SC , compares the sum of the absolute values of the coefficients occurring in polynomials. For any atomic constraint a i of the form p &lt; 0 or p ≤ 0, where p is q 0 +q 1 X 1 +. . .+q k X k , , we define sumcoeff (a i ) = It can be shown that WP is, indeed, a generalization operator w.r.t. the wqo's MaxCoeff, and SumCoeff. However, in general, WP is not a generalization operator w.r.t. HomeoCoeff, because the constraint c WP d may contain more atomic constraints than c and, thus, it may not be the case that (c WP d) HC c.</p><p>Some additional generalization operators can be defined by combining our three operators T , W , and WP , with the convex hull operator, which is often used in the static analysis of programs <ref type="bibr" target="#b9">[10]</ref>. Given two constraints c and d, their convex hull, denoted by ch(c, d), is the least constraint h (w.r.t. the ordering) such that c h and d h.</p><p>Given any two constraints c and d, a wqo , and a generalization operator , we define the generalization operator CH as follows:</p><formula xml:id="formula_12">c CH d = def c ch(c, d).</formula><p>From the definitions of and ch one can easily derive that the operator CH is indeed a generalization operator for c and d, that is, (i) d c CH d, and (ii) c CH d c. (G4) Given any two constraints c and d, we define the generalization operator CHWiden, denoted CHW , as follows: c CHW d = def c W ch(c, d ). (G5) Given any two constraints c and d, we define the generalization operator CHWidenPlus, denoted CHWP , as follows:</p><formula xml:id="formula_13">c CHWP d = def c WP ch(c, d ).</formula><p>Note that if we combine the generalization operator Top and the convex hull operator, we get the Top operator again.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5">Experimental Evaluation</head><p>In this section we report the results of the experiments we have performed on several examples of verification of infinite state reactive systems.</p><p>We have implemented the verification algorithm presented in Section 2 by using MAP <ref type="bibr" target="#b25">[26]</ref>, an experimental system for the transformation of constraint logic programs. The MAP system is implemented in SICStus Prolog 3.12.8 and uses the clpq library to operate on constraints. Now we give a brief description of the experiments we have conducted (see also Tables <ref type="table" target="#tab_0">1 and 2</ref>).</p><p>We have considered the following mutual exclusion protocols. (i) Bakery <ref type="bibr" target="#b19">[20]</ref>: we have verified safety (that is, mutual exclusion) and liveness (that is, starvation freedom) in the case of two processes, and safety in the case of three processes; (ii) MutAst <ref type="bibr" target="#b20">[21]</ref>: we have verified safety in the case of two processes; (iii) Peterson <ref type="bibr" target="#b28">[29]</ref>: we have considered a counting abstraction <ref type="bibr" target="#b10">[11]</ref> of this protocol and we have verified safety in the case of N processes; and (iv) Ticket [3]: we have considered the case of two processes and we have verified safety and liveness.</p><p>We have also verified safety properties of the following cache coherence protocols: (v) Berkeley RISC, (vi) DEC Firefly, (vii) IEEE Futurebus+, (viii) Illinois University, (ix) MESI, (x) MOESI, (xi) Synapse N+1, and (xii) Xerox PARC Dragon. These protocols are used in shared-memory multiprocessing systems for guaranteeing data consistency of the local cache associated with every processor <ref type="bibr" target="#b17">[18]</ref>. We have considered parameterized versions of the above protocols, that is, protocols designed for an arbitrary number of processors. Similarly to <ref type="bibr" target="#b10">[11]</ref>, we have applied our verification method to counting abstractions of the protocols.</p><p>We have also verified safety properties of the following systems. (xiii) Barber <ref type="bibr" target="#b5">[6]</ref>: we have considered a parameterized version of this protocol with a single barber process and an arbitrary number of customer processes; (xiv) Bounded and Unbounded Buffer : we have considered protocols for two producers and two consumers which communicate via a bounded and an unbounded buffer, respectively (the encodings of these protocols are taken from <ref type="bibr" target="#b12">[13]</ref>); (xv) CSM, which is a central server model described in <ref type="bibr" target="#b11">[12]</ref>; (xvi) Insertion Sort and Selection Sort: we have considered the problem of checking array bounds of these two sorting algorithms, parameterized w.r.t. the size of the array, as presented in <ref type="bibr" target="#b12">[13]</ref>; (xvii) Office Light Control <ref type="bibr" target="#b6">[7]</ref>, which is a protocol for controlling how office lights are switched on or off, depending on room occupancy; (xviii) Reset Petri Nets, which are Petri Nets augmented with reset arcs: we have considered a reachability problem for a net which is a variant of one presented in <ref type="bibr" target="#b22">[23]</ref> (unlike <ref type="bibr" target="#b22">[23]</ref>, in the net we have considered there is no bound on the number of tokens that can reside in a place and, therefore, our net is an infinite state system).</p><p>Table <ref type="table" target="#tab_0">1</ref> shows the results of running the MAP system on the above examples by choosing different combinations of a wqo W and a generalization operator G introduced in Section 4. In the sequel we will denote that combination by W &amp;G. The combinations MaxCoeff &amp;CHWiden, MaxCoeff &amp;CHWidenPlus, MaxCoeff &amp;Top, and MaxCoeff &amp;Widen have been omitted because they give results which are very similar to those obtained by using SumCoeff, instead of MaxCoeff. HomeoCoeff &amp;CHWidenPlus and HomeoCoeff &amp;WidenPlus have been omitted because, as already mentioned in Section 4, these combinations do not satisfy the conditions given in Definition 2, and thus, they do not guarantee the termination of the specialization strategy.</p><p>If we consider precision, that is, the number of properties which have been proved, the best combination is SumCoeff &amp;WidenPlus (23 properties proved out of 23) closely followed by MaxCoeff &amp;WidenPlus and SumCoeff &amp;CHWidenPlus (22 properties proved out of 23). The verification times for SumCoeff &amp;CHWiden-Plus are definitely worse than the ones for the other two combinations: indeed, on average, for each proved property, SumCoeff &amp;CHWidenPlus takes 2990 milliseconds, while MaxCoeff &amp;WidenPlus and SumCoeff &amp;WidenPlus take 730 milliseconds and 820 milliseconds, respectively. This is due to the fact that SumCoeff &amp; CHWidenPlus introduces more definitions than the other two strategies. (For lack of space, we do not report average times for the other generalization strategies, nor we present statistics on the number of generated definitions.) Table <ref type="table" target="#tab_0">1</ref> also shows that by using the Top and the Widen generalization operators the specialization time is quite good, but the precision of verification is low. In other terms, the Top and Widen operators determine an over-generalization. In contrast, SumCoeff &amp;WidenPlus and MaxCoeff &amp;WidenPlus ensure a good balance between time and precision.</p><p>In conclusion, the specialization strategy which uses the generalization strategy SumCoeff &amp;WidenPlus outperforms the others, closely followed by the specialization strategy which uses MaxCoeff &amp;WidenPlus. In particular, the generalization strategies based either on the homeomorphic embedding (that is, Homeo-Coeff ) or the combination of the widening and convex hull operators (that is, Widen and CHWiden) are not the best choices in our examples.</p><p>In order to compare our MAP implementation of the verification method with other constraint-based model checking tools for infinite state systems, we have run the verification examples described above on the following systems: (i) ALV <ref type="bibr" target="#b6">[7]</ref>, which combines BDD-based symbolic manipulation for boolean and enumerated types, with a solver for linear constraints on integers, (ii) DMC <ref type="bibr" target="#b12">[13]</ref>, which computes (approximated) least and greatest models of CLP(R) programs, and (iii) HyTech <ref type="bibr" target="#b18">[19]</ref>, a model checker for hybrid systems.</p><p>Table <ref type="table">2</ref> reports the results of our experiments obtained by using various options available in those verification systems. All experiments with MAP, ALV, DMC, and HyTech have been conducted on an Intel Core 2 Duo E7300 2.66GHz under the Linux operating system.</p><p>In terms of precision, MAP with the SumCoeff &amp;WidenPlus option is the best system (23 properties proved out of 23), followed by DMC with the A option (19 out of 23), ALV with the default option (18 out of 23), and, finally, HyTech with the Bw option (17 out of 23). Among the above mentioned systems and respective options, HyTech (Bw) has the best average running time (70 milliseconds per proved property), followed by MAP and DMC (both 820 milliseconds), and ALV (8480 milliseconds). This is explained by the fact that the HyTech with the Bw option tries to prove a safety property with a very simple strategy, by constructing the reachability set backwards from the property to be proved, while the other systems apply more sophisticated techniques. Note also that the average verification times are affected by an uneven behavior on some specific examples. For instance, in the Bounded and Unbounded Buffer examples the </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="6">Conclusions</head><p>In this paper we have proposed some improvements of the method presented in <ref type="bibr" target="#b14">[15]</ref> for verifying infinite state reactive systems. First, we have reformulated the verification method as a two-phase method: (1) in the first phase a CLP specification of the reactive system is specialized w.r.t. the initial state and the temporal property to be verified and (2) in the second phase the perfect model of the specialized program is constructed in a bottom-up way. For Phase <ref type="bibr" target="#b0">(1)</ref> we have considered various specialization strategies which employ different wellquasi orderings and generalization operators to guarantee always terminating transformations. These orderings and generalization operators are either new or adapted from similar notions, such as, convex hull, widening, and homeomorphic embedding, defined in the context of static analysis of programs <ref type="bibr" target="#b9">[10]</ref> and program specialization <ref type="bibr" target="#b21">[22,</ref><ref type="bibr" target="#b23">24,</ref><ref type="bibr" target="#b33">34]</ref>.</p><p>We have applied these specialization strategies to several examples of infinite state systems taken from the literature and we have compared the results in terms of efficiency and precision (that is, the number of proved properties). On the basis of our experimental results we have found some strategies that outperform the others in terms of a good balance of efficiency and precision. In particular, the strategies based on the convex hull, widening, and homeomorphic embedding, do not appear to be the best strategies in our examples.</p><p>Then, we have applied other model checking tools for infinite state systems (in particular, ALV <ref type="bibr" target="#b6">[7]</ref>, DMC <ref type="bibr" target="#b12">[13]</ref>, and HyTech <ref type="bibr" target="#b18">[19]</ref>) to the same set of examples. The experimental results show that the specialization-based verification system (with the best performing strategies) is competitive with respect to the other tools.</p><p>Our approach is closely related to other verification methods for infinite state systems based on the specialization of (constraint) logic programs <ref type="bibr" target="#b22">[23,</ref><ref type="bibr" target="#b24">25,</ref><ref type="bibr" target="#b27">28]</ref>. Unlike the approach proposed in <ref type="bibr" target="#b22">[23,</ref><ref type="bibr" target="#b24">25]</ref> we use constraints, which give us very powerful means of dealing with infinite sets of states. The specialization-based verification method presented in <ref type="bibr" target="#b27">[28]</ref> consists of one phase only incorporating both top-down query directed specialization and bottom-up answer propagation. This method is restricted to definite constraint logic programs and makes use of a generalization technique which combines widening and convex hull computations for ensuring termination. In <ref type="bibr" target="#b27">[28]</ref> only two examples have been presented (the Bakery protocol and a Petri net) and no verification times are reported. Thus, it is hard to make a comparison in terms of effectiveness with respect to the method we have presented here. However, as already mentioned, the generalization techniques based on the widening and the convex hull operators do not turn out to be the best options in our examples.</p><p>Another approach based on program transformation for verifying parameterized (and, hence, infinite state) systems has been presented in <ref type="bibr" target="#b31">[32]</ref>. This approach is based on unfold/fold transformations which are more general than the ones used in the specialization strategy considered in this paper. However, the strategy for guiding the unfold/fold rules proposed in <ref type="bibr" target="#b31">[32]</ref> works in fully automatic mode in a small set of examples only.</p><p>Finally, we would like to mention that our verification method can be viewed as complementary with respect to the methods based on static analysis, such as <ref type="bibr" target="#b4">[5,</ref><ref type="bibr" target="#b12">13]</ref>. These methods work by constructing approximations of program models (which can be least or greatest models, depending on the specific technique) in a bottom-up way. However, these methods may fail to prove a property simply because they compute a subset (or a superset) of the program model.</p><p>One further enhancement of our method could be achieved by replacing the bottom-up, precise computation of the perfect model performed in our Phase (2) by an approximated computation, in the style of <ref type="bibr" target="#b4">[5,</ref><ref type="bibr" target="#b12">13]</ref>. Finding the optimal combination, in terms of both efficiency and precision, of program specialization and static analysis techniques for the verification of infinite state systems is an interesting direction for future research.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Fig. 1 .</head><label>1</label><figDesc>Fig. 1. A reactive system. In any initial state we have that X1 ≤ 0 and X2 = 0. No transition changes the value of X1.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>P</head><label></label><figDesc>s := {γ 1 }; InDefs := {γ 2 }; Defs := {}; while there exists a clause γ in InDefs do Unfold (γ, Γ ); Generalize&amp;Fold(Defs, Γ, NewDefs, Φ); P s := P s ∪ Φ; InDefs := (InDefs − {γ}) ∪ NewDefs; Defs := Defs ∪ NewDefs; end-while</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Definition 2 (</head><label>2</label><figDesc>Generalization Operator). Let be a wqo on C. A generalization operator on C w.r.t. the wqo , is a binary operator such that, for all constraints c and d in C, we have: (i) d c d, and (ii) c d c. (Note that, in general, is not commutative.)</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head>k</head><label></label><figDesc>j=0 |q j |, and for any two atomic constraints a 1 , a 2 , we define a 1 SC a 2 iff sumcoeff (a 1 ) ≤ sumcoeff (a 2 ). Given two constraints c 1 = def a 1 , . . . , a m , and c 2 = def b 1 , . . . , b n , we define c 1 SC c 2 iff, for i = 1, . . . , m, there exists j ∈ {1, . . . , n} such that a i SC b j .Generalization Operators. Now we present some generalization operators on Lin k which we use in the verification examples of the next section. (G1) Given any two constraints c and d, the generalization operator Top, denoted T , returns true. It can be shown that T is indeed a generalization operator w.r.t. the wqo's HomeoCoeff, MaxCoeff, and SumCoeff. (G2) Given any two constraints c = def a 1 , . . . , a m , and d, the generalization operator Widen, denoted W , returns the conjunction a i1 , . . . , a ir , where {a i1 , . . . , a ir } = {a h | 1 ≤ h ≤ m and d a h } (see<ref type="bibr" target="#b9">[10]</ref> for a similar operator for static program analysis). It can be shown that W is, indeed, a generalization operator w.r.t. the wqo's HomeoCoeff, MaxCoeff, and SumCoeff. (G3) Given any two constraints c = def a 1 , . . . , a m , and d = def b 1 , . . . , b n , the generalization operator WidenPlus, denoted WP , returns the conjunction a i1 , . . . , a ir , b j1 , . . . , b js , where: (i) {a i1 , . . . , a ir } = {a h | 1 ≤ h ≤ m and d a h }, and (ii) {b j1 , . . . , b js } = {b k | 1 ≤ k ≤ n and b k c}.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head>Table 1 .</head><label>1</label><figDesc>Comparison of various generalization strategies used by the MAP system in the examples listed in the leftmost column. HC , MC , and SC denote the wqo HomeoCoeff, MaxCoeff, and SumCoeff, respectively. Times are expressed in milliseconds. The precision is 10 milliseconds. '0' means termination in less than 10 milliseconds. '∞' means 'No answer' within 100 seconds. For each example we have two lines: the first line shows the total verification time (Phases 1 and 2) and the second line shows the program specialization time (Phase 1 only).MAP system has higher verification times with respect to the other systems, because these examples can be easily verified by backward reachability, thereby making the MAP specialization phase redundant. On the opposite side, MAP is much more efficient than the other systems in the Peterson and CSM examples, where the specialization phase definitely pays off.</figDesc><table><row><cell cols="4">Generalization G: CHWiden CHWidenPlus</cell><cell>Top</cell><cell></cell><cell>Widen</cell><cell></cell><cell cols="2">WidenPlus</cell></row><row><cell cols="2">EXAMPLE wqo W: HC</cell><cell>SC</cell><cell>SC</cell><cell>HC</cell><cell>SC</cell><cell>HC</cell><cell cols="3">SC MC SC</cell></row><row><cell>Bakery 2 (safety)</cell><cell>20</cell><cell>70</cell><cell>20</cell><cell>30</cell><cell>40</cell><cell>20</cell><cell cols="3">60 30 20</cell></row><row><cell></cell><cell>20</cell><cell>50</cell><cell>20</cell><cell>20</cell><cell>30</cell><cell>20</cell><cell cols="3">40 30 20</cell></row><row><cell>Bakery 2 (liveness)</cell><cell cols="2">60 120</cell><cell>80</cell><cell cols="2">80 100</cell><cell cols="4">70 130 80 70</cell></row><row><cell></cell><cell>40</cell><cell>80</cell><cell>60</cell><cell>50</cell><cell>60</cell><cell>50</cell><cell cols="3">90 60 50</cell></row><row><cell>Bakery 3 (safety)</cell><cell cols="2">160 800</cell><cell cols="7">180 2420 3010 170 750 180 160</cell></row><row><cell></cell><cell cols="2">150 430</cell><cell cols="7">170 730 680 160 380 170 150</cell></row><row><cell>MutAst</cell><cell cols="2">230 440</cell><cell cols="7">440 2870 2490 220 370 70 140</cell></row><row><cell></cell><cell cols="2">200 390</cell><cell cols="7">420 330 220 190 320 70 140</cell></row><row><cell>Peterson N</cell><cell>∞</cell><cell>∞</cell><cell>1370</cell><cell>∞</cell><cell>∞</cell><cell>∞</cell><cell cols="3">∞ 210 230</cell></row><row><cell></cell><cell cols="2">∞ 410</cell><cell>1370</cell><cell>∞</cell><cell>30</cell><cell cols="4">∞ 250 210 230</cell></row><row><cell>Ticket (safety)</cell><cell>30</cell><cell>30</cell><cell>20</cell><cell>20</cell><cell>30</cell><cell>20</cell><cell cols="3">30 20 40</cell></row><row><cell></cell><cell>30</cell><cell>20</cell><cell>10</cell><cell>20</cell><cell>20</cell><cell>20</cell><cell cols="3">20 10 30</cell></row><row><cell>Ticket (liveness)</cell><cell cols="2">90 120</cell><cell cols="7">120 100 110 100 100 110 110</cell></row><row><cell></cell><cell>50</cell><cell>70</cell><cell>70</cell><cell>60</cell><cell>60</cell><cell>60</cell><cell cols="3">50 60 60</cell></row><row><cell>Berkeley RISC</cell><cell>60</cell><cell>60</cell><cell>200</cell><cell>70</cell><cell>30</cell><cell>50</cell><cell cols="3">50 30 30</cell></row><row><cell></cell><cell>60</cell><cell>40</cell><cell>170</cell><cell>50</cell><cell>20</cell><cell>50</cell><cell cols="3">30 30 30</cell></row><row><cell>DEC Firefly</cell><cell cols="2">190 120</cell><cell cols="2">340 100</cell><cell cols="5">80 180 120 30 20</cell></row><row><cell></cell><cell>100</cell><cell>60</cell><cell>160</cell><cell>40</cell><cell>20</cell><cell>90</cell><cell cols="3">60 30 20</cell></row><row><cell>IEEE Futurebus+</cell><cell cols="2">∞ 47260</cell><cell>47260</cell><cell cols="2">∞ 15630</cell><cell cols="4">∞ 4720 100 2460</cell></row><row><cell></cell><cell cols="2">∞ 290</cell><cell>290</cell><cell>∞</cell><cell>30</cell><cell cols="4">∞ 230 100 270</cell></row><row><cell>Illinois University</cell><cell>50</cell><cell>80</cell><cell cols="2">40 140</cell><cell>90</cell><cell>50</cell><cell cols="3">70 40 20</cell></row><row><cell></cell><cell>50</cell><cell>60</cell><cell>40</cell><cell>60</cell><cell>30</cell><cell>50</cell><cell cols="3">50 30 10</cell></row><row><cell>MESI</cell><cell>100</cell><cell>50</cell><cell cols="2">130 100</cell><cell cols="2">70 100</cell><cell cols="3">50 30 30</cell></row><row><cell></cell><cell>80</cell><cell>40</cell><cell>120</cell><cell>50</cell><cell>20</cell><cell>80</cell><cell cols="3">40 30 30</cell></row><row><cell>MOESI</cell><cell cols="2">980 160</cell><cell cols="7">180 930 100 940 160 50 60</cell></row><row><cell></cell><cell>950</cell><cell>60</cell><cell cols="2">80 860</cell><cell cols="2">30 910</cell><cell cols="3">60 50 50</cell></row><row><cell>Synapse N+1</cell><cell>30</cell><cell>10</cell><cell>10</cell><cell>20</cell><cell>20</cell><cell>20</cell><cell cols="3">10 10 10</cell></row><row><cell></cell><cell>20</cell><cell>10</cell><cell>10</cell><cell>20</cell><cell>10</cell><cell>10</cell><cell cols="3">10 10 10</cell></row><row><cell cols="2">Xerox PARC Dragon 1230</cell><cell>80</cell><cell cols="2">280 1140</cell><cell cols="2">50 1210</cell><cell cols="3">70 30 40</cell></row><row><cell></cell><cell>1180</cell><cell>60</cell><cell cols="2">260 1110</cell><cell cols="2">20 1160</cell><cell cols="3">50 30 40</cell></row><row><cell>Barber</cell><cell cols="2">41380 30150</cell><cell>2740</cell><cell>∞</cell><cell cols="5">∞ 40750 29030 1210 1170</cell></row><row><cell></cell><cell cols="2">3260 3100</cell><cell cols="7">2620 900 410 2630 1620 1170 1130</cell></row><row><cell>Bounded Buffer</cell><cell cols="2">73990 370</cell><cell cols="2">6790 71870</cell><cell cols="5">20 75330 340 3520 3540</cell></row><row><cell></cell><cell cols="2">73190 170</cell><cell cols="2">6780 71850</cell><cell cols="5">20 74550 140 2040 2060</cell></row><row><cell>Unbounded Buffer</cell><cell>∞</cell><cell>∞</cell><cell>410</cell><cell>∞</cell><cell>∞</cell><cell>∞</cell><cell cols="3">∞ 3890 3890</cell></row><row><cell></cell><cell cols="2">310 130</cell><cell cols="2">410 140</cell><cell cols="5">10 280 100 360 360</cell></row><row><cell>CSM</cell><cell>∞</cell><cell>∞</cell><cell>4710</cell><cell>∞</cell><cell>∞</cell><cell>∞</cell><cell cols="3">∞ 6380 6580</cell></row><row><cell></cell><cell cols="2">∞ 620</cell><cell>4700</cell><cell>30</cell><cell>20</cell><cell cols="4">∞ 440 6300 6300</cell></row><row><cell>Insertion Sort</cell><cell>80</cell><cell>80</cell><cell cols="2">160 110</cell><cell>80</cell><cell>70</cell><cell cols="3">70 90 100</cell></row><row><cell></cell><cell>80</cell><cell>60</cell><cell>150</cell><cell>30</cell><cell>20</cell><cell>70</cell><cell cols="3">50 90 100</cell></row><row><cell>Selection Sort</cell><cell>∞</cell><cell>∞</cell><cell>200</cell><cell>∞</cell><cell>∞</cell><cell>∞</cell><cell cols="3">∞ ∞ 190</cell></row><row><cell></cell><cell>380</cell><cell>80</cell><cell>200</cell><cell>40</cell><cell cols="2">40 340</cell><cell cols="3">70 770 180</cell></row><row><cell>Office Light Control</cell><cell>40</cell><cell>50</cell><cell>50</cell><cell>40</cell><cell>30</cell><cell>50</cell><cell cols="3">50 50 50</cell></row><row><cell></cell><cell>30</cell><cell>40</cell><cell>40</cell><cell>30</cell><cell>30</cell><cell>40</cell><cell cols="3">40 40 40</cell></row><row><cell>Reset Petri Nets</cell><cell>∞</cell><cell>∞</cell><cell>∞</cell><cell>∞</cell><cell>∞</cell><cell>∞</cell><cell>∞</cell><cell>0</cell><cell>0</cell></row><row><cell></cell><cell>10</cell><cell>10</cell><cell>10</cell><cell>0</cell><cell>10</cell><cell>0</cell><cell>10</cell><cell>0</cell><cell>0</cell></row></table></figure>
		</body>
		<back>
			<div type="annex">
<div xmlns="http://www.tei-c.org/ns/1.0"><p>(iv) '×' means that the test has not been performed (indeed, HyTech has no built-in for checking liveness). For the MAP system we show the total verification time with the SumCoeff &amp;WidenPlus option (see the last column of Table <ref type="table">1</ref>). For the ALV system we show the time for four options: default, A (with approximate backward fixpoint computation), F (with approximate forward fixpoint computation), and L (with computation of loop closures for accelerating reachability). For the DMC system we show the time for two options: noAbs (without abstraction) and Abs (with abstraction). For the HyTech system we show the time for two options: Fw (forward reachability) and Bw (backward reachability).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Appendix</head><p>A Kripke structure <ref type="bibr" target="#b8">[9]</ref> is a 4-tuple S, I, R, L , where: (1) S is a set of states, (2) I ⊆ S is a set of initial states, (3) R ⊆ S × S is a transition relation from states to states, and (4) L: S → P(Elem) is a labeling function that assigns to each state s ∈ S a subset L(s) of Elem, that is, a set of elementary properties that hold in s. In particular, there exist the elementary properties true, false, and initial and we have that, for all s ∈ S, (i) true ∈ L(s), (ii) false ∈ L(s), and (iii) initial ∈ L(s) iff s ∈ I. We assume that R is a total relation, that is, for every state s ∈ S there exists at least one state s ∈ S, called a successor state of s, such that s R . A computation path in a Kripke structure K is an infinite sequence of states s 0 s 1 . . . such that s i R s i+1 for every i ≥ 0.</p><p>The Computation Tree Logic (CTL, for short) <ref type="bibr" target="#b8">[9]</ref> is a propositional temporal logic interpreted over a given Kripke structure. A CTL formula ϕ has the following syntax:</p><p>where e belongs to the set Elem of the elementary properties. Note that the set {ex , eu, af } of operators is sufficient to express all CTL properties, because the other CTL operators introduced in <ref type="bibr" target="#b8">[9]</ref> can be defined in terms of ex , eu, and af . In particular, the operator ef is defined as eu(true, ϕ).</p><p>The operators ex , eu, and af have the following semantics. The property ex (ϕ) holds in a state s if there exists a successor s of s such that ϕ holds in s . The property eu(ϕ 1 , ϕ 2 ) holds in a state s if there exists a computation path π starting from s such that ϕ 1 holds in all states of a finite prefix of π and ϕ 2 holds on the rest of the path. The property af (ϕ) holds in a state s if on every computation path π starting from s there exists a state s where ϕ holds.</p><p>Formally, the semantics of CTL formulas is given by defining the satisfaction relation K, s |= ϕ, which tells us when a formula ϕ holds in a state s of the Kripke structure K. Definition 3 (Satisfaction Relation for a Kripke Structure). Given a Kripke structure K = S, I, R, L , a state s ∈ S, and a formula ϕ, we inductively define the relation K, s |= ϕ as follows: K, s |= e iff e is an elementary property belonging to L(s)</p><p>there exists a computation path s 0 s 1 . . . in K such that s = s 0 and K, s 1 |= ϕ K, s |= eu(ϕ 1 , ϕ 2 ) iff there exists a computation path s 0 s 1 . . . in K such that (i) s = s 0 and (ii) for some n ≥ 0 we have that: K, s n |= ϕ 2 and K, s j |= ϕ 1 for all j ∈ {0, . . . , n−1} K, s |= af (ϕ) iff for all computation paths s 0 s 1 . . . in K, if s = s 0 then there exists n ≥ 0 such that K, s n |= ϕ.</p></div>			</div>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">General decidability theorems for infinite-state systems</title>
		<author>
			<persName><forename type="first">P</forename><forename type="middle">A</forename><surname>Abdulla</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Cerans</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Jonsson</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y.-K</forename><surname>Tsay</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. LICS&apos;96</title>
				<meeting>LICS&apos;96</meeting>
		<imprint>
			<publisher>IEEE Press</publisher>
			<date type="published" when="1996">1996</date>
			<biblScope unit="page" from="313" to="321" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Monotonic abstraction (On efficient verification of parameterized systems)</title>
		<author>
			<persName><forename type="first">P</forename><forename type="middle">A</forename><surname>Abdulla</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Delzanno</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><forename type="middle">Ben</forename><surname>Henda</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Rezine</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">International Journal of Foundations of Computer Science</title>
		<imprint>
			<biblScope unit="volume">20</biblScope>
			<biblScope unit="issue">5</biblScope>
			<biblScope unit="page" from="779" to="801" />
			<date type="published" when="2009">2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<monogr>
		<title level="m" type="main">Concurrent Programming: Principles and Practice</title>
		<author>
			<persName><forename type="first">G</forename><forename type="middle">R</forename><surname>Andrews</surname></persName>
		</author>
		<imprint>
			<date type="published" when="1991">1991</date>
			<publisher>Addison-Wesley</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Logic programming and negation: A survey</title>
		<author>
			<persName><forename type="first">K</forename><forename type="middle">R</forename><surname>Apt</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><forename type="middle">N</forename><surname>Bol</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Journal of Logic Programming</title>
		<imprint>
			<biblScope unit="volume">19</biblScope>
			<biblScope unit="issue">20</biblScope>
			<biblScope unit="page" from="9" to="71" />
			<date type="published" when="1994">1994</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Constraint-based abstraction of a model checker for infinite state systems</title>
		<author>
			<persName><forename type="first">G</forename><surname>Banda</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">P</forename><surname>Gallagher</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. WLP 2009</title>
				<meeting>WLP 2009<address><addrLine>Potsdam, Germany</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2009">2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">BDD vs. constraint-based model checking: An experimental evaluation for asynchronous concurrent systems</title>
		<author>
			<persName><forename type="first">T</forename><surname>Bultan</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. TACAS 2000</title>
				<meeting>TACAS 2000</meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2000">2000</date>
			<biblScope unit="volume">1785</biblScope>
			<biblScope unit="page" from="441" to="455" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Action Language Verifier</title>
		<author>
			<persName><forename type="first">T</forename><surname>Bultan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Yavuz-Kahveci</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. ASE 2001</title>
				<meeting>ASE 2001</meeting>
		<imprint>
			<publisher>IEEE Press</publisher>
			<date type="published" when="2001">2001</date>
			<biblScope unit="page" from="382" to="386" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Tabled evaluation with delaying for general logic programs</title>
		<author>
			<persName><forename type="first">W</forename><surname>Chen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><forename type="middle">S</forename><surname>Warren</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">JACM</title>
		<imprint>
			<biblScope unit="volume">43</biblScope>
			<biblScope unit="issue">1</biblScope>
			<date type="published" when="1996">1996</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<monogr>
		<title level="m" type="main">Model Checking</title>
		<author>
			<persName><forename type="first">E</forename><forename type="middle">M</forename><surname>Clarke</surname></persName>
		</author>
		<author>
			<persName><forename type="first">O</forename><surname>Grumberg</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Peled</surname></persName>
		</author>
		<imprint>
			<date type="published" when="1999">1999</date>
			<publisher>MIT Press</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Automatic discovery of linear restraints among variables of a program</title>
		<author>
			<persName><forename type="first">P</forename><surname>Cousot</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Halbwachs</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. POPL&apos;78</title>
				<meeting>POPL&apos;78</meeting>
		<imprint>
			<publisher>ACM Press</publisher>
			<date type="published" when="1978">1978</date>
			<biblScope unit="page" from="84" to="96" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">Constraint-based verification of parameterized cache coherence protocols</title>
		<author>
			<persName><forename type="first">G</forename><surname>Delzanno</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Formal Methods in System Design</title>
		<imprint>
			<biblScope unit="volume">23</biblScope>
			<biblScope unit="issue">3</biblScope>
			<biblScope unit="page" from="257" to="301" />
			<date type="published" when="2003">2003</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">Constraint-based analysis of broadcast protocols</title>
		<author>
			<persName><forename type="first">G</forename><surname>Delzanno</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Esparza</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Podelski</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. CSL &apos;99</title>
				<meeting>CSL &apos;99</meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="1999">1999</date>
			<biblScope unit="volume">1683</biblScope>
			<biblScope unit="page" from="50" to="66" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">Constraint-based deductive model checking</title>
		<author>
			<persName><forename type="first">G</forename><surname>Delzanno</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Podelski</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">International Journal on Software Tools for Technology Transfer</title>
		<imprint>
			<biblScope unit="volume">3</biblScope>
			<biblScope unit="issue">3</biblScope>
			<biblScope unit="page" from="250" to="270" />
			<date type="published" when="2001">2001</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<analytic>
		<title level="a" type="main">Decidability of model checking for infinite-state concurrent systems</title>
		<author>
			<persName><forename type="first">J</forename><surname>Esparza</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Acta Informatica</title>
		<imprint>
			<biblScope unit="volume">34</biblScope>
			<biblScope unit="issue">2</biblScope>
			<biblScope unit="page" from="85" to="107" />
			<date type="published" when="1997">1997</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<analytic>
		<title level="a" type="main">Verifying CTL properties of infinite state systems by specializing constraint logic programs</title>
		<author>
			<persName><forename type="first">F</forename><surname>Fioravanti</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Pettorossi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Proietti</surname></persName>
		</author>
		<idno>DSSE-TR-2001-3</idno>
	</analytic>
	<monogr>
		<title level="m">Proc. VCL&apos;01</title>
				<meeting>VCL&apos;01<address><addrLine>, UK</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2001">2001</date>
			<biblScope unit="page" from="85" to="96" />
		</imprint>
		<respStmt>
			<orgName>University of Southampton</orgName>
		</respStmt>
	</monogr>
	<note type="report_type">Tech. Rep.</note>
</biblStruct>

<biblStruct xml:id="b15">
	<monogr>
		<title level="m" type="main">Verifying infinite state systems by specializing constraint logic programs</title>
		<author>
			<persName><forename type="first">F</forename><surname>Fioravanti</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Pettorossi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Proietti</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2007">2007</date>
			<publisher>IASI-CNR</publisher>
			<biblScope unit="volume">657</biblScope>
			<pubPlace>Roma, Italy</pubPlace>
		</imprint>
	</monogr>
	<note type="report_type">Report</note>
</biblStruct>

<biblStruct xml:id="b16">
	<analytic>
		<title level="a" type="main">Proving safety properties of infinite state systems by compilation into Presburger arithmetic</title>
		<author>
			<persName><forename type="first">L</forename><surname>Fribourg</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Olsén</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. CONCUR&apos;97</title>
				<meeting>CONCUR&apos;97</meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="1997">1997</date>
			<biblScope unit="volume">1243</biblScope>
			<biblScope unit="page" from="96" to="107" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b17">
	<monogr>
		<title level="m" type="main">The Cache Memory Book</title>
		<author>
			<persName><forename type="first">J</forename><surname>Handy</surname></persName>
		</author>
		<imprint>
			<date type="published" when="1998">1998</date>
			<publisher>Morgan Kaufman</publisher>
		</imprint>
	</monogr>
	<note>Second Edition</note>
</biblStruct>

<biblStruct xml:id="b18">
	<analytic>
		<title level="a" type="main">HYTECH: A model checker for hybrid systems</title>
		<author>
			<persName><forename type="first">T</forename><forename type="middle">A</forename><surname>Henzinger</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P.-H</forename><surname>Ho</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Wong-Toi</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">International Journal on Software Tools for Technology Transfer</title>
		<imprint>
			<biblScope unit="volume">1</biblScope>
			<biblScope unit="issue">1-2</biblScope>
			<biblScope unit="page" from="110" to="122" />
			<date type="published" when="1997">1997</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b19">
	<analytic>
		<title level="a" type="main">A new solution of Dijkstra&apos;s concurrent programming problem</title>
		<author>
			<persName><forename type="first">L</forename><surname>Lamport</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Communications of the ACM</title>
		<imprint>
			<biblScope unit="volume">17</biblScope>
			<biblScope unit="issue">8</biblScope>
			<biblScope unit="page" from="453" to="455" />
			<date type="published" when="1974">1974</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b20">
	<analytic>
		<title level="a" type="main">Abstraction of parameterized networks</title>
		<author>
			<persName><forename type="first">D</forename><surname>Lesens</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Saïdi</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Electronic Notes of Theoretical Computer Science</title>
		<imprint>
			<biblScope unit="volume">9</biblScope>
			<biblScope unit="page">41</biblScope>
			<date type="published" when="1997">1997</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b21">
	<analytic>
		<title level="a" type="main">Improving homeomorphic embedding for online termination</title>
		<author>
			<persName><forename type="first">M</forename><surname>Leuschel</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. LOPSTR&apos;98</title>
				<meeting>LOPSTR&apos;98</meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="1999">1999</date>
			<biblScope unit="volume">1559</biblScope>
			<biblScope unit="page" from="199" to="218" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b22">
	<analytic>
		<title level="a" type="main">Coverability of reset Petri nets and other wellstructured transition systems by partial deduction</title>
		<author>
			<persName><forename type="first">M</forename><surname>Leuschel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Lehmann</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. CL 2000</title>
				<meeting>CL 2000</meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2000">2000</date>
			<biblScope unit="volume">1861</biblScope>
			<biblScope unit="page" from="101" to="115" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b23">
	<analytic>
		<title level="a" type="main">Controlling generalization and polyvariance in partial deduction of normal logic programs</title>
		<author>
			<persName><forename type="first">M</forename><surname>Leuschel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Martens</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><forename type="middle">De</forename><surname>Schreye</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">ACM Transactions on Programming Languages and Systems</title>
		<imprint>
			<biblScope unit="volume">20</biblScope>
			<biblScope unit="issue">1</biblScope>
			<biblScope unit="page" from="208" to="258" />
			<date type="published" when="1998">1998</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b24">
	<analytic>
		<title level="a" type="main">Infinite state model checking by abstract interpretation and program specialization</title>
		<author>
			<persName><forename type="first">M</forename><surname>Leuschel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Massart</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. LOPSTR&apos;99</title>
				<meeting>LOPSTR&apos;99</meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2000">2000</date>
			<biblScope unit="volume">1817</biblScope>
			<biblScope unit="page" from="63" to="82" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b25">
	<monogr>
		<ptr target="www.iasi.cnr.it/∼proietti/system.html" />
		<title level="m">The MAP Transformation System</title>
				<imprint>
			<date type="published" when="2010">2010</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b26">
	<analytic>
		<title level="a" type="main">Constraint logic programming for local and symbolic model-checking</title>
		<author>
			<persName><forename type="first">U</forename><surname>Nilsson</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Lübcke</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. CL 2000</title>
				<meeting>CL 2000</meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2000">2000</date>
			<biblScope unit="volume">1861</biblScope>
			<biblScope unit="page" from="384" to="398" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b27">
	<analytic>
		<title level="a" type="main">Convex hull abstractions in specialization of clp programs</title>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">C</forename><surname>Peralta</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">P</forename><surname>Gallagher</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. LOPSTR 2002</title>
				<meeting>LOPSTR 2002</meeting>
		<imprint>
			<date type="published" when="2003">2003</date>
			<biblScope unit="volume">2664</biblScope>
			<biblScope unit="page" from="90" to="108" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b28">
	<analytic>
		<title level="a" type="main">Myths about the mutual exclusion problem</title>
		<author>
			<persName><forename type="first">G</forename><forename type="middle">L</forename><surname>Peterson</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Information Processing Letters</title>
		<imprint>
			<biblScope unit="volume">12</biblScope>
			<biblScope unit="issue">3</biblScope>
			<biblScope unit="page" from="115" to="116" />
			<date type="published" when="1981">1981</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b29">
	<analytic>
		<title level="a" type="main">A platform for combining deductive with algorithmic verification</title>
		<author>
			<persName><forename type="first">A</forename><surname>Pnueli</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Shahar</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. CAV&apos;96</title>
				<meeting>CAV&apos;96</meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="1996">1996</date>
			<biblScope unit="volume">1102</biblScope>
			<biblScope unit="page" from="184" to="195" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b30">
	<analytic>
		<title level="a" type="main">Efficient model checking using tabled resolution</title>
		<author>
			<persName><forename type="first">Y</forename><forename type="middle">S</forename><surname>Ramakrishna</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><forename type="middle">R</forename><surname>Ramakrishnan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><forename type="middle">V</forename><surname>Ramakrishnan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><forename type="middle">A</forename><surname>Smolka</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Swift</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><forename type="middle">S</forename><surname>Warren</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc.CAV&apos;97</title>
				<meeting>.CAV&apos;97</meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="1997">1997</date>
			<biblScope unit="volume">1254</biblScope>
			<biblScope unit="page" from="143" to="154" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b31">
	<analytic>
		<title level="a" type="main">Verification of parameterized systems using logic program transformations</title>
		<author>
			<persName><forename type="first">A</forename><surname>Roychoudhury</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><forename type="middle">Narayan</forename><surname>Kumar</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><forename type="middle">R</forename><surname>Ramakrishnan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><forename type="middle">V</forename><surname>Ramakrishnan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><forename type="middle">A</forename><surname>Smolka</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. TACAS 2000</title>
				<meeting>TACAS 2000</meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2000">2000</date>
			<biblScope unit="volume">1785</biblScope>
			<biblScope unit="page" from="172" to="187" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b32">
	<analytic>
		<title level="a" type="main">Deductive model checking</title>
		<author>
			<persName><forename type="first">H</forename><forename type="middle">B</forename><surname>Sipma</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><forename type="middle">E</forename><surname>Uribe</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Z</forename><surname>Manna</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Formal Methods in System Design</title>
		<imprint>
			<biblScope unit="volume">15</biblScope>
			<biblScope unit="page" from="49" to="74" />
			<date type="published" when="1999">1999</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b33">
	<analytic>
		<title level="a" type="main">An algorithm of generalization in positive supercompilation</title>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">H</forename><surname>Sørensen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Glück</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. ILPS&apos;95</title>
				<meeting>ILPS&apos;95</meeting>
		<imprint>
			<publisher>MIT Press</publisher>
			<date type="published" when="1995">1995</date>
			<biblScope unit="page" from="465" to="479" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b34">
	<analytic>
		<title level="a" type="main">Model checking and abstraction to the aid of parameterized systems (A survey)</title>
		<author>
			<persName><forename type="first">L</forename><forename type="middle">D</forename><surname>Zuck</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Pnueli</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Computer Languages, Systems &amp; Structures</title>
		<imprint>
			<biblScope unit="volume">30</biblScope>
			<biblScope unit="issue">3-4</biblScope>
			<biblScope unit="page" from="139" to="169" />
			<date type="published" when="2004">2004</date>
		</imprint>
	</monogr>
</biblStruct>

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