1,132 research outputs found
Gradual Liquid Type Inference
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
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
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.060.82) m/s during diastole and a maximum
of (5.970.90) m/s during systole was measured. After injection of
phenylephrine, a strong increase of shear wave speed (13.855.51) m/s was
observed for a peak systolic arterial pressure of (19010) 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
A theory of revolution
Peer Reviewedhttp://deepblue.lib.umich.edu/bitstream/2027.42/66981/2/10.1177_002200276701100302.pd
Versatile Kernels for Aspect-Oriented Programming
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
Taming aspects with monads and membranes
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
- …