Simple Monte Carlo and the Metropolis algorithm We study the integration of functions with respect to an unknown density. We compare the simple Monte Carlo method (which is almost optimal for a certain large class of inputs) and compare it with the Metropolis algorithm (based on a suitable ball walk). ::: Using MCMC we prove (for certain classes of inputs) that adaptive methods are much better than nonadaptive ones. Actually, the curse of dimension (for nonadaptive methods) can be broken by adaption. Let us discuss our ndings. The results from Section 3 clearly indicate that the superiority of Metropolis algorithms upon simpler (non-adaptive) Monte Carlo methods does not hold in general. Specically, it does not hold for the large classes F C (Ω) of inputs without additional structure.. On the other hand, for the class F α (B d ), specic Metropolis algorithms that are based on local underlying walks are superior to all non-adaptive methods. Even more, as formula (40) indicates, on B d the problem is tractable in d and α: The cost of the algorithm S δ * n , roughly given by the number n of evaluations of and f , increases like a polynomial in d and α.. Precisely, according to (40), the asymptotic constant lim n→∞ e(S δ * n , F α (B d )) 2 · n is bounded by a constant times max {d 2 , dα 2 }, i.e., the complexity grows polynomially in d and α and, for xed d, increases (at most) as α 2 . If we only allow non-adaptive methods then this asymptotic constant, again for xed d, increases at least as α d , see (15) . Notice that according to Theorem 5 the size δ * of the underlying balls walk needs to be adjusted both to the spatial dimension d and the Lipschitz constant α.. The analysis of the Metropolis algorithm is based on properties of the underlying ball walk; in particular we establish uniform ergodicity of the ball walk for convex bodies Ω ⊂ R d . Also, based on conductance arguments, we provide lower bounds for the spectral gap of the ball walk. As a consequence, in the case α = 0 the estimate (39) provides an error bound for the ball walk (Q δ , µ), which is asymptotically of the form e(S δ n , L 2 (B d , µ)) ≤ Cδ −1 (d/n) 1/2 . The results extend in a similar way to any family Ω d ⊂ R d for which the underlying local ball walk Q δ has (for δ ≤ δ d ) a non-trivial lower bound for the local conductance that is independent of the dimension.. Finally, from the results of Section 3 we can conclude that adaption does not help much for the classes F C (Ω). Hence we have new results concerning the power of adaption, see [20] for a survey of earlier results, in particular that it may help to break the curse of dimensionality for the classes F α (B d ). Also we let E denote the mapping which assigns any integrable function its expectation as a constant function E(f ) : = Ω f (x) µ(dx). For each K the mapping P − E is bounded in L ∞ (Ω, µ), with norm less than or equal to one and we shall strengthen this uniformly for kernels K ,δ with ∈ R α (Ω). Within this operator context uniform ergodicity is equivalent to a specic form of quasi-compactness, namely there are 0 < η < 1 and n 0 ∈ N for which (42). We rst show that reversibility allows to transfer this to the spaces L 1 (Ω, µ ).. Lemma 13. Suppose that the transition kernel K with corresponding mapping P is reversible. Then for all n ∈ N we have (43) . Proof. If K is reversible, then so are all iterates K n . Thus for arbitrary functions f ∈ L 1 (Ω, µ) and h ∈ L ∞ (Ω, µ) we have, using the scalar product on L 2 (Ω, µ), that. Consequently, for any f ∈ L 1 (Ω, µ) we have. from which the proof can be completed.. Proposition 4. For any convex body Ω ⊂ R d there are an integer n 0 and a constant 0 < η < 1 such that uniformly for ∈ R α (Ω) we have (44) . Proof. This is an immediate consequence of the bound (33). As mentioned in Remark 5 uniform ergodicity was established uniformly for ∈ R α (Ω). It is well known (see [17, Thm. 16.2.4] ) that this implies that there is an η < 1 such that uniformly for ∈ R α (Ω) we have (45). In the light of Lemma 13 this yields (44).. Finally we sketch the Proof of Lemma 11. Using Proposition 4 we can extend the proof of [16, Thm. 1].. In particular, the bounds from Eq. (13)(15) in [16] tend to zero uniformly for ∈ R α (Ω). Moreover, starting at zero, after one step according to the underlying ball walk, the (new) initial distribution is uniformly bounded with respect to the uniform distribution on Ω, hence also with respect to µ , such that we establish the asymptotics in Lemma 11.

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


Constraint-based simulation of carton folding operations Cartons are a common means for packaging a variety of items. These are usually "erected" by dedicated machines which fold the carton into shape from a flat net. When there is a need to use new forms of carton, dedicated machinery may not be appropriate and reconfigurable systems may be used instead. There is a need to simulate the erection process itself to ensure that this behaves as expected. This paper investigates the use of constraintbased techniques to produce such a simulation. The necessary commands are generated from the geometry of the carton net. Geometric constraints are imposed to ensure that the net remains intact and so resolve cases where loops of faces are present. Cartons represent a popular way of packaging a variety of consumer prod ucts including food items, electronic components and stationary supplies [1] . They are versatile and they are likely to increase in popularity as they have good environmental properties in regard to recycling and degradability.. Cartons are formed or erected from flat nets of carton-board which have been cut and printed. Additionally creases are normally pre-formed by press ing thin metal rules into the flat board. Typically the erection process is car ried out by dedicated packaging machines which fold along the appropriate creases [2] . The carton is usually held in its erected state by gluing or by tucking and locking of flaps.. For some ranges of products, there is a desire to adapt the carton to accommodate different sizes and quantities [3] . There is also interest in "innovative" designs of cartons [4, 5, 6 ] so as to provide greater appeal for the customer. These ideas can be accommodated by designing new dedicated machines or introducing reconfigurable processes [7] . Reconfigurability can be obtained by the use of robots and these have been used in various ways to fold cartons [8, 9, 10] . Additionally, there has been related interest in paper folding [11, 12] and in the use of robots to form origami models from paper [15] .. When designing a packaging system, there is naturally a need to simulate the machinery and its interaction with the packaging material. There are difficulties when the material is carton-board as its properties are non-linear [16, 17] and can vary with the properties of the environment in which pro cessing takes place [18] . Often numerical techniques such as finite element analysis, with a suitable representation of the material properties, are needed [19, 20, 21] .. When dealing with reconfigurable systems, it is also important to simulate the erection process of the carton itself. This is to ensure that the process is feasible and no unwanted interferences occur between different parts of the carton. It also helps in checking that parts of the net which are to be "captured" by other parts are moved to appropriate positions. The simula tion also provides data for the machine in terms of settings [22] and control parameters.. This paper looks at how to provide such a simulation of the motion of the carton during erection. It aims to do this based on data from the original flat net for the carton. Folding takes places along creases and these divide the net into faces. The next section discusses the face graph [23] which shows the adjacency between faces. When this has no loops (as can occur with simple cartons [9, 10, 11, 24] ), the erection process is one of driving all the creases through the required angles, assuming that there are no cases of faces interfering with each other. The interference problem is certainly an issue. For simple cartons it is usually straightforward to see how interferences can be avoided, but this is not the case for more general folding operations [25] .. When loops are present, "gussets" exist in which panels move because of the motion of neighbours. Section 3 discusses how transforms can be applied to simulate the motion of the faces of cartons and it shows how commands can be created to enable the angles for gusset folds to be found using a constraint-based approach. An example of a tray carton is discussed in the early sections. A second example of a skillet carton is given in section 4. Section 5 investigates whether the approach can be extended to more complex folding situations and looks at an example taken from origami. In particular this highlights the large angular changes that may be induced in some gusset folds by relatively small changes in the positions of neighbours. This means that care is required to ensure that constraint resolution finds the appropriate angular positions. When designing packaging machinery, there is a clear need to simulate the action of the machine itself to check that it functions correctly. There is also a need to simulate the motion of the carton itself during the various stages of the erection process. This is to ensure that unwanted interference between faces of the carton net does not occur. This is particularly the case when reconfigurable equipment is being used to check that the configuration is correct and to establish what motion control is required. It has been seen that it is possible to obtain a simulation by handling the transforms applied to the carton faces. Reducing the face graph to a spanning tree imposes a hierarchy on the faces and allows the required driving motions to be established. The cuts effectively made in forming the tree correspond to dyads in which the angular positions of two adjoining faces need to be established. This can be done by imposing constraints which say that the edges on either of each cut must come together.. Such constraints can be dealt with within a constraint modelling environ ment. The necessary commands can be created automatically from a data file which defines the net of the carton (in terms of nodes and faces) and identifies where the cuts (and dyads) are deemed to lie. Since each dyad normally can have two solutions, care is needed to ensure that the correct one is found. This can be done by imposing bounds on the allowable angles for the faces or by imposing suitable values with which to start the search for the solution.. These ideas have been demonstrated successfully on two typical forms of carton, namely a tray and a skillet with a gable-end. In addition, the approach has been shown to work well with the more complicated folding pattern required for an origami bird.

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


Optimization of a novel micro-opto-X-ray imaging lens A mechanically deformable reflection transmission MOEMS system is capable of focusing X rays to sub micron spots. This paper considers the geometry of the proposed deformed slotted microcantilever lens element under thermally derived strain, using finite element analysis. The work shows that an optimized MOEMS design using a slotted polyimide/gold thermal bimorph cantilever is capable of achieving ideal geometry with a larger than expected number of focusing slots up to 111 at 2 lm width. Ó Micro-opto-electro-mechanical systems (MOEMS) are of interest for biomedical applications. For instance, studies of the Bystander effect require controlled irradiation of biological cells with focused X-rays to reveal the mechanisms occurring [1, 2] .. A MOEMS system, designed for this application, is an integration of a flexible microlens, sensor and mechanical actuation mechanism with an electro-mechanical control system to set the require focal length. The system has been given the acronym MOXI, standing for micro-opto-X-ray Imaging. The design and microfabrication of a one dimensional (1-D MOXI) focusing MOEMS system with micro slots for use in X-ray analysis of biological cells was reported in [3] . A 2-D MOXI adaptive optics system for X-ray focusing was suggested in [4] . The present paper focuses on details of the geometry of the deformed slotted micro-beam lens element under thermally derived strain, using finite element analysis, and suggests an optimized MOEMS design, giving prescribed curvature of the lens through changing the number and the dimensions of the slots.. A 1-D reflective focusing element forming part of a MOXI/MOEMS providing focusing in one direction only is shown in Fig. 1 . This is intended for use with a second identical element in cross-coupled Kirkpatrick Baez mode to produce a sub micron spot focus [5] . A series of simulations using FEA analysis has shown the dependence of tip deflection, form and internal stresses on structure and temperature for microcantilever bimorph structures as designed for an X-ray focusing MOEMS (1-D MOXI). The critical importance of the number of slots in obtaining the spherical form necessary for aberration free spot formation has been shown. The superiority of non-linear FEA compared with linear FEA has been revealed by the study, but a simple analytical model is surprisingly good. An optimized structure containing 111 slots 2 lm wide is shown to give a thermally actuated form very close to a perfect circle, as required for the 1-D MOXI MOEMS device.

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


Lightweight object specification with typestates Previous work has proven typestates to be useful for modeling protocols in object-oriented languages. We build on this work by addressing substitutability of subtypes as well as improving precision and conciseness of specifications. We propose a specification technique for objects based on abstract states that incorporates state refinement, method refinement, and orthogonal state dimensions. Union and intersection types form the underlying semantics of method specifications. The approach guarantees substitutability and behavioral subtyping. We designed a dynamic analysis to check existing object-oriented software for protocol conformance and validated our approach by specifying two standard Java libraries. We provide preliminary evidence for the usefulness of our approach. In object-oriented software systems, objects routinely store data. The data can only be accessed and modified through the methods defined in the objects' interfaces. This is the essence of information hiding [19] . The engineering of object-oriented software includes specifying these interfaces, Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. implementing them with classes, and verifying design and implementation with formal methods and testing. Thus improving interface specifications can greatly facilitate all these engineering tasks. The pervasive use of mutable state in object-oriented software brings about a number of challenges with specifying objects. We propose a novel specification technique based on typestates. It preserves substitutability with state refinement, guarantees precision and behavioral subtyping with union and intersection types, and allows more concise specifications with state dimensions. We developed a dynamic analysis based on state invariants to check specification conformance. Two case studies of annotating standard Java libraries provide evidence for the usefulness of our approach. They each revealed potential for future work.. We see our dynamic analysis as a testbed that helps in exploring various research questions. In future work we plan to extend our model of state spaces and our predicate checking facilities. We also hope to gather empirical data about data sharing policies used in practice. This will guide our effort to devise a static checker for our approach to state-based specifications. Statecharts [15] are used to visually specify reactive systems. We make their concepts of AND-and OR-states suitable for object-oriented languages and base our semantics on union and intersection types.. Dunfield and Pfenning developed a decidable type system for union and intersection type refinements [9] . We propose states as basic units of refinement for objects and develop a deterministic algorithm for typing function applications for our dynamic analysis.. A large body of research is available on logic-based type systems for effective computation. Effective type refinements [17] use linear logic to form a theoretical model for Vault (discussed above) and similar systems. Separation logic [21] is based on Hoare logic.. Metal checks protocols in C programs [14] based on syntax. It defines protocols with states and scales with the number of protocols, just like our approach. ESC [12] verifies properties of programs written in Java an other languages.

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


Advanced code coverage analysis using substring holes Code coverage is a common aid in the testing process. It is generally used for marking the source code segments that were executed and, more importantly, those that were not executed.Many code coverage tools exist, supporting a variety of languages and operating systems. Unfortunately, these tools provide little or no assistance when code coverage data is voluminous. Such quantities are typical of system tests and even for earlier testing phases. Drill-down capabilities that look at different granularities of the data, starting with directories and going through files to functions and lines of source code, are insufficient. Such capabilities make the assumption that the coverage issues themselves follow the code hierarchy. We argue that this is not the case for much of the uncovered code. Two notable examples are error handling code and platform-specific constructs. Both tend to be spread throughout the source in many files, even though the related coverage, or lack thereof, is highly dependent.To make the task more manageable, and therefore more likely to be performed by users, we developed a hole analysis algorithm and tool that is based on common substrings in the names of functions. We tested its effectiveness using two large IBM software systems. In both of them, we asked domain experts to judge the results of several hole-ranking heuristics. They found that 57%-87% of the 30 top-ranked holes identified by the effective heuristics are relevant. Moreover, these holes are often unexpected. This is especially impressive because substring hole analysis relies only on the names of functions, whereas domain experts have a broad and deep understanding of the system. We grounded our results in a theoretical framework that states desirable mathematical properties of hole ranking heuristics. The empirical results show that heuristics with these properties tend to perform better, and do so more consistently, than heuristics lacking them. Common code coverage analysis tools rely on the hierarchical structure of the source code. For example, such tools often support drilling down from directories through files and functions to lines of source code. Missing coverage, however, is frequently not aligned with the source code hierarchy. Rather, it may be aligned with a certain functionality that cuts across the predetermined hierarchy. One example is error handling. Error handling code is often evenly spread throughout the source code and typically represents just a small part of the source code. Thus, even if the error handling code is not covered at all, a hierarchical view of code coverage might obscure this fact. In addition, searching through the predetermined hierarchy is often tedious as the hierarchy might not divide the coverage tasks evenly. A coverage task consists of an identifier of the element to cover, such as a function name. The set of all coverage tasks indicates the full possible coverage. If all possible coverage tasks are covered, we say that there is 100% coverage.. Substring hole analysis aggregates coverage data across the structural code hierarchy. It looks for common substrings among names of source code elements, typically function names. Substring hole analysis is based on the observation that developers typically give semantically meaningful names to software source code elements. In addition, there often exist coding conventions that enhance the semantic commonality among names. Therefore, source code elements with similar names are often associated with a common topic, context, or functionality.. In a nutshell and very informally, substring hole analysis considers substrings as holes if they are common to multiple element names with poor coverage. However, finding these holes is challenging. First, identifying relevant substrings is tricky. There are many possible substrings, but they are often meaningless. Second, users are typically willing to examine only a few results, so effective ranking of holes is crucial. However, multiple factors influence the risk that a hole represents. The main factors we have identified are the number of coverage tasks in a hole and the percentage of coverage of a hole. The substring hole analysis algorithm and tool are challenged with collapsing these multiple dimensions into a linear order so a user can comprehend the data. Aggregating and presenting coverage information per substring provides the user with insight on aspects of the source code that lack coverage.. Substring hole analysis may be viewed as a post-processing stage that requires only generic coverage data. Therefore, it is independent of the software's programming language, platform, and coverage data collection tool. The substring hole analysis algorithm and tool discussed here is part of our coverage analysis tool FoCuS [5] . Further background and related work are presented in Section 2.. This paper provides the following main contributions:. • Novel algorithm and tool for substring hole analysis. • Methodology for effective code coverage analysis. • Mathematical framework for describing desired properties of hole-ranking heuristics. • Observations from running the tool on two IBM software systems and especially from comparing the holeranking heuristics. We empirically validate the effectiveness of our tool and hole-ranking heuristics. We show that there are effective ranking heuristics on two very different large IBM software systems. The effectiveness of the heuristics was determined by asking domain experts to judge which of the 30 topranked holes of each heuristic were indeed holes. There was generally an agreement among the experts, even across the software systems, regarding the effective heuristics. Moreover, the effective heuristics suggested holes that the experts were previously unaware of. We were able to empirically validate the importance of the main problem dimensions that we identified. Further, the effective heuristics hold the mathematical properties that we defined. Section 3 describes the methodology we recommend for effective code coverage analysis. Section 4 details our substring hole analysis algorithm. The substring hole analysis algorithm has three major stages: identifying holes, ranking holes for display, and eliminating duplicate holes. This paper concentrates on the second stage, ranking holes, which is the most challenging stage. We compare different heuristics that we implemented for ranking holes, both mathematically and empirically. The mathematical framework we developed is described in Section 5. Section 6 details the empirical comparison of the heuristics. We conclude and discuss future work in Section 7. Substring hole analysis is an effective way of viewing and analyzing large quantities of code coverage data. We developed a hole analysis algorithm and tool, as well as a theoretical framework for comparing hole-ranking heuristics. We ran experiments over two large IBM software systems that are very different in nature from one another. For each of these systems, we evaluated our ranking heuristics according to input from domain experts. The domain experts agree on the effective heuristic-sqCov. Other heuristics that have the mathematical properties we defined and the capability to weight the problem dimensions, such as Ranks, are also effective. Furthermore, the heuristics provided information about missing coverage of which the experts were previously unaware of. Our theoretical framework supports the experimental results. Heuristics with the desired mathematical properties performed better and more consistently in practice. The experimental results also provide empirical confirmation regarding the main dimensions of the substring hole analysis problem. These dimensions are the absolute size of the hole and the coverage percentage in the hole. Our experiments show that users prefer big holes, but the coverage percentage must be taken into account as well.. We intend to implement the improvements suggested by the experiments to our substring hole analysis tool. For example, it seems possible to significantly reduce or even eliminate the users' need to select an effective ranking heuristic. The experiments reveal that we should be able to provide an effective single ranking heuristic. By effective we mean that it is flexible and able to provide a ranking of holes that different users find useful. This paper describes experiments from two pilot projects for substring hole analysis. We are in the process of conducting two additional pilot projects, one on a large Java middleware product and one on a large firmware project. The preliminary results are similar to our conclusions in this paper.. Recently, we added another dimension to our reports using data automatically collected from version control. It is intuitively obvious that a hole representing functions that have been recently modified is more important than one representing functions that have not been changed since the previous version. This is due to the well-known correlation between code changes and the likelihood of bugs [8] . Currently, we simply mark holes as representing changed or unchanged code. However, we would like to factor in the degree to which the code has been modified.. The theoretical framework we defined received initial empirical confirmation from the experiments. We intend to continue to develop this framework, including a possible ranking based on the framework. In addition, the mathematical properties of the framework rules need to be further investigated and proven. The main goal of code coverage analysis is to increase the probability of finding bugs by improving the coverage of the system's test suite. Using the raw code coverage data to achieve this goal can be a difficult task, especially when the size of the data is very large. In many cases, the newly added tests improve the coverage but do not increase the probability of detecting new bugs. Substring hole analysis provides a list of uncovered holes that relate to a certain functionality of the system (e.g., error handling). Therefore, it helps in adding new tests or changing existing tests in a way that increases the coverage of the most significant code areas. To get the most out of substring hole analysis, we found it useful to make multiple rounds of analysis.. 1. In the first round, we recommend finding holes on the program hierarchy. Consider the case where most of the coverage tasks in a substring hole belong to an uncovered node in the hierarchy. For example, we may have a hole with 50 files, all of which belong to a single uncovered directory. Such a hole is less informative than other holes because there is already information about the directory in the hierarchical coverage analysis. Now consider a substring hole that contains tasks belonging to many different hierarchical nodes, most of which are partially covered. This is an interesting cross concern hole. In our experience, cross concern holes identify holes in the coverage that cannot be found with the standard hierarchical coverage techniques and are, therefore, of added value. We recommend listing the hierarchy holes and then removing the coverage tasks that correspond to these holes.. 2. In the next round, substring hole analysis is run on the remaining data. This typically reveals some holes that are well known to the user. For example, holes that are due to running on only a subset of the platforms supported by the software. Coverage tasks that belong to such "non-interesting" holes are then removed. This is straightforward to do with FoCuS.. 3. A final round of hole analysis is then done over the remaining data. This often triggers less obvious holes to surface.. The tool has various thresholds. We believe that the default parameter values work with the exception of one parameter. Section 4.3.1 discusses the tool parameters and their recommended values. We were fortunate to have domain experts evaluate the ranking of the ranking heuristics. One domain expert evaluated the rankings for BinaryManip and two domain experts evaluated the rankings for Driver. For the evaluation, we took the top 30 substrings (holes according to the heuristics) Table 3 : Example of substrings given to the experts. For each substring, our tool also provides a list of covered and uncovered functions from each of the ranking heuristics and created a merged list sorted alphabetically. Table 3 shows a small example of input that was given to the experts. The experts then marked the substrings that, in their opinion, are significant holes in this list. They also indicated the substrings they found especially interesting. We then gave scores to each of the ranking heuristics as follows. The initial score for all heuristics is 0. For each substring that the expert marked as a hole, if that substring appears among the top 30 holes of the heuristic, the score of that heuristic increases by one. Therefore, scores are in the range [0-30]. The higher the score, the better the heuristic is according to that expert.

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


Opening up design science: The challenge of designing for reuse and joint development This is the accepted version of the paper.This version of the publication may differ from the final published version. Permanent repository linkThe purpose of this paper is to advance design science by developing a framework for research on reuse and the relationship between external IT artifacts and their users. A design science approach to IS research needs to grapple with the fact that a number of relevant, economically attractive, external IT artifacts cannot be designed from scratch nor meaningfully evaluated based on the current state of development, and so design science research will struggle with incomplete cycles of design, relevance, and rigor. We suggest a strategic research agenda that integrates the design of the relationship between an external IT artifact and the user by considering the impact artifacts exert on users. Three dimensions derived from adaptive structuration theory inform our framework on three levels of design granularity (middle management, top management, and entrepreneur): agenda considers the dynamic properties of technological objects, adaptability refers to the functional affordance of external artifacts in development, and auspice captures the symbolic expression and scope for interpretation. We derive implications for research design. Information systems (IS) pervade everyday organizational life. Managers and IS professionals build and evaluate IT artifacts, such as vocabulary, symbols, models, algorithms, procedures, and instantiations, tailored to organizational needs in order to solve problems that, until now, could not be addressed by information technology. The design science approach in IS established rigorous research guidelines that foster contributions to the problem-oriented, innovative, and effective creation, deployment, and evaluation of IT artifacts in organizations (Hevner et al., 2004; March and Storey, 2008; March and Smith, 1995) . However, a growing number of IT artifacts are not only created outside the organization, they also extend beyond the organization in terms of both complexity and dynamics (Elbanna, 2010) . As a result, any one designer's ability to fully understand and influence overall development remains limited. Working with systems and environments such as GNU Linux, Apache, or Mozilla, to name just a few of the largest and most popular open source (OS) families of programs, managers and designers face the challenge of using external IT artifacts-existing artifacts developed outside their organization. This design activity that encompasses relating to external IT artifacts is only partially understood: as reuse across organizations (Ravichandran and Rothenberger, 2003; and as community relations entertained by firms (Shah, 2006; Dahlander, 2007) .. The emerging literature on reuse of external IT artifacts considers search and adaptation efforts (Bonaccorsi et al., 2006; Majchrzak et al., 2006; West, 2003) , whereas the literature on community relations emphasizes evaluation and sharing of IT artifacts (Henkel, 2006; Dahlander and Wallin, 2007; Dahlander, 2007; Stuermer et al., 2009 ). These design activities, while effective in tackling the challenge of dealing with external artifacts, partially ignore the systematic context difference between the external developers and the designers and users within the adopting organization. We currently lack a comprehensive framework that could inform design science research on the use of externally developed IT artifacts, in particular adaptation and evaluation. Crucially, use occurs in a different context from development and designers must be made aware of the effects external IT artifacts can have on use within the organization (Ciborra, 1998) . Starting with the search for an IT artifact and problem formulation all the way through the adoption, development and internal evaluation, understanding the effects of use and context, that may limit "degrees of freedom" in design, has become a priority for IS researchers and practitioners. A strategic perspective reinforces the urgency because successful information systems (e.g. for knowledge management) rely on accessible and well integrated IT artifacts (Butler et al., 2008; Massey et al., 2002) , and integration refers to the everyday context of use in an organization.. The purpose of this paper is to advance design science by developing a framework for research on reuse and the relationship between external IT artifacts and their users. We seek to advance avenues for future research on IS through the design science approach by formulating and grounding a set of research questions. In the next section, we briefly introduce the literature on the design of IT artifacts, and show the importance of a research thrust on designing and relating to externally designed IT artifacts. Next, we develop a framework of research questions to guide future work in this particular area. Before concluding, we discuss the implications of our framework for research design and for the role and focus of the design science researcher. Design science has evolved into a powerful set of theories and methods of design and action in IS.. A conventional approach to design science in IS benefits from a stable context along the dimensions of people, organization, and technology. We argue that the phenomenon of OS software introduces major changes in this context, calling for a new and important strategic research agenda for design science. A focus on the relationship between external artifacts and organizational users and designers can considerably broaden the scope of the design science approach and enrich research by incorporating theory from other fields, such as adaptive structuration theory (AST). Based on AST, we developed a new research framework covering agenda, adaptability, and auspice at three levels of granularitymiddle management, top management, and entrepreneur. The framework sorts design tasks and challenges pertaining to the different dimensions and shows how technological artifacts impact internal designers and users. Future work needs to develop methods and processes that ultimately help designers make key decisions regarding reuse and community relations. We outline a design science research vector along which researchers can organize their research activities.. A focus on the user-artifact relationship also opens up new research topics in other areas, such as motivation theory (flow, cognitive dissonance, self-determination), private-collective innovation theory, or behavioral economics (reciprocity, fairness, altruism). If the external IT artifact is developed outside the influence of any one organization, and if both technical characteristics and internal needs continue to evolve, the great promise of a design science approach lies in the carefully structured, rigorous, and repeated questioning, understanding, and construction of the relationship between artifact and user. Working on the research areas defined by the framework may even bring forth the contours of an "open design science."

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


Towards an ultra-low-power architecture using single-electron tunneling transistors Minimizing power consumption is vitally important in embedded system design; power consumption determines battery lifespan. Ultralow-power designs may even permit embedded systems to operate without batteries, e.g., by scavenging energy from the environment. Moreover, managing power dissipation is now a key factor in integrated circuit packaging and cooling. As a result, embedded system price, size, weight, and reliability are all strongly dependent on power dissipation.Recent developments in nanoscale devices open new alternatives for low-power embedded system design. Among these, single-electron tunneling transistors (SETs) hold the promise of achieving the lowest power consumption. However, SETs impose unique design constraints that strongly influence architectural and circuit-level decisions. Unfortunately, most analysis of SETs has focused on single devices instead of architectures, making it difficult to determine whether they are appropriate for low-power embedded systems.This article presents possible uses of SETs in high-performance and battery-powered embedded system design. The resulting fault-tolerant, hybrid SET/CMOS, reconfigurable architecture can be tailored to specific requirements and allows trade-offs among power consumption, performance, operation temperature, fabrication cost, and reliability. This work is a first step in evaluating the system-level potential of reducing power consumption by using SETs. In this article, we have analyzed the impact of using SETs in architecture and circuit design; proposed IceFlex, a fault-tolerant, hybrid SET/CMOS, reconfigurable architecture for use in high-performance and battery-powered embedded systems; and evaluated the energy efficiency, power consumption, and performance of IceFlex in these applications. Although using SETs for computation poses many design challenges, many of these challenges can be solved with the proposed architecture and circuit design techniques. SETs have some unique properties that permit significant improvements in energy efficiency compared with BJT, CMOS based design. In summary, we find that a hybrid SETs/CMOS architecture has the potential to improve energy efficiency in high-performance applications by 235¢ compared with today's CMOS while permitting operating frequencies that are as high, or higher. This improved energy efficiency can be traded for performance when operating within a power dissipation budget. In batterypowered embedded systems, such as sensor network nodes, SETs have the potential to increase energy efficiency by 201¢, thereby permitting corresponding increased in battery lifespan or permitting operation on scavenged energy. Although they hold great promise, the practical use of SETs will require additional research into fault tolerance techniques, processing technologies, and novel circuit designs. It is our hope that this article provide a starting point for additional research in this area and reveals the potential advantages of SET-based architectures.

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


Analytical solutions and criteria for the quantum discord of two-qubit X-states Except for a few special states, computing quantum discord remains a complicated optimization process. In this paper we present analytical solutions for computing quantum discord of the most general class of X-states and the criteria for each analytical solution to be valid. We discuss parameter regions that correspond to different analytical solutions and explain the underlying reasons for such structure to exist. We apply our formalism to study both arbitrary X-states and X-states with certain symmetries. We find that our analytical formalism is in excellent agreement with numerical calculation of quantum discord in both cases. Quantum discord [1, 2] as a measure of the quantumness of correlations has lead to revaluation of the advantage of quantum systems which are affected by decoherence. Numerous are the quantum protocols which can be performed with quantum discord [3] [4] [5] [6] [7] [8] instead of entanglement [9] . As a measure of non-classical correlation, quantum discord is also recognized as a fundamental property of quantum systems [10] [11] [12] [13] [14] . Although the definition of quantum discord is conceptually clear, computing it has been difficult since it requires the optimization over all possible measurements on one qubit. The most general class of quantum states for which quantum discord can be studied analytically has been shown to be the X states [15] . X-states [16] are encountered frequently in different contexts of physics [17] [18] [19] [20] [21] [22] [23] . Although there have been a few methods for finding analytical results for two-qubit X-states [24] [25] [26] [27] [28] [29] [30] they are not always correct. Extensive numerical studies have shown that the two known analytical formulas are not always valid and errors exist in the calculation of quantum discord with such formulas [31] .. In this paper we consider the most general form of X-states and we find that the quantum discord for the majority of the states can be calculated with two closed form formulas. We also determine analytically the criteria for these formulas to be valid and the solution for the rare cases where the two formulas are not valid. This provides a way to calculate the quantum discord for any X-states without performing the optimization process. The article is arranged as follows: In Sec. II we introduce the definition of quantum discord [1] . In Sec. III we discuss the derivation of our formalism. In Sec. IV we discuss examples and applications to various X-states and the comparison to numerical calculation. Finally, in the last section we summarise our principal results and future directions.

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


Client-access protocols for replicated services Abstract With the ever increasing introduction of computing systems in many aspects of today's life, availability of critical computing services becomes of great importance. The State Machine approach [20] is a general method for implementing highly available services by means of replication; that is, replicas of the servers providing the service are distributed on different processors in a distributed system. The approach sets the requirements for both client-server interaction as well as inter-server coordination.. Existing research in the area has focused on the problem of inter-server coordination. A range of low-level tools like clock synchronisation mechanisms, group communication protocols, and membership services are provided to the application programmer to implement replica server synchronisation. However, the problem of client interaction with the server group is not explicitly addressed.. Most systems 115, 16, 111 assume that clients communicate with one of the replica servers, and that the latter acts as the representative of the client in the group by forwarding its requests to the other servers (this is also called an "open" group model). It is therefore claimed that the problem of client interaction with the group is reduced to typical one-to-one communication. The implementation of the actual client-access protocol is left to the application programmer. These systems ignore the special problems of client-service interaction in the case of dynamic reconfiguration of the replicated server group. The programmer has to make sure, for example, that the results of a request persist on the service state despite service reconfiguration taking place concurrently to the processing of the request. Thus, some of the replication concerns move to the application algorithm of the client.. In order to address these problems, systems like ISIS [I] , Horus (CLTSVR layer) [21] , andTransis [14] follow the "closed" group approach: clients are members (or at least special members) of the server group. In that case, the application algorithms of the clients and the servers employ group communication primitives which provide clear delivery semantics (atomicity, order) for requests and replies, even in the case of a dynamic environment. Although, this approach caters for a straight-forward solution to the problem of clients accessing dynamically reconfigurable replicated services, its performance implications are not clear in the literature. The paper addresses the problem of client-service interaction, in the case of replicated service provision. The fundamental requirements for state consistency between clients and servers are analysed in section 2. Section 3 discusses client-access methods for different system models and replication protocols. A replication protocol that conforms to the "closed" model is outlined, with emphasis on the properties guaranteed to the clients. This protocol forms the basis for comparison with two instances of the "open" model: The first demonstrates a novel access protocol implemented by a replication-related communication stub in the client. The second is a novel replication protocol that hides replication from the clients, at the price of higher response times. The protocols are evaluated and compared us-ing experimental performance results obtained by a first implementation in the system Regis [13] (section 4). The results show that the "closed" protocol is expensive, in terms of response times and throughput, compared to either of the two "open" protocols. Section 5 summarises the results of the paper and presents the conclusions. The paper has examined in detail three protocols for client access to a replicated group of servers. Protocol 1 resembles the main characteristics of the "closed" group model, which has been proposed by some existing systems as a way to guarantee client-service state consistency in the face of system reconfiguration.. We have shown that the requirements of the State Machine approach can be satisfied by protocols that conform. to the "open" group model, even in the face of dynamic reconfiguration of the server group. A typical server replication protocol is augmented with a client-access protocol to achieve client-service consistency in a way transparent to the application algorithm (Protocol 2). Uniformity is ensured by special client stubs buffering unstable requests.. However, it is not always possible for clients to accommodate replication related stubs. The paper proposes a novel protocol for an environment where replication has to be completely hidden from the clients (Protocol 3). We show that all the requirements of the State Machine approach are met ensuring consistent states among clients and replicated service. To ensure Uniformity, the server group must delay the client reply until the request becomes stable in the group.. The experimental results demonstrate that both protocols of the "open" model out-perform Protocol 1. Moreover, Protocol 2 performs better than Protocol 3, in the general case. The reason is that Protocol 3 delays replies during normal service provision to guarantee a property that may be violated in the (exceptional) case of server group reconfiguration. Another disadvantage of Protocol 3 is that client requests are multicast in the system, which may result in saturation of the network resources.. The performance difference of the two "open" protocols becomes less significant for large messages and large server groups. This is because Protocol 2 must reliably multicast client requests between server replicas, while in the error free case Protocol 3 does so only for small synchronisation messages.. Manetho [6] is a research system which also addresses the problem of interaction between a group of replicated servers and other entities in the system. In that case, output delay is avoided during normal operation, by piggybacking group output with information about the service history. This information is diffused in the system according to the causal dependencies of messages. On the event of primary's failure (a primary-backups replication model is followed), the whole system is contacted by the surviving servers, to reconstruct any lost part of the service state in a way consistent with the rest of the system. This method also works for pro-active service provision, or in the presence of internally synchronised, non-deterministic events in the group. The obvious disadvantage of the method is that the effects of replication are exposed to the entire system. In our protocols, replication concerns are kept local: just in the server group in Protocol 3, and to the service clients in Protocol 2.. An earlier attempt to propose client-access protocols that are independent from the actual replication mechanism has been made in the GRIP protocol [ 183. GRIP focused on the specific case of the "open" model, where clients accommodate replication related stubs; a protocol similar to 2 has been proposed. However, the functionality of the clientaccess protocol is not clearly separated from that of the replication protocol, especially in the case where "at-mostonce" execution guarantees are required. Moreover, GRIP does not address explicitly the problems of system consistency in the case of reconfiguration of the server group.. The paper has demonstrated that open group client access protocols are clearly desirable in an environment which supports large, dynamically changing client sets, and where clients interact with the service through synchronous communication primitives like RPC. The closed group approach, supported by systems such as ISIS, Horus and Transis, is more appropriate for applications where the servers must maintain a consistent view of the client set (e.g. information dissemination).. group during the formulation of these ideas. We gratefully acknowledge the EPSRC (Grant R e f GWJ87138) for their financial support.. [ 151 S. Mishra, L. L. Peterson, and R. D. Schlichting. Implementing fault-tolerant replicated objects using Psync. In Proceedings of the Eighth Symposium on Reliable Distributed Systems, pages 42-52. IEEE, Seatle, Washington, October

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


The implication and finite implication problems for typed template dependencies The class of typed template depcndcncies is a class of data dependencies that includes embedded multivalued and join dependencies. We show that the implication and the finite implication problems for this class are unsolvable. An immediate corollary is that this class has no formal system for finite implication. We also show how to construct a finite set of typed template dependencies whose implication and finite implication problems arc unsolvable.The class of projected join dcpcndcncics is a proper subclass of the above class, and it generalizes slightly embcddcd join dcpendcncics. It is shown that the implication and the finite implication problems for this class are also unsolvable. An immcdiatc corollary is that this class has no universe-bounded formal system for either implication or finite implication. In the relational model one views the database as a collection of relations, each of which being a set of tuples over some domain of values [Coddl] . One notable feature of this model is its being almost devoid of semantics. A tuple in a relation represents a relationship between certain values, but from the mere syntactic definition of the relation one knows nothing about the nature of this relationship, not even if it is a one-to-one or one-to-many relationship.. Two approaches have been taken to remedy this deficiency. The first approach is to extend the relational model to capture more semantics [Codd3] . The second approach, which is the basis for this paper, is to devise means to specify the missing semantics. These semantic specifications arc often called semantic or integrity constraints, since they specify which databases are meaningful for the application and which are mcaninglcss. Thus, the database . schema is conceived as a syntactic specification accompanied by a semantic specification.. Several approaches have been taken with regard to integrity constraints. Of particular interest are the constraints called duta depeudencies, or depcndencics for short. Essentially, dcpcndencies are sentences in first-order logic stating that if some tuples, fulfilling certain equalities, exist in the database then either some other hiples must also exist in the database or some values in the given tuples must be equal. The study of depcndencics began with the lems for typed template dependencies, and then we reduce them further to the corresponding problems for projected join dependencies.. The outline of the paper is as follows. In Section 2 we give the basic definitions. In Section 3 we show how to translate untyped tuples and relations to typed ones. This translation is used in Section 4 to reduce the problems for untyped td's to the corresponding problems for typed td's in a very elegant way. Since we view a template dependency as a pair consisting of a tuple and a relation, we use the translation to translate untyped dependencies to typed ones, and we also use it to translate untyped countcrexamplc relations to typed ones. In Section 5 we show some consequences of the results in Section 4. Mainly, WC show that there is a finite set of typed template dependencies whose implication and finite implication problems in the class of typed template dependencies are unsolvable. Finally, in Section 6 we USC the reduction technique of [YP] to reduce the problems for typed template dependencies to the corresponding problems for projected join dependencies. WC end that section with a discussion of formal systems for projected join dependencies. We distinguish between systems that are universebounded and those that are not, and show that the class of projected join dcpendencics can not have a sound and complete formal system of the first kind, but it dots have such a system of the second kind. WC conclude in Section 7 with some remark on the implication problem for embedded multivalued dcpcndencies.. A preliminary version of this paper appcarcd in [Va3] . Unsolvability of the implication and the finite implication problem for projected join dependencies was shown independently by Gurcvich and Lewis [GLl] . l-Iowcvcr, our results for tcmplatc dcpcndcncies are stronger, since WC show a specific set of dcpcndcncics for which the problems arc unsolvable.

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


Quality and Leniency in Online Collaborative Rating Systems The emerging trend of social information processing has resulted in Web users' increased reliance on usergenerated content contributed by others for information searching and decision making. Rating scores, a form of user-generated content contributed by reviewers in online rating systems, allow users to leverage others' opinions in the evaluation of objects. In this article, we focus on the problem of summarizing the rating scores given to an object into an overall score that reflects the object's quality. We observe that the existing approaches for summarizing scores largely ignores the effect of reviewers exercising different standards in assigning scores. Instead of treating all reviewers as equals, our approach models the leniency of reviewers, which refers to the tendency of a reviewer to assign higher scores than other coreviewers. Our approach is underlined by two insights: (1) The leniency of a reviewer depends not only on how the reviewer rates objects, but also on how other reviewers rate those objects and (2) The leniency of a reviewer and the quality of rated objects are mutually dependent. We develop the leniency-aware quality, or LQ model, which solves leniency and quality simultaneously. We introduce both an exact and a ranked solution to the model. Experiments on real-life and synthetic datasets show that LQ is more effective than comparable approaches. LQ is also shown to perform consistently better under different parameter settings. Web 2.0 sees the emergence of a more interactive Web. Users are no longer just perusing content, but are also contributing content through their interactions on social media sites, such as blogs, wikis, content sharing (Flickr, 1 YouTube, 2 ) social bookmarking (Del.icio.us 3 ), product reviews (Epinions 4 ), recommender systems (GroupLens 5 ), etc. This active contribution and usage of user-generated content has motivated the study of social information processing, whereby one exploits the knowledge and opinions generated by users ("wisdom of the crowd") of Web 2.0 applications, for information searching and decision making.. In this article, we focus on online collaborative rating systems, whereby a user may act as a reviewer, by contributing opinions in the form of rating scores to objects (products, content items, etc.) , as well as a consumer, by using the rating scores to compare objects and select the best ones. Such rating systems can be found in many social media sites as just mentioned. Thus, collaborative rating allows users (as consumers) to leverage the knowledge and opinions of others (reviewers) in the evaluation of objects.. It is also worth noting that our target is the objective rating space [Traupman and Wilensky 2004a] , in which a rating score is primarily used to interpret the inherent quality of an object, and our main interest is in the quality of objects. As opposed to the subjective rating space, in which a rating score is primarily used to interpret the preference of a reviewer, such as in recommender and collaborative-filtering systems [Lemire 2005; Shen et al. 2006] , in which the main interest is modeling user preferences.. Besides online collaborative rating systems, rating objects is also a vital component in many applications, including conference review [Dumais and Nielsen 1992; Geller and Scherl 1997] , grant proposal selection [Hettich and Pazzani 2006] , etc. In each case, it is important to ensure that the rating has been conducted as fairly and objectively as possible. Unfair ratings may result in adverse outcomes. For instance, it was reported in TIME magazine, on February 16, 2002 , that a French referee at the 2002 Winter Olympics figure-skating event confessed to being pressured into voting for the Russian team for the gold medal award. Later, the Canadian team was awarded a second Gold Medal in an attempt to correct the unfair rating. The incident caused a major controversy in the Olympic community and tainted the reputation for fairness of this sporting event. In this article, we address the score-summarization problem of how to aggregate the rating scores given to an object to arrive at an overall score that reflects the object's quality. Our approach is premised on mining the leniency behavior of reviewers from the rating scores and using the leniency information to adjust the quality scores correspondingly. We propose the Leniency-aware Quality (LQ) model, which determines leniency and quality simultaneously.. We further show that the LQ model is better than Naive which relies on simple averaging; Riggs, which weighs reviewer's scores by reputation; and Zscore, which seeks to normalize the reviewers' rating scales. Experiments on real-life datasets shows that LQ results are different from the comparative methods and have less error in the rating-prediction task than the comparative methods. Experiments on synthetic datasets show that LQ consistently achieves a higher performance than the comparative methods.. Several avenues exist for future work. The effectiveness of the LQ model can be further verified by integrating it into various social media applications and allowing users to evaluate the new quality ranking. The problem addressed here also touches upon aspects beyond computer science. It would also be interesting to verify which of the two proposed compensation modes (Relative and Absolute) is more consistent with the psychology of reviewers, as studied in behavioral sciences. Our work is closely related to previous work on score summarization and score normalization, which we will discuss shortly. The key difference is that our work stands out in terms of modeling leniency (a micro-behavior of individual reviewers). Leniency is inherently different from other metrics (e.g., reputation, deviation, average) that have been previously studied. In particular, the leniency of one reviewer not only depends on her own score, but also on the score of coreviewers. So we have to extract leniency by a mutual-reinforcement model.. Score Summarization. Score summarization is concerned with aggregating rating scores into an overall quality for each object. Some previous work models the varying ability of reviewers in assessing the quality of an object (also referred to as "reputation"). Instead of the simple mean (the Naive model), reputation-based approaches use the weighted mean of rating scores, with more reputable reviewers given higher weights, as given in Equation (2). Riggs and Wilensky [2001] base the reputation w i of a reviewer r i on consensus, that is, how closely r i 's rating scores are to the object averages, as shown in Equation (3). Alternatively, the reputation of a reviewer may also be based on the opinions of other reviewers [Chen and Singh 2001] . However, reputation does not equal to leniency, as even a reputable reviewer may still be lenient, that is may use a higher range of scores compared to other reviewers.. Score Normalization. Score normalization deals with converting rating scores of reviewers to a normalized scale. Most works assume that scores by each reviewer can fit into a particular distribution, and that reviewers rate objects with comparable distributions. Given that most reviewers tend to rate very few objects, it is unlikely this assumption will hold. In contrast, our approach does not assume any distribution, but rather, is data-centric. We use a mutual-reinforcing model to compute the converged values.. One popular choice is the normal distribution, in which each reviewer r i is associated with a mean μ i and standard deviation σ i of r i 's scores on various objects. Resnick et al. [1994] employ z-score normalization [Walpole et al. 2002] , in which a rating score e ij by reviewer r i is converted into its z-score z ij , according to Equation (4). Given that reviewers may have different means and standard deviations, z-score normalization aims to calibrate their scores to a more equitable standard [Arkes 2003 ]. Other variations include simply subtracting the rating score by a reviewer's average [Sarwar et al. 2000] , subtraction followed by L p normalization [Lemire 2005 ] (in the case of L 2 norm, it reduces to z-score), or by factor analysis [Traupman and Wilensky 2004b] .. Probability-based approaches [Fernandez et al. 2006; Jin and Si 2004; Jin et al. 2003 ] convert a rating score to a probability value. One of the objectives is to remove the impact of outlier ratings. However, to estimate the probability values well, this approach relies on the availability of many ratings per reviewer.. Score normalization is also used in metasearch [Arampatzis and Kamps 2009; Fernandez et al. 2006; Manmatha and Sever 2002] , where the objective is to combine the outputs of several search engines in response to a query. The basic approach in such cases is to fit the relevance scores to a binary mixture model-normal distribution for relevant pages and exponential distribution for irrelevant ones. The context is very different from the problem we consider here. For one thing, a reviewer is not normally associated with irrelevant objects.. Recommender Systems. According to [Adomavicius and Tuzhilin 2005; Herlocker et al. 2000 Herlocker et al. , 2002 , recommender systems would consider recommending relevant items to a target user, based on some sort of similarity between the target user and other neighboring users. Content-based systems exploit certain profiles of items and users to define this similarity, whereas collaborative filtering (CF) exploits the ratings on items to define this similarity. The former assumes that profile information of items and users is available, whereas the latter assumes that a rating database is available. This is different from our problem of finding the "true" (aggregate) rating of each item given a set of raw ratings collected from a set of users. We neither assume that profile information is given, nor that the rating data is the"ground truth". Rather, our problem assumes that the raw ratings may be biased in that some users are more generous than others, and the "true" rating would correct this bias effect. Therefore, in order to find the "true" rating, our problem also finds the generosity or leniency of each user.. Other than similarity between users, several works on recommender systems also consider the notion of trust [Massa and Avesani 2005] or social relationships between users [Ma et al. 2008 [Ma et al. , 2009 . In our problem, we are not given such social or trust networks, except for the raw user-item rating data. The data is "raw" in the sense that an individual rating may be biased, therefore, is not trusted. In the review problem considered here, it is not reasonable to assume that the trust and bias information about reviewers are known. No reviewer will admit that she or he is biased. Our work detects the bias of reviewers by analyzing the collective behavior of reviewers, on the assumption that a majority of reviewers behaves normally.. Some recommender systems employ pre-processing techniques designed to "correct" some global effects such as the number of ratings or the average ratings from the rating scores [Bell and Koren 2007] , or to fill up missing rating values [Shen et al. 2006] . Our problem can be seen as correcting the leniency effect of reviewers to determine the "true" quality of objects. Hence, the methods presented in this paper may potentially help recommender systems to arrive at better rating predictions. Although it is not the main focus of our work here, we will conduct a preliminary investigation of the utility of our work for rating prediction in Section 5.5.. Miscellaneous. Multi-criteria decision making (MCDM) [Figueira et al. 2005; Korhonen et al. 1992 ] deals with how to make an optimal decision, taking into account two or more potentially conflicting criteria. The optimal decision may vary according to the subjective preferences of the decision maker. In our problem setting, the quality measure is objectively associated with an object and is determined from the score, data without using subjective parameters.. The rating behavior of reviewers may be influenced by certain biases. The study of cognitive biases concerns people's predisposed opinions that may come from specific heuristics or mental shortcuts [Bazerman 1990; Busenitz and Lau 1996; Simon et al. 1999] . The main difference is that cognitive science is concerned with finding the possible causes of biases, and therefore, hypothesizing on the possible causes is central to the study of cognitive biases [Blackburn and Hakel 2006] . Our approach is different, as we focus on detecting reviewer leniency and factoring it into overall scoring of object quality. Testing each possible hypothesis would require much more additional information on reviewers or objects than is available. Such studies are also more appropriately done within the cognitive sciences.. Several works have also identified types of frauds in rating systems and how to detect them in various contexts, such as product reviews [Jindal and Liu 2007] , trading communities [Bhattacharjee and Goel 2005; Dellarocas 2000; Zhang and Cohen 2006] , and recommender systems [Lam and Riedl 2004; Mobasher et al. 2006 ]. Fraudulent ratings may be different from ratings by reviewers with leniency. In our article, we assume all reviewers are doing their best when rating an object, so there is no fraud. Therefore, those methods may not apply.. Score summarization in Web-based social media can be studied as a problem in social network mining. Social network involves the study of a network of associations among entities [Wasserman and Faust 1994] . It concerns analyzing a network to address such issues as node centrality [Faust 1997 ], trust [Golbeck and Hendler 2006; Guha et al. 2004] , privacy [Backstrom et al. 2007] , and community discovery [Borgatti and Everett 1997; Tantipathananandh et al. 2007; Yang et al. 2007; Zhou et al. 2006] . Our work models a social behavior (leniency behavior) from network-structured data (rating network) that involves collaboration among reviewers. Ours is also the first work to address the issue of leniency in a network environment.. Finally, our work is also related to link analysis [Borodin et al. 2005; Haveliwala 2003 ], which discovers important nodes (e.g., webpages) through intensive analysis of link data (e.g., weblinks). The most well-known algorithms are PageRank [Page et al. 1998 ] and HITS [Kleinberg 1999 ]. However, these works are mainly based on the notion of popularity (e.g., link count), which is not congruent with leniency or quality. In general, the leniency of a reviewer or the quality of an object is not related to the count of scores. Rather, it is the score value that matters.

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