A Term-Rewriting Semantics for Imperative Style Programming
David Plaisted, Lee Barnett

TL;DR
This paper introduces a term rewriting-based imperative programming language with precise semantics, enabling correctness proofs and efficient translation into imperative languages with features like assignment, iteration, and pointers.
Contribution
It presents a novel term rewriting semantics for imperative programming, bridging the gap between formal correctness proofs and practical execution.
Findings
Language allows translation into efficient imperative code
Supports features like assignment, iteration, recursion, and pointers
Facilitates correctness proofs alongside execution
Abstract
Term rewriting systems have a simple syntax and semantics and facilitate proofs of correctness. However, they are not as popular in industry or academia as imperative languages. We define a term rewriting based abstract programming language with an imperative style and a precise semantics allowing programs to be translatable into efficient imperative languages, to obtain proofs of correctness together with efficient execution. This language is designed to facilitate translations into correct programs in imperative languages with assignment statements, iteration, recursion, arrays, pointers, and side effects. It can also be used in place of a pseudo-programming language to specify algorithms.
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsLogic, programming, and type systems · Formal Methods in Verification · Logic, Reasoning, and Knowledge
