1,122 research outputs found

    Gradual Liquid Type Inference

    Full text link
    Liquid typing provides a decidable refinement inference mechanism that is convenient but subject to two major issues: (1) inference is global and requires top-level annotations, making it unsuitable for inference of modular code components and prohibiting its applicability to library code, and (2) inference failure results in obscure error messages. These difficulties seriously hamper the migration of existing code to use refinements. This paper shows that gradual liquid type inference---a novel combination of liquid inference and gradual refinement types---addresses both issues. Gradual refinement types, which support imprecise predicates that are optimistically interpreted, can be used in argument positions to constrain liquid inference so that the global inference process e effectively infers modular specifications usable for library components. Dually, when gradual refinements appear as the result of inference, they signal an inconsistency in the use of static refinements. Because liquid refinements are drawn from a nite set of predicates, in gradual liquid type inference we can enumerate the safe concretizations of each imprecise refinement, i.e. the static refinements that justify why a program is gradually well-typed. This enumeration is useful for static liquid type error explanation, since the safe concretizations exhibit all the potential inconsistencies that lead to static type errors. We develop the theory of gradual liquid type inference and explore its pragmatics in the setting of Liquid Haskell.Comment: To appear at OOPSLA 201

    Preface

    Full text link
    Peer Reviewedhttp://deepblue.lib.umich.edu/bitstream/2027.42/67195/2/10.1177_000276427201500602.pd

    Non-invasive Evaluation of Aortic Stiffness Dependence with Aortic Blood Pressure and Internal Radius by Shear Wave Elastography and Ultrafast Imaging

    Get PDF
    Elastic properties of arteries have long been recognized as playing a major role in the cardiovascular system. However, non-invasive in vivo assessment of local arterial stiffness remains challenging and imprecise as current techniques rely on indirect estimates such as wall deformation or pulse wave velocity. Recently, Shear Wave Elastography (SWE) has been proposed to non-invasively assess the intrinsic arterial stiffness. In this study, we applied SWE in the abdominal aortas of rats while increasing blood pressure (BP) to investigate the dependence of shear wave speed with invasive arterial pressure and non-invasive arterial diameter measurements. A 15MHz linear array connected to an ultrafast ultrasonic scanner, set non-invasively, on the abdominal aorta of anesthetized rats (N=5) was used. The SWE acquisition followed by an ultrafast (UF) acquisition was repeated at different moment of the cardiac cycle to assess shear wave speed and arterial diameter variations respectively. Invasive arterial BP catheter placed in the carotid, allowed the accurate measurement of pressure responses to increasing does of phenylephrine infused via a venous catheter. The SWE acquisition coupled to the UF acquisition was repeated for different range of pressure. For normal range of BP, the shear wave speed was found to follow the aortic BP variation during a cardiac cycle. A minimum of (5.06±\pm0.82) m/s during diastole and a maximum of (5.97±\pm0.90) m/s during systole was measured. After injection of phenylephrine, a strong increase of shear wave speed (13.85±\pm5.51) m/s was observed for a peak systolic arterial pressure of (190±\pm10) mmHg. A non-linear relationship between shear wave speed and arterial BP was found. A complete non-invasive method was proposed to characterize the artery with shear wave speed combined with arterial diameter variations. Finally, the results were validated against two parameters the incremental elastic modulus and the pressure elastic modulus derived from BP and arterial diameter variations

    Versatile Kernels for Aspect-Oriented Programming

    Get PDF
    Aspect-Oriented Programming (AOP) is a promising approach to modularizing software in presence of crosscutting concerns. Numerous proposals for AOP have been formulated, some of them generic, others specific to particular concerns. There are commonalities and variabilities among these approaches, which are worth exploring. Unfortunately, in practice, these various approaches are hard to combine and to extend. This results from the fact that the corresponding tools, such as aspect weavers, have not been designed to be used along with others, although they usually perform very similar low-level tasks. In this report, we suggest to include common functionality into a versatile kernel for AOP. Such a kernel alleviates the task of implementing an aspect-oriented approach by taking care of basic program alterations. It also lets several approaches coexist without breaking each other by automatically detecting interactions among aspects and offering expressive composition means. From a review of the main features of Aspect-Oriented Programming, we present the main issues that the design of such an AOP kernel should address: open support for aspect languages taking care of both behavior and structure, base language compliance, and aspect composition. As this suggests that partial reflection is an appropriate general framework for AOP, we concretize these ideas with a Java AOP kernel based on partial reflection, reconciling in this way reflection and aspect orientation. A case study based on an implementation of the Sequential Object Monitors illustrates the benefits of the approach

    A theory of revolution

    Full text link
    Peer Reviewedhttp://deepblue.lib.umich.edu/bitstream/2027.42/66981/2/10.1177_002200276701100302.pd

    Taming aspects with monads and membranes

    Get PDF
    International audienceWhen a software system is developed using several aspects, special care must be taken to ensure that the resulting behavior is correct. This is known as the aspect interference problem, and existing approaches essentially aim to detect whether a system exhibits problematic interferences of aspects. In this paper we describe how to control aspect interference by construction by relying on the type system. More precisely, we combine a monadic embedding of the pointcut/advice model in Haskell with the notion of membranes for aspect-oriented programming. Aspects must explicitly declare the side effectsa nd the context they can act upon. Allowed patterns of control flow interference are declared at the membrane level and statically enforced. Finally, computational interference between aspects is controlled by the membrane topology. To combine independent and reusable aspects and monadic components into a program specification we use monad views, a recent technique for conveniently handling the monadic stack
    • …
    corecore