66,770 research outputs found

    Program representation size in an intermediate language with intersection and union types

    Full text link
    The CIL compiler for core Standard ML compiles whole programs using a novel typed intermediate language (TIL) with intersection and union types and flow labels on both terms and types. The CIL term representation duplicates portions of the program where intersection types are introduced and union types are eliminated. This duplication makes it easier to represent type information and to introduce customized data representations. However, duplication incurs compile-time space costs that are potentially much greater than are incurred in TILs employing type-level abstraction or quantification. In this paper, we present empirical data on the compile-time space costs of using CIL as an intermediate language. The data shows that these costs can be made tractable by using sufficiently fine-grained flow analyses together with standard hash-consing techniques. The data also suggests that non-duplicating formulations of intersection (and union) types would not achieve significantly better space complexity.National Science Foundation (CCR-9417382, CISE/CCR ESS 9806747); Sun grant (EDUD-7826-990410-US); Faculty Fellowship of the Carroll School of Management, Boston College; U.K. Engineering and Physical Sciences Research Council (GR/L 36963, GR/L 15685

    Minimally Invasive Mitral Valve Surgery III: Training and Robotic-Assisted Approaches.

    Get PDF
    Minimally invasive mitral valve operations are increasingly common in the United States, but robotic-assisted approaches have not been widely adopted for a variety of reasons. This expert opinion reviews the state of the art and defines best practices, training, and techniques for developing a successful robotics program

    Continuation-Passing C: compiling threads to events through continuations

    Get PDF
    In this paper, we introduce Continuation Passing C (CPC), a programming language for concurrent systems in which native and cooperative threads are unified and presented to the programmer as a single abstraction. The CPC compiler uses a compilation technique, based on the CPS transform, that yields efficient code and an extremely lightweight representation for contexts. We provide a proof of the correctness of our compilation scheme. We show in particular that lambda-lifting, a common compilation technique for functional languages, is also correct in an imperative language like C, under some conditions enforced by the CPC compiler. The current CPC compiler is mature enough to write substantial programs such as Hekate, a highly concurrent BitTorrent seeder. Our benchmark results show that CPC is as efficient, while using significantly less space, as the most efficient thread libraries available.Comment: Higher-Order and Symbolic Computation (2012). arXiv admin note: substantial text overlap with arXiv:1202.324

    Trade-Offs Between Size and Degree in Polynomial Calculus

    Get PDF
    Building on [Clegg et al. \u2796], [Impagliazzo et al. \u2799] established that if an unsatisfiable k-CNF formula over n variables has a refutation of size S in the polynomial calculus resolution proof system, then this formula also has a refutation of degree k + O(?(n log S)). The proof of this works by converting a small-size refutation into a small-degree one, but at the expense of increasing the proof size exponentially. This raises the question of whether it is possible to achieve both small size and small degree in the same refutation, or whether the exponential blow-up is inherent. Using and extending ideas from [Thapen \u2716], who studied the analogous question for the resolution proof system, we prove that a strong size-degree trade-off is necessary

    Liveness-Based Garbage Collection for Lazy Languages

    Full text link
    We consider the problem of reducing the memory required to run lazy first-order functional programs. Our approach is to analyze programs for liveness of heap-allocated data. The result of the analysis is used to preserve only live data---a subset of reachable data---during garbage collection. The result is an increase in the garbage reclaimed and a reduction in the peak memory requirement of programs. While this technique has already been shown to yield benefits for eager first-order languages, the lack of a statically determinable execution order and the presence of closures pose new challenges for lazy languages. These require changes both in the liveness analysis itself and in the design of the garbage collector. To show the effectiveness of our method, we implemented a copying collector that uses the results of the liveness analysis to preserve live objects, both evaluated (i.e., in WHNF) and closures. Our experiments confirm that for programs running with a liveness-based garbage collector, there is a significant decrease in peak memory requirements. In addition, a sizable reduction in the number of collections ensures that in spite of using a more complex garbage collector, the execution times of programs running with liveness and reachability-based collectors remain comparable

    Common Subexpression Elimination in a Lazy Functional Language

    Get PDF
    Common subexpression elimination is a well-known compiler optimisation that saves time by avoiding the repetition of the same computation. To our knowledge it has not yet been applied to lazy functional programming languages, although there are several advantages. First, the referential transparency of these languages makes the identification of common subexpressions very simple. Second, more common subexpressions can be recognised because they can be of arbitrary type whereas standard common subexpression elimination only shares primitive values. However, because lazy functional languages decouple program structure from data space allocation and control flow, analysing its effects and deciding under which conditions the elimination of a common subexpression is beneficial proves to be quite difficult. We developed and implemented the transformation for the language Haskell by extending the Glasgow Haskell compiler and measured its effectiveness on real-world programs

    Hiatoplasty with crura buttressing versus hiatoplasty alone during laparoscopic sleeve gastrectomy

    Get PDF
    Introduction. In obese patients with hiatal hernia (HH), laparoscopic sleeve gastrectomy (LSG) with cruroplasty is an option but use of prosthetic mesh crura reinforcement is debated. The aim was to compare the results of hiatal closure with or without mesh buttressing during LSG. Methods. Gastroesophageal reflux disease (GERD) was assessed by the Health-Related Quality of Life (GERD-HRQL) questionnaire before and after surgery in two consecutive series of patients with esophageal hiatus ≤ 4 cm2. After LSG, patients in group A (12) underwent simple cruroplasty, whereas in group B patients (17), absorbable mesh crura buttressing was added. Results. At mean follow-up of 33.2 and 18.1 months for groups A and B, respectively (p = 0 006), the mean preoperative GERD-HRQL scores of 16.5 and 17.7 (p = 0 837) postoperatively became 9.5 and 2.4 (p = 0 071). In group A, there was no difference between pre- and postoperative scores (p = 0 279), whereas in group B, a highly significant difference was observed (p = 0 002). The difference (Δ) comparing pre- and postoperative mean scores between the two groups was significantly in favor of mesh placement (p = 0 0058). Conclusions. In obese patients with HH and mild-moderate GERD, reflux symptoms are significantly improved at medium term follow-up after cruroplasty with versus without crura buttressing during LSG.Introduction. In obese patients with hiatal hernia (HH), laparoscopic sleeve gastrectomy (LSG) with cruroplasty is an option but use of prosthetic mesh crura reinforcement is debated. The aim was to compare the results of hiatal closure with or without mesh buttressing during LSG. Methods. Gastroesophageal reflux disease (GERD) was assessed by the Health-Related Quality of Life (GERD-HRQL) questionnaire before and after surgery in two consecutive series of patients with esophageal hiatus ≤ 4 cm2. After LSG, patients in group A (12) underwent simple cruroplasty, whereas in group B patients (17), absorbable mesh crura buttressing was added. Results. At mean follow-up of 33.2 and 18.1 months for groups A and B, respectively (p = 0 006), the mean preoperative GERD-HRQL scores of 16.5 and 17.7 (p = 0 837) postoperatively became 9.5 and 2.4 (p = 0 071). In group A, there was no difference between pre- and postoperative scores (p = 0 279), whereas in group B, a highly significant difference was observed (p = 0 002). The difference (Δ) comparing pre- and postoperative mean scores between the two groups was significantly in favor of mesh placement (p = 0 0058). Conclusions. In obese patients with HH and mild-moderate GERD, reflux symptoms are significantly improved at medium term follow-up after cruroplasty with versus without crura buttressing during LSG

    Minimally Invasive Mitral Valve Surgery II: Surgical Technique and Postoperative Management.

    Get PDF
    Techniques for minimally invasive mitral valve repair and replacement continue to evolve. This expert opinion, the second of a 3-part series, outlines current best practices for nonrobotic, minimally invasive mitral valve procedures, and for postoperative care after minimally invasive mitral valve surgery
    corecore