On the map: Nature and Science editorials Bibliometric mapping of scientific articles based on keywords and technical terms in abstracts is now frequently used to chart scientific fields. In contrast, no significant mapping has been applied to the full texts of non-specialist documents. Editorials in Nature and Science are such non-specialist documents, reflecting the views of the two most read scientific journals on science, technology and policy issues. We use the VOSviewer mapping software to chart the topics of these editorials. A term map and a document map are constructed and clusters are distinguished in both of them. The validity of the document clustering is verified by a manual analysis of a sample of the editorials. This analysis confirms the homogeneity of the clusters obtained by mapping and augments the latter with further detail. As a result, the analysis provides reliable information on the distribution of the editorials over topics, and on differences between the journals. The most striking difference is that Nature devotes more attention to internal science policy issues and Science more to the political influence of scientists.Electronic supplementary material The online version of this article ( In bibliometrics, mapping is an increasingly important tool in the classification of documents into groups and subgroups and in the analysis of other types of patterns (e.g., Börner et al. 2003) . So far, mapping techniques have mostly been applied to data extracted from scientific documents. The raw materials for bibliometric maps have been citations, keywords and technical terms in titles and abstracts. Mapping has provided information on issues such as relations between scientific fields (e.g., Noyons and Van Raan 1998; Van Eck and Waltman 2007) , relations between scholars or journals (e.g., McCain 1991; White and McCain 1998) and scientific collaboration between scholars, institutions or countries (e.g., Luukkonen et al. 1993; Peters and Van Raan 1991) .. So far, little or no mapping has been attempted in the analysis of bodies of non-scientific or non-specialist documents. It is not clear whether mapping is a useful tool in this case where citations, keywords and abstracts with technical terms are not available. The raw material for mapping would have to be the words in the full texts of the documents, but it has yet to be seen whether in non-specialist documents the relation between the content and the words used is strong enough to generate meaningful patterns through mapping. However, it would be very important if mapping turns out to be effective, since in that case mapping might to some degree replace the traditional manual analysis of bodies of documents. Here manual refers to determining the content of the documents by actually reading them (perhaps partially or superficially) and classifying them into groups and subgroups on the basis of their content.. In this paper we apply mapping to a body of general, non-specialist documents. The body of documents concerned is the editorials of Nature and Science from 2000 on (Waaijer et al. 2010 ). These documents are important and interesting in their own right, because they reflect the views of the two most read scientific journals on what topics are important in the conduct and application of scientific research. Differences between Nature and Science might be interesting, as they could reflect differences between European and US views or differences in perspective between the editors of an independent commercial publisher (Nature) and the editors of a learned society journal (Science).. In view of the novelty of the application of mapping to non-specialist documents, we combined the mapping with a manual classification procedure for a large sample of editorials. We used this method to validate the mapping, notably the interpretation and homogeneity of clusters. In addition, manual classification made it possible to augment our results with supplementary information that is useful in the analysis of differences between Nature and Science.. The remainder of this paper is organized as follows. The methods that were used to map and classify the editorials will first be expanded upon. Subject areas and their relations in the editorials will then be shown by constructing two maps, a term map and a document map. Subsequently, the combination of bibliometric mapping and manual classification will be shown in the validation of the document map. Finally, the validated document map will be used to point out differences between Nature and Science and between an early and a late period. In this paper we have shown that it is possible to classify a body of full-text, non-specialist documents using a two-step method that combines bibliometric mapping techniques and manual classification. Our analysis was performed on the editorials of Nature and Science published between 2000 and mid 2009. The words used in these editorials are less specialist than the words used in titles and abstracts of scientific papers, which are more commonly analysed using bibliometric mapping techniques. In addition, editorials contain between 500 and 1,000 words, which is much more than the average number of words in abstracts of scientific papers. We used a combination of bibliometric mapping techniques and manual classification of a sample of editorials. The manual classification largely confirmed the mapping results. In addition, the manual classification also allowed for a better interpretation of the mapping results. Furthermore, the manual classification augmented the mapping results with additional details, in particular a further breakdown of the clusters into subgroups.. These findings suggest the recommendation to apply bibliometric mapping techniques to bodies of documents in combination with a manual analysis of a sample of documents, for the purpose of confirmation, interpretation and augmentation. The stratification of the sample using map-based clusters allows a high resolution with a modest absolute sample size.

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


Numerically Stable Fluid-Structure Interactions Between Compressible Flow and Solid Structures We propose a novel method to implicitly two-way couple Eulerian compressible flow to volumetric Lagrangian solids. The method works for both deformable and rigid solids and for arbitrary equations of state. The method exploits the formulation of [11] which solves compressible fluid in a semi-implicit manner, solving for the advection part explicitly and then correcting the intermediate state to time t n+1 using an implicit pressure, obtained by solving a modified Poisson system. Similar to previous fluid-structure interaction methods, we apply pressure forces to the solid and enforce a velocity boundary condition on the fluid in order to satisfy a no-slip constraint. Unlike previous methods, however, we apply these coupled interactions implicitly by adding the constraint to the pressure system and combining it with any implicit solid forces in order to obtain a strongly coupled, symmetric indefinite system (similar to [17] , which only handles incompressible flow). We also show that, under a few reasonable assumptions, this system can be made symmetric positive-definite by following the methodology of [16] . Because our method handles the fluidstructure interactions implicitly, we avoid introducing any new time step restrictions and obtain stable results even for high density-to-mass ratios, where explicit methods struggle or fail. We exactly conserve momentum and kinetic energy (thermal fluid-structure interactions are not considered) at the fluid-structure interface, and hence naturally handle highly non-linear phenomenon such as shocks, contacts and rarefactions. Direct numerical simulations (DNS) are often used to study the interactions between fluid flows and solid structural models. Under certain assumptions these can be reduced to a one-way coupled system; for example if one wishes to determine the steady-state lift of an airfoil in subsonic flow, it is often reasonable to simulate the airfoil as a kinematic body. With a clever choice of boundary conditions, one can even begin to examine two-way coupled interactions, albeit in a limited fashion. In the more general case, these assumptions miss the interesting two-way coupled interactions between the fluid and the structure. These two-way coupled interactions can be quite important and, if not properly captured in the DNS, can lead to non-physical results. It is therefore important to have a robust numerical method that accurately captures two-way coupled interactions across a fluid-structure interface.. Methods to capture fluid-structure interactions can be broadly separated into two categories. Weakly coupled (partitioned) systems interleave the disparate subsystems by integrating them forward in time separately, using each others' results as boundary conditions in an alternating one-way coupled fashion (see e.g. [21, 15, 6] ). This approach is appealing as it permits the use of specialized numerical methods for each of the different materials with only slight modifications to account for the modified time integration and changing boundaries. There are disadvantages to this approach, however, for example new and poorly understood stability restrictions arise independent of the individual subsystems, such as the lumped-mass instability discussed in [4] . The alternative is to employ a strongly coupled (monolithic) system, which are systems where the fluid and structure are evolved forward in time simultaneously using a solver specially crafted to incorporate phenomena from both fluid and solid phases. Our method is a hybrid of the two; the explicit components of both fluid and solid solvers are evolved forward independently, while the implicit components and interactions are coupled together in a monolithic solve.. State-of-the-art solvers typically use an Eulerian framework to treat fluid flows and a Lagrangian framework to treat solids, and so any coupled system must do one of three things: model the solid in an Eulerian framework, model the fluid in a Lagrangian framework, or find a way to couple Eulerian fluids with Lagrangian solids. The first two options are undesirable as they impose significant limitations on the numerical method, for example Eulerian models only capture material properties (rather than tracking them) which makes it difficult to compute time history variables important to structural simulation, such as loading and damage. Many fluid Lagrangian models have difficulty in obtaining the correct shock speeds due to the lack of discrete flux differencing, and therefore resort to artificial viscosity methods that require a number of zones within a shock in order to obtain the right speed [2, 3] . Lagrangian fluid models also struggle with high-speed and deforming flows, as large deformations can cause significant numerical errors in the flow field and can drive the time step to zero. This can be partially alleviated by applying complex and expensive remeshing, but if the flow field tangles and inverts, the simulation can cease altogether. Arbitrary Lagrange-Eulerian (ALE) methods address the problem of a deforming Lagrangian fluid grid by permitting the fluid grid to move at some velocity other than the velocity of the fluid, but this can still lead to high aspect ratios that necessitate remeshing, especially in the presence of a fluid-structure interface. We address the challenge of coupling Eulerian fluids with Lagrangian solids by introducing an interpolation operator, which conservatively maps quantities from Eulerian boundaries to nearby Lagrangian boundary nodes, and vice versa.. At the fluid-structure interface there is a transfer of information. This information transfer can be handled by weakly coupling each separate subsystem using a one-sided estimate of the transfer, or by strongly coupling subsystems together and introducing new variables to the equations. Weakly coupled approaches have been shown to give high-fidelity results [1, 8, 7] , but can struggle when applied to a system with high density-tomass ratios (and are prone to going unstable, as we discuss in Section 4.3). These problems can be alleviated by using a better estimate of values at the interface, as suggested by [12] , but this typically involves solving expensive general Riemann problems at every fluid-structure face. These problems can be avoided entirely by handling the interface in a strongly coupled fashion, but previous work has been limited to incompressible flows [14, 17] . Our method exploits the structure of [11] , which treats the pressure flux of compressible flows implicitly. This permits us to treat the fluid pressure as an implicit force on the solid, and use an implicit velocity boundary condition on the Poisson solve, much like previous strongly-coupled work.. Our fluid evolution is comprised of two steps: an advection stage and a pressure solver phase. This permits us to address the complexities arising from the truly non-linear components of the flow separately from the linearly degenerate components. In the pressure phase, we freeze everything to their time t n+1 location and perform an implicit solve for the fluid pressure and solid velocity. It is in this phase that we handle the transfer of momentum and kinetic energy across the fluid-structure interface, and as such it is important to be conservative in transferring information between the two sets of degrees of freedom. In the advection stage no information should be transmitted across the interface, but instead we must address the issues which arise by virtue of a moving solid (i.e. the covering and uncovering of fluid cells). There are many examples of how to address these problems in the literature, for example we could track cut cells, re-discretize the fluid in an ALE formulation-all of which significantly complicate the fluid evolution. Instead we make the key observation that since the interface is a contact discontinuity we can afford to be non-conservative, but only in the linearly degenerate components of the flow.. In a traditional explicit method the linearly degenerate and truly non-linear fluxes aren't separated, and as such these methods need to deal with all of the complexities of moving boundaries and information transmission at the same time. That is, they need to be conservative when dealing with information that crosses the interface while at the same time dealing with an interface that moves. Finally, the flux needs to be re-examined carefully in order to determine what forces should be applied to the interface. One could modify traditional methods by separating the conserved quantities into their Riemann invariants, and be conservative in the truly non-linear invariants while allowing the linearly degenerate invariants to be non-conservative -however this doesn't address the moving boundary, and still leaves us with the (poorly-understood) CFL restriction that arises from explicit fluid-structure interactions. Because of these complications, our method hinges on the existence of [11] . We have presented a first order method which implicitly couples compressible flow with solid bodies with arbitrary constitutive models. We show that this method is robust, numerically conservative, and avoids the numerical instabilities which comparable explicit methods suffer from in the presence of high densityto-mass ratios. The same methodology can be applied to reformulate our implicit system into a symmetric positive-definite system.. There are several interesting avenues of future work which we wish to explore. Given the promising results which arise from handling fluid-structure interactions implicitly, we believe that an alternative approach would split the fluid flux along Riemann invariants-rather than by pressure-and solve for the Riemann invariant which interacts with the solid implicitly. Our method also relies on the assumption that the solid has some thickness where ghost cells can be filled, and we believe that the method can be made to work for thin shell structures (such as parachutes). Given the utility of the scheme proposed in [11] in handling fluidstructure interactions, it becomes imperative to address the issues of that original scheme. In particular, the implicit component of the method is overly centrally-differenced, which tends to introduce Gibbs phenomena at shocks. It would be better to add upwind biasing, although it is unclear how to do so.

O O B I O B I O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 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 B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 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 B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 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 marriage of bisimulations and Kripke logical relations There has been great progress in recent years on developing effective techniques for reasoning about program equivalence in ML-like languages-that is, languages that combine features like higher-order functions, recursive types, abstract types, and general mutable references. Two of the most prominent types of techniques to have emerged are bisimulations and Kripke logical relations (KLRs). While both approaches are powerful, their complementary advantages have led us and other researchers to wonder whether there is an essential tradeoff between them. Furthermore, both approaches seem to suffer from fundamental limitations if one is interested in scaling them to inter-language reasoning.In this paper, we propose relation transition systems (RTSs), which marry together some of the most appealing aspects of KLRs and bisimulations. In particular, RTSs show how bisimulations' support for reasoning about recursive features via coinduction can be synthesized with KLRs' support for reasoning about local state via state transition systems. Moreover, we have designed RTSs to avoid the limitations of KLRs and bisimulations that preclude their generalization to inter-language reasoning. Notably, unlike KLRs, RTSs are transitively composable. One of the grand challenges in programming language semantics is to find scalable techniques for reasoning about the observational equivalence of programs. Even when the intuitive principles of local reasoning suggest that a change to some program module should not be observable to any client, it can be fiendishly difficult to establish that formally. Denotational semantics offers a tractable way of proving equivalence of programs by showing that they mean the same thing in some adequate model of their language. However, traditional denotational methods do not scale well to generalPermission 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. POPL'12, January [25] [26] [27] 2012 , Philadelphia, PA, USA. Copyright c 2012 ACM 978-1-4503-1083-3/12/01. . . $10.00 purpose languages like ML that combine support for functional, value-oriented programming (e.g., higher-order functions, polymorphism, abstract data types, recursive types) with support for imperative, effect-oriented programming (e.g., mutable state and control effects, among other things).. Fortunately, in recent years, there has been a groundswell of interest in the problem of developing effective methods for reasoning about program equivalence in ML-like languages. A variety of promising techniques have emerged [29, 36, 19, 20, 34, 33, 23, 5, 35, 12, 25] , and while some of these methods are denotational, most support direct reasoning about the operational semantics of programs. In particular, there has been a healthy rivalry between techniques based on Kripke logical relations (KLRs) [29, 5, 26, 13, 12, 17, 37] and bisimulations [36, 19, 34, 33, 23, 35] . This paper is motivated by two high-level concerns:. (1) KLRs and bisimulations offer complementary advantages, which we would like to synthesize in a single proof method.. (2) There is a specific sense in which both KLRs and bisimulations appear to be fundamentally limited, and some fresh idea seems necessary to circumvent this limitation.. Concerning motivation (1): The latest KLR techniques [5, 12] use state transition systems to provide more flexible principles for reasoning about local state than bisimulations do. However, in order to account for the presence of recursive features, such as recursive types and higher-order state, KLRs require tedious manipulation of tricky "step-indexed" constructions [6, 2] . 1 In contrast, bisimulation techniques use coinduction to model such recursive features very elegantly, but their support for reasoning about local state is weaker than KLRs' (see Section 9) . These complementary strengths have led us and other researchers to wonder whether there is some fundamental tradeoff between KLRs and bisimulations.. Concerning motivation (2): We are interested in scaling equational reasoning techniques to the setting of inter-language reasoning, i.e., reasoning about equivalences between programs in different languages. Inter-language reasoning is essential to the development of compositional certified compilers [7, 17] , and may also have applications to the verification of multi-language (interoperating) programs [4] . Unfortunately, both KLR and bisimulation methods rely on technical devices that prevent them (it seems) from scaling to the inter-language setting. Specifically, in order to deal with higher-order functions, bisimulation methods employ various "syntactic" devices that restrict the applicability of the methods to single-language reasoning (see Section 3 for details). KLRs, in contrast, have been shown to generalize to inter-language reasoning [17] , but there remains a key problem: KLR proofs are in general not transitively composable, at least in part due to the use of step-indexed constructions as mentioned above. In order to prove compositional correctness of multi-phase compilers for ML-like languages, it is crucial to be able to prove the correctness of each phase individually and then compose them transitively, so KLRs' lack of transitivity is a showstopper for that application. We have developed a novel method-relation transition systemsfor proving equivalence of ML-like programs, combining some of the best aspects of Kripke logical relations, environmental bisimulations, and normal form bisimulations. In addition to providing a useful synthesis of the complementary advantages of its ancestors, our method shows promise as a way of reasoning about equivalences between different languages, thanks to (1) our avoidance of "syntactic" devices that would preclude inter-language reasoning, and (2) the transitive composability of RTS equivalence proofs. We have briefly sketched the proof of transitivity here in a simplified setting, and we intend to report on the full transitivity result in a forthcoming paper. We have mechanized the metatheory of RTSs in Coq and made the proofs available at the link below.. There are several exciting directions for future work. First and foremost, we aim to concretely demonstrate the suitability of RTSs for inter-language reasoning. For example, we would like to take Hur and Dreyer's recent work on Kripke logical relations between ML and assembly [17] , replace the logical relations with RTSs, and then apply the technique to reasoning about compositional correctness of multi-phase compilation.. Second, following Dreyer et al.'s work on Kripke logical relations [12] , we would like to explore how well our account of RTSs can be adapted to handle the introduction of control effects (call/cc, exceptions) into the language and/or the restriction of the language to first-order state. In principle, we believe it should be possible to employ techniques similar to theirs, but we have not yet tried.. Lastly, we have recently discovered what appears to be a deep connection between our technique of global vs. local knowledge and Mendler-style recursion [24, 38] , in particular the notion of a robustly postfixed-point (rpofp). L is defined to be a rpofp of an endofunction F if ∀G ≥ L. L ≤ F (G). This bears a striking resemblance to our definition of consistency for local knowledges L, at least in the pure setting of Section 4. One interesting feature of rpofps is that they enjoy a "robust" version of Tarski's fixedpoint theorem, which applies even when the endofunction F is not monotone. Indeed, in our scenario, F is not monotone, due to the quantification over related function arguments, and this is precisely what motivated our parameterization over G. We intend to explore this connection further in future work.

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


Accurate on-line prediction of processor and memoryenergy usage under voltage scaling Minimising energy use is an important factor in the operation of many classes of embedded systems -in particular, batterypowered devices. Dynamic voltage and frequency scaling (DVFS) provides some control over a processor's performance and energy consumption. In order to employ DVFS for managing a system's energy use, it is necessary to predict the effect this scaling has on the system's total energy consumption. Simple (yet widely-used) energy models lead to dramatically incorrect results for important classes of application programs.Predicting the energy used under scaling requires (i) a prediction of the dependency of program performance (and hence execution time) on the frequencies and (ii) a prediction of the power drawn by the execution as a function of the frequencies and voltages.As both of these characteristics are workload-specific our approach builds a model that, given a workload execution at one frequency setpoint, will predict the run-time and power at any other frequency setpoint. We assume temporal locality (which is valid for the vast majority of applications) so predicting the characteristics of one time slice, frame, or other instance of a task, will imply the characteristics of subsequent time slices, frames or instances (e.g. MPEG video decoding).We present a systematic approach to building these models for a hardware platform, determining the best performance counters and weights. This characterisation, done once for a particular platform, produces platform-specific but workload-independent performance and power models.We implemented the model on a real system and evaluated it under a comprehensive benchmark suite against measurements of the actual energy consumption. The results show that the model can accurately predict the energy use of a wide class of applications and is highly responsive to changes in the application behaviour. Power consumption is a critical factor in many embedded devices, particularly battery-powered mobile systems, but is also receiving increasing attention in server systems as a means to cut costs, prevent overheating and manage air-conditioning load.. Modern processors typically support dynamic voltage and frequency scaling (DVFS) as a means to manage their power consumption. This is based on the fact that reducing the operating frequency of a CMOS circuit allows a reduction in the supply voltage for that circuit, resulting in a lower energy consumed per cycle. This is usually expressed as. where V is the circuit voltage and f the processor's clock rate. The intention is that a system's CPU performance be reduced in order to obtain a corresponding reduction in power. While the mechanism exists for throttling a processor's speed, when to switch and which speed to choose in order to achieve a goal (such as minimising average power) is, and remains, a difficult problem.. We postulate that effective frequency scaling, truly trading quality of service against energy consumption, requires the following:. 1. an accurate prediction of the performance impact of a frequency change 2. an accurate prediction of the power drawn while running the applications at the changed frequency and voltage settings;. 3. knowledge of the costs associated with switching frequencies.. In other words, in order to effectively make performance vs. energy decisions, it is necessary to know how much performance will be lost, and how much energy will be saved. However, much of the related work in frequency and voltage scheduling assumes simplified models for both the performance (postulate 1) and power (postulate 2) while ignoring switching overheads. These models have been shown to lead to an increase in power consumption [13] , or missed power saving opportunities [18] .. Predicting either power or performance is made more difficult by application specificity. Workloads' change in power and performance when changing frequencies is different depending on the exact instruction mix, memory and IO actions, etc. Applications can be pre-characterised for the platform, but this does not allow for dynamic applications or dynamic input data. We are motivated by modern mobile embedded systems such as mobile phones or PDAs. Such systems support the execution of downloaded code, making it infeasible to characterise the behaviour of all application programs a priori, yet require efficient energy management without human direction. Similarly, these systems deal with dynamic input data such as MPEG video streams where the data itself has a significant effect on the workload characteristics. Therefore some method of characterising the workload must be arrived at in order to understand the relationship between the frequencies, energy and performance.. Recently we developed a new solution to the first postulate, by developing a highly-accurate model that uses performance counters to predict, at run time, the performance of virtually arbitrary workloads under frequency scaling [22] . Our approach builds a model that, given a workload execution at one frequency setpoint, will predict the run-time and power at any other frequency setpoint. Assuming temporal locality (which is valid for the vast majority of applications) means the characteristics of one time slice, frame, or other instance of a task, will be similar to the characteristics of subsequent time slices, frames or instances in most cases. Typical examples are MPEG video decoding, interrupt handlers, and decompression. With these models we can therefore reason about the future behaviour of a workload when frequency scaling (as shown via the implementation in our previous work) by observing the workload currently running.. System power has often been calculated using Equation 1 , and more recently, using a static power component. However, doing so makes a number of assumptions. Firstly it assumes that the same number of transistors switch on each cycle, which is rarely the case for a complex microprocessor. Similarly, it assumes that every part of the system is clocked at the same frequency or fraction of that frequency. Again, this is not the case in modern systems where there may be many other frequencies, such as those used for driving the system bus, memory, and peripherals. These clock frequencies are typically one of several possible fractions of the main core clock (i.e. not linearly dependent).. Lastly, it does not consider memory and IO device power, which may be dynamic, depending on the running software. We note that devices' time spent in their active, high-power, mode is sometimes dependent on the CPU performance (i.e. a shorter workload execution time may relate to a device spending a smaller amount of time in its run-mode, saving energy). We do not address the effect of idle modes or variation in IO device power in this paper (other than including it as a part of the static power), but do note that predicting workload run-time is required in order to calculate a system's energy use.. This paper extends our previous work in performance prediction, arriving at a generalised model for the prediction of the system power and energy under scaling of CPU, bus and memory frequencies for dynamic workloads at run-time. The methodology for building this model could be applied to an arbitrary platform with any number of frequencies, although the accuracy of the model is limited by the performance instrumentation available. This paper therefore addresses postulate 2, above. This leaves as future work the evaluation and avoidance of frequency switching overheads (postulate 3), focussing, for the present, on the modelling issues.. The contributions of this paper are:. • an examination of the energy behaviour of a low-power embedded platform;. • the extension of performance-counter-based power estimation models to the accurate prediction of power consumption;. • a generalised power and energy model for frequency and voltage scaling;. • an instantiation of that model for an actual hardware platform;. • a rigorous evaluation of the model based on measurements of actual power consumption.. In the remainder of the paper we will first discuss related work. We will then discuss the unsuitability of naive approaches to DVFS-based power management and the need for accurate models that predict a system's energy response to frequency scaling. We will then summarise our previous work on the accurate prediction of performance under DVFS. This work is then extended, becoming a model allowing prediction of the power and energy response. We will outline the calibration and evaluation of the new model, and discuss the its accuracy on a real system with real-life benchmarks. The paper concludes with a discussion of future work. This paper has presented a general performance-counter based model for the prediction of power and energy under voltage and frequency scaling.. We observed that a system's energy response to DVFS is highly dependent on the workload and have developed a technique that allows us to incorporate the workload-dependence through performance counters. We have furthermore demonstrated how the platform-specific parameters of the model can be obtained through a process based on linear regression between performance-counter readings and power predictions of a family of models. We have performed a sound evaluation of the models by using a validation benchmark suite that is different from the calibration suite. It was found that on our target platform, a PXA255-based system, the energy use of a program at a certain frequency setpoint can, with a fair degree of accuracy, be predicted from observing the system at a different setpoint (although we found prediction errors could be very high in pathological cases). This gives us a tool that can be used in the future to let an operating system (OS) perform informed energy-management decisions.. However, it became clear that the two concurrent performance counters supported by the PXA255 are insufficient for this approach without multiplexing the counters over several events. Fortunately, more recent processors provide a larger number of performance counters.. While the accuracy of the predictions generally seemed acceptable, it is also clear that the set of events that can be monitored on the PXA255 is not sufficient go give a really accurate model of power consumption, as it was only possible to roughly estimate the number of bus transactions, or CPU stall cycles. We suspect that more suitable events could be provided by hardware manufacturers [16] . Since the limited number of performance counters do not capture the entire behaviour of the system, the choice of benchmarks used for parameter selection and model calibration is important in order to achieve good coverage of anticipated application behaviour.. The results presented in this paper enable a large amount of follow-on work. For one, we plan to show that our approach works reliably across a range of hardware platforms, including different CPU architectures and different performance-monitoring capabilities, but also different balances of static and dynamic power.. Then we plan to use our models as the underlying mechanism to enable proper OS-level system power management, especially when dealing with real-time constraints. This includes taking into account the selection of power states and the cost of using them, and designing suitable policies. This will also require extending the approach to deal with multi-tasking workloads, including contextswitching costs and accounting for OS services. Adding extra execution contexts will not only increase cache miss rates, but also introduce the overheads of frequency switching (if two threads run at dissimilar setpoints).. Finally we would like to incorporate I/O into our power/energy model. We ran the benchmark suites described in Section 6.3 on the PLEB 2 platform and measured the energy consumed. Each benchmark was run at all 22 frequency setpoints. In order to sample a wider range of voltage settings, the calibration suite benchmarks were each also run at two constant voltages (1.3V and 1.5V) which are high enough for safe operation of the processor at all set points. The collected measurements form three data sets: calibration, validation and synthetics. DVFS was first discussed as an energy-saving technique by Weiser et al. [24] . They used millions of instructions per joule (MIPJ) as a metric when evaluating their scheme, however they ignored static power (which was not unreasonable at the time). Since then, a large body of work has accumulated based on the idea that a lower core frequency and thus longer execution time results in lower energy consumption.. Grunwald et al [8] first published an empirical evaluation of DVFS algorithms, concluding that the then-developed algorithms did not save significant amounts of energy.. One clear reason for this is that the algorithms attempted to minimise idle time, ignoring the effect of static power. Reducing the CPU frequency increases execution time, leading to a decrease in the amount of time spent idle. If the energy benefits of running at the lower frequency do not offset the energy spent due to the reduced time in the idle mode (because of the static power), the total used is increased. These effects were discussed at length by Miyoshi et al [13] . Of interest in this context is that this Miyoshi's work assumed a very simple execution time model. Martin and Siewiorek [11] discussed system-level speed setting policies in order to maximise the number of operations per battery discharge in a mobile computer. They discuss the two big assumptions made by the body of previous work at the time: that performance is proportional to clock frequency, and that power is proportional to f CV 2 . Their most significant contribution was the observation that a workload's execution time is not necessarily linearly related to the CPU clock frequency. They also suggested the need for a more complete power model. This was supported by measurements on a real system, however, only a single application has been measured. While they suggest that this non-ideal relationship between frequency and performance needs to be addressed, they make only a passing reference to the need for an application specific model.. These observations were discussed and utilised in a paper by Seth et al [18] . The authors concluded that taking advantage of the non-linear relationship between CPU frequency and performance could yield significant extra energy savings when frequency scaling.. DVFS work designed to minimise performance loss, such as that of Weissel and Bellosa [25] implicitly avoids issues with the overall system power consumption because the approach explicitly aims to keep changes in overall execution time small. Acquaviva et al [1] describe a speed setting policy which saves energy on a fixed voltage system because of the non-ideal performance vs. frequency characteristics caused by memory accesses. The authors pre-characterise a particular application (an MP3 decoder) and verify their conclusions by comparing the results from a simulator, but no experiments on real hardware were performed. Also Acquaviva et al do not consider the effect of static power consumption which ultimately lead to their approach of minimising idel times rather than using available sleep modes. This paper presents methods for building both performance and power models for a system. There is various work using performance counters to estimate the power used by a processor, but to our knowledge this model is the first to be used for predicting the power when frequency scaling (i.e. using frequencies and voltages as part of the model).. Bellosa [2] demonstrated that it was, in principle, possible to correlate hardware performance-monitoring counter (PMC) readings with the energy consumption of a CPU. His students Waitz [23] and Fruth [7] used this approach to implement energy accounting in Linux on an Intel PXA255 processor. Fruth worked around that processor's limitation of only two PMCs by switching PMC settings every 10 ms.. Bircher et al. [3] used the PMC-based approach on the Pentium 4, which has many counters, and investigated the suitability of different counters. Research using the IBM Power processors [5] developed a predictor of program phases in terms of power consumption, similar to dynamic branch predictors. This was later ported to the Intel PXA 255 processor [4] . Peddersen and Parameswaran [16] investigated custom CPU designs which provided PMCs counting events specifically selected for estimating the power consumption of the CPU.. There have been attempts at using hardware sensors to directly measure the power used in a system. A framework based on external multimeters and a dedicated profiling platform [6] can be used to characterise the workload of a closed system, but does not provide feedback to the system under test. We refined this approach by implementing on-board power-measurement support that allowed us to account for CPU, memory and I/O power separately [20] . While this approach supports low-overhead run-time measurements (and thus avoids the need for a-priori workload or platform characterisation), the need for extra hardware makes it unsuitable for off-the-shelf devices, and is a deterrent to manufacturers. Furthermore, without a model for the system behaviour, it is impossible to predict the power under conditions other than those being measured.. Similar work has been published regarding performance models. However, as discussed in our previous work [22] , these have a large performance overhead, and are generally highly platform specific (compared with our methodology which has a small overhead and could be deployed on any platform providing PMCs).. In the area of I/O modelling and energy minimisation, Nathuji et al. [14] investigated the scheduling of I/O activity on an Intel PXA255 to increase device idle times. They implemented this scheme in the Linux kernel, supported by compiler annotations of the code. The approach did not make any use of online HW information. Weissel et al [26] operations on the effective use of sleep states and found significant energy savings. Lastly, the realisation that energy use is important in embedded systems has lead to work that attempts to integrate it with overall operating-system resource management. Examples are Nemesis [15] and the currentcy model of EcoSystem [27] .

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


Image-Based Modeling of the Human Eye Abstract-Rendering realistic organic materials is a challenging issue. The human eye is an important part of nonverbal communication which, consequently, requires specific modeling and rendering techniques to enhance the realism of virtual characters. We propose an image-based method for estimating both iris morphology and scattering features in order to generate convincing images of virtual eyes. In this regard, we develop a technique to unrefract iris photographs. We model the morphology of the human iris as an irregular multilayered tissue. We then approximate the scattering features of the captured iris. Finally, we propose a real-time rendering technique based on the subsurface texture mapping representation and introduce a precomputed refraction function as well as a caustic function, which accounts for the light interactions at the corneal interface.Index Terms-Three-dimensional graphics and realism, image-based rendering, physically based modeling. R ESEARCH on human face rendering has principally focused on the modeling and rendering of skin. The human eye, as an important part of nonverbal communication, also needs to be carefully modeled and rendered to enhance the realism of virtual characters. Recent improvements to graphics hardware offer the opportunity of rendering complex organic materials in real time. However, recovering or approximating morphological properties and optical behaviors of organic materials remains a challenging issue. Our aim is to mimic the appearance of human eyes using an image-based method that quickly generates believable virtual eyes, visually close to the originals. Film production mostly relies on artistic design to provide aesthetically pleasing renderings. Nevertheless, taking advantage of physical and anatomical studies makes the modeling and rendering methods more general and easy to use. This is what we aim at providing in this paper.. We propose to take advantage of domain knowledge from the field of ophthalmology to infer anatomical properties of the iris. As with most organic materials, the iris is translucent and composed of several layers. While the overall iris color is due to specific pigment concentrations, the local variations of its shades are mostly governed by the nonuniform thickness of its tissues. We propose a pipeline, based on in vivo eye photographs, that allows us to approximate the iris structure and scattering features so that rendered irides closely imitate real ones. We have developed a technique to unrefract iris photographs. These processed images allow us to acquire the relief of the iris (Section 4). In a second step, we estimate the scattering properties of the captured iris from the eye photographs (Section 5). Finally, we propose a real-time eye rendering algorithm by representing the iridal structure as a Subsurface Texture [1] and by introducing a refraction function as well as a caustic function (Section 6). Our results are presented and discussed in Section 7. In vivo assessment of anatomical features is a complex matter with no simple solutions. We proposed a user friendly and affordable process to mimic the human eye using a simple digital camera and classical macro lens. We also took advantage of polarizing filters to avoid the light reflections on the cornea. We modeled the human iris based on its anatomical features. The light scattering within the iris creates color variations. These are not only due to variations of the pigment concentrations: the iridal reflectance also depends on the thickness variations of its layers. Therefore, we approximated the thickness of the iris layers using ophthalmological knowledge on generic irides and an unrefracted and deconvolved iris photograph.. While the estimation of the scattering features in layered materials such as skin is problematic, the iris morphology offers better dispositions: We took advantage of the iridal thickness variations and proposed a method to approximate the ABL and stromal melanin concentrations.. We achieved real-time rendering of the synthetic eye by leveraging graphics hardware and introducing precomputed refraction and caustic functions. We believe that the use of such functions could speed up the rendering of refractive objects which have symmetry properties.. Future work will focus on improving the estimation of the iridal morphology and scattering parameters for potential medical purposes. We would also like to achieve real-time estimation of multiple scattering in layered materials with nonuniform thicknesses and consider cloning of other organic tissues and extend our method to nonhuman eyes.. Pascal Gautron received the master's degree in computer science from the University of Poitiers and the PhD degree in computer sciences from the University of Rennes 1, France. He also worked in collaboration with the University of Central Florida and the University of Poitiers. His main research interest is high-quality real-time rendering using graphics hardware.. Gaspard Breton received the PhD degree in computer science from the University of Rennes 1, France. He is a research engineer at Orange Labs. His interests are real-time facial animation as well as embodied conversational agents.. Kadi Bouatouch received the PhD degree in 1977 and the higher doctorate degree in computer science in the field of computer graphics in 1989. He is an electronics and automatic systems engineer (ENSEM 1974) . He is a professor at the University of Rennes 1, France, and a researcher at IRISA-INRIA. His research interests are global illumination, rendering of complex environments, real-time high-fidelity rendering, virtual and augmented reality, and computer vision. He is a member of the Eurographics, the ACM, and the program committees of several conferences and workshops, and a senior member of the IEEE and the IEEE Computer Society.. . For more information on this or any other computing topic, please visit our Digital Library at www.computer.org/publications/dlib. Most of the previous work in human eye modeling and rendering only partially relies on the anatomical structure of the eye. Furthermore, only a few papers address the problem of generating visually pleasant models of human irides. Instead, classical methods model the eye features using textures which encode color variations: They assume that the variation of colors in the iris is only due to a variation of the densities of its pigments, hence ignoring the light scattering within its tissues.. By using a simple Gouraud shading model and textures, Sagar et al. [2] represent and render the human eye for surgical practicing purposes.. Lefohn et al. [3] present a method based on ocularist's studies: they introduce an aesthetically pleasant method for human iris cloning, based on multiple hand-designed colored layers overlaid to create convincing irides. Nevertheless, painting many semitransparent layers can be a tedious task. To minimize the user interactions, we propose a different approach which takes advantage of the RGB and scale information contained in iris photographs.. Zuo and Schmid [4] generate human irides using synthetic fibers to mimic the fibrous nature of the iris layers. However, this method has been developed for the evaluation of iris recognition algorithms and does not address the problem of mimicking and rendering given irides.. Lam and Baranoski [5] propose a Monte Carlo based rendering technique to accurately simulate the light scattering within the iris. This method, namely ILIT, allows accurate modeling and rendering of the human iris using the anatomical and biophysical properties of its layers.. Baranoski and Lam [6] show that this rendering method can be used to accurately infer physical and chemical information of the human iris, such as the iridal melanin distribution, useful for medical purposes. However, this is an offline rendering method and does not address the problem of the human eye cloning.. In this regard, we developed a semiautomatic method, based on photographs and inspired by the ophthalmic literature. We approach the irregular structure of the iridal layers as well as their respective scattering properties by comparing iris photographs with rendered virtual irides. Even though less accurate than the ILIT model proposed in [5] , it allows fast and simple human eye modeling, which only requires a few user interactions. We also propose a real-time rendering method by introducing a refraction function and a caustic function for a fast and accurate estimation of light interactions with the cornea. This rendering technique enables real-time modifications of the iridal thickness and scattering parameters, while keeping believable results. This feature is particularly useful for graphics designers, who, at times, lack biophysical knowledge about human eyes.

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


Corner occupying theorem for the two-dimensional integral rectangle packing problem Abstract This paper proves a corner occupying theorem for the two-dimensional integral rectangle packing problem, stating that if it is possible to orthogonally place n arbitrarily given integral rectangles into an integral rectangular container without overlapping, then we can achieve a feasible packing by successively placing a rectangle onto a bottom-left corner in the container. Based on this theorem, we might develop efficient heuristic algorithms for solving the integral rectangle packing problem. In fact, as a vague conjecture, this theorem has been implicitly mentioned with different appearances by many people for a long time. In the integral rectangle packing (IRP) problem, we are given a set J = {1, 2, . . . , n} of n integral rectangles, each having width w j and height h j , and an integral rectangular container of width W and height H. The problem is to determine whether all the rectangles can be orthogonally placed into the container without overlapping. If the answer is yes, we should present a non-overlapping packing pattern. In this paper, we assume that: (1) w j , h j , W and H are positive integers, and each vertex of each rectangle must be placed at integral coordinate positions. (2) Rectangles are rotatable, i.e., each rectangle can be horizontally or vertically placed into the container.. The rectangle packing problem arises in many industrial applications, such as cutting wood, glass, paper and steel in manufacturing, packing goods in transportation, arranging articles and advertisements in publishing. Various algorithms have been proposed to solve this problem. They can be divided into three categories: approximate algorithms, heuristic algorithms and exact algorithms [1, 2] .. Most algorithms solve the IRP problem by successively placing a new rectangle into the container. Then a basic problem arises: where to place a new rectangle when the container is already partially occupied by some previously placed rectangles? To handle this problem, people have proposed several kinds of placement heuristics specifying admissible positions for a rectangle [3] [4] [5] [6] [7] .. However, for a specific placement heuristic, there exists an important question: when there exist feasible solutions, can we achieve one by successively placing a rectangle into the container using this placement heuristic? If the answer is yes, then we say the placement heuristic is complete; otherwise, incomplete. If a placement heuristic is incomplete, then any algorithm based on it is doomed to fail on some instances. For example, Ref. [3] proved that the Bottom-Left heuristic, which places a rectangle onto the lowest possible position in the container and left-justify it, is incomplete. They found an instance for which any feasible solution cannot be achieved using the Bottom-Left heuristic, no matter what ordering of the rectangles is used. Ref. [8] proposed a placement heuristic and developed an exact algorithm for the three dimensional bin packing problem. Later, Ref. [9] found that some instances cannot be solved using the placement heuristic proposed by [8] .. It is usually very difficult to prove a placement heuristic's completeness or incompleteness. Nevertheless, for a special case of the rectangle packing problem, the 2D rectangular perfect packing problem, Ref. [10] showed that the Bottom-Left heuristic is complete. They presented the following theorem: For every perfect packing, there is a permutation of the rectangles that yields that packing using the Bottom-Left heuristic. An efficient branch and bound algorithm is also developed based on this theorem. Besides this result, we have not found any other paper in literature proving a certain placement heuristic's completeness.. For the general IRP problem, this paper formulates a placement heuristic and proves its completeness. The following corner occupying theorem is presented that if it is possible to orthogonally place n arbitrarily given integral rectangles into an integral rectangular container without overlapping, then we can achieve a feasible packing by successively placing an integral rectangle onto a bottom-left corner in the container. This theorem lays a solid foundation for understanding many efficient algorithms for solving the IRP problem [11] [12] [13] . It might be possible to develop new efficient and effective heuristic algorithms based on this theorem.. The rest of the paper is organized as follows. Section 2 presents several notations and definitions. Section 3 proves the corner occupying theorem. Finally, Section 4 presents a counterexample to show why the proof of the corner occupying theorem cannot be directly extended to the three-dimensional case.

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


Classifying algorithms for SIFT-MS technology and medical diagnosis Selected Ion Flow Tube -Mass Spectrometry (SIFT-MS) is an analytical technique for real-time quantification of trace gases in air or breath samples. SIFT-MS system thus offers unique potential for early, rapid detection of disease states. Identification of Volatile Organic Compound (VOC) masses that contribute strongly towards a successful classification clearly highlights potential new biomarkers. A method utilising kernel density estimates is thus presented for classifying unknown samples. It is validated in a simple known case and a clinical setting before-after dialysis. The simple case with nitrogen in tedlar bags returned a 100% success rate, as expected. The clinical proofof-concept with seven tests on one patient had an ROC curve area of 0.89. These results validate the method presented and illustrate the emerging clinical potential of this technology. The SIFT-MS system can potentially offer a unique capability in the early and rapid detection of a wide variety of diseases, infectious bacteria and patient conditions. A method is presented for the classification of unknown samples.. This method is initially validated in a simple study in which saturated nitrogen in tedlar bags is differentiated from dry nitrogen in tedlar bags. There was an estimated 0% error in classification using the bootstrap error prediction method with 500 bootstrap samples. All expected biomarkers were identified, with the most reliable being N 2 H + .H 2 O, and isotopes and water clusters of. In addition, phenol and N,N-dimethyl acetamide products were found to be present in the tedlar bags despite flushing, although levels were reduced in saturated nitrogen samples, presumably related to the solubility of these compounds in water.. Because of the lack of data at low log-odds ratios due to the very distinct sample groups, the reliability curve showed that log-odds ratios of approximately 50 and 70 are required for 90% reliability in classifying saturated and dry nitrogen respectively. However, with 500 bootstrap samples, the minimum log-odds ratios obtained were 70 and 85 for saturated and dry nitrogen respectively. Hence, the high reliability is observed. The area under the ROC curve was found to be an expected ideal of 1.00, showing that the classification model is highly sensitive and highly specific.. After initial validation, the classification model was employed to differentiate patient breath samples after one and four hours of dialysis treatment, thus estimating or measuring kidney function. The sample size of seven was much smaller than desired, but sufficient for this first proof-of-concept. Using 1000 bootstrap samples, estimated prediction errors were found to be 11.2%, Depending on factors such as diet and the length of time since the last dialysis treatment, VOC levels can vary dramatically prior to treatment, as observed by the spread of data in the 1-hour dialysis group. Biomarkers for classification were ammonia, acetaldehyde, ethanol, isoprene and acetone.. An absolute log-odds value of approximately 50 must be obtained to classify with 90% certainty. As indicated by the ROC curve, the model classifies significantly better than random, with an ROC area of 0.89.. A method is presented and validated for breath classification using SIFT-MS mass scan data. As well as classification, this method enables the identification of biomarkers relevant to the condition being investigated. SIFT-MS mass scans used in conjunction with the current method could potentially allow non-invasive real-time diagnosis of various patient conditions, as well as giving insight into the metabolic reactions that occur in certain disease states.. Future work will involve model validation, which will require much greater sample sizes. In addition, as more dialysis mass scans become available, the model will be modified to exploit the paired nature of this type of data. Unlike the pure classification problem described here, with paired data of this type, sample points in each group are intrinsically linked, and this information can be used to further inform the model. The study methodology is divided into three sections:. 1. Experimental design for the validation study and dialysis case study; 2. Pre-processing of mass scan raw data; 3. Statistical analysis, including classification, prediction error estimation, reliability, and sensitivity/specificity analysis.

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


Architecture for Building Conversational Agents that Support Collaborative Learning Abstract-Tutorial Dialog Systems that employ Conversational Agents (CAs) to deliver instructional content to learners in one-on-one tutoring settings have been shown to be effective in multiple learning domains by multiple research groups. Our work focuses on extending this successful learning technology to collaborative learning settings involving two or more learners interacting with one or more agents. Experience from extending existing techniques for developing conversational agents into multiple-learner settings highlights two underlying assumptions from the one-learner setting that do not generalize well to the multiuser setting, and thus cause difficulties. These assumptions include what we refer to as the near-even participation assumption and the known addressee assumption. A new software architecture called Basilica that allows us to address and overcome these limitations is a major contribution of this article. The Basilica architecture adopts an object-oriented approach to represent agents as a network composed of what we refer to as behavioral components because they enable the agents to engage in rich conversational behaviors. Additionally, we describe three specific conversational agents built using Basilica in order to illustrate the desirable properties of this new architecture. I N this paper, we present Basilica, which is a novel architecture and tool kit for utilizing Conversational Agent (CA) technology to support collaborative learning in a powerful way. In our previous publications [1] , [2] , [3] , [4] , [5] , [6] , we have demonstrated substantial learning gains, sometimes with effect sizes equivalent to 1.24 letter grades, in connection with dynamic support for collaborative learning that has been enabled through this architecture in comparison with no support or static support control conditions. This paper is the first, comprehensive discussion of the architecture that transcends individual instantiations, and explains how the architecture can be adapted and used by researchers and practitioners alike for their own system development.. Applications of CA technology for automated tutoring have been extensively researched, particularly in the last 15 years. Various research groups have developed agents in a variety of domains including reading, algebra, geometry, calculus, computer literacy, physics, programming, foreign languages, research methods, and thermodynamics. Many evaluations have shown that CAs can be effective tutors [1] , [7] , [8] . The dynamic nature of dialogue offers the flexibility of supporting students, using feedback to scaffold their process in a personalized way, specifically where it is needed. One can think of them as agents that elicit explanations in a step by step fashion with each step of the line of reasoning contributing to the resulting explanation. Although explanation activities have intrinsic cognitive benefits and students often learn from explanation activities without feedback, such as unsupported self-explanation during problem solving or worked example studying, many students provide explanations of low quality in these contexts [9] . Feedback on explanation quality should support the generation of higher quality explanations. Furthermore, in computer-based learning environments, such feedback is likely to provide a crucial incentive for students to take the explanation task seriously [10] .. Most state-of-the-art CAs for automated tutoring applications have been developed and evaluated for one-on-one tutoring situations where the agent interacts with one learner at a time. In our research, we have focused on extending the success of CAs in tutoring applications to collaborative learning situations where the agents interact with multiple learners who are part of a collaborative team working through a learning task. This approach grows out of the literature on script-based support for collaborative learning. In order to encourage productive patterns of collaborative discourse, researchers, both in the Computer Supported Collaborative Learning (CSCL) tradition and the Educational Psychology tradition, have separately developed approaches to using scripts for scaffolding the interactions between students to help coordinate their communication, and to encourage deep thinking and reflection [11] . Script-based support has traditionally taken on a wide range of forms including provision of prompts during collaboration [12] and design of structured interfaces, including such things as buttons associated with typical "conversation openings" [13] . Previous approaches to scripting have been static, one-size-fits-all approaches. In other words, the approaches were not responsive to what was happening in the collaboration. This nonadaptive approach can lead to over scripting [14] or interference between different types of scripts [15] . With these things in mind, and considering that ideally we would like students to internalize the principles encoded in the script-based support, a more dynamic and potentially more desirable approach would be to trigger support based on observed need and to fade scaffolding over time as students acquire the skills needed to collaborate productively in a learning context, as is enabled through automatic collaborative learning process analysis [16] . We have conducted a series of studies over the past three years, in which we have successfully evaluated CA technology as a form of dynamic support for collaborative learning achieving improvements in learning of a full letter grade or more in comparison with no support and static support control conditions.. Collaborative learning settings are a subset of the general class of multiparty interactive situations, which presents challenges beyond those posed in the more typical single agent/single user settings, where much of the CA research to date has focused. Research on CAs and dialog systems in single user applications has explored representations and implementations that can be extended to agents in the multiparty case, but with difficulty. Addressing this difficulty is the focus of the research presented in this paper, which not only supports the important goal of enabling the efficient development of highly effective computer-supported collaborative learning environments, but also paves the way for a broader class of applications of CAs in other types of collaborative environments.. In the remainder of the paper, we first discuss specific assumptions underlying typical state-based and plan-based approaches to CAs that pose problems for the multiparty scenarios in which we use CAs in our work. This discussion will motivate the specific approach we take in our work. Section 3 discusses the technical details of the Basilica Architecture and describes the agent representation using a simple example. Section 4 describes a collection of agents that support teams of learners in a variety of collaborative learning tasks in order to demonstrate the capabilities of the Basilica architecture. This is followed by discussion and directions for future work in Section 5. The design of Basilica grew from three primary desiderata, namely, a rich enough representation to enable the expression of the types of rich behaviors we envision, a structure that is modular enough to accommodate the type of complex conversational dynamics that arise in multiparty settings, and finally an approach that supports reuse and mix-and-match construction in order to enable building complex behaviors from the interaction of simpler behaviors so that the amount of effort to develop new systems in Basilica reduces over time. We can compare the Basilica architecture to other work on architectures for creating CAs, as well as to architectures for supporting CSCL.. Various approaches [17] , [20] and corresponding software architectures [32] have been proposed to create CAs. As discussed in Section 2.1., these approaches employ a very high-level language to represent the agent capabilities, which makes it difficult to create highly interactive behaviors that are not only useful but increasingly necessary when the agents are interacting with more than one student. Furthermore, these architectures are based on the assumptions discussed in Section 2.2 that do not generalize to collaborative learning situations. For example, the Ravenclaw architecture [21] processes user utterances only when the agent is in the input phase, i.e., the agent is expecting an input. However, while supporting collaborative learning, agents must constantly monitor student interaction and perform interventions when necessary. Basilica allows this as demonstrated in Section 4.2 by creating components dedicated to detect characteristics of student interaction (e.g., inactivity). Similarly, the AutoTutor system utilizes a fivestep dialogue frame [32] that prohibits input from the student at specific steps. The software architecture underlying these systems can be extended to add additional desirable behaviors. In general, such extensions would lead to implementation of an event-driven interaction model similar to the one suggested in Section 3.1.. On the other hand, architectures proposed to support collaborative learning have largely focused on enabling collaboration between students by creating virtual environments that provide rich awareness, communication modalities, visualization of shared knowledge, integration of external resources, and allow implementation of collaboration scripts [33] . Use of agents as adaptive support has been explored in limited form by supporting specific learner roles like Peer tutors [25] . On the other hand, agents built using the Basilica architecture are capable of supporting the learning group as a whole by employing situation-specific interactive behaviors such as turn taking as discussed in Section 3.4. Similarly agents utilized in asynchronous environments [34] to support learners bypass the issues of interacting with more than one learner simultaneously because the students do not interact with each other in real time.

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