Searching and on-line recognition of star-shaped polygons We study the problem of on-line searching for a target inside a polygon. In particular, we propose a strategy for finding a target of unknown location in a star-shaped polygon with a competitive ratio of 11.52. We also provide a lower bound of 9 for the competitive ratio of searching in a star-shaped polygon which is close to the upper bound. A similar task is the on-line recognition of a star-shaped polygon P . Here, the robot travels on a path that allows it to decide whether P is star-shaped or not. We present a strategy with a competitive ratio of 28.85 and give a lower bound of √ 82 for this problem. In the past years on-line searching has been an active area of research in Computer Science (e.g. [1] [2] [3] 12, 14] ). In its full generality, an on-line search problem consists of an agent searching for a target in an unknown terrain. In the worst case a search by a robot in a general domain can be arbitrarily inefficient as compared to the shortest path from the initial position to the target. However, as it is to be expected, strategies can be improved depending on the type of terrain and the searching capabilities of the robot.. In this work we assume that the robot is equipped with an on-board vision system that allows it to see its local environment. Since the robot has to make decisions about the search based only on the part of its environment that it has seen before, the search of the robot can be viewed as an on-line problem. As such, the performance of an on-line search strategy can be measured by comparing the distance traveled by the robot with the length of the shortest path from the starting point s to the target location t. The worst case ratio of the distance traveled by the robot to the optimal distance from s to t is called the competitive ratio of the search strategy.. There are several classes of polygons that admit constant competitive ratios, most notably streets [10, 13, 33] , G-streets [6, 18] and HV-streets [5] . However, the existence of a searching strategy with a constant competitive ratio for these classes of polygons depends on the position of the target.. A natural question is to find non-trivial classes of polygons that allow searches with a constant competitive ratio independently of the starting position of the robot or the position of the target. Since the target may hide anywhere inside the polygon, a natural choice is to explore the class of polygons which can be seen in its entirety from a single point. Such a polygon is called star-shaped. The set of points that see the whole polygon is called the kernel of the polygon.. In a preliminary version of this paper [19] star-shaped polygons were the first class shown to admit position-independent target searches. Using techniques derived from this work, street polygons were later also shown to be searchable without restriction on the initial positions of the target or the searcher [4, 5] .. Icking and Klein studied the problem of on-line searching for the kernel of a star-shaped polygon. In this case, the competitive ratio is given by the ratio of the length of the path traversed by the robot from the starting point s to the closest kernel point p as compared to the distance from s to p. They present a strategy with a competitive ratio of ∼5.331 [8, 9] , which was later shown to be exactly + 1 competitive [16] . A strategy with a competitive ratio bounded by 1 + 2 √ 2 ∼ 3.829 was given by Lee et al. [17] and recently improved to ∼3.1226 by Palios [21] .. In this work we present a position-independent target search strategy with constant competitive ratio for star-shaped polygons. In Section 2 we introduce some concepts and definitions for on-line searching in simple polygons. In Section 3 we present a 11.52-competitive algorithm for target searching in starshaped polygons and prove a lower bound of 9 for the competitive ratio of all search strategies in star-shaped polygons. In Section 4 we use a variation of the strategy in Section 3 to construct the first constant competitive algorithm for recognition of star-shaped polygons. That is, given a polygon, the robot follows a path that proves or disproves that the polygon is star-shaped that is no more than 28.85 times longer than a shortest path with the same property. We present a lower bound of √ 82 for this problem. Finally, we improve the lower bound of √ 2 ∼ 1.41 for searching for a kernel of a star-shaped polygon [8] first to ∼1.49 and then to ∼1.5. We have presented a strategy for on-line searching in a star-shaped polygon and for on-line recognition of a star-shaped polygon. Our strategies have constant competitive ratios of 11.52 and 28.85 respectively, independently of the starting position of the robot and the position of the target. This is in contrast to on-line searching in other classes of polygons where both the position of the target and the starting position are heavily limited.. We have also presented a lower bound for on-line searching in a star-shaped polygon which is close to the upper bound obtained by our strategy. We show that no strategy which walks into the kernel of a star-shaped polygon can do better than 1.50 which improves on the best previously known lower bound of √ 2 [8] . Finally, we show that recognition of a star-shaped polygon is at least √ 82 competitive. Proof. The proof is by induction. First note that we can replace all parts of edges C (j ) that are part of C l by circle segments that intersect the end points of C (j ) . Hence, we assume in the following that C l consists only of circle segments. The argument clearly holds if C l consists of only one circular arc. So assume that the claim is true for all curves that consist of k circular arcs and consider a curve that consists of k + 1 circular arcs that belong to the circles C (1) , . . . , C (k+1) from left to right. Note that C l is the upper envelope of C (1) , . . . , C (k+1) . Consider the upper envelope C k of C (1) , . . . , C (k) and the arc A k+1 of C (k+1) that belongs to C. Let B k be the arc of C (k) that is contained in C (k+1) . Clearly, the length of C is given by the length of C k minus the length of B k plus the length of A k+1 . Finally, let D j be the length of the part of v l v l+1 that is contained in the disks spanned by C (1) , . . . , C (j ) , 1 j k + 1. We are interested in the ratio. By (k) which implies that C k consists only of C (k) and all other circles have radius 0. Hence, we have to check if the ratio for two circles is less than or equal to ( − θ)/ sin θ and the claim follows. Consider the situation in Fig. A.1 . Let C be the upper hull of the two circles C (1) and C (2) and A i the part of C (i) that is contained in C for i = 1, 2. W.l.o.g. we can assume that the distance from the left end point to the right end point of C is one. We denote the length of the overlap of the two circle segments by a. We want to show that the sum of the lengths of A 1 and A 2 is no more than ( − θ)/ sin θ . To see this consider the sum of the lengths of the complete upper circle segments of C (1) and C (2) which equals (1 + a)( − θ)/ sin θ . In order to obtain the length of A 1 and A 2 we need to substract the length of the dashed circle segments in Fig. A.1 . The sum of the length of these segments is clearly larger than the length of the circle segment over the line segment of length a. Therefore,. − a − θ sin θ = − θ sin θ as claimed. This concludes the proof that the length of C is at most ( − θ)/ sin θ .

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 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 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 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 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 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 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 B I O B I 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 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 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 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


Quantum Property Testing of Group Solvability Abstract. Testing efficiently whether a finite set Γ with a binary operation · over it, given as an oracle, is a group is a well-known open problem in the field of property testing. Recently, Friedl, Ivanyos and Santha have made a significant step in the direction of solving this problem by showing that it is possible to test efficiently whether the input (Γ, ·) is an abelian group or is far, with respect to some distance, from any abelian group. In this paper, we make a step further and construct an efficient quantum algorithm that tests whether (Γ, ·) is a solvable group, or is far from any solvable group. More precisely, the number of queries used by our algorithm is polylogarithmic in the size of the set Γ. In property testing, the problem considered is to decide whether an object given as an oracle has some expected property or is far from any object having that property. This is a very active research area and many properties including algebraic function properties, graph properties, computational geometry properties and regular languages were proved to be testable. We refer to, for example, [15, 19] for surveys on classical property testing. Quantum testers have also been studied [7, 11, 16] , and they are known to be strictly more powerful than classical testers in some cases [7, 16] .. In this paper, we focus on testing group-theoretical properties. A famous example is testing whether a function f : G → H, where H and G are groups, is a homomorphism. It is well known that such a test can be done efficiently [5, 6, 21] . Another kind of problems deals with the case where the input is a finite set Γ and an oracle of a binary operation · : Γ × Γ → Γ over it. A classical algorithm testing associativity of the oracle · using O(|Γ| 2 ) queries to the oracle has been constructed by Rajagopalan and Schulman [18] , and Ergün et al. [8] have proposed an algorithm, usingÕ(|Γ|) queries, testing if · is close to the multiplication of a group. But notice that, since each element in Γ needs Θ(log |Γ|) bits to be encoded, the query complexities of these algorithms can be considered as exponential in the input length when not Γ, but only |Γ| is given (e.g., Γ is supposed to be the set of binary strings of length ⌈log 2 |Γ|⌉). Designing an algorithm deciding whether (Γ, ·) is a group that uses a number of queries to · polynomial in log |Γ| is indeed a well-known open problem. Recently, Friedl et al. [10] have made a significant step in the direction of solving this problem by constructing a classical algorithm with query and time complexities polynomial in log |Γ| that tests whether (Γ, ·) is an abelian group or is far from any abelian group.. In this work, we make a step further and construct an efficient quantum algorithm that tests whether (Γ, ·) is a solvable group or the distance between (Γ, ·) and any solvable group is at least ǫ|Γ| 2 . More precisely, our algorithm uses a number of queries polynomial in log |Γ| and ǫ −1 , and its time complexity is polynomial in exp((log log |Γ|) 2 ) and ǫ −1 , i.e., subexponential in log |Γ|. Notice that the class of solvable groups is far much larger than the class of abelian groups and includes a vast class of non-abelian groups. To deal with those groups, we introduce new ideas relying on the ability of quantum computation to solve fundamental group-theoretical problems, such as finding orders of elements or working with superpositions of all the elements of a subgroup.. Besides the theoretical interest of this result, our algorithm can be used when studying grouptheoretical problems where the input is a black-box solvable group (i.e., given as a set a generators and an oracle performing group operations). Most known algorithms for such problems can have an unpredictable behavior when the input is not a solvable group. By applying our algorithm we can detect (in the quantum setting) if the input is far from any solvable group, and we thus obtain robust versions of the quantum algorithms already known for solvable black-box groups [9, 13, 14, 23] . We also hope that this will be useful to design new quantum property testers or group-theoretical quantum algorithms. In particular, our tester may be useful when considering quantum versions of classical algorithms solving problems over black-box solvable groups [1, 2, 3, 4] as well.. Finally, we believe that our quantum algorithm may also be a first step in the direction of designing efficient classical testers for solvable groups. Indeed, the efficient classical tester for abelian groups proposed by Friedl et al. [10] was inspired by a quantum algorithm solving the same problem. In this case, they were able to "dequantumize" the algorithm. A similar approach may be possible for our algorithm too. Our algorithm appears in Figure 1 The first step in our algorithm finds a power-conjugate representation of Γ when Γ is a solvable group. We will prove that when Γ is far from any solvable group, then the output of this step cannot be a power-conjugate representation of a group close to Γ and that this can be detected by our algorithm at part II, III or IV.. We begin by picking s = Θ(log |Γ|) random elements α 1 , · · · , α s uniformly and independently from the ground set Γ. For simplicity, we first suppose that Γ is a solvable group, and then discuss the general case.. Case where Γ is a solvable group. Denote Γ ′ = α 1 , · · · , α s . Then, with high probability, Γ = Γ ′ . Here we rely on the standard fact in computational group theory that, for any group K, Θ(log |K|) random elements taken uniformly in K constitute, with high probability, a generating set of K. We now run the first algorithm of Theorem 5 with input Γ ′ presented as a black-box group as follows: α 1 , · · · , α s is the set of generators and the operation · is the oracle performing group multiplication. The output of the algorithm is then, with high probability, a set of t elements h 1 , . . . , h t of Γ and t integers m 1 , . . . , m t such that, if we denote H i = h 1 , . . . , h i for 1 ≤ i ≤ t, the following holds:. We then use Shor's quantum algorithm [20] . when Γ is a solvable group. We denote the decompositions obtained by. where each r General Case. In general, we do not know whether Γ is a solvable group or not but we do exactly the same as above: we first run the first algorithm of Theorem 5 on the set {α 1 , · · · , α s } with the oracle ·. If this algorithm errs, we conclude that Γ is not a solvable group (this decision is correct with high probability because, if Γ is a solvable group, then the algorithm of Theorem 5 succeeds with high probability). Now suppose that we have obtained elements h 1 , . . . , h t and a set of integers m 1 , . . . , m t . We define the following sets by recurrence: H 1 = {h a 1 |a ∈ Z m 1 }, and, for 2 ≤ j ≤ t, H j = {h a j · h|a ∈ Z m j , h ∈ H j−1 }. Here, and in many other places in this paper, we use the notation h r , for h ∈ Γ and r ≥ 1, to denote the product h · (· · · · (h · (h · h))), since · is not in general associative. Moreover we use the convention h 0 = h m 1 1 for any h ∈ Γ. Notice that the value of h r can be computed using O(log r) queries to the oracle · using repeated squaring methods.. Notice that, in general, the pseudo-magmas H i 's have no group-theoretical structure at all (in particular they may not be magmas). We then use Shor's order finding algorithm [20] on each h i and obtain some integer n i . Then we run the second algorithm of Theorem 5 to decompose the elements h m i i and h. , for each i ∈ {2, . . . , t} and each k ∈ {1, . . . , i − 1}. If the algorithm errs or outputs something irrelevant, we conclude that Γ is not a solvable group. Suppose that the algorithm succeeds and outputs decompositions. We use the notations of Equations (1) and (2) to denote the decompositions obtained. We check whether these decompositions are correct, i.e., we compute the right sides of Equations (1) and (2) and check that they match the left sides. If they are correct, we move to the next step (Subsection 3.2.2). Otherwise, we conclude that Γ is not a solvable group.

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 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 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 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 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 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 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 O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


The Number and Distributions of Limit Cycles for a Class of Quintic Near-Hamiltonian Systems This paper concerns with the number of limit cycles for a cubic Hamiltonian system under cubic perturbation. The fact that there exist 9-11 limit cycles is proved. The different distributions of limit cycles are given by using methods of bifurcation theory and qualitative analysis, among which two distributions of eleven limit cycles are new.  2005 Elsevier Inc. All rights reserved.

O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 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


Aligning ontology-based development with service oriented systems This paper argues for placing ontologies at the centre of the software development life cycle for distributed component-based systems and, in particular, for service-oriented systems. It presents an ontology-based development process which relies on three levels of abstraction using ontologies: architecture layer, application layer and domain layer. The paper discusses the key roles of ontologies with respect to the various abstraction layers and their corresponding impact on the concomitant workproducts. In addition, a peer-topeer-based service selecting and composing tool is suggested as a way of supporting the process. The paper presents the architecture of the proposed tool and illustrates the whole process in the development of a mobile banking application based on dynamic Web services. This paper argues for placing ontologies at the centre of the software development lifecycle for distributed component-based systems and, in particular, for service-oriented systems. It presents an ontology-based development process which relies on three levels of abstraction using ontologies: architecture layer, application layer and domain layer. The paper discusses the key roles of ontologies with respect to the various abstraction layers and their corresponding impact on the concomitant workproducts. In addition, a peer-to-peer-based service selecting and composing tool is suggested as a way of supporting the process. The paper presents the architecture of the proposed tool and illustrates the whole process in the development of a mobile banking application based on dynamic Web services. A service oriented architecture (SOA) promotes loose coupling between components to enable faster and more flexible reconfiguration of business processes and provides a means of organising system resources in an open and flexible arrangement. From an enterprise management perspective, the successful delivery of service oriented architecture (SOA) systems translates into responsive business processes that can adjust to varying customer service requirements [9, 11] . Expected responsiveness and adjustment is based on leveraging the knowledge of relationships between various services and mixing and matching groups of services to satisfy new requirements. Service oriented computing (SOC) has become a convincing paradigm for enterprises in tackling traditional hurdles to improving the efficiency and effectiveness of their ubiquitous software applications [13] . Vice President of Gartner, J. Fenn, predicted that by 2013, SOA will have delivered transformational results to the role and capabilities of IT for businesses [14] . Furthermore in 2012, one third of IT budgets were spent gaining access to services developed by other vendors [15] . This increased attraction to SOC comes with the expectation that energies from software development and acquisition will be shifted to other business activities, and at the same time deliver better alignment with business requirements.. Service-oriented software engineering promises to deliver enormous tangible improvements to business process enablement. In practice it has been hard to realize, especially for complex application systems, when it is advantageous to use services from various providers. There is a need to find ways to collect available business services from the different providers and to specify how such a collection of services should be combined and integrated seamlessly [26] . This ability to easily integrate services can increase flexibility and agility, not only in systems development but also in business process management. However, existing service components do not provide a clear and comprehensive definition of the business process semantics. Therefore many existing services are often isolated and opaque to information system developers. Current software techniques and tools do not alleviate this and place too much burden on developers attempting to reuse existing services. This hampers the realisation of the monetary benefits of the technology and the collective adoption of reuse by the required large number of players to ensure a critical mass of shared services [23] .. The use of ontologies can pave the way for an intelligent software development environment where developers submit new business requirements and an automatic tool generates the service oriented software system. With semantic driven composition, services will be shared between teams of developers and across multiple organisations connected via the Internet. We are acutely aware that existing Web languages are not easily accessible as described in Berners-Lee [2] . To overcome this, we aim to provide ontological support to the requirements analysis phase to ensure that any newly created service can be appropriately indexed by a semantically rich layer of ontologies. There are a number of promises and arguments around semantic Web services [28, 29, and 36] , one big issue being the limited generality of the isolated efforts made by independent research groups, for example, as reported in [32] . Indeed, this paper heeds visionary comments in [24] and [17] that, in order to meet the requirements of pervasiveness and autonomy in services development, the maturity and awareness of semantic Web and ontology technologies (key components of Web 3.0) should not be overlooked. This research uses an innovative ontology-and agent-based technology to support the SOA environment by providing automatic identification and merging of services which will in turn enable process changes in the business requirements.. The holistic semantic Web driven SOA development approach will play a significant role in better exploitation of services at both the technical and business level. This paper is well timed coinciding with the rapid development of Web 2.0 technologies which enable a single enterprise to use the Web to offer value-added customer services via connection to various services or applications from other public or commercial organizations. The innovations in this paper will harness the Web as a support medium for systems development enabling automatic exchange of services between various development teams across multiple organisations. The significance of these innovations is more pronounced coinciding with challenges of dynamic composition of distributed services [34] created by the high demand for portable appliances such as Personal Digital Assistants (PDAs) and next-generation mobile devices as well as for P2P applications e.g. [35, 43] . It's challenging to apply a hierarchy of ontologies in developing such applications. For example, concerns remains about how to measure the quality of the ontologies and the alignments among them [5] .. This paper proposes an intelligent and supportive software development environment where developers can focus on semantic enrichment of business requirements and proper alignment with business processes rather than the time consuming task of service identification and integration. This paper's contributions are: a holistic ontology based development approach for service oriented systems such Gird and Cloud platforms; a three layer abstraction of ontology alignment; and the introduction of a semantic integration life cycle for semantic Web services. Our proposed approaches were demonstrated by applying them in the building of QoS ontology for a service oriented system and developing a multi-agent, peer-to-peer based service system to align ontologies before tool and illustrating the process in the development of a mobile banking application based on dynamic Web services.. The rest of the paper is organised as follows: Section 2 provides an argument for placing ontologies at the heart of SDLC of component-based systems generally and service oriented development in particular. Section 3 articulates the requirements for an ontology-based service oriented development and the existing supporting ontologies from the literature. Section 4 discusses the architecture of the intelligent development environment which uses a MAS for peer-based Web service composition system. A case study highlighting the ontology-based development of bank loan approval service oriented system is presented in Section 5. Section 6 concludes with a summary and discussion of future work. Using off-the-shelf domain ontologies as a starting point of system development is the focus of our efforts in the applied use of ontologies in our intelligent services development environment. This will enable the transfer and adaptation of existing techniques for ontologies, e.g. for mapping and translating between multiple ontologies to obtain a more economical approach to software engineering development and address interoperability and work product reuse. Not only will an ontology-based services framework be complete, consistent and produce systems that can easily be evolved to new contexts but it can have a highly developed maintenance phase to guide developers in reusing existing systems and components previously developed (using an ontological approach).. This paper promotes ontology-based software development with a focus on methodologies for services system development with the support of P2P architecture and multi-agent system. The paper first provided a 3 layer abstraction of ontologies to be applied in service oriented development lifecycle. Then the paper presented a semantic integration lifecycle for the development of a domain or application solution for business process problems, where architectural services ontology becomes essential and QoS turns out to be a major requirement. To make the aligned ontologies useful, a multi-agent system is needed to support the P2P e-services system. We implemented a tool to validate our approaches with a case study to demonstrate how the concepts and constructs proposed in this paper work together.. Much work remains to refine the concepts presented in this paper and to ensure that they are applicable to areas where the use of ontologies is less obvious than the banking domain discussed in this paper. Towards this, the first step is to develop required ontological techniques. These include ontology-based techniques for consistency checking across products and processes, and ontology-based techniques for testing completeness of products and processes within and across methodologies. Underlying complex issues need to be resolved, e.g. as how to reconcile requirements from multiple sources and multiple versions of ontologies from different domains, applications and service based architectures. Another issue is how candidate problem solving methods get identified to be reused. It may well turn out that an ontology-based approach is most suited to areas of applications where the set of possible agent actions are well specified in advance e.g. in modelling service oriented systems. Modern large scale service oriented systems, such as Google Play, mobile applications or social networks, might put more focus on the performance improvement of the overall system, in which ontology enrichment should not be an added burden.

O O O O B I I O O O O O B O O O O O B I 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 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 O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 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 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 O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 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 O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 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 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 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 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 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 O O O 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 B 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 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 O O O O O O O O O O O O O O O O O O O O O O O O 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 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 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 B I I 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


Evaluating the usability of usage controls in electronic collaboration Currently, collaborations often require non-disclosure agreements (NDAs). NDAs can be time-consuming and expensive to negotiate and enforce. Usage controls could be an atractive alternative or adjunct to NDAs. Usage controls enable the distributor of a file to limit how recipients of that file may use it. However, existing usage controls (e.g., PDF's) often are software-based and easy to break. They may not interoperate, and their impact on collaborative workflows is typically unknown. We designed and implemented operating system and Web server and browser modifications that allow hardware-based usage controls to be easily added to existing software-based ones. This paper describes and evaluates our system's user interfaces. In a user study, untrained users role-played design engineers in two similar collaborative scenarios with or without usage controls. Users found the interfaces easy to use, and usage controls had insignificant impact on the completion times and accuracy of the assigned tasks. These results suggest that our usage control approach can add security to collaborative workflows with minimal training and performance penalties. Organizations are increasingly turning to collaboration in order to remain competitive. More and more manufacturers are collaborating in new designs to reduce costs and timeto-market. Similarly, many retailers are providing detailed forecasts to suppliers to avoid stock-outs while minimizing inventory.. While collaboration can make economic sense, it can also carry great risks. When a manufacturer shares product or process details, it also risks its intellectual property. Likewise, disclosure of a retailer's forecasts to competitors can be put the retailer at disadvantage.. Organizations can, to some extent, use non-disclosure agreements (NDAs) to mitigate such risks. However, NDAs can be time-consuming and expensive to negotiate and enforce. More efficient alternatives are needed.. In response to this need, computer applications increasingly provide usage controls. Usage control enables the distributor of a file to limit how recipients of that file may use it. For example, recent versions of Adobe Acrobat and OpenOffice [1] allow the creator of a PDF document to set flags that prohibit printing or copying content from the document [2] .. However, existing usage controls typically have several shortcomings. First, most of them are purely software-based and can be defeated by tools or techniques that can be easily found on the Web. For example, instructions for defeating PDF's usage controls are readily available [3] . Second, there is no standard or uniform method for usage control. Therefore, usage controls of different applications or systems often do not interoperate. Third, little is known about the usability of usage control in collaborations. If usage controls disrupt collaborative workflows, they would negate the benefits collaboration was supposed to give.. To overcome the first two of these shortcomings, we designed and implemented operating system modifications that add hardware-based usage controls to existing software-based ones. No modification is needed in applications for hardwarebased protection; the modified operating system needs only the secure digests of the trusted applications. Hardwarebased usage policies are enforced by the operating system (e.g., UCLinux [4] ) in conjunction with a secure coprocessor (Trusted Platform Module (TPM) [5] ). Usage-controlled files are stored in an encrypted file system whose secret key the TPM reveals only when the system is in a trustworthy state. Usage-controlled files may contain software-based usage policies that applications that open the file are expected to enforce (e.g., PDF print restrictions). We add to such files, as metadata, hardware-based usage policies. These policies may, e.g., restrict the time period and applications that can open a file. By restricting the applications that can open a file, hardware-based usage policies prevent circumvention of the software-based usage policies contained in the file. For example, only trusted versions of Acrobat Reader could be able to open usage-controlled PDF files, while cracked versions of xpdf [6] would be unable to do so. We also designed and implemented Web server and browser modifications that enable secure transmission of usage-controlled files. The modified Web server sends such a file to a client only if the client provides an attestation that the client's platform is trustworthy, i.e., will enforce the usage policies received from the server. This attestation is signed by the client's TPM.. This paper describes and evaluates the user interfaces we designed for authoring and accepting usage policies in our system, overcoming the third above-mentioned shortcoming of existing usage controls. In a user study, untrained users role-played design engineers in two similar collaborative scenarios with or without usage controls. We found that usage controls had insignificant impact on the completion times and accuracy of the assigned tasks. Users found the interfaces easy to use. They had insignificant trouble in properly considering documents' usage policies when deciding whether to accept them and in generating documents with appropriate usage policies. These results suggest that our usage control approach can add security to collaborative workflows with minimal training and performance penalties.. The rest of this paper is organized as follows. Section 2 summarizes relevant aspects of software used in this paper. Section 3 describes our user interfaces, and Section 4 evaluates them in a user study. Finally, Section 5 discusses Usage controls enable the distributor of a file to limit how recipients of that file may use it. Usage controls can be negotiated and enforced automatically, quickly and inexpensively. Hence, they could be an atractive alternative or adjunct to non-disclosure agreements. However, existing usage controls often are software-based and easy to break. We designed and implemented operating system modifications that allow hardware-based usage controls to be easily added to existing software-based ones, hardening them. We also designed and implemented Web server and browser modifications for transmitting usage-controlled files securely. In this paper, we described our system's user interfaces and evaluated the system in a user study. In the study, untrained users role-played design engineers in two similar collaborative scenarios with or without usage controls. The results were very promising. Users found the interfaces easy to use and had insignificant trouble in considering documents' usage policies when deciding whether to accept them. They also had little trouble in authoring documents with appropriate usage policies. Usage controls had insignificant impact on the completion times and accuracy of the assigned tasks. These results suggest that the usage control approach described in this paper can add security to collaborative workflows with minimal training and performance penalties. The results obtained were close to ideal. First, usage controls had no effect in the number of documents downloaded in set A, which had acceptable policies. Second, usage controls strongly reduced the number of documents downloaded in set B, which had unacceptable policies. Only one of ten participants downloaded such a document, but did not open it. After downloading, the participant reread the instructions, again clicked on the link for downloading the document, read the respective usage policies, and canceled. Third, nine out of ten participants successfully posted the correct decision with correct usage policies. One participant wrote the correct decision and posted it successfully, but gave the decision an incorrect usage policy. Fourth, task completion time was slightly higher with usage controls, but the difference was statistically insignificant.. At the end of each laboratory session, we surveyed user perceptions about our usage control system. The results are summarized in Table 3 . Participants indicated that they'd be comfortable using the system again and would give friends a moderately positive recommendation. Usage controls for applications such as those discussed in this paper are also known as enterprise digital rights management (EDRM), while usage controls for digital mass media are better known as digital rights management (DRM). Usability tends to be more of a concern in EDRM because EDRM may require many users to author and accept usage policies. On the contrary, in DRM, usage policies usually are authored by few specialists and enforced without explicit client acceptance.. Other major differences between DRM and EDRM include the respective legal frameworks and user acceptability. DRM typically affects information flows that are subject to copyright laws. What constitutes acceptable usage under copyright law depends subtly on context. Reliably determining and judging the relevant context remains a challenge for computers [10, 11] . Usage policies that DRM systems can enforce are usually much less nuanced and more restrictive than those of copyright law. Thus, many users resent DRM. On the contrary, EDRM typically affects information flows that are subject to NDAs and/or privacy laws and regulations, such as HIPAA or GLBA. Such agreements, laws, and regulations often stipulate strict usage policies and penalties for noncompliance. Both distributors and recipients of such information may welcome EDRM's ability to reduce risks of noncompliance [12] .. Two previous projects have developed TPM support for Linux: Enforcer [13] and tcgLinux [14] . Neither project targeted usage controls, however. In Enforcer, a manifest can list what applications can run in the system and open specified files. However, the manifest needs to be signed by the system's trusted administrator. Thus, a file distributor cannot specify new usage policies that are enforced by a client unless the file distributor is also the client's administrator or convinces the latter to sanction them. In tcgLinux, the kernel extends into PCRs integrity measurements of all programs executed, in the order of execution. Thus, PCR values vary with execution order. Such variable PCR values are unsuitable for TPM sealing. If a UCFS's secret key is sealed to particular PCR values, it may not be possible to unseal the key reliably.. Lack of interoperability may hamper DRM and EDRM adoption. Prominent efforts for enhancing DRM interoperability include the MPEG-21 REL [15] and OMA DRM [16] standard rights languages, and the NEMO [17] system for orchestrating distributed services with heterogeneous media and rights formats. Like NEMO, and unlike MPEG-21 and OMA, our work supports interoperability using unmodified applications. We also provide solutions for enforcing usage policies securely on commercially available computers and usable interfaces for EDRM, which had not been described and evaluated in previous literature. This section provides a brief overview of relevant features of software used in this paper.. 2.1 Authoring and viewing software-based usage policies Fig. 1 displays OpenOffice's dialog for setting security options in PDF files. Such a dialog has been available since OpenOffice v. 2.0 [1] . A PDF document's author can disable high-resolution or any printing, extracting pages, commenting, filling in form fields, inserting, deleting, and rotating pages, or any changes, content copying, and text access for accessibility tools.. The xpdf viewer [6] disables certain options, depending on the security settings of the PDF file being viewed. For example, Fig. 2 shows the dialog box that xpdf displays when the user clicks on the icon for printing a file that has a usage policy that prohibits printing. It should be noted, however, that PDF is an open standard [2] , and xpdf if opensource software. Instructions for how to modify xpdf so as to ignore usage policies in PDF files can be easily found on the Web [3] . Weaknesses in software-based usage controls, such as PDF's, motivate our effort to add to them hardwarebased usage controls.

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 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 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 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 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 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 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 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 B I 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 B I O O O O O O O O O O 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 O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 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 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 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 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 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 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 B I I O O B I 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 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 B I O O O O O O O O O O O B I


A high order cell-centered semi-Lagrangian scheme for multi-dimensional kinetic simulations of neutral gas flows The term 'Convected Scheme' (CS) refers to a family of algorithms, most usually applied to the solution of Boltzmann's equation, which uses a method of characteristics in an integral form to project an initial cell forward to a group of final cells. As such the CS is a 'forward-trajectory' semi-Lagrangian scheme. For multi-dimensional simulations of neutral gas flows, the cell-centered version of this semi-Lagrangian (CCSL) scheme has advantages over other options due to its implementation simplicity, low memory requirements, and easier treatment of boundary conditions. The main drawback of the CCSL-CS to date has been its high numerical diffusion in physical space, because of the 2 nd order remapping that takes place at the end of each time step. By means of a Modified Equation Analysis, it is shown that a high order estimate of the remapping error can be obtained a priori, and a small correction to the final position of the cells can be applied upon remapping, in order to achieve full compensation of this error. The resulting scheme is 4 th order accurate in space while retaining the desirable properties of the CS: it is conservative and positivity-preserving, and the overall algorithm complexity is not appreciably increased. Two monotone (i.e. non-oscillating) versions of the fourth order CCSL-CS are also presented: one uses a common flux-limiter approach; the other uses a non-polynomial reconstruction to evaluate the derivatives of the density function. The method is illustrated in simple one-and two-dimensional examples, and a fully 3D solution of the Boltzmann equation describing expansion of a gas into vacuum through a cylindrical tube. In this paper we describe a straightforward and easily implemented scheme for solution of the Boltzmann equation (or similar kinetic equations) with a number of desirable properties (straightforward conservation, positivity preservation and simplicity of implementation). The starting point is a solution of the kinetic equation in integral form, which uses the method of characteristics to take an initial cell and propagate it forward in time until it is remapped onto the phase space mesh. We refer to the scheme as a 'Convected Scheme' (CS) to reflect the fact that it focusses on describing the convective motion of the fluid [1] . More recently a terminology has arisen that would call this a 'forward semi-Lagrangian' scheme.. A version of this scheme follows initial cells until they are almost totally depleted by collisions [2; 3] . In this 'Long Lived Moving Cell' (LLMC) scheme, collisions remove particles from the cell periodically and the scheme 'remaps' those particles to other locations in velocity space. The earlier versions of the scheme limited the duration of the ballistic move to a small fraction of a collision time, after which the entire contents of the cell were remapped [1] , the remapping reflecting the effects of the ballistic move (i.e. employing the method of characteristics) and for a minority of the population, reflecting in addition the effects of collisions.. The benefit of moving the initial cell is essentially that it allows us to focus on the conservation of various quantities associated with a single initial cell (number, energy, momentum) when the contents of that cell are remapped to the phase space mesh. Particular attention was paid in plasma simulations to handling the ballistic motion near the points at which particles bounce, and in the vicinity of the zero energy cell, which turns out to be a little difficult to handle while conserving energy [4; 5] .. In the earlier work, the order of the scheme was not considered to be of great concern, since the methods were integral methods and the number of remappings per collision time (which is often the critical physical time period) or even during the entire simulation was small. The remapping errors were thus believed to be modest. Nevertheless, if the desirable properties of the scheme can be retained in a higher order version, this would represent an improvement.. It is the purpose of this paper to report a simple set of modifications (essentially a small correction to the final position of the MC upon remapping) which changes the order of the spatial move from second to fourth. The basic CS is unchanged by these modifications, in that conservation laws can be built into the scheme as before; the ease of implementation is similarly basically unaffected. (While a similar procedure can certainly be applied to the energy/velocity move, its effects on energy conservation mean that its desirability is less clear cut. In this work, we focus on neutral particle kinetics, where the velocity is constant.) Section 2 briefly reviews the Convected Scheme, with particular emphasis on the ballistic operator and the remapping rule it employs. Section 3 discusses the qualitative and quantitative behavior of the numerical errors arising in the semi-Lagrangian solution of a transport problem, and it gives the motivations for the development of a high-order ballistic operator. In Section 4, a closed-form solution for the leading error of the CellCentered Semi-Lagrangian CS is obtained, which is amenable to be directly compensated by the use of 'small corrections' to the final position of the MCs, as described in Section 5. When a uniform velocity-field is considered, the 1D results generalize naturally to a 2D or 3D domain, by simply applying the corrections independently for each of the Cartesian axes. Section 6 presents a simplified treatment for the solution of the 3D continuity equation with non-uniform velocity field. Section 7 describes two different strategies for suppressing the oscillating behavior in the numerical solution which arises when the 2 initial conditions are not sufficiently smooth (for smoothness, a continuous second order derivative would be required): the resulting scheme correctly preserves the monotonicity of the solution for generic initial conditions. Section 8 describes applications to solution of the 1D advection equation with uniform velocity, 2D continuity equation with nonuniform velocity, and 3D-3V Boltzmann equation describing the gas expansion from a nozzle through a tube into vacuum. This 3D kinetic test was chosen for its applicability to space thruster simulations. A high order scheme for solution of 'kinetic equations' was derived, which is 4 th order accurate in space. The scheme is based on the 'Convected Scheme' (CS), which is a method of characteristics applied to the evolution of particle density in phase space. The CS moves initial cells and maps them back onto the phase space mesh, in such a way as to build in local conservation laws (for density, energy etc.) in a form (discussed in detail elsewhere [1] ) such that, for instance, the mean energy is conserved for each final spatial cell, for the given initial phase space cell. A Modified Equation Analysis applied to the CS was used to show that 4 th order accuracy in space may be obtained by simply applying a small correction to the position of the cell which is to be mapped back to the mesh. Since the remapping phase was left unchanged, the high-order scheme retains the most desirable properties of the basic CS: it is conservative, it preserves positivity, and it is easy to implement. In particular, positivity preservation was achieved naturally without the need to strictly enforce monotonicity; this is an advantage over those schemes that use high-order reconstructions to achieve higher-order convergence. Nevertheless, there exist situations where the numerical solution shows unphysical oscillations (e.g. in the presence of shocks); two different 'monotonicity-preserving' versions of the CCSL-CS were derived for use in such applications. Numerical results were illustrated in application to 1, 2 and 3D examples. The order of the scheme appears to be confirmed by these examples. The 3D example consisted of gas flow from a nozzle through a cylindrical tube into vacuum, and this calculation was performed in Cartesian coordinates and the corresponding velocities. Results were shown at different Knudsen's numbers, illustrating apparent changes in the flow patterns as Kn was varied across the 'transitional regime'.. Since the multi-dimensional kinetic simulation of a neutral gas flow is the main application of the present scheme, one of the important conclusions to this work is that we should think carefully about the ray-effect and ways to mitigate it, other than by numerical diffusion. This will be the subject of future work.. What we have obtained is a 5-term expansion in the basis functions ∂fα ∂(·) , with unknown coefficients [∆n, ∆u x , ∆u y , ∆u z , ∆ε ]. These 5 coefficients are uniquely determined by requiring the combination of all the ∆f α s to satisfy the 5 scalar conservation equations.

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 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 O O O O O O O O O O O O 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 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 B 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 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


Exploring the neighborhood with dora to expedite software maintenance Completing software maintenance and evolution tasks for today's large, complex software systems can be difficult, often requiring considerable time to understand the system well enough to make correct changes. Despite evidence that successful programmers use program structure as well as identifier names to explore software, most existing program exploration techniques use either structural or lexical identifier information. By using only one type of information, automated tools ignore valuable clues about a developer's intentions-clues critical to the human program comprehension process. In this paper, we present and evaluate a technique that exploits both program structure and lexical information to help programmers more effectively explore programs. Our approach uses structural information to focus automated program exploration and lexical information to prune irrelevant structure edges from consideration. For the important program exploration step of expanding from a seed, our experimental results demonstrate that an integrated lexical-and structural-based approach is significantly more effective than a state-of-the-art structural program exploration technique. Completing a software maintenance or evolution task first requires understanding the existing software, followed by performing the actual modification and then revalidating the subsequent software version [6] . For maintenance tasks such as debugging, the first step of finding and understanding the code relevant to a bug fix tends to take more time than actually fixing the bug [20, 21] . With as much as 60-90% of software life cycle resources spent on program maintenance [6, 13] , there is a critical need for automated tools to help explore and understand today's large and complex software.. Automated tools can draw from the variety of information developers use to explore programs, such as expert knowledge, external documentation, or dynamic information. Regardless of additional available information, the developer will always be interested in the source code itself. Thus, in this paper we focus on static information available from the source code, in the form of programmer-defined structure and lexical identifier names. Most automatic exploration techniques that leverage this structural and lexical information focus on either search or navigation.. When searching code, maintainers typically use lexical information found in the program's comments and identifiers. Identifier names often communicate a programmer's intent in writing pieces of code [8, 22] , and therefore provide valuable information to the developer. To explore a program by searching, the developer enters a query related to the maintenance task and the search tool retrieves potentially relevant program elements. Thus, searches find disparate program elements relevant to a query, but ignore structural information that may help eliminate irrelevant results.. When navigating code, maintainers often explore based on the program structure by following method call chains or control flow, as well as dependence, variable def-use, or type hierarchy relationships. In contrast to lexical searches, navigation suggestions utilize program structure information to automatically recommend relevant sections of code [32, 39] . Unfortunately, a single program element may be structurally connected to tens or hundreds of other elements, when only a handful are relevant to the maintenance task.. Thus, most existing program exploration techniques use either lexical or structural information, despite evidence that successful programmers use lexical as well as structural information to explore programs [33] . By using only one kind of information, automated tools ignore valuable clues about a developer's intentions [5] -clues critical to the human program comprehension process. By utilizing lexical as well as structural program information, we can create automatic program exploration tools that mirror how humans attempt to understand code.. In this paper, we present and evaluate an automated approach for focusing program exploration that exploits both structural and lexical information. We have implemented our technique as an automated tool, Dora the Program Explorer.. 1 Dora takes as input a natural language query related to the maintenance task and a program structure representation to be explored. Dora then outputs a subset of the program structure relevant to the query, called a relevant neighborhood. In this paper, we assume a starting point, or seed, in the program structure representation and we focus on finding the relevant neighborhood for this seed. The current implementation of Dora uses the program call graph [14] as the program structure representation to be explored, and methods as the seed elements.. This paper makes the following contributions:. • A technique to automatically identify the relevant neighborhood of a call graph using lexical information, including a technique to score method relevance with respect to a natural language query. • An Eclipse plug-in, Dora, that implements our technique and enables programmers to visualize a relevant neighborhood for software maintenance tasks. • Quantitative evaluation against an existing structuralbased technique and two naive lexical-and structuralbased techniques for a baseline comparison. Our experimental results demonstrate that an integrated lexical-and structural-based approach is significantly more effective than a state-of-the-art structural program exploration technique. Completing software maintenance and evolution tasks for today's large, complex software systems can be difficult, often requiring considerable time to understand the system well enough to make correct changes. To help programmers more effectively explore programs for software maintenance tasks, we present a technique that exploits both program structure and lexical information. The experimental results demonstrate that our integrated lexical-and structuralbased approach is significantly more effective than a state-ofthe-art structural program exploration technique, motivating further development of integrated structural and lexical techniques. In this study, we found that the integrated Dora approach outperformed the purely structural Suade approach, motivating further development of integrated structural and lexical techniques.. In addition, we found that not all integrated approaches outperformed a purely structural approach. For example, the naive lexical scoring mechanism (OR) performed equivalently to structural-based Suade, and AN D performed worse. Because AN D requires all query terms to be present, it is very sensitive to the selected query terms. Thus, the success of a lexical-and structural-based technique is highly dependent on the performance of the lexical scoring technique.. Of the three lexical scoring techniques, Dora outperformed OR and AN D. In Figure 4 , Dora clearly outperforms OR and AN D, although not with statistical significance over OR. However, Figure 5 shows that Dora performs as good as or better than OR in every concern. Further, there are additional lexical method features that could enhance Dora in the future, which might offer significant improvements over the naive OR technique.. In the future, our scoring technique could be integrated into Eclipse's call hierarchy or a whole-program call graph visualization tool to highlight relevant suggestions. To overcome limitations in static representations, Dora could allow programmers to add conceptual edges [10] to the program representation, or take advantage of common programming frameworks to discern additional relationships [25] . Overall, we found Dora to be the most successful technique, and structural-based Suade to be competitive with the naive lexical-and structural-based OR. Of all the techniques, naive AN D had the worst performance. For both Dora and Suade, the recall progressively increases as the threshold decreases, whereas the precision increases with the threshold and drops off again when the threshold gets too high. The peak in Dora's F measure performance at (R = 59, P = 43) occurs at the 0.5 threshold. The peak in Suade's performance at (48, 33) occurs at the 0.41 threshold. At (23, 23) , AN D performs similarly to Dora and Suade at higher than optimal thresholds, 0.99 and 0.64, respectively. At (60, 32), OR performs similarly to Dora and Suade, with less than peak precision for Dora, and slightly better than peak recall for Suade. Figure 3 demonstrates how Dora outperforms Suade in terms of precision over many thresholds, and performs equivalently in terms of recall. Specifically, Dora outperforms Suade in precision for thresholds 0.05-0.98 (Dora) and 0.0-0.59 (Suade). Suade and Dora perform equivalently on the training set for all other thresholds. Figure 4 are also seen for most of the <concern, query> pairs. Although the ideal evaluation would recursively explore from each seed method, incorrect identifications would propagate and unfairly skew the results. Therefore, our evaluation compares the effectiveness of each technique applied one edge away from a single seed method. For each method m in the set of evaluation concerns, we applied each scoring technique to all the callers and callees of m, and calculated the precision and recall for m. We used Eclipse [17] to generate the structural information used by the techniques.. Both Suade and Dora output relevance scores ranging from 0 to 1. However, to evaluate the techniques in terms of precision and recall requires a threshold to map these scores to 0 or 1. Because this threshold selection is a potential threat to validity, we evaluated the threshold performance on the training data set used for Dora. We evaluated the precision and recall at threshold levels varying from 0 to 1 at 0.005 intervals, and selected the threshold for each technique that maximized the mean F measure. We found that Suade performed best at a 0.3 threshold, and Dora at a threshold of t1 = 0.5.. 6 Based on these thresholds, the results for Dora and Suade were partitioned into relevant (1) and irrelevant (0) scores before calculating precision and recall.

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 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 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 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 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 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 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 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 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 O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


Gaze Tracking for Region of Interest Coding in JPEG 2000 Current image coding systems such as JPEG are far away from the capability of the human perceptual system in that it does not aim to maximise the reconstruction quality of image contents, especially at low bitrates. Humans are often concerned with the interpretability of the image and thus improved reconstruction quality in image contents would allow improved recognition performance. This paper addresses this issue by incorporating characteristics of the human perceptual system into an image coding system by making use of the human visual attention spatial and temporal characteristics. This is achieved by using an eye-tracking device at the encoding end. Human visual attention mechanisms would direct the viewer's eye movements around the image to provide a sequence of fixations, which can be analysed, clustered and classified into regions of interest (ROI). These ROIs can be used by the JPEG 2000 image coding standard to encode and prioritise image content and improve recognition performance.AbstractAnthony Nguyen * , Vinod Chandran, Sridha SridharanImage and Video Research Laboratory, School of Engineering Systems, Queensland University of Technology, GPO Box 2434, Brisbane QLD 4001, AustraliaCurrent image coding systems such as JPEG are far away from the capability of the human perceptual system in that it does not aim to maximise the reconstruction quality of image contents, especially at low bit-rates. Humans are often concerned with the interpretability of the image and thus improved reconstruction quality in image contents would allow improved recognition performance. This paper addresses this issue by incorporating characteristics of the human perceptual system into an image coding system by making use of the human visual attention spatial and temporal characteristics. This is achieved by using an eye-tracking device at the encoding end. Human visual attention mechanisms would direct the viewer's eye movements around the image to provide a sequence of fixations, which can be analysed, clustered and classified into regions of interest (ROI). These ROIs can be used by the JPEG 2000 image coding standard to encode and prioritise image content and improve recognition performance. The ultimate end users of many imaging systems and processes are humans who are often concerned with the interpretability of the image to achieve maximum content recognition. For example, integral to people requiring the progressive download and display of images over low bandwidth channels such as the Internet and World Wide Web are an image coding system's ability to encode objects or regions of interest with higher fidelity and priority such that its reconstruction will enhance or maximise image content recognition. People often have to either wait for a lengthy period of time for particular regions of an image to reconstruct to an appropriate level or wait till the whole image is fully downloaded before it can be interpreted. This limits user satisfaction and hence productivity. The functional interpretability requirement for compressed imagery is also important in other low bandwidth applications such as the delivery of imagery over Mobile telephony and Defence network infrastructures.. Traditional image coding systems, such as JPEG and JPEG 2000 [1] , are based on encoding image data using an objective measure of overall image distortion, which treats all impairments as equally important and this may not correlate well with image quality or interpretability [2] [3] [4] [5] . An example of a JPEG 2000 encoded 'Lena' image is shown in Fig. 1(a) . Notice that the degradation in image quality at this low bit-rate is uniform over the entire field of the image and does not permit regions of visual interest, or more commonly referred to as regions of interest (ROI), to be reconstructed with higher quality for improved interpretability.. On the other hand, when an image coding system aims to compress and prioritise image contents or ROIs, the quality in these regions would be greatly improved to allow faster image content recognition. An example of this is shown in Fig. 1(b) , where a JPEG 2000 based ROI coding method was used to prioritise the face region ahead of its surroundings to considerably improve the interpretability of Lena's face. In such a case, the ROI was defined to be the face, which was considered important for interpretability. This ROI can then be used to prioritise the encoding of the image with a certain level of priority to the ROI. The level of priority can be defined using a quantitative measure of the region's 'importance'. Several JPEG 2000 based ROI coding methods have been standardised (e.g. [1, 6] ) and proposed (e.g. [7] [8] [9] [10] [11] [12] [13] ) to encode and prioritise pre-defined ROIs. An overview of the various algorithms and their advantages and limitations can be found in [5, 12] .. Although algorithms exist for encoding ROIs with higher priority, there is still a need to address the question of how to define or select ROIs for such coding. A number of automated techniques using image processing algorithms have been proposed to predict ROIs or regions of high information content in images and video [14] [15] [16] [17] [18] [19] [20] [21] . Importance scores (or weights of relative importance) are also commonly assigned to ROIs to generate an importance map. In such a map, a quantitative measure of the degree of importance is assigned to each pixel location in the image space to represent the relative importance of different regions in an image. Some of these approaches have been applied to visually lossless coding [22] [23] [24] and ROI coding [25, 26] . Importance maps have also been applied to image coding simulations to improve the interpretability in regions of high importance [21, 27] . The loss of detail during compression is minimised in terms of human perception so that when decoded, degradations in the image does not appear to be visually disturbing in ROIs (i.e. visually salient areas).. Despite these research efforts, there are a few challenges in automatically generating importance maps or models of visual attention, namely: (1) it is difficult to prepare a list of features that will characterise all ROIs, (2) it is a tough problem in weighting and thresholding importance of features without prior knowledge of the image, and (3) adding more and more features can lead to diminishing returns and degraded performance. Therefore, manual involvement in the selection of ROIs can help a lot.. A number of researchers have investigated the concept of manually identifying ROIs by taking advantage of the technology advances that have taken place in eye movement tracking [28] [29] [30] [31] [32] [33] . These advances have resulted in cheap, fast, accurate and user friendly gaze tracking systems and thus are no longer intrusive or require cumbersome headgear to be worn. The challenge in these gaze-based ROI identification systems is to be able to appropriately process fast and inherently noisy eye movements.. In particular, Nguyen et al. [32, 33] have analysed real-time gaze information for determining ROIs and subsequently applied it to spatially selective image coding using JPEG 2000. In such a system, the image author (or creator of the image code-stream) can use his/her gaze to selectively encode the image. Although, the system proposed in its current form was used for off-line gaze analysis and image coding, the system has potential in real-time image coding applications whereby the passive use of a person's gaze can automatically and appropriately encode images as desired by the image author. Smart applications such as medical imaging and photographic surveillance, which may require the selective encoding and progressive transmission of regions or targets of interest for expert analysis at remote sites will greatly benefit from advances in gaze-based image coding. In addition, a web-based application may include an image author editing and placing compressed images of a photo album online for remote access by interested parties. In such an application, large photographs can be progressively transmitted to the client with ROIs reconstructing faster than unimportant regions. Hence, images need not be fully decoded for the user to view contents and/or interpret whether he/she wants to proceed further with the image download or not.. This paper will present a review of the gaze-based image coding system proposed in [32, 33] with the aid of an extended range of example images and figures illustrating the ROI identification process. Further investigations into the system's ROI coding performance in objective quality experiments will also be presented. This paper has presented an importance mapping technique that can be used for image content coding and prioritisation. An eye tracker was used to locate and trace a viewer's eye movements over a visual stimulus, and this was subsequently input into an importance mapping algorithm to automatically identify fixated ROIs. Such an approach incorporates the spatial and temporal characteristics of the human visual attention system, and thus overcomes many of the challenges involved with image processing algorithms in locating or segmenting image contents in cluttered scenery. The importance mapping scheme can also be input to ROI coding schemes such as those defined and proposed for JPEG 2000. Results show that improved interpretability in ROIs at low bit-rates (or high compression ratios) can be achieved. Future advances in gaze-based image coding technologies has potential use in providing real-time solutions for 'smart' image dissemination applications.

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 O O O O O O O O O O O O O O O O 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 B I 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 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 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 B I 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 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 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 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 O O O O O O O O O O O O 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 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 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 O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 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 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 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 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 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