Hyp: a Toolkit for Representing, Manipulating, and Optimizing Hypergraphs

Total Page:16

File Type:pdf, Size:1020Kb

Hyp: a Toolkit for Representing, Manipulating, and Optimizing Hypergraphs hyp: A Toolkit for Representing, Manipulating, and Optimizing Hypergraphs Markus Dreyer¤ Jonathan Graehl SDL Research SDL Research 6060 Center Drive Suite 150 6060 Center Drive Suite 150 Los Angeles, CA 90045 Los Angeles, CA 90045 [email protected] [email protected] Abstract tail1 w We present hyp, an open-source toolkit for tail2 head the representation, manipulation, and opti- mization of weighted directed hypergraphs. tail3 hyp provides compose, project, in- vert functionality, k-best path algorithms, Figure 1: An arc leading from three tail states to a head state, the inside and outside algorithms, and more. with weight w. Finite-state machines are modeled as a spe- cial case of directed hypergraphs. hyp con- sists of a C++ API, as well as a command 2 Definitions line tool, and is available for download at github.com/sdl-research/hyp. A weighted directed hypergraph (hereinafter hy- pergraph) is a pair H V,E , where V is a set of Æ h i vertices and E a set of edges. Each edge (also called 1 Introduction hyperedge) is a triple e T(e),h(e),w(e) , where Æ h i T(e) is an ordered list of tails (i.e., source vertices), We present hyp, an open-source toolkit that pro- h(e) is the head (i.e., target vertex) and w(e) is the vides data structures and algorithms to process semiring weight (see Section 3.4) of the edge (see weighted directed hypergraphs. Figure 1). Such hypergraphs are important in natural lan- We regard hypergraphs as automata and call the guage processing and machine learning, e.g., in vertices states and edges arcs. We add an optional parsing (Klein and Manning (2005), Huang and start state S V and a final state F V. Chiang (2005)), machine translation (Kumar et al., 2 2 Each state s has an input label i(s) (§ {∅}) 2009), as well as in logic (Gallo et al., 1993) and 2 [ and output label o(s) (§ {∅}); if o(s) ∅ then weighted logic programming (Eisner and Filardo, 2 [ Æ we treat the state as having o(s) i(s). The label 2011). Æ alphabet § is divided into disjoint sets of nonter- The hyp toolkit enables representing and ma- minal, lexical, and special {²,Á,½,σ} labels. The nipulating weighted directed hypergraphs, pro- input and output labels are analogous to those of viding compose, project, invert functional- a finite-state transducer in some hyp operations ity, k-best path algorithms, the inside and out- (Section 3.3). side algorithms, and more. hyp also implements The set of incoming arcs into a state s is called a framework for estimating hypergraph feature the Backward Star of s, or short, BS(s). Formally, weights by optimization on forests derived from BS(s) {a E: h(a) s}. A path ¼ is a sequence training data. Æ 2 Æ of arcs ¼ (a ...a ) E¤ such that a ¼, t Æ 1 k 2 8 2 8 2 Markus Dreyer is now at Amazon, Inc., Seattle, WA. T(a),( a0 ¼ : h(a0) t) BS(t) . Each tail state ¤ 9 2 Æ _ Æ; 11 Proceedings of NAACL-HLT 2015, pages 11–15, Denver, Colorado, May 31 – June 5, 2015. c 2015 Association for Computational Linguistics t of each arc on the path must be the head of some 0(S) <- 1("he") 2("eats") 3("rice") / 0.693 FINAL <- 0(S) arc on the path, unless t is the start state or has "he" no incoming arcs and a terminal (lexical or spe- 1 2 0.693 "eats" S cial) input label, in which case we call t an axiom. 3 The rationale is that each tail state of each arc on "rice" the path must be derived, by traveling an arc that leads to it, or given as an axiom. If the hypergraph Figure 2: The text and visual representation of a hypergraph has a start state, the first tail of the first arc of any with a single arc, similar to Figure 1. The visual representation path must be the start state. The head of the last leaves out the state IDs of labeled states. arc must always be the final state, h(ak ) F. Paths Æ 0(S) <- 1(NP) 2(VP) correspond to trees, or proofs that the final state 1(NP) <- 3(PRON) may be reached from axioms. 2(VP) <- 4(V) 5(NP) 6(PP) 3(PRON) <- 10("He") Hypergraph arcs have exactly one head; some 4(V) <- 11("eats") 5(NP) <- 7(N) authors permit multiple heads and would call our 6(PP) <- 8(PREP) 9(N) hypergraphs B-hypergraphs (Gallo et al., 1993). 7(N) <- 12("rice") 8(PREP) <- 13("with") 9(N) <- 14("sticks") FINAL <- 0(S) 3 Representing hypergraphs # These added arcs # make it intoa forest: Text representation. hyp uses a simple human- 15(NP) <- 7(N) 6(PP) 2(VP) <- 4(V) 15(NP) "He" PRON NP readable text format for hypergraphs. For exam- 1 2 S "eats" V 1 1 ple, see the first two lines in Figure 2. Each hyper- VP 2 "rice" N NP 2 1 graph arc has the following format: "with" PREP 1 NP 2 3 2 PP head <- tail1 tail2 ... tailn / weight "sticks" N Head and tail states are non-negative integers Figure 3: A packed forest. followed by an optional label in parentheses (or a pair of (input output) labels). If it is lexi- cal (i.e., a word), then it is double-quoted with the Reducing redundancy. State labels need not be usual backslash-escapes; nonterminal and special repeated at every mention of that state’s ID; if a symbols are unquoted. Special symbols like ², Á, state has a label anywhere it has it always. For ex- ½, σ are written with brackets, as <eps>, <phi>, ample, we write the label S for state 0 in Figure 2 <rho>, <sigma>. Each arc may optionally have only once: 0(S) <- 1("he") 2("eats") 3("rice") / 0.693 a slash followed by a weight, which is typically a FINAL <- 0 negative log probability (i.e., the cost of the arc). A Similarly, state IDs may be left out wherever a final state n is marked as FINAL <- n. Figure 2 label uniquely identifies a particular state: shows the text and visual representation of a hy- 0(S) <- ("he")("eats")("rice") / 0.693 pergraph with only one arc; it represents and ac- FINAL <- 0 cepts the string he eats rice. hyp generates state IDs for these states automati- cally. Visual representation. A provided Draw com- mand can render hypergraphs using Graphviz 3.1 Trees and forests (Gansner and North, 2000). Small gray numbers A forest is a hypergraph that contains a set of trees. indicate the order of arc tails. Axiom nodes are A forest may be packed, in which case its trees filled gray.1 The final state is drawn as a double cir- share substructure, like strings in a lattice. An ex- cle, following finite-state convention. ample forest in hyp format is shown in Figure 3. 1Gray is used analogously in graphical models for observed Any two or more arcs pointing into one state have nodes. OR semantics; the depicted forest compactly rep- 12 he eats rice 0 1 2 3 simple sentence hypergraph of Figure 5, we could arrive at a more interesting lattice or even an FSM Figure 4: A one-sentence finite-state machine in OpenFst. with cycles and so infinitely many paths. 3.3 Transducers START <- 0 0 1 1 <- 0 4("he") 2 1 2 <- 1 5("eats") 1 A leaf state s with an output label o(s) i(s) "he" 6Æ 3 <- 2 6("rice") 2 2 1 rewrites the input label. This applies to finite-state FINAL <- 3 "eats" 2 3 "rice" as well as general hypergraphs. The following arc, for example, reads “eats” and an NP and derives a VP; it also rewrites “eats” to “ate”: hyp Figure 5: A one-sentence finite-state hypergraph in . (V) <- ("eats""ate") (NP) If a state has an output label, it must then have an resents two interpretations of one sentence: (1) he input label, though it may be <eps>. The start eats rice using sticks OR he eats rice that has sticks. state conventionally has no label. Hypergraphs can represent any context-free gram- mar, where the strings in the grammar are the lex- 3.4 Semirings and features ical yield (i.e., leaves in order) of the hypergraph Each hypergraph uses a particular semiring, which trees. specifies the type of weights and defines how 3.2 Strings, lattices, and general FSMs weights are added and multiplied. hyp provides the standard semirings (Mohri, 2009), as well as In addition to trees and forests, hypergraphs can the expectation semiring (Eisner, 2002), and a new represent strings, lattices, and general finite-state “feature” semiring. The feature semiring pairs with machines (FSMs) as a special case. A standard tropical semiring elements a sparse feature vector finite-state representation of a string would look that adds componentwise in the semiring prod- like Figure 4, which shows a left-recursive bracket- uct and follows the winning tropical element in the ing as (((he) eats) rice), i.e., we read “he”, semiring sum. Features 0 and 8 fire with different combine it with “eats”, then combine the result strengths on this arc: with “rice” to accept the whole string (Allauzen et (V) <- 11("eats""ate") / 3.2[0=1.3,8=-0.5] al., 2007). We can do something similar in hyp using By using the expectation or the feature semiring, hypergraphs—see Figure 5.
Recommended publications
  • Hy Documentation Release 0.12.1+64.G5eb9283
    hy Documentation Release 0.12.1+64.g5eb9283 Paul Tagliamonte Apr 14, 2017 Contents 1 Documentation Index 3 1.1 Quickstart................................................4 1.2 Tutorial..................................................5 1.2.1 Basic intro to Lisp for Pythonistas...............................5 1.2.2 Hy is a Lisp-flavored Python..................................7 1.2.3 Macros............................................. 12 1.2.4 Hy <-> Python interop..................................... 13 1.2.5 Protips!............................................. 14 1.3 Hy Style Guide.............................................. 14 1.3.1 Prelude............................................. 15 1.3.2 Layout & Indentation...................................... 15 1.3.3 Coding Style.......................................... 16 1.3.4 Conclusion........................................... 17 1.3.5 Thanks............................................. 17 1.4 Documentation Index.......................................... 18 1.4.1 Command Line Interface.................................... 18 1.4.2 Hy <-> Python interop..................................... 19 1.4.3 Hy (the language)........................................ 21 1.4.4 Hy Core............................................. 47 1.4.5 Reader Macros......................................... 65 1.4.6 Internal Hy Documentation................................... 66 1.5 Extra Modules Index........................................... 72 1.5.1 Anaphoric Macros....................................... 72 1.5.2
    [Show full text]
  • An Industrial Strength Theorem Prover for a Logic Based on Common Lisp
    An Industrial Strength Theorem Prover for a Logic Based on Common Lisp y z Matt Kaufmannand J Strother Moore Personal use of this material is permitted. particular style of formal veri®cation that has shown consid- However, permission to reprint/republish this erable promise in recent years is the use of general-purpose material for advertising or promotional pur- automated reasoning systems to model systems and prove poses or for creating new collective works for properties of them. Every such reasoning system requires resale or redistribution to servers or lists, or considerable assistance from the user, which makes it im- to reuse any copyrighted component of this portant that the system provide convenient ways for the user work in other works must be obtained from the to interact with it. IEEE.1 One state-of-the-art general-purpose automated reason- ing system is ACL2: ªA Computational Logic for Applica- AbstractÐACL2 is a re-implemented extended version tive Common Lisp.º A number of automated reasoning of Boyer and Moore's Nqthm and Kaufmann's Pc-Nqthm, systems now exist, as we discuss below (Subsection 1.1). In intended for large scale veri®cation projects. This paper this paper we describe ACL2's offerings to the user for con- deals primarily with how we scaled up Nqthm's logic to an venientªindustrial-strengthºuse. WebegininSection2with ªindustrial strengthº programming language Ð namely, a a history of theACL2 project. Next, Section 3 describes the large applicative subset of Common Lisp Ð while preserv- logic supportedby ACL2, which has been designed for con- ing the use of total functions within the logic.
    [Show full text]
  • Mixing R with Other Languages JOHN D
    Mixing R with other languages JOHN D. COOK, PHD SINGULAR VALUE CONSULTING Why R? Libraries, libraries, libraries De facto standard for statistical research Nice language, as far as statistical languages go “Quirky, flawed, and an enormous success.” Why mix languages? Improve performance of R code Execution speed (e.g. loops) Memory management Raid R’s libraries How to optimize R Vectorize Rewrite not using R A few R quirks Everything is a vector Everything can be null or NA Unit-offset vectors Zero index legal but strange Negative indices remove elements Matrices filled by column by default $ acts like dot, dot not special C package interface Must manage low-level details of R object model and memory Requires Rtools on Windows Lots of macros like REALSXP, PROTECT, and UNPROTECT Use C++ (Rcpp) instead “I do not recommend using C for writing new high-performance code. Instead write C++ with Rcpp.” – Hadley Wickham Rcpp The most widely used extension method for R Call C, C++, or Fortran from R Companion project RInside to call R from C++ Extensive support even for advanced C++ Create R packages or inline code http://rcpp.org Dirk Eddelbuettel’s book Simple Rcpp example library(Rcpp) cppFunction('int add(int x, int y, int z) { int sum = x + y + z; return sum; }') add(1, 2, 3) .NET RDCOM http://sunsite.univie.ac.at/rcom/ F# type provider for R http://bluemountaincapital.github.io/FSharpRProvider/ R.NET https://rdotnet.codeplex.com/ SQL Server 2016 execute sp_execute_external_script @language = N'R' , @script =
    [Show full text]
  • Eindhoven University of Technology MASTER Extracting GXF Models
    Eindhoven University of Technology MASTER Extracting GXF models from C code towards LIME-ng tool-chain for dtaflow models Deshpande, A.S. Award date: 2010 Link to publication Disclaimer This document contains a student thesis (bachelor's or master's), as authored by a student at Eindhoven University of Technology. Student theses are made available in the TU/e repository upon obtaining the required degree. The grade received is not published on the document as presented in the repository. The required complexity or quality of research of student theses may vary by program, and the required minimum study period may vary in duration. General rights Copyright and moral rights for the publications made accessible in the public portal are retained by the authors and/or other copyright owners and it is a condition of accessing publications that users recognise and abide by the legal requirements associated with these rights. • Users may download and print one copy of any publication from the public portal for the purpose of private study or research. • You may not further distribute the material or use it for any profit-making activity or commercial gain Extracting GXF Models from C Code: towards LIME - next generation for Dataflow Models Aditya S. Deshpande August 2010 TECHNISCHE UNIVERSITEIT EINDHOVEN Department of Mathematics & Computer Science Software Engineering & Technology Master Thesis Extracting GXF Models from C Code towards LIME-ng Tool-chain for Dataflow models by Aditya S. Deshpande (0728718) Supervisors: dr. ir. Tom Verhoeff Pjotr Kourzanov, ir. Yanja Dajsuren, PDEng. August 2010 Preview This thesis introduces the LIME - next generation (LIME-ng) toolchain.
    [Show full text]
  • The Embeddable Common Lisp
    ACM Lisp Pointers 8(1), 1995, 30-41 The Embeddable Common Lisp Giuseppe Attardi Dipartimento di Informatica, Universit`adi Pisa Corso Italia 40, I-56125 Pisa, Italy net: [email protected] Abstract The Embeddable Common Lisp is an implementation of Common Lisp designed for being embeddable within C based applications. ECL uses standard C calling conventions for Lisp compiled functions, which allows C programs to easily call Lisp functions and viceversa. No foreign function interface is required: data can be exchanged between C and Lisp with no need for conversion. ECL is based on a Common Runtime Support (CRS) which provides basic facilities for memory management, dynamic loading and dumping of binary images, support for multiple threads of execution. The CRS is built into a library that can be linked with the code of the application. ECL is modular: main modules are the program development tools (top level, debugger, trace, stepper), the compiler, and CLOS. A native implementation of CLOS is available in ECL: one can configure ECL with or without CLOS. A runtime version of ECL can be built with just the modules which are required by the application. 1 Introduction As applications become more elaborate, the facilities required to build them grow in number and sophistica- tion. Each facility is accessed through a specific package, quite complex itself, like in the cases of: modeling, simulation, graphics, hypertext facilities, data base management, numerical analysis, deductive capabilities, concurrent programming, heuristic search, symbolic manipulation, language analysis, special device control. Reusability is quite a significant issue: once a package has been developed, tested and debugged, it is un- desirable having to rewrite it in a different language just because the application is based in such other language.
    [Show full text]
  • Ants Go Marching—Integrating Computer Science Into Teacher Professional Development with Netlogo
    education sciences Article Ants Go Marching—Integrating Computer Science into Teacher Professional Development with NetLogo Mike Borowczak 1,* and Andrea C. Burrows 2 1 Department of Computer Science, College of Engineering and Applied Science, University of Wyoming, 1000 E University Ave, Laramie, WY 82071, USA 2 School of Teacher Education, College of Education, University of Wyoming, 1000 E University Ave, Laramie, WY 82071, USA; [email protected] * Correspondence: [email protected] Received: 1 February 2019; Accepted: 20 March 2019; Published: 26 March 2019 Abstract: There is a clear call for pre-collegiate students in the United States to become literate in computer science (CS) concepts and practices through integrated, authentic experiences and instruction. Yet, a majority of in-service and pre-service pre-collegiate teachers (instructing children aged five to 18) lack the fundamental skills and self-efficacy to adequately and effectively integrate CS into existing curricula. In this study, 30 pre-collegiate teachers who represent a wide band of experience, grade-levels, and prior CS familiarity participated in a 16-day professional development (PD) course to enhance their content knowledge and self-efficacy in integrating CS into existing lessons and curricula. Using both qualitative and quantitative methodology, a social constructivist approach guided the researchers in the development of the PD, as well as the data collection and analysis on teacher content knowledge and perceptions through a mixed-methods study. Ultimately, participants were introduced to CS concepts and practices through NetLogo, which is a popular multi-agent simulator. The results show that although the pre-collegiate teachers adopted CS instruction, the CS implementation within their curricula was limited to the activities and scope of the PD with few adaptations and minimal systemic change in implementation behaviors.
    [Show full text]
  • 23 Things I Know About Modules for Scheme
    23 things I know about modules for Scheme Christian Queinnec Université Paris 6 — Pierre et Marie Curie LIP6, 4 place Jussieu, 75252 Paris Cedex — France [email protected] ABSTRACT difficult to deliver (or even rebuild) stand-alone systems. The benefits of modularization are well known. However, Interfaces as collection of names — If modules are about shar- modules are not standard in Scheme. This paper accompanies ing, what should be shared ? Values, locations (that is an invited talk at the Scheme Workshop 2002 on the current variables), types, classes (and their cortege` of accessors, state of modules for Scheme. Implementation is not addressed, constructors and predicates) ? only linguistic features are covered. Cave lector, this paper only reflects my own and instanta- The usual answer in Scheme is to share locations with neous biases! (quite often) two additional properties: (i) these loca- tions can only be mutated from the body of their defin- ing modules (this favors block compilation), (ii) they 1. MODULES should hold functions (and this should be statically (and The benefits of modularization within conventional languages easily) discoverable). This restricts linking with other are well known. Modules dissociate interfaces and implemen- (foreign) languages that may export locations holding tations; they allow separate compilation (or at least indepen- non-functional data (the errno location for instance). dent compilation a` la C). Modules tend to favor re-usability, This is not a big restriction since modern interfaces (Corba common libraries and cross language linkage. for example) tend to exclusively use functions (or meth- Modules discipline name spaces with explicit names expo- ods).
    [Show full text]
  • Basic Lisp Techniques
    Basic Lisp Techniques David J. Cooper, Jr. February 14, 2011 ii 0Copyright c 2011, Franz Inc. and David J. Cooper, Jr. Foreword1 Computers, and the software applications that power them, permeate every facet of our daily lives. From groceries to airline reservations to dental appointments, our reliance on technology is all-encompassing. And, it’s not enough. Every day, our expectations of technology and software increase: • smart appliances that can be controlled via the internet • better search engines that generate information we actually want • voice-activated laptops • cars that know exactly where to go The list is endless. Unfortunately, there is not an endless supply of programmers and developers to satisfy our insatiable appetites for new features and gadgets. Every day, hundreds of magazine and on-line articles focus on the time and people resources needed to support future technological expectations. Further, the days of unlimited funding are over. Investors want to see results, fast. Common Lisp (CL) is one of the few languages and development options that can meet these challenges. Powerful, flexible, changeable on the fly — increasingly, CL is playing a leading role in areas with complex problem-solving demands. Engineers in the fields of bioinformatics, scheduling, data mining, document management, B2B, and E-commerce have all turned to CL to complete their applications on time and within budget. CL, however, no longer just appropriate for the most complex problems. Applications of modest complexity, but with demanding needs for fast development cycles and customization, are also ideal candidates for CL. Other languages have tried to mimic CL, with limited success.
    [Show full text]
  • IDOL Connector Framework Server 12.0 Administration Guide
    Connector Framework Server Software Version 12.0 Administration Guide Document Release Date: June 2018 Software Release Date: June 2018 Administration Guide Legal notices Copyright notice © Copyright 2018 Micro Focus or one of its affiliates. The only warranties for products and services of Micro Focus and its affiliates and licensors (“Micro Focus”) are set forth in the express warranty statements accompanying such products and services. Nothing herein should be construed as constituting an additional warranty. Micro Focus shall not be liable for technical or editorial errors or omissions contained herein. The information contained herein is subject to change without notice. Trademark notices Adobe™ is a trademark of Adobe Systems Incorporated. Microsoft® and Windows® are U.S. registered trademarks of Microsoft Corporation. UNIX® is a registered trademark of The Open Group. Documentation updates The title page of this document contains the following identifying information: l Software Version number, which indicates the software version. l Document Release Date, which changes each time the document is updated. l Software Release Date, which indicates the release date of this version of the software. To verify you are using the most recent edition of a document, go to https://softwaresupport.softwaregrp.com/group/softwaresupport/search-result?doctype=online help. You will also receive new or updated editions of documentation if you subscribe to the appropriate product support service. Contact your Micro Focus sales representative for details. To check for new versions of software, go to https://www.hpe.com/software/entitlements. To check for recent software patches, go to https://softwaresupport.softwaregrp.com/patches. The sites listed in this section require you to sign in with a Software Passport.
    [Show full text]
  • A Tutorial on Lisp Object-Oriented Programming for Blackboard Computation (Solving the Radar Tracking Problem)
    Electrical and Computer Engineering ECE Technical Reports Purdue Libraries Year A TUTORIAL ON LISP OBJECT-ORIENTED PROGRAMMING FOR BLACKBOARD COMPUTATION (SOLVING THE RADAR TRACKING PROBLEM) P. R. Kersten∗ A. C. Kak† ∗Naval Undersea Warfare Center Division, †Purdue University School of Electrical Engineering, This paper is posted at Purdue e-Pubs. http://docs.lib.purdue.edu/ecetr/233 A TUTORIAL ON LISPO BJECT- ORIENTED PROGRAMMING FOR BLACKBOARD COMPUTATION (SOLVING THE RADAR TRACKING PROBLEM) TR-EE 93-24 JULY 1993 A TUTORIAL ON LISP OBJECT -ORIENTED PROGRAMMING FOR BLACKBOARD COMPUTATION (SOLVING THE RADAR TRACKING PROBLEM)* P. R. Kersten Code 2211 Naval Undersea Warfare Center Division Newport, RI 02841-5047 A. C. Kak Robot Vision Lab 1285 EE Building Purdue University W. Lafayette, IN 47907- 1285 ABSTRACT This exposition is a tutorial on how object-oriented programming (OOP) in Lisp can be used for programming a blackboard. Since we have used Common Lisp and the Com- mon Lisp Object System (CLOS), the exposition demonstrates how object classes and the primary, before, and after methods associated with the classes can be used for this pur- pose. The reader should note that the different approaches to object-oriented program- ming share considerable similarity and, therefore, the exposition should be helpful to even those who may not wish to use CLOS. We have used the radar tracking problem as a 'medium' for explaining the concepts underlying blackboard programming. The blackboard database is constructed solely of classes which act as data structures as well as method-bearing objects. Class instances fonn the nodes and the levels of the blackboard.
    [Show full text]
  • Secrets of the Glasgow Haskell Compiler Inliner
    Secrets of the Glasgow Haskell Compiler inliner Simon Marlow Simon Peyton Jones Microsoft Research Ltd, Cambridge Microsoft Research Ltd, Cambridge [email protected] [email protected] Septemb er 1, 1999 A ma jor issue for any compiler, esp ecially for one that Abstract inlines heavily,is name capture. Our initial brute-force solution involved inconvenient plumbing, and wehave Higher-order languages, such as Haskell, encourage the pro- now evolved a simple and e ective alternative Sec- grammer to build abstractions by comp osing functions. A tion 3. go o d compiler must inline many of these calls to recover an eciently executable program. At rst wewere very conservative ab out inlining recur- sive de nitions; that is, we did not inline them at all. In principle, inlining is dead simple: just replace the call But we found that this strategy o ccasionally b ehaved of a function by an instance of its b o dy. But any compiler- very badly. After a series of failed hacks we develop ed writer will tell you that inlining is a black art, full of delicate a simple, obviously-correct algorithm that do es the job compromises that work together to give go o d p erformance b eautifully Section 4. without unnecessary co de bloat. Because the compiler do es so much inlining, it is im- The purp ose of this pap er is, therefore, to articulate the p ortant to get as much as p ossible done in each pass key lessons we learned from a full-scale \pro duction" inliner, over the program.
    [Show full text]
  • Decreasing the Environmental Impact in an Egg-Producing Farm Through the Application of LCA and Lean Tools
    applied sciences Article Decreasing the Environmental Impact in an Egg-Producing Farm through the Application of LCA and Lean Tools Iván E. Estrada-González 1, Paul Adolfo Taboada-González 2 , Hilda Guerrero-García-Rojas 3 and Liliana Márquez-Benavides 4,* 1 Faculty of Biology, Building “R”, Ground Floor, University Campus, UMSNH, 58000 Morelia, Michoacán, Mexico; [email protected] 2 Facultad de Ciencias Químicas e Ingeniería, Universidad Autónoma de Baja California, Calzada Universidad No. 14418, Mesa de Otay, 22390 Tijuana, Mexico; [email protected] 3 Faculty of Economy “Vasco de Quiroga”, Building “T2”, Upper Floor, University Campus, UMSNH, 58000 Morelia, Michoacán, Mexico; [email protected] 4 Institute of Agricultural and Forestry Research (IIAF)-UMSNH, San Juanito Itzícuaro Avenue, C.P. 58341 San Juanito Itzícuaro, Morelia, Michoacán, Mexico * Correspondence: [email protected] Received: 18 January 2020; Accepted: 12 February 2020; Published: 17 February 2020 Abstract: Intensive poultry farming transforms vegetable protein into animal protein through shelf egg and chicken meat production. Mexico is the largest egg consumer and fifth-ranked egg producer worldwide. However, the environmental impact of egg production in this country is scarcely reported. This research aimed to design an eco-efficient approach for egg production in a semi-technified farm based on door-to-door life cycle assessment (LCA) and value stream mapping (VSM) methodologies. The LCA points out that the climate change category is a hotspot in egg production, with emissions of 5.58 kg CO2 eq/kg per egg produced. The implementation of an eco-efficient scheme focused on energy usage could result in a 49.5% reduction of total energy consumption and 56.3% saving in environmental impacts.
    [Show full text]