A testing strategy for abstract classes One of the characteristics of the increasingly widespread use of object-oriented libraries and the resulting intensive use of inheritance is the proliferation of dependencies on abstract classes. Since abstract classes cannot be instantiated, they cannot be tested in isolation using standard execution-based testing strategies. A standard approach to testing abstract classes is to instantiate a concrete descendant class and test the features that are inherited. This paper presents a structured approach that supports the testing of features in abstract classes, paying particular attention to ensuring that the features tested are those defined in the abstract class. Two empirical studies are performed on a suite of large Java programs and the results presented. The first study analyses the role of abstract classes from a testing perspective. The second study investigates the impact of the testing strategy on the programs in this suite to demonstrate its feasibility and to comment on the pragmatics of its use. The object-oriented (OO) software development paradigm places strong emphasis on code reuse, and a typical OO software application will make use of variety of OO libraries. These libraries range from language-standard library packages, through domain-specific application programming. In the remainder of this paper the focus will be on the semantics of inheritance as provided by the Java programming language and described by Gosling et al. [10] . An abstract class in Java is one that either defines an abstract method, inherits an abstract method without defining it, or implements an interface without defining all its methods. Any attempt to directly create an instance of an abstract class in Java results in a compile-time error. An abstract method in Java is a method declared by signature only, with no method body.. In what follows inherited methods of a class are partitioned into two sets:. • Methods that are inherited unchanged are referred to as inherited methods (called recursive methods by Harrold et al. [4] ) • Methods declared in a subclass with the same signature as methods declared in an ancestor and with a new implementation are referred to as overridden methods (called redefined methods by Harrold et al. [4] ). If an inherited method only has dependencies in the parent class where it is defined that method is called a truly inherited method. This concept is discussed further in Section 4.3 and identifying truly inherited methods is a key aspect of the testing strategy described in the paper. This subsection presents an outline of the algorithm that produces a testing strategy for the features in an abstract class. The input to the algorithm is the component (package(s) or class cluster(s)) containing the abstract classes and their immediate concrete descendants. The output for each abstract class consists of a test order for the methods in the abstract class, the list of stubs required during testing, the concrete derived classes where each method will be tested, and if needed a class developed solely to support testing.. The four main steps of the testing approach are as follows:. Step 1: Catalog the classes in the component under test to identify class properties and features. This step identifies the abstract classes (A i s) and concrete children (C (A i ) j s) of each abstract class [31] . The intermediate data generated in the cataloging process will be required to support steps later in the approach.. Step 2: Identify the truly inherited methods in the concrete descendants of each abstract class.. For each concrete child C (A i ) j of abstract class A i :. (a) Perform dependency analysis on the set of methods in each. , and redefined methods, using the data generated in Step 1. (c) Generate a modified inter-method call graph for each C (A i ) j using the data in parts 2(a) and 2(b) to identify truly inherited methods.. Step 3: Generate a near-minimal set cover of the concrete descendants for each abstract class using the truly inherited methods. Step The following subsections elaborate on aspects of this algorithm using an illustrative example. Figure 1 shows the Java code for the illustrative example that will be used throughout the paper. The corresponding class diagram for the Java code is shown in Figure 2 . The code in Figure 1 contains a class hierarchy consisting of four classes: the abstract base class ACsEx.A (A i ), as well as classes ACsEx.B1, ACsEx.B2, and ACsEx1.B3, the three concrete descendants of A (referred to as C (A i ) j s in the algorithms presented in the paper). There is also class ACsEx.P used by the methods in classes ACsEx.A, ACsEx.B1, and ACsEx1.B3. To aid in understanding the Java code, Figure 4 shows the call graphs for the methods in the classes ACsEx.B1, ACsEx.B2, and ACsEx1.B3. The example was constructed to include several of the features typical in large Java applications, including: inheritance of features across packages; inherited fields and methods; redefined methods; a combination of access specifiers for the methods in the abstract class ACsEx.A, including features declared as package private; and various combinations of bindings of fields to methods. In this section a study of 16 Java applications is presented to determine the importance that abstract classes might have in the testing process. It is shown that even though abstract classes form a relatively small proportion of the overall number of classes, a high proportion of concrete classes have a direct dependence on them. Further, the level of incoming dependence and the size of cyclic dependencies as measured by the fanin and scc metrics tend to be higher for abstract classes than for concrete classes in most applications. Testing OO software continues to present many challenges to researchers and industry practitioners. This paper has focused on testing abstract classes that, unlike concrete classes, cannot be instantiated directly, thereby making many of the testing techniques developed to test OO software unusable.. In this paper a strategy for testing abstract classes that makes qualified use of its concrete descendant classes is presented. The strategy involves a lightweight dependency analysis of the inherited methods of the concrete descendants and uses the results of this analysis to generate an integration test order for the methods in the abstract class. The test order generated seeks to minimize the number of stubs required during testing. This paper is an extension of earlier work and includes two empirical studies on a corpus of 16 large Java applications and the results have led to the following main conclusions:. 1. A high percentage of concrete classes have a direct dependence on abstract classes, even though the number of abstract classes in an application may be relatively small. 2. In general an abstract class cannot be solely tested through its concrete descendants or any such subset. 3. The edge selection criteria for breaking the cycles in an inter-method dependency graph have a small impact on the number of stubs required to test the methods in an abstract class.

O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O B I O B I O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


Correlation Energy and Entanglement Gap in Continuous Models Our goal is to clarify the relation between entanglement and correlation energy in a bipartite system with infinite dimensional Hilbert space. To this aim we consider the completely solvable Moshinsky's model of two linearly coupled harmonic oscillators. Also for small values of the couplings the entanglement of the ground state is nonlinearly related to the correlation energy, involving logarithmic or algebraic corrections. Then, looking for witness observables of the entanglement, we show how to give a physical interpretation of the correlation energy. In particular, we have proven that there exists a set of separable states, continuously connected with the Hartree-Fock state, which may have a larger overlap with the exact ground state, but also a larger energy expectation value. In this sense, the correlation energy provides an entanglement gap, i.e. an energy scale, under which measurements performed on the 1-particle harmonic sub-system can discriminate the ground state from any other separated state of the system. However, in order to verify the generality of the procedure, we have compared the energy distribution cumulants for the 1-particle harmonic sub-system of the Moshinsky's model with the case of a coupling with a damping Ohmic bath at 0 temperature. The concept of entanglement has been recently considered by many authors in connection with several properties of the quantum systems and as a potential resource in quantum computation and information processing both in discrete and in continuous variable systems [1] [2] . Moreover, entanglement has also been recognized to play an important role in the study of many particle systems [3] and experimental and theoretical studies have demonstrated that it can affect thermodynamical properties both of the quantum phase transitions in the condensed matter and in molecular systems [4] [5] [6] . However, most of the studies on the subject consider only finite dimensional Hilbert models, which is not the typical situation occurring in atomic/molecular physics. As pointed out in [2] , the theory of the entanglement for the infinite dimensional setting is full of difficulties, which can be cured choosing suitable subsets of the density matrices. In particular, the von Neumann entropy is not a continuous function in the Hilbert space, and for any given state of finite entanglement, one can find at least another state closer as we want to the previous one in trace norm, which is infinitely entangled.. However, a new area of research has been opened by [6] [7] [8] , where it was shown that the entanglement, even if it is not a quantum observable, can be used in evaluating the so-called correlation energy: that is the difference between the true eigenvalue energy of a given composite system of identical entities, with respect to that one prescribed by the Hartree -Fock (HF) method. In [9] the case of the formation of the Hydrogen molecule was discussed, and a qualitative agreement between the von Neumann entropy of either atom ( as a measure of the entanglement of formation of the whole system) and the correlation energy as functions of the inter-nuclear distance was shown. However, the extension of this idea to multi-atomic molecules and its effectiveness remains still unclear [8] [9] . Actually, the correlation energy is an artifact of the approximation procedure, then it is not a physical observable and, by second, it can be modified by the adopted method of calculations. Nevertheless, since any other approximating disentangled state has also a larger energy expectation value with respect to the HF state, one is lead to look at the correlation energy as an entanglement gap in the sense of [7] . Adding any further correction term at the wave function has to decrease the energy expectation value to the Hamiltonian eigenvalue and increase the entanglement at the same time up to fill the gap, describing in such a way a peculiar domain in state space, around the exact one. Thus, the first aim is to quantify such a kind of relation, at least on a specific model, finding a quantitative expression of the entanglement in terms of the correlation energy of the ground state for a composite bipartite system. In order to have an analytically tractable example containing all the desired features, we treated with a family of two coupled harmonic oscillators [10] in 3 dimensions. The coupling constant of the two parts is in a one-to-one correspondence with the correlation energy and and with entanglement estimators. Viceversa, assuming that such a relation is invertible, and then an estimation of the correlation energy can be expressed in terms of the entanglement, one may ask how direct measurements on one of component subsystems can provide such quantities. To this aim we have found for the considered model an expression of the concurrence, in terms of the momenta of the 1-particle subsystem energy probability distribution, from the knowledge that the composite system is in its ground state. Thus we have an entanglement witness and an a priori estimation of the correlation energy. However, in concrete we have to be able to distinguish the energy probability distribution of the entangled state from any other yielded by a mixed state or a pure thermal state. First we give an upper bound to the environmental temperature, over which all our procedure losses validity. Then, we compared the distribution generated by coupling a single harmonic oscillator with an Ohmic bath at 0-Temperature, by the analysis of all energy distribution cumulants.. In Sec. 2 we briefly review the main properties of the model: its exact fundamental state, the HF approximation and the correlation energy. Sec. 3 for the fundamental state of the Moshinsky's model we evaluate the von Neumann entropy and the concurrence in terms of the correlation energy. Since the concurrence can be expressed in terms of the dispersions of observable conjugated quantities, also the correlation energy takes a well defined physical meaning. A similar relation can be established for the fidelity. In Sec. 4 we prove the existence of a continuous manifold of pure separable states, con-taining the HF state, having an overlap with the exact ground state, which can be larger with respect to the former. In Section 5 we describe how the 1-particle energy probability distribution for the exact state of the model can be distinguished from that one for a single harmonic oscillator coupled with an Ohmic bath at 0-Temperature. Some final remarks are addressed in the Conclusions. In the present article we have clarify the relation between the entanglement and correlation energy in a bipartite system with infinite dimensional Hilbert space. We have considered the completely solvable Moshinsky's model of two linearly coupled harmonic oscillators, which may constitute a simple case before studying more complicated systems, like double well potentials. The system has a coupling constant, which can be varied in a finite range. Thus, it continuously parametrizes two special curves in the space states: one containing the exact ground states, the other the separable HF states. Of course, for vanishing coupling the two curves emerge from the same state, but their separation can be described in terms of norm, entanglement and energy correlation. The peculiarity of the second curve is to lie always in a set of 0 entropy entanglement states, while along the first one it increases monotonically (in K), with a logarithmic divergence when the ground state becomes degenerated. On the other hand, a similar description is given in terms of the correlation energy, which in principle is defined only for pairs of corresponding states (at the same coupling constant) in the two curves. We have proved that entanglement and correlation energy are one-to-one along these curves, at least for the considered model. However, they are not simply proportional, but at small couplings they have a quite different rate of increasing. This phenomenon occurs not only if one uses the entropy of entanglement for pure states, but also if one introduces the concurrence. However, in the considered model certain algebraic approximated expressions of the correlation energy in terms of the concurrence are given, so that an artifact of the calculation methods can take a physical interpretation. However, at the moment we have not a general method to compute directly the coefficients of such type of expansions. These could be very useful in order to have an alternative a priori estimation of the errors made in numerical computations of the correct expectation values of the energy. Such a type of relation may be useful in the studies of bipartite systems with many inner degrees of freedom, like the dimers of complex molecules (see [9] for instance). In this respect the explored concept of entanglement gap and its identification we made with the correlation energy may play an important role: it represents the energy range we have to be able to measure, in order to establish if a composed system is, or not, entangled. However, the theory of the entanglement gap for systems with infinite dimensional Hilbert space does not seem completely developed as for the finite dimensional case and further investigations are needed. In the final section we have shown that, conditionally to the knowledge that the whole system is not in a separated ground state, one can estimate the entanglement by energy measurements on the single harmonic oscillators. This can be done by two sequence of position and momentum measurements, as well by energy measurements. The distribution of the energy measurements is sufficiently characterized in terms of its cumulants. This analysis enable us to compare among different systems at 0 temperature and distinguish their ability to generate entanglement, for instance by using the parameter R introduced in (52). Finally, via the formula (53) we propose a new estimator of the entanglement, based on the first two momenta of energy distribution of the considered subsystem. We plan to check the how good is the present approach in considering bipartite multi-particle systems and non linearly coupled systems. In particular, we would like to consider integrable systems, like in [18] , in which a complete analytic control of the calculations is at the hand. Another direction of research is to consider a different entropy entanglement parameter, like the quantum version of the Tsallis entropy [19] .

O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


Numerical experiments on the capacity of quantum channel with entangled input states The problem whether entangled input states can increase the capacity of quantum channel is investigated. We apply one of the quantum Arimoto-Blahut type algorithms to this problem and see that the results suggest the negative answer 1 . The coding theorem for quantum channel was proved in recent publications [7, 12] combined with a pioneer work [6] . This theorem gives the formula of the capacity of quantum channel with product input states. However, whether entangled input states can increase the capacity of quantum channel is open. Moreover, this question can be regarded as a special case of a more general problem whether the capacity of product quantum channel exhibits additivity. In the present study, the latter problem is examined numerically.. 2 Quantum channel and its capacity 2 We carry out numerical experiments to investigate the additivity of the capacity of product quantum channel in H 1 = H 2 = C 2 and H 1 = H 2 = C 3 . Table 1 Table 3 . These results suggest that the additivity of product quantum channel capacity always holds. Figure 1 illustrates an example of a change in quantum mutual information I(π (k) , Γ (1) ⊗ Γ (2) ) starting from some entangled states in S(H. ). In addition, we measure the entanglement of the states in π (k) = (λ. where σ defined by partial trace. Figure 2 shows how the states get disentangled through the recursion.. Moreover, the present experiments suggest that the probability distribution π * := argmax π I(π; Γ (1) ⊗ Γ (2) ) is the product probability distribution of π * 1 = (λ * i1 ; σ * i1 ) and π * 2 = (λ * j2 ; σ * j2 ), assigning probability λ * i1 λ * j2 to the state σ * i1 ⊗ σ * j2 , where π * 1 := argmax π I(π; Γ (1) ) and π * 2 := argmax π I(π; Γ (2) ). . where I(Y ;Ŷ ) is the classical mutual information. This leads to. In addition, we have. where. Here we use the monotonicity of relative entropy. Substituting (16) into (15), letting N → ∞ and taking supremum with respect to {Φ N } N , we. Conversely, since C(Γ ⊗N ) is the supremum of the limit values of the rates of asymptotically error-free coding systems whose codewords are restricted to product states of the form ρ 1 ⊗ · · · ⊗ ρ n ∈ S(H ⊗N n 1 ), where ρ i (i = 1, · · · , n) are arbitrary states on H ⊗N 1 , it cannot be greater than NC(Γ). Hence we haveC(Γ) ≥ lim where V = {V k } k is a collection of bounded operators B(H 1 , H 2 ) and satisfy k V * k V k = I. This form is called operator-sum representation or Kraus decomposition. We call V a generator of Γ (see e.g. [5] ).

O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


A event occurrence rules based compact modeling formalism for a class of discrete event systems The analysis, failure diagnosis and control of discrete event systems (DESs) requires an accurate model of the system. In this paper we present a methodology which makes the task of modeling DESs considerably less cumbersome, less error prone, and more user-friendly than it usually is. In doing so we simplify the modeling formalism of [4, 51, by eliminating "precedence relations", and capturing them as part of the "event occurrence rules". Under the new modeling formalism the size of the system model is polynomial in the number of signals; whereas the number of states in the commonly used automata models is exponential in the number of signals. We present automated techniques for deriving an automaton model from the model in the proposed formalism. There exist numerous types of models of DESs [3] which include automata based models [SI, boolean models [l] , and polynomial representations [SI. [9] provides a survey of modeling and analysis methods such as Temporal Logic, Calculus of Events, Petri Nets and Minimax Algebra. In [4, 51, a technique for obtaining the automata models of DESs was proposed which made the task of modeling considerably easier. The model was ' described in terms of initial conditions, weighted sensor event occurrence rules, and precedence relations. This work simplifies the modeling formalism of [4, 5] by eliminating precedence relations among output events, and captures them as part of the event occurrence rules.. Further the procedure of automatic derivation of an equivalent automaton model is considerably simplified through the use of interacting extended automata. All the signals in the system are taken to be binary Valued, and transitions between binary levels false and t r u e are designated as evqts. In order to obtain the overall model of the system, we define the synchronous composition of two extended automata, {G; := ( X i ,~; , E ; , s 4 , X i m ) } i = l ,~.. The synchronous composition of GI and Gz, denoted GIIIGz, is the automaton (X, C, E,zO,zm), where.X := XI x Xz, C := E1 U Cz, zo := (zp,z!j'), and the set of transitions Eu is the set of transitions which occur synchronously with the participation of both G1 and Gz, whereas E8 and E7, respectively, are the set of transitions that occur asynchronously with the participation of GI and GZ only.. 3 Proposed modeling formalism. The proposed modeling formalism applies to systems for which, (i) the system inputs and system outputs are binary valued, and (ii) all the system states are determined by the current values of input and output signals of the system. The model consists of initial conditions and event occurrence rules as described next.

O O O O O O B O O O O O B I I O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


A vortex level set method for the two-way coupling of an incompressible fluid with colliding rigid bodies We present a vortex method for the simulation of the interaction of an incompressible flow with rigid bodies. The method is based on a penalization technique where the system is considered as a single flow, subject to the Navier-Stokes equation with a penalization term that enforces continuity at the solid-fluid interface and rigid motion inside the solid. Level set functions are used to capture interfaces, compute rigid motions inside the solid bodies and model collisions between bodies. A vortex in cell algorithm is built on this method. Numerical comparisons with existing 3D methods on problems of sedimentation and collision of spheres are provided to illustrate the capabilities of the method. Vortex methods have long been used for the simulation of bluff-body flows. The success of these methods comes from the combination of several features, well illustrated in the pioneering work [18] for 2D cylinder wakes, as well in more recent 3D calculations [21, 11] : stability, localization of the computations in the regions of interest and natural treatment of far-field boundary conditions. Moreover when combined with fast grid solvers to compute velocity fields, and more generally all quantities that are not directly related to the transport of vorticity, these methods offer for external flows economical alternatives to more traditional grid-based Eulerian solvers.. In this paper we consider the extension of the Vortex In Cell method [7] to the case where several rigid bodies interact under the action of gravity with an incompressible flow. The difference with previously considered cases is that the rigid bodies move freely, and eventually collide, under the combined action of gravity and forces imparted by the flow. The numerical challenge in this problem lies in the coupling of stresses and velocities at the moving fluid/solid interfaces and in the modeling of collisions.. Let us first consider the fluid/solid interaction problem. This type of problem is often dealt with by ALE (for Arbitrary Lagrangian Eulerian) methods where the interface is tracked, flow and solid equations are solved separately, and continuity conditions for the velocity and stress are explicitly enforced at the interface (see [16] and the references therein). These methods are accurate but hard to implement in 3D and expensive, in particular if several objects interact in a non laminar flow. Here we consider a different approach. The fluid-solid is considered as a single flow. The interface is captured by a level set method and the rigid constraint together with the continuity conditions are implicitly recovered through a penalization method. When formulated in the primitive variables, this method extends to the case of the two-way fluid-solid coupling the method of [1] which was introduced for the computation of bluff-body flows. The benefit that can be expected from this approach comes from the fact that fast grid solvers, based for instance on particle or finite-difference methods, can be used, leading to substantial computational savings, in particular for 3D cases, compared to body fitted methods.. Our method is related in particular to the fictitious domain approach of [14] and to the projection method of [20] . The fictitious domain approach of [14] was already derived as an alternative to ALE methods. The rigid motion inside the solid bodies is enforced through a Lagrange multiplier, which somehow plays the role of the pressure for the incompressibility constraint. The method is defined in a variational framework which is well suited for finite element discretization. A number of validations of this method have been performed and we will extensively use them to test our approach. A more recent work in the same spirit is the penalty method of [17] . In this work the rigid motion is also modeled in a variational framework leading to a minimization problem for the velocity. The functional to minimize in the space of rigid motions inside the body is approximated by a functional over all velocities with a penalization of the deformation inside the rigid bodies. In our method the interfaces are captured by advection equation which are connected to the flow equations only through the advection velocity. The added flexibility in the choice of the solvers makes the method fast and rather simple to implement, in particular when several bodies are considered. The projection method of [20] consists of alternating Navier-Stokes solvers and projection steps where the rigid motion is recovered inside the body. This method is in the same spirit as the classical splitting method for the Navier-Stokes equations to enforce divergence free flows. As we will see it appears as a particular case of our penalization method, when a first order explicit time-discretization is chosen. Our approach is more general. In particular an implicit treatment of the penalization term allows larger penalization coefficients and thus more accurate results.. Besides providing a simple way to capture body boundaries and enforce rigid motions, an additional benefit of level set methods is to enable simple collision models to deal with contacts. Our starting point is a simple dynamical system with short range Hamiltonian forces to model single point collisions. The level set approach allows to generalize in a very straightforward way this system to more general collisions. Level set functions are used both to measure distance between interfaces and to localize the forces on the interfaces. The resulting collision forces appear just as an additional force in the single flow equation representing the fluid/solid system.. In this paper we focus on a vorticity formulation based on this approach which is appropriate for a particle discretization. We derive and illustrate particle-grid algorithms suitable for the simulation of the level set fluid-structure model. This work is part of a series of papers where we systematically investigate multi-phase flow modeling and the associated algorithms for generic fluid-structure interaction problems. [2] is concerned with the numerical analysis of the underlying penalization method in primitive variables, and [6] deals with application of the present method in computer graphics. References [8, 9] deal with modeling and numerical issues of related methods for the case of elastic solids.. An outline of the paper is as follows. In section 2 we present our flow model. In section 3 we describe its particle discretization. In section 4, to validate our method and discuss its efficiency, we focus on test cases where quantitative comparisons with [14, 20] are possible, namely the sedimentation and collision of spheres. Finally section 5 is devoted to concluding remarks and perspectives. We have presented a vortex level set method for the two-way coupling of a fluid with rigid bodies. The method is based on a penalization fluid model to enforce rigid motion inside the solid, coupled with a level set method to capture the interfaces. The level set method is also used to distribute collision forces to handle the contact between rigid bodies. A particle discretization of this model was implemented and tested in 2D and 3D flows against experiments and other fictitious domain methods. For fixed bodies the method appears as a simplified versions of vorticity creation algorithms that are commonly used for the simulation of bluff-body flows by vortex methods. For the more general case of fluid-solid interaction it essentially combines a classical vortex in cell method with an advection equation that can be solved analytically for the rigid bodies. Although the rigid motion constraint is not exactly satisfied inside the bodies, the accuracy of the method was found to be satisfactory. In addition the method enjoys the usual robustness of vortex methods which allows large time-steps. To further illustrate the capabilities of the method we show the example of a complex scene where three dimensional effects and strong interactions with the fluid are apparent. Figure 10 shows the fall of a cup on a water-air free surface. The density of the cup is 1.2. In this case the fluid has a variable density but the ideas described above readily apply in this case. An additional level set function was used to capture the air-water interface [5, 15] . No surface tension was assumed on this free surface. The viscosity of air and water was taken equal to 10 −4 . The following successive events can be observed : the splash of the cup on the water, a slight rebound of the cup with a rotation effect, and finally the filling of the cup with water before it sinks. This calculation used 128 3 grid points. Although it is hard to validate in a quantitative way this type of calculations, these sequences do demonstrate that our model, although it essentially relies on a vortex code in a square box combined with a couple of advection equations, is able to handle the complex interaction of rigid bodies with free surface flows.

O O B I I O O O O O O O O O O O O O O O B I O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


Extended probe method for linkage discovery over high-cardinality alphabets The work addresses the problem of identifying the epistatic linkage of a function from high cardinality alphabets to the real numbers. It is a generalization of Heckendorn and Wright's work that restricts problem representation into the binary-string domain. Discrete Fourier transform is used to analyze underlying structure in high-cardinality alphabets space. Boolean operators are replaced with new operators such as ⊕, , ⊗ and so on in high cardinality alphabets. The "probe" formulation is redesigned to determine epistatic properties of non-binary function. Theoretical analysis shows the close relationship between probe value and problem structure. A deterministic and a stochastic algorithm based on properties of probes are proposed to completely identify the linkage structure and rigourously compute all Fourier coefficients. Some discussion about linkage detection for continuous problems is given.

O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O


Separating touching objects in remote sensing imagery: the restricted growing concept and implementations This paper defines the Restricted Growing Concept (RGC) for object separation and provides an algorithmic analysis of its implementations. Our concept decomposes the problem of object separation into two stages. First, separation is achieved by shrinking the objects to their cores while keeping track of their originals as masks. Then the core is grown within the masks obeying the guidelines of a restricted growing algorithm. In this paper, we apply RGC to the remote sensing domain, particularly the Synthetic Aperture Radar (SAR) sea ice images. When two gray level objects touch with shared boundaries, it makes shape analysis and recognition difficult in areas such as industrial vision applications [3] , in aerial image and terrain analysis [7] or in shape analysis [5] . The objectives of our work are to achieve object separation, and to preserve (or approximate as closely as possible) the object's original shape and size. The tradeoff between separation and preservation of size and shape is inherent in all object separation algorithms. To address this problem, we have designed an technique based on the Restricted Growing Concept (RGC), that achieves separation and, then, re-establishes the sizes and shapes of the objects lost or distorted during the separation process by performing restricted growing.. In this paper, we present the restricted growing concept and address the issues of preserving details through different designs of masks, investigate the use of morphological reconstruction and h-domes in extracting cores, compare the differences between the performance of the morphological operators in synthetic and remotely sensed images, and describe a reverse skeletonization algorithm to guide the growth of object pixels in the image. We finally present twelve algorithms of RGC and examine their weaknesses and strengths when applied to Synthetic Aperture Radar (SAR) sea ice images.. The main idea behind the RGC is to decompose the object separation problem into two steps: The first step achieves separation, accomplished by shrinking objects such that each object is separated from its touching neighbors. The second step preserves size and shapes by growing the shrunk objects to restore them. To ensure that the separation established after the first stage is not disturbed, our growing process is restricted.. In our approach, a mask object is a version of the original object such that the original size of the object is preserved. Mask objects are usually interconnected and can encompass one or more core. objects. An image with mask objects is a mask image. A core object is a version of the original object such that its linkages to neighboring objects are disconnected, satisfying object separation. Such an object is reduced in size, but it captures the general shape of its original version. An image with core objects is a core image. Finally, a restricted growing algorithm grows a core object within the boundary of its corresponding mask object while preserving the object's separation from its neighbors. This definition implies that the growing process stops either when the boundary of the object has been reached or when further growing will damage the object's separation from its neighbors. Thus, conventional region growing [12] or morphological dilation schemes are not restricted growing algorithms.

O O O O B I I O B I O O O O O O O B I O O O B I O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O


Tree Automata for Schema-Level Filtering of XML Associations In this paper we present query-filtering techniques based on bottom-up tree automata for XML access control. In our authorization model (RXACL), RDF statements are used to represent security objects and to express the security policy. We present the concepts of a simple security object and an association security object. Our model allows us to express and enforce access control on XML trees and their associations. We propose a query-filtering technique that evaluates XML queries to detect disclosure of association-level security objects. We use tree automata to model-security objects. Intuitively a query Q discloses a security object o if and only if the (tree) automata corresponding to o accepts Q. We show that our schema-level method detects all possible disclosures, i.e., it is complete. Several XML access control models have been developed recently (Bertino et al, 2001 (Bertino et al, , 1999 (Bertino et al, , 2000 Damiani et al, 2000; Dridi and Neumann, 1998; Gabillon and Bruno, 2002; Kudo and Hada, 2000; Murata et al, 2003; Luo et al, 2004) . They are based on traditional access control lists and provide extensions to XML syntax. Existing models allow node-level security granularity by assigning access restrictions to the nodes and links of XML documents. However, none of these models provide access control for data associations. Intuitively, an association security object is an XML subtree that is not allowed to be accessed by a user, while all of its proper subtrees are permitted separately. Incorporating association in an access control model increases data availability while preserving confidentiality.. To illustrate the need of access control for data associations, we present an example in the medical domain. Assume that XML format is used for storing patient records. The DTD for patients' health records is shown in Figure 1 . Alice, who is an intern at the hospital, needs limited access to the database. Her duties involve two main tasks: 1) Alice contacts patients to collect feedback about their treatments; thus, Alice is allowed to read <name> and <phone> elements, 2) Alice prepares statistical reports based on Age, Race and Diagnosis of the patients. These tasks require that Alice is allowed to access both contact and diagnosis information for all patients. However, Alice is not authorized to access data about the name and diagnosis of the patients. Both, the functionality requirements of Alice's work and the security restrictions cannot be satisfied using traditional access control list based methods.. The RXACL architecture, introduced in Gowadia and Farkas (2003) , provides flexible access control granularity by allowing security classification of XML nodes and subtrees (simple security objects), and associations among nodes (association security objects). In Gowadia and Farkas (2003) we proposed a technique to enforce association-based access control at data-level (i.e., check for security violation after query processing). Data-level access control is outside the scope of this paper. In this paper we extend RXACL architecture by presenting techniques for performing a security check before the query is processed. Our work is similar to those proposed by Murata et al (2003) and Luo et al (2004) . However, their methods support node-level security objects only. The automata model proposed by these authors is not sufficient to model association-level security objects. In this paper, we use bottom-up tree automata to represent security objects.. We propose query pre-processing techniques to recognize disclosure of association level security objects by XML queries. This analysis is data-independent and performed before the query is processed. The result of security evaluation can be either (1) association objects are disclosed, (2) association objects are not disclosed, or (3) association objects may be disclosed. Options 1 and 2 indicate that the query should be rejected or accepted, respectively. For option 3, data-level analysis is required to evaluate whether a security violation occurs or not.. We present a two-layered association filtering method. First we detect disclosure of association in a given query-pattern, i.e., in information encoded in the XML query itself. Second, we extend query-pattern with document schema to represent all schema information that the query answer would reveal to a user. XML query-patterns are labeled-trees, where node labels may be variables, constants, or the special symbol '//'(self-or-descendant axis (Clark and DeRose, 1999) ). We model association security objects with pattern automata (Definition 8). A pattern automaton takes (extended) query-patterns as input and accepts them if and only if the input discloses the security object represented by the pattern automata. The main technical contributions of this paper are the development of pattern automata for security objects and the notion of extended query-pattern. We present algorithms to construct query-pattern, pattern automata, and to detect disclosure of security objects. The organization of the paper is as follows: next section presents an overview of RXACL architecture and query filtering mechanism. Section 3 introduces formal definitions of basic constructions used in this paper. Section 4 presents algorithms for constructing query-patterns, association pattern automata and to detect association disclosures. Section 5 introduces the notion of extended query-pattern and presents a schema-level security analysis of query. Our conclusions are presented in section 6 along with recommendations for future work. Figure 2 shows the RXACL architecture. The architecture contains four main components: 1. Query filter 2. Query engine, 3. Data level access control, and 4. User history. The query filtering component performs schema-level analysis to determine whether an answer to the input query: (1) violates access control policy (violating), (2) does not violate the access control policy (safe), or (3) requires a data-level security check to detect possible violations (unsafe). The XML query engine is responsible for generating responses to user's requests. RXACL uses an existing XML query engine, the development of such an engine is outside the scope of this paper. The data-level access control component analyzes the query-answer based on the security policy and data previously released to the user (Gowadia and Farkas, 2003) . The history component keeps track of answered query-patterns and data released to each user. In this paper we presented a bottom-up tree automata (pattern-automata) based technique for filtering XML association before query evaluation. We gave algorithms for constructing querypattern, pattern automata, and for the detection of disclosure of an association security object in a query-pattern. In addition we extended the query-pattern with schema information to evaluate all data that the query answer may reveal to the user. We also showed that our security-analysis is complete, i.e., our method detects all possible disclosures.. We have considered only simple XQueries in this work. In our future work, we hope to extend our analysis to incorporate nested queries. At present our schema-level analysis requires the schema to be a single-type tree language (DTD or W3C XML schema). In future work we hope to extend our schema-level security analysis to incorporate regular tree languages, such as RELAX NG. Finally, we plan to integrate query-optimization with security analysis.

B I O O O O O O O O O O O O O O O O B I O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


Linear cofactor relationships in Boolean functions Abstract-This paper describes linear cofactor relationships (LCRs), which are defined as the exclusive sums of cofactors with respect to a pair of variables in Boolean functions. These relationships subsume classical symmetries and single-variable symmetries. The paper proposes an efficient algorithm to detect LCRs and discusses their potential applications in Boolean matching, minimization of decision diagrams, synthesis of regular layout-friendly logic circuits, and detection of support-reducing bound sets.Index Terms-Boolean functions, linear cofactor relationship (LCR), logic synthesis, symmetry. This paper presents LCRs for pairs of variables in a Boolean function. This notion subsumes classical and single-variable symmetries. Experiments on MCNC benchmarks show that these relationships are common in Boolean functions.. An efficient algorithm is proposed to detect LCRs. The algorithm is characterized as follows.. 1) It works on the shared BDD of multioutput functions and computes the LCR information for each output. 2) It exploits the compactness and canonicity of the ZDD representation to store the LCR information computed for a node in the shared BDD.. 3) It computes all 30 types of LCRs. 4) It is particularly fast when applied to Boolean functions with no LCRs. The experimental results show that the overall performance of the algorithm is significantly better than the naïve method.. The proposed efficient LCR detection enables the use of LCRs in CAD applications. Several such applications of LCRs are discussed in this paper: Boolean matching, DD minimization, synthesis of regular layout-friendly circuits, and detection of support-reducing bound sets in Boolean functions. We expect other applications of LCRs to emerge in very large scale integration (VLSI) IC design flow.

O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I I B I B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O


Oscillation criteria for second order forced elliptic differential equations with mixed nonlinearities In the case of oscillatory potentials, we establish some oscillation criteria for the second order forced elliptic differential equation with mixed nonlinearities

B O O B I B I I I O B I O O O O O O O O O B O O O B I O O O O O B I


Speculative dynamic vectorization Abstract Vector processors [2, 6, 10, 16] are very effective to exploit SIMD parallelism, which is present in numerical and multimedia applications. Vector instructions' efficiency comes from streamed memory accesses and streamed arithmetic operations. Traditionally, the burden to exploit this type of parallelism has been put on the compiler and/or the programmer [1, 24] .. The average programmer can deal with codes whose vectorization is relatively straightforward. The compiler has a partial knowledge of the program (i.e. it has a limited knowledge of the values of the variables). Because of that, it generates code that is safe for any possible scenario according to its knowledge, and thus, it may loose significant opportunities to exploit SIMD parallelism. On top of that, we have the problem of legacy codes that have been compiled for former versions of the ISA with no SIMD extensions and therefore are not able to exploit new SIMD extensions incorporated in newer ISA versions.. In this paper we present a mechanism for dynamically generating SIMD instructions (also referred to as vector instructions). These SIMD instructions speculatively fetch and precompute data using the vector units of the processor. This vectorization scheme works even for codes in which a typical vectorizing compiler would fail to find SIMD parallelism. The vectorization process begins when the processor identifies a load operation that is likely to have a constant stride (based on its past history). Any instruction whose operands have been vectorized is also vectorized. In this way, the 'vectorizable' attribute is propagated down the dependence graph. The scalar unit has to verify the correctness of the vectorization. For this purpose, the corresponding scalar instructions are converted into 'check' operations that basically validate that the operands used by the vector instructions are correct. This is very similar in concept to other checker proposed in the past for other purposes such as fault tolerance [3, 13] . In case of a vectorization misspeculation, the current instances of the vector instructions are executed in scalar mode.. The proposed mechanism also allows the processor to exploit control-flow independence. When a branch is mispredicted, the scalar pipeline is flushed but the vector operations are not squashed. The new scalar instructions corresponding to the correct path will check whether the operations performed by the vector instructions are still correct and if this is the case, their results will be committed. Otherwise, a vectorization misspeculation will be fired, which will discard the vector results.. With the dynamic vectorization mechanism the number of memory requests decreases by 15% for SpecInt and 20% for SpecFP, and the number of executed arithmetic instructions is 25% lower for SpecInt in a 4-way superscalar processor with one wide bus. This reduction in memory requests and executed instructions results in significant speedups. For instance, a 4-way superscalar processor with dynamic vectorization and one wide data cache bus is 19% faster than a 4-way superscalar processor with 4 scalar buses and no dynamic vectorization.. The rest of the paper is organized as follows. Section 2 motivates this work by presenting some statistics about strided memory accesses. Section 3 presents the hardware implementation of the dynamic vectorization mechanism. Performance statistics are discussed in section 4. Section 5 outlines the related work. We conclude in section 6. Speculative dynamic vectorization begins when a strided load is detected. When this happens, a vectorized instance of the instruction is created and it is executed in a vector functional unit storing the results in a vector register. Next instances of the same static instruction are not executed but they just validate if the corresponding speculatively loaded element is valid. This basically consists in checking that the predicted address is correct and the loaded element has not been invalidated by a succeeding store. Every new instance of the scalar load instruction validates one element of the corresponding destination vector register.. Arithmetic instructions are vectorized when any of the source operands is a vector register. Succeeding dynamic instances of this instruction just check that the corresponding source operands are still valid vector elements (details on how the state of each element is kept is later explained).. When a validation fails, the current and following instances of the corresponding instruction are executed in scalar mode, until the vectorizing engine detects again a new vectorizable pattern. With this dynamic vectorization mechanism, as shown in Figure 3 , with unbounded resources, 47% of the SpecInt95 instructions and 51% of the SpecFP95 instructions can be vectorized. In this paper we have proposed a speculative dynamic vectorization scheme as an extension to superscalar processors. This scheme allows the processor to prefetch data into vector registers and to speculatively manipulate these data through vector arithmetic instructions. The main benefits of this microarchitecture are a) the use of SIMD parallelism, even in irregular codes; b) the exploitation of control-flow independence; and c) the increase in the effectiveness of wide memory buses.. We have shown that these benefits result in significant speedups for a broad range of microarchitectural configurations. For instance, a 4-way superscalar processor with one wide port and speculative dynamic vectorization is 3% faster than an 8-way superscalar processor with 4 scalar ports. Speculative dynamic vectorization increases the IPC of a 4-way superscalar processor with one wide bus by 21,2% for SpecInt and 8,1% for SpecFP. Strided memory loads [7, 8] are the instructions that fire the proposed speculative dynamic vectorization mechanism. To identify a strided load, at least three dynamic instances of the static load are needed. The first dynamic instance sets the first memory address that is accessed. The second dynamic instance computes the initial stride, subtracting the memory address of the first dynamic instance from the current address. The third dynamic instance checks if the stride is repeated computing the current stride and comparing it with the first computed stride. Figure 1 shows the stride distribution for SpecInt95 and SpecFP95 (for this figure, the stride is computed dividing the difference of memory addresses by the size of the accessed data). Details of the evaluation framework can be found in section 4.1.. As shown in Figure 1 , the most frequent stride for SpecInt95 and SpecFP95 is 0. This means that dynamic instances of the same static load access the same memory address. For SpecInt this stride is due, mainly, to the accesses of local variables and memory addresses referenced through pointers. For SpecFP the stride 0 is mainly due to spill code.. Usually, for SpecFP, the most frequent stride is stride 1 because these applications execute the same operations over every element of some array structures. However, due to the code optimizations [4, 9] included by the scalar compiler, such as loop unrolling, some stride 1 accesses become stride 2, 4 or 8. The bottom line of this statistics is that strided accesses are quite common both in integer and FP applications.. The results in Figure 1 also suggest that a wide bus to the L1 data cache can be very effective at reducing the number of memory requests. For instance, if the cache line size is 4 elements, multiple accesses with stride lower than 4 can be served with a single request if the bus width is equal to the line size. These types of strides represent 97,9% and 81,3% of the total strided loads for SpecInt95 and SpecFP95 respectively. The CONDEL architecture [20] proposed by Uht captures a single copy of complex loops in a static instruction window. It uses state bits per iteration to determine the control paths taken by different loop iterations and to correctly enforce dependences.. The use of wide buses has been previously considered to improve the efficiency of the memory system for different microarchitectures [12, 22, 23] .. Rotenberg et al. present a mechanism to exploit control flow independence in superscalar [14] and trace [15] processors. Their approach is based on identifying control independent points dynamically, and a hardware organization of the instruction window that allows the processor to insert the instructions after a branch misprediction between instructions previously dispatched, i.e., after the mispredicted branch and before the control independent point.. Lopez et al. [11] propose and evaluate aggressive wide VLIW architectures oriented to numerical applications. The main idea is to take advantage on the existence of stride one in numerical and multimedia loops. The compiler detects load instructions to consecutive addresses and combines them into a single wide load instruction that can be efficiently executed in VLIW architectures with wide buses. The same concept is applied to groups of instructions that make computations. In some cases, these wide architectures achieve similar performance, compared to architectures where the buses and functional units are replicated, but at reduced cost.

B I I O O O O O O O O O O O B O O O O O O O O O O B I O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O B O O O O O O O O O O O O O B I O O O O O O O B O O O O O O B O B O O O O O O O O O O O O O O O O O O B O O O O B O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O B O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O B O O B O O O O O O B I O O O O O O O O O O O B O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O B O O O O O O O B O O O O O O O O O O O O B B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O B O O O O O O O O O O O O O O B I O B B O O O B I O O O O O O O B I O O O O O O B B O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O B B O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O B O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O B B O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O B I I O O O O O O O O O O O B O O B O O O O O O O O B O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O B I I O O O O O O B I O O O O B I I O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O B O O O O O O O O O B O O O O O O O O O O O B O O O O O O O O O O O O B O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O B O O O O O O O O O O B O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O B B O O O O O O O O O O O O O O O B O O O O O O O O O B O O O O B O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


Improved Algorithms for Polynomial-Time Decay and Time-Decay with Additive Error We consider the problem of maintaining polynomial and exponential decay aggregates of a data stream, where the weight of values seen from the stream diminishes as time elapses. These types of aggregation were discussed by Cohen and Strauss (J. Algorithms 1(59), 2006), and can be used in many applications in which the relative value of streaming data decreases since the time the data was seen. Some recent work and space efficient algorithms were developed for time-decaying aggregations, and in particular polynomial and exponential decaying aggregations. All of the work done so far has maintained multiplicative approximations for the aggregates. In this paper we present the first O(log N) space algorithm for the polynomial decay under a multiplicative approximation, matching a lower bound. In addition, we explore and develop algorithms and lower bounds for approximations allowing an additive error in addition to the multiplicative error. We show that in some cases, allowing an additive error can decrease the amount of space required, while in other cases we cannot do any better than a solution without additive error. We discussed polynomial and exponential decay in data streams, extending recent work by [6] and [3] . We present the tightest space-efficient algorithm for PolyD using O(log N) space when allowing approximations up to a multiplicative factor. We do this by presenting a new data structure, the AEH, that is an extension of the EH from [6] and the WBMH from [3] .. In addition, we presented and analyzed our decay functions when allowing an approximation with an additive error in addition to the multiplicative one. We find that in ExpD for general streams O(log log N) space suffices, while in binary streams a constant (depending on the approximation) amount of space is all we need. For the PolyD we prove that unless the exponent is larger than one, and the stream values are bounded by some constant, we cannot hope to do better than in the multiplicative only approximation. We also show that one can use the AEH in order to achieve a constant-space algorithm for PolyD when the exponent is larger than one, and the stream values are bounded by some constant.. The need to analyze other decay functions such as the chordal decay, polyexponential decay, etc. ( [3] ) still exists. We strongly feel that the AEH can be used in some of the other decay functions, and in many other applications as well.

O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O


Rigorous learning curve bounds from statistical mechanics Abstract. In this paper we introduce and investigate a mathematically rigorous theory of learning curves that is based on ideas from statistical mechanics. The advantage of our theory over the well-established VapnikChervonenkis theory is that our bounds can be considerably tighter in many cases, and are also more reflective of the true behavior of learning curves. This behavior can often exhibit dramatic properties such as phase transitions, as well as power law asymptotics not explained by the VC theory. The disadvantages of our theory are that its application requires knowledge of the input distribution, and it is limited so far to finite cardinality function classes.We illustrate our results with many concrete examples of learning curve bounds derived from our theory. According to the Vapnik-Chervonenkis (VC) theory of learning curves (Vapnik, 1982; Vapnik & Chervonenkis, 1971) , minimizing empirical error within a function class ~r on a random sample ofm examples leads to generalization error bounded by O (d/m) (in the case that the target function is contained in ~ or O (~) plus the optimal generalization error achievable within .~r (in the general case) 1 . These bounds are universal: they hold for any class of hypothesis functions b r, for any input distribution, and for any target function. The only problem-specific quantity remaining in these bounds is the VC dimension d, a measure of the complexity of the function class f. It has been shown that these bounds are essentially the best distribution-independent bounds possible, in the sense that for any function class, there exists an input distribution for which matching lower bounds on the generalization error can be given (Devroye & Lugosi, 1994; Ehrenfeucht et al., 1989; Simon, 1993) .. The universal VC bounds can give the impression that the true behavior of learning curves is also universal, and essentially described by the functional forms d/m and ~/ '-d-/m. However, it is becoming clear that learning curves exhibit a diversity of behaviors. For instance, some researchers have attempted to fit learning curves from backpropagation experiments with a variety of functional forms, including exponentials (Cohn & Tesauro, 1992) . Backpropagation experiments with handwritten digits and characters indicate that good generalization error is sometimes obtained for sample sizes considerably smaller than the number of weights (presumed to be roughly the same as the VC dimension) (Martin & Pittman, 1991) , though the VC bounds are vacuous for m smaller than d. Discrepancies between the VC bounds and actual learning curve behavior have also been pointed out and analyzed in other machine learning work (Oblow, 1992; Sarrett & Pazzani, 1992) .. Of course, the VC bounds might simply be inapplicable to these experiments, because backpropagation is not equivalent to empirical error minimization. It has been conjectured that backpropagation can access only a limited portion of the function space, so that the "effective dimension" is much smaller than the VC dimension. According to this type of reasoning, learning curves are heavily affected by the specifics of the algorithm. Another possibility is that the VC bounds are applicable, but sometimes fail to capture the true behavior of particular learning curves because of their independence from the distribution. Hence some theorists have sought to preserve the functional form of the VC bounds, but to replace the VC dimension in this functional form by an appropriate distribution-specific quantity, such as the VC entropy (which is the expectation of the logarithm of the number of dichotomies realized by the function class) (Benedek & Itai, 1991; Haussler et al., 1991; Vapnik, 1982) . Work on the "empirical VC dimension" has tried to measure the dependence of learning curves on both the algorithm and the distribution via backpropagation experiments (Vapnik et al., 1994) .. Perhaps the most striking evidence for the fact that the VC bounds can sometimes fail to model the true behavior of learning curves has come from statistical physics. In recent years, the tools of statistical mechanics have been applied to analyze learning curves with rather curious and dramatic behavior (see the survey of Watkin, Rau and Biehl and the references therein (Watkin et al., 1993) ). This has included learning curves exhibiting "phase transitions" (sudden drops in the generalization error) at small sample sizes, as well as asymptotic power law behavior 2 in which the power law exponent is neither 1 nor 1/2. Although these learning curves do not contradict the VC bounds, it seems fair to say that their behavior is qualitatively different. The theoretical revisions of the VC theory mentioned above cannot explain such behavior, because they conservatively modify only with the constant factors of the same power laws.. In this paper, we show that ideas from statistical mechanics (namely, the annealed approximation (Amari et al., 1992; Levin et al., 1989; Schwartz et al., 1990; Sompolinsky et al., 1991) and the thermodynamic limit (Sompolinsky et al., 1991) ) can be used as the basis of a mathematically precise and rigorous theory of learning curves 3. This theory will be distribution-specific, but will not attempt to force a power law form on learning curves. Speaking coarsely, there are two main ideas behind our theory that are novel to someone familiar with the VC theory. The first new idea is related to the annealed approximation. It is based on the simple observation that in the VC theory and its proposed distribution-dependent variants, all hypotheses of generalization error greater than E are treated equally by the analysis--for instance, by assigning (1 -E)" to all such hypotheses as an upper bound on the probability of being consistent with m random examples. We undertake a more refined analysis that decomposes the function class into error shells that actually attribute the correct generalization error to each hypothesis, and give uniform convergence bounds on each shell. The resulting bounds already predict learning curve behavior not explained by the VC theory, but are difficult to interpret.. The second new idea is to formalize a particular mathematical limit known to statistical physicists as the thermodynamic limit. The goal of this limit is to express the error shell decomposition bounds in a form that is both useful and intuitive. The thermodynamic limit accomplishes this goal by introducing the notion of the correct scale at which to analyze a learning curve, and by expressing the learning curve as a competition between an entropy function (measuring the logarithm of number of hypotheses as a function of their generalization error E) and an energy function (measuring the probability of minimizing the empirical error on a random sample as a function of generalization error).. The resulting theory provides a formalized variant of the statistical physics approach that is able to predict and explain many nontrivial behavioral phenomena of learning curves, including phase transitions. It is far from being the last word on learning curves, and indeed, the task of providing a truly universal theory of learning curves--one that applies to all function classes, input distributions, and target functions, and is furthermore tight in all cases--appears to be a daunting if not unreasonable task. Furthermore, this paper concentrates on the case of finite cardinality function classes (although we provide some discussion of possible extensions to the infinite case). For someone familiar with the VC theory, it may be somewhat surprising that we devote so much effort to the finite case, since in the VC theory a power law uniform convergence bound can be obtained trivially for finite classes. Briefly, it turns out that in our formalism, it can be nontrivial to translate a collection of separate uniform convergence bounds, one for each error shell, into a learning curve bound, even in the finite case. By concentrating on this translation step, our methods can yield much tighter learning curve bounds than the VC theory in some cases.. The reader should regard the current paper as having three primary goals. First, we aim to derive from first principles a formal theory retaining the spirit of the statistical mechanics approach. Second, we aim to provide evidence in the form of specific examples and a general lower bound that the new theory truly is closer to modeling the actual behavior of learning curves than the standard VC theory. Third, we aim to precisely relate the statistical mechanics approach to the VC theory. Two questions have often been raised in the computational learning theory community regarding the statistical physics approach to learning curves. Can it be made rigorous? Does it give any results that can not be derived from the VC theory? In this paper, we have shown that for finite function classes and excluding replica calculations, the answer to both questions is affirmative. Under certain circumstances, our theory provides much tighter bounds than the VC theory, best illustrated in our examples exhibiting phase transitions.. Our theory gives tighter bounds than the VC theory at the expense of increasing the number of problem-dependent quantities. Since the computation of the entropy bound s(E) requires knowledge of the input distribution, it is considerably more difficult than the computation of the VC dimension, which requires knowledge of only the function class. For this reason, applications of our theory to real problems may be difficult. Thus, our theory is descriptive rather than prescriptive at this point: it should be regarded more as an attempt to come to a theoretical understanding of the true behavior of learning curves, rather than as a tool for application.. There is obviously still much work to do in our theory, and we now list some of the research directions we are pursuing.. • The infinite case. The most glaring weakness of our theory, especially in comparison to the VC theory, is that we have developed and analyzed it only for finite cardinality concept classes. We are currently investigating extensions to the infinite case that are more refined than the covering approach discussed in Section 4.1, and are based on combining the shell decomposition with the VC dimension, VC entropy and random covering numbers (Dudley, 1978; Haussler, 1992; Pollard, 1984; Vapnik, 1982) . • Expressing our bounds as penalty functions. One of the most interesting aspects of the VC theory is Vapnik's explicit prescription in the unrealizable setting for trading off hypothesis class complexity (and therefore, ability to realize the target function) against empirical error (Vapnik, 1982) . This prescription is known as structural risk minimization, and the form it takes can be directly traced to the form of the VC bounds on learning curves. The fact that we now have learning curve bounds whose functional form can differ radically from the VC bounds opens the possibility for structural risk minimization prescriptions that are different from Vapnik's. Although possibly difficult to apply, such prescriptions may have interesting theoretical interpretations and consequences.. • Alternatives to the computation of s(E'). We mentioned above that at this point our theory is descriptive rather than prescriptive. It would be nice to at least partially remedy this situation. The main barrier is our assumption that s(e) is known to the designer of a learning algorithm, which in turn implies knowledge of the input distribution. Might it be possible to estimate s(E) from data, even for special function classes of interest? If one has only partial information about the input distribution, can this be translated into useful partial information about s(~). Note that such considerations must be central to any attempt to apply our theory in a practical manner, for instance to structural risk minimization.

O O O O O B I O O O O O O O O O O O O O B I O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O B I O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O B I O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O B I O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O