From Small-Step Semantics to Big-Step Semantics, Automatically

  title={From Small-Step Semantics to Big-Step Semantics, Automatically},
  author={Stefan Ciobaca},
Small-step semantics and big-step semantics are two styles for operationally defining the meaning of programming languages. Small-step semantics are given as a relation between program configurations that denotes one computational step; big-step semantics are given as a relation directly associating to each program configuration the corresponding final configuration. Small-step semantics are useful for making precise reasonings about programs, but reasoning in big-step semantics is easier and… Expand
Deriving Pretty-Big-Step Semantics from Small-Step Semantics
This work shows how to automatically derive pretty-big- step rules directly from small-step rules by 'refocusing', which gives the best of both worlds: one only needs to write the relatively concise small-Step specifications, but the reasoning can be big-step as well as small- step. Expand
A Comparison of Big-step Semantics Definition Styles
The aim of this current work is to compare the big-step definition for Core Erlang, a functional programming language, with a variety of other equivalent semantics in different styles from the point of view of testing and verifying code refactorings. Expand
One Step at a Time - A Functional Derivation of Small-Step Evaluators from Big-Step Counterparts
Big-step and small-step are two popular flavors of operational semantics and it would be useful to choose one and derive the other in a systematic or, preferably, automatic way. Expand
Flag-based big-step semantics
A novel approach to representing divergence and abrupt termination in big-step semantics using status flags is presented, which avoids the duplication problem, and uses fewer rules and premises for representing divergence than previous approaches in the literature. Expand
Certified semantics and analysis of JavaScript
This thesis explores a formal proof approach, which aims at giving a mathematical proof that a given program behaves as expected, and designed a new way to build abstract semantics from concrete semantics. Expand
Functional and Logic Programming: 15th International Symposium, FLOPS 2020, Akita, Japan, September 14–16, 2020, Proceedings
The fundamental determinants of poor performance scaling by Coq’s proof engine are studied, and preliminary results on bottlenecks in key operations are sketches. Expand
A Calculus for Language Transformations
The type system and operational semantics of the calculus are presented, and it is proved that it is type sound, and its applicability with common examples in programming languages is demonstrated. Expand


Pretty-Big-Step Semantics
Pretty-big-step semantics preserve the spirit of big- step semantics, in the sense that terms are directly related to their results, but they eliminate the duplication associated with big-steps semantics. Expand
Defunctionalized interpreters for programming languages
This document illustrates how functional implementations of formal semantics (structural operational semantics, reduction semantics, small-step and big-step abstract machines, natural semantics, andExpand
A Small Step for Mankind
A construction is proposed that generates automatically a small-step SOS semantics from a big-step semantics, based on the a priori technique pioneered by Willem-Paul de Roever et al. Expand
An overview of the K semantic framework
The K definition of Challenge, a programming language that aims at challenging and exposing the limitations of the various existing semantic frameworks, is proposed and discussed. Expand
On the equivalence between small-step and big-step abstract machines: a simple application of lightweight fusion
It is shown how Ohori and Sasano's recent lightweight fusion by fixed-point promotion provides a simple way to prove the equivalence of the two standard styles of specification of abstract machines: in small-step form, as a state-transition function together with a 'driver loop', and in big- step form as a tail-recursive function that directly maps a given configuration to a final state, if any. Expand
A Hierarchy of SOS Rule Formats
An initial hierarchy of SOS rules formats and meta-theorems formulated around them is provided, which range from well-definedness of the operational semantics and compositionality of behavioral equivalences to security- and probability-related issues. Expand
The rewriting logic semantics project: A progress report
A progress report on how researchers in the rewriting logic semantics project are narrowing the gap between theory and practice in areas such as: modular semantic definitions of languages; scalability to real languages; support for real time; semantics of software and hardware modeling languages; and semantics-based analysis tools such as static analyzers, model checkers, and program provers. Expand
Coinductive Big-Step Semantics for Concurrency
This work develops the metatheory of the semantics of this framework for big-step semantics for interactive input-output in combination with divergence, based on coinductive and mixed inductive-coinductive notions of resumptions, evaluation and termination-sensitive weak bisimilarity in a constructive logic. Expand
Defunctionalized Interpreters for Call-by-Need Evaluation
This work inter-derive a series of hygienic semantic artifacts: a reduction-free stateless abstract machine, a continuation-passing evaluation function, and what appears to be the first heapless natural semantics for call-by-need evaluation. Expand
A machine-checked model for a Java-like language, virtual machine, and compiler
Jinja is a compromise between the realism of the language and the tractability and clarity of its formal semantics, and provides a unified model of the source language, the virtual machine, and the compiler. Expand