639 research outputs found

    Condition/Decision Duality and the Internal Logic of Extensive Restriction Categories

    Get PDF
    In flowchart languages, predicates play an interesting double role. In the textual representation, they are often presented as conditions, i.e., expressions which are easily combined with other conditions (often via Boolean combinators) to form new conditions, though they only play a supporting role in aiding branching statements choose a branch to follow. On the other hand, in the graphical representation they are typically presented as decisions, intrinsically capable of directing control flow yet mostly oblivious to Boolean combination. While categorical treatments of flowchart languages are abundant, none of them provide a treatment of this dual nature of predicates. In the present paper, we argue that extensive restriction categories are precisely categories that capture such a condition/decision duality, by means of morphisms which, coincidentally, are also called decisions. Further, we show that having these categorical decisions amounts to having an internal logic: Analogous to how subobjects of an object in a topos form a Heyting algebra, we show that decisions on an object in an extensive restriction category form a De Morgan quasilattice, the algebraic structure associated with the (three-valued) weak Kleene logic K3w\mathbf{K}^w_3. Full classical propositional logic can be recovered by restricting to total decisions, yielding extensive categories in the usual sense, and confirming (from a different direction) a result from effectus theory that predicates on objects in extensive categories form Boolean algebras. As an application, since (categorical) decisions are partial isomorphisms, this approach provides naturally reversible models of classical propositional logic and weak Kleene logic.Comment: 19 pages, including 6 page appendix of proofs. Accepted for MFPS XXX

    Reversible Computation in Term Rewriting

    Full text link
    Essentially, in a reversible programming language, for each forward computation from state SS to state SS', there exists a constructive method to go backwards from state SS' to state SS. Besides its theoretical interest, reversible computation is a fundamental concept which is relevant in many different areas like cellular automata, bidirectional program transformation, or quantum computing, to name a few. In this work, we focus on term rewriting, a computation model that underlies most rule-based programming languages. In general, term rewriting is not reversible, even for injective functions; namely, given a rewrite step t1t2t_1 \rightarrow t_2, we do not always have a decidable method to get t1t_1 from t2t_2. Here, we introduce a conservative extension of term rewriting that becomes reversible. Furthermore, we also define two transformations, injectivization and inversion, to make a rewrite system reversible using standard term rewriting. We illustrate the usefulness of our transformations in the context of bidirectional program transformation.Comment: To appear in the Journal of Logical and Algebraic Methods in Programmin

    Reversible Term Rewriting

    Get PDF
    Essentially, in a reversible programming language, for each forward computation step from state S to state S', there exists a constructive and deterministic method to go backwards from state S' to state S. Besides its theoretical interest, reversible computation is a fundamental concept which is relevant in many different areas like cellular automata, bidirectional program transformation, or quantum computing, to name a few. In this paper, we focus on term rewriting, a computation model that underlies most rule-based programming languages. In general, term rewriting is not reversible, even for injective functions; namely, given a rewrite step t1 -> t2, we do not always have a decidable and deterministic method to get t1 from t2. Here, we introduce a conservative extension of term rewriting that becomes reversible. Furthermore, we also define a transformation to make a rewrite system reversible using standard term rewriting.This work has been partially supported by the EU (FEDER) and the Spanish Ministerio de Economía y Competitividad (MINECO) under grant TIN2013-44742-C4-1-R, by the Generalitat Valenciana under grant PROMETEO-II/2015/013 (SmartLogic) and by the COST Action IC 1405 on Reversible Computation. A. Palacios was partially supported by the the EU (FEDER) and the Spanish Ayudas para contratos predoctorales para la formación de doctores de la Sec. Estado de Investigación, Desarrollo e Innovación del MINECO under FPI grant BES-2014-069749. Part of this research was done while the second and third authors were visiting Nagoya University; they gratefully acknowledge their hospitality.Nishida, N.; Palacios Corella, A.; Vidal Oriola, GF.; Nishida (2016). Reversible Term Rewriting. Schloss Dagstuhl-Leibniz-Zentrum für Informatik GmbH, Dagstuhl Publishing. https://doi.org/10.4230/LIPIcs.FSCD.2016.28

    A case study for reversible computing: Reversible debugging of concurrent programs

    Get PDF
    Reversible computing allows one to run programs not only in the usual forward direction, but also backward. A main application area for reversible computing is debugging, where one can use reversibility to go backward from a visible misbehaviour towards the bug causing it. While reversible debugging of sequential systems is well understood, reversible debugging of concurrent and distributed systems is less settled. We present here two approaches for debugging concurrent programs, one based on backtracking, which undoes actions in reverse order of execution, and one based on causal consistency, which allows one to undo any action provided that its consequences, if any, are undone beforehand. The first approach tackles an imperative language with shared memory, while the second one considers a core of the functional message-passing language Erlang. Both the approaches are based on solid formal foundations

    Development of Android-based virtual laboratory media at vocational school: effects on students’ cognitive skills

    Get PDF
    Vocational school students are not only required to master competency skills but also cognitive skills. Engineering mechanics learning is a basic calculation lesson that students should master. This research aimed to develop and identify the effectiveness of Android-based virtual laboratory (V-lab) media to improve students’ cognitive skills in learning engineering mechanics at vocational school in Surakarta. The subjects comprised 70 students of first grade vocational school majoring in civil engineering in Surakarta. This research was a research and development (R&D) study to develop an Android-based virtual laboratory media. Testing the N-Gain analysis in the experimental and control classes was to determine the effectiveness of virtual laboratory media in improving students’ cognitive thinking skills. Data were obtained from questionnaires and pretest and post-test test sheets. The developed virtual laboratory media was considered ‘very appropriate’ by media, material, and practitioner experts. The average value of N-Gain for the experimental class was 78.19% which was included in the effective category. Meanwhile, in the control class, the average N-Gain value reached 54.07%, which was included in the less effective category. This indicates that the use of Android-based virtual laboratory media for learning is more effective than conventional learning media

    Introductory programming: a systematic literature review

    Get PDF
    As computing becomes a mainstream discipline embedded in the school curriculum and acts as an enabler for an increasing range of academic disciplines in higher education, the literature on introductory programming is growing. Although there have been several reviews that focus on specific aspects of introductory programming, there has been no broad overview of the literature exploring recent trends across the breadth of introductory programming. This paper is the report of an ITiCSE working group that conducted a systematic review in order to gain an overview of the introductory programming literature. Partitioning the literature into papers addressing the student, teaching, the curriculum, and assessment, we explore trends, highlight advances in knowledge over the past 15 years, and indicate possible directions for future research

    Development of an IoT solution for detergent supervision in industrial washing machines

    Get PDF
    Dupla diplomação dom a UTFPR - Universidade Tecnológica Federal do ParanáAutomation of industrial activities aim to improve the efficiency of the productive processes while reducing costs and increasing safety. In industrial laundries, the detergent level measurement is a key element for asset management, mainly due to the necessity of maintaining a continuous flow of washing processes. Therefore, this work presents a solution implemented in the industrial laundry reservoirs of Santa Casa da Misericórdia de Bragança, in Portugal, using an Internet of Things (IoT) approach, which integrates a Wi-Fi based measurement system, capable of monitoring and recording the detergent liquid level from reservoirs in real-time. Thereby, a microcontrolled system was developed to perform level measurements using an ultrasonic sensor, in which data is sent to a database and, through a web based platform, the client can remotely access the measurement results. In order to facilitate the physical installation of the developed hardware in the existent setup, a custom-made enclosure was designed and 3D printed.A automação das atividades industriais tem como objetivo melhorar a eficiência de processos produtivos, reduzindo custos e aumentando a segurança. Em lavanderias industriais, a medição de nível de detergente líquido é um elemento fundamental para o gerenciamento de ativos, principalmente devido à necessidade de manter um fluxo contínuo dos processos de lavagem. Dessa forma, o trabalho apresenta uma solução implementada nos reservatórios da lavanderia industrial da Santa Casa da Misericórdia de Bragança, em Portugal, usando uma abordagem de internet das coisas, na qual integra um sistema de medição com conexão Wi-Fi, capaz de monitorar e registrar o nível de detergente líquido dos reservatórios em tempo real. Com isso, foi desenvolvido um sistema microcontrolado responsável por realizar as medições de nível ulilizando sensor ultrasônico, na qual os dados são enviados para um banco de dados e, através de uma plataforma web, o cliente consiga acessar de forma remota o resultado das medições. Para facilitar a instalação do sistema nos reservatórios, um bujão foi desenhado sob medida e impresso em 3D

    Reversible Computation: Extending Horizons of Computing

    Get PDF
    This open access State-of-the-Art Survey presents the main recent scientific outcomes in the area of reversible computation, focusing on those that have emerged during COST Action IC1405 "Reversible Computation - Extending Horizons of Computing", a European research network that operated from May 2015 to April 2019. Reversible computation is a new paradigm that extends the traditional forwards-only mode of computation with the ability to execute in reverse, so that computation can run backwards as easily and naturally as forwards. It aims to deliver novel computing devices and software, and to enhance existing systems by equipping them with reversibility. There are many potential applications of reversible computation, including languages and software tools for reliable and recovery-oriented distributed systems and revolutionary reversible logic gates and circuits, but they can only be realized and have lasting effect if conceptual and firm theoretical foundations are established first

    A Case Study for Reversible Computing: Reversible Debugging of Concurrent Programs

    Get PDF
    International audienceReversible computing allows one to run programs not only in the usual forward direction, but also backward. A main application area for reversible computing is debugging, where one can use reversibility to go backward from a visible misbehaviour towards the bug causing it. While reversible debugging of sequential systems is well understood, reversible debugging of concurrent and distributed systems is less settled. We present here two approaches for debugging concurrent programs, one based on backtracking, which undoes actions in reverse order of execution, and one based on causal consistency, which allows one to undo any action provided that its consequences, if any, are undone beforehand. The first approach tackles an imperative language with shared memory, while the second one considers a core of the functional message-passing language Erlang. Both the approaches are based on solid formal foundations
    corecore