As computer systems become increasingly ubiquitous in our daily lives, ensuring the safety and reliability of system software has become a major concern across various fields of computer science. Among the various met...
详细信息
As computer systems become increasingly ubiquitous in our daily lives, ensuring the safety and reliability of system software has become a major concern across various fields of computer science. Among the various methodologies for ensuring software correctness, formal verification using interactive theorem provers is recognized as the method providing the strongest assurance of formal guarantees with a minimal trusted computing base. While many verification frameworks in interactive theorem provers adopt separation logic, there is another paradigm that has not been as extensively studied in this context: behavioral refinement, despite its effectiveness being demonstrated in several large-scale software verification projects. In this work, we develop a concrete theory of behavioral refinement for verifying C programs against abstract specifications. For the formal C semantics, we employ the Clight language provided by the CompCert verified compiler project. We use interaction trees (ITrees) as the representation framework for abstract specifications. We have implemented our approach as a C-program verification library, C2IRef, in the Coq theorem prover, and demonstrated its effectiveness by verifying several practical C programs.
The thesis project is an essential step to obtain an MSc degree. Within STEM and Life Sciences disciplines, computational theses have specific characteristics that differentiate them from wet laboratory ones. In this ...
详细信息
The thesis project is an essential step to obtain an MSc degree. Within STEM and Life Sciences disciplines, computational theses have specific characteristics that differentiate them from wet laboratory ones. In this article, we present Ten simple rules to direct and support Master students who are about to start a computational research project for their Master thesis. We begin by recommending defining the personal learning goals for the project;we then highlight specific pitfalls that computational students might encounter during their work, such as procrastination by computation or wasting time while attempting to reinvent computational tools. We provide the students a series of suggestions on how to work following FAIR principles, learn new computing languages, and think ahead for computational challenges. We hope that these 10 simple rules will provide Master students with a framework for the successful completion of their computational thesis.
Smart contracts have played a pivotal role in the evolution of blockchains and Decentralized Applications (DApps). As DApps continue to gain widespread adoption, multiple smart contract languages have been and are bei...
详细信息
Smart contracts have played a pivotal role in the evolution of blockchains and Decentralized Applications (DApps). As DApps continue to gain widespread adoption, multiple smart contract languages have been and are being made available to developers, each with its distinctive features, strengths, and weaknesses. In this paper, we examine the smart contract languages used in major blockchain platforms, with the goal of providing a comprehensive assessment of their main properties. Our analysis targets the programming languages rather than the underlying architecture: as a result, while we do consider the interplay between language design and blockchain model, our main focus remains on language-specific features such as usability, programming style, safety and security. To conduct our assessment, we propose an original benchmark which encompasses a wide, yet manageable, spectrum of key use cases that cut across all the smart contract languages under examination.
Biochemical Reaction Networks (BCRNs) model species and their interactions via reactions. They have been extensively used in chemistry and extended to biological settings by generalizing the reactions' kinetics. H...
详细信息
Biochemical Reaction Networks (BCRNs) model species and their interactions via reactions. They have been extensively used in chemistry and extended to biological settings by generalizing the reactions' kinetics. However, detailed models of biochemical processes tend to result in complex BCRN models. We present the Meta-species Oriented Biosystem Syntax (MobsPy), a language designed to simplify the modeling process using the concept of meta-species. Meta-species are constructed using a bottom-up approach from base species, which represent elementary, simple characteristics. These characteristics are then combined to create meta-species with all their complex behavior. The combined species have characteristics that are the Cartesian product of the base species' characteristics and feature inheritance of reactions involving the base species. New reactions can involve all the states of a meta-species or only a subset that is selected via a query. In particular, reactions of meta-species can express a state change of one of the reactants. MobsPy is deployed as a Python package. We showcase its modeling capabilities by building concise models for biochemical systems from the literature.
The lack of purely Quantum programming languages constitutes a hurdle in the general description of quantum computational processes;the implementation is heavily dependent on the considered quantum computational model...
详细信息
The lack of purely Quantum programming languages constitutes a hurdle in the general description of quantum computational processes;the implementation is heavily dependent on the considered quantum computational model. To bypass the obstacle, this paper pursues a new direction, investigating the compilation of classical programming paradigms over different quantum computational models: Gate-Based, Measurement-Based and Adiabatic Quantum Computation. Since graphs can be exploited to describe both classical and quantum computations, the problem of graph encoding on quantum hardware is tightly connected to our purposes. As such, it holds a major relevance in our quest for quantum compilation. While studying these topics through the lenses of Graph Theory, declarative programming emerges as the ideal candidate for such endeavour. In this paper we consider some existing quantum computational models and for each of them we identify the main subtleties in the compilation of classical languages. In turn, we break these complexities down into easier problems to stimulate further developments in this area of research. As it turns out, the observations for each model differ widely. Nevertheless, as for the tasks here considered, no model seems to claim supremacy over the others. In contrast, declarative programming maintains the spot as the ideal candidate for quantum compilation, independently of the model.
. Join-preserving maps on the discrete time scale omega+, referred to as time warps, have been proposed as graded modalities that can be used to quantify the growth of information in the course of program execution. T...
详细信息
. Join-preserving maps on the discrete time scale omega+, referred to as time warps, have been proposed as graded modalities that can be used to quantify the growth of information in the course of program execution. The set of time warps forms a simple distributive involutive residuated lattice-called the time warp algebra-that is equipped with residual operations relevant to potential applications. In this paper, we show that although the time warp algebra generates a variety that lacks the finite model property, it nevertheless has a decidable equational theory. We also describe an implementation of a procedure for deciding equations in this algebra, written in the OCaml programming language, that makes use of the Z3 theorem prover.
Recent studies have empirically validated the existence of small patterns in C code, named atoms of confusion (or atoms for short), that can interfere with program comprehension. The focus of this research is an attem...
详细信息
Recent studies have empirically validated the existence of small patterns in C code, named atoms of confusion (or atoms for short), that can interfere with program comprehension. The focus of this research is an attempt to see if these patterns in C would have a similar impact on a second group of participants who have similar levels of experience with C, but come from different places. We report on studies conducted with students from the USA and China. Both sets of participants were shown snippets of code and asked to predict the output. While performance measures (accuracy and speed) showed little difference in aggregate, a few individual atoms yielded surprising results. For example, we found examples where the clarified versions of code, with the atoms removed, were more confusing to the Chinese participants, despite the presence of atoms having much less impact on this group in general. These findings suggest that both the atoms themselves, and the processes used to remove them, may be viewed differently by individuals from different parts of the world. As such, developing insights on the "cross-border" applicability of coding practices could help create better pedagogical practices to prepare students for today's globally-integrated approach to software development.
As computers became multi-component systems in the 1950s, handling the speed differentials efficiently was identified as a major challenge. The desire for better understanding and control of 'concurrency' spre...
详细信息
As computers became multi-component systems in the 1950s, handling the speed differentials efficiently was identified as a major challenge. The desire for better understanding and control of 'concurrency' spread into hardware, software, and formalism. This paper examines the way in which the problem emerged and was handled across various computing cultures from 1955 to 1985. In the machinic culture of the late 1950s, system programs called 'monitors' were used for directly managing synchronisation. Attempts to reframe synchronisation in the subsequent algorithmic culture pushed the problem to a higher level of abstraction;Dijkstra's semaphores were a reaction to the algorithms' complexity. Towards the end of the 1960s, the culture of 'structured programming' created a milieu in which Dijkstra, Hoare, and Brinch Hansen (among others) aimed for a concurrency primitive which embodied the new view of programming. Via conditional critical regions and Dijkstra's 'secretaries', the co-produced 'monitor' appeared to provide the desired encapsulation. The construct received embodiment in a few programming languages;this paper ends by considering Modula and Concurrent Pascal.
Over the last several decades, static and dynamic program analysis techniques have received widespread attention. Their application to mainstream programming languages always requires extending theories and finding pr...
详细信息
Over the last several decades, static and dynamic program analysis techniques have received widespread attention. Their application to mainstream programming languages always requires extending theories and finding practical solutions. This special issue of Software Tools for Technology Transfer presents novel theoretical directions and practical applications of these techniques. The papers in this special issue are extended versions of selected workshop papers from the proceedings of the 13th ACM SIGPLAN International Workshop on the State Of the Art in Program Analysis (SOAP 2024).
暂无评论