639 research outputs found
Condition/Decision Duality and the Internal Logic of Extensive Restriction Categories
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 . 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
Essentially, in a reversible programming language, for each forward
computation from state to state , there exists a constructive method to
go backwards from state to state . 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 , we do not always have a decidable method to get from
. 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
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
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
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
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
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
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
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
- …