SearcharxivSearch

arXiv subjects

Graham Leach-Krouse

Publications and source records attributed to Graham Leach-Krouse.

5 recordsLinked to original sources

Carnap Ten Years Later: Lessons Learned and Next Steps

The first part of this paper provides an experience report, recounting the design and long-term maintenance of the Carnap proof assistant framework used cumulatively by over 45,000 students worldwide over the last decade. We cover the good, the bad, and the ugly: what worked well, what didn't work, and what added friction to development and maintenance over time. These insights motivate a bottom-up redesign of the Carnap framework, which is the topic of the paper's second part. Briefly, the new design combines a new high-performance verifier kernel (mm0-zig) targeting Mario Carneiro's metamath zero format, and the Aufbau Bytecode Compiler, (abc), a new proof compiler that can serve as a backend for richly interactive proof-authoring experiences on the web.

cs.LO

Finding a Crab in the C: Assured Translation via Comparative Symbolic Execution

Modern high-assurance software systems development favors memory safe languages such as SPARK (ADA) or Rust. However, developers often encounter non-memory safe code (e.g., C) in legacy systems and libraries which would be prohibitively expensive or risky to re-write. In response, developers have begun turning to machine learning/AI systems and other automated code translators. Automated translation comes with its own risks, however. The original and ported code are not precisely the same, semantically - otherwise there would be no point in performing the translation. To reduce these risks, we have developed cozy, a comparative binary analysis tool that simultaneously analyzes a binary compiled from "unsafe" source code and a binary compiled from a translation of the source code to a memory safe language. cozy walks the developer through differences in the behavior of the two binaries, presenting each difference and asking the user to assess whether the difference is intentional (good) or erroneous. Outside of the flagged differences, the binaries are formally verified to be equivalent. Consequently, the review process guarantees equivalence modulo changes approved by the developer. cozy has applications to automated translation, bug correction, code reviews, operation authorization, and automatic translation.

cs.SE

cozy: Comparative Symbolic Execution for Binary Programs

This paper introduces cozy, a tool for analyzing and visualizing differences between two versions of a software binary. The primary use case for cozy is validating "micropatches": small binary or assembly-level patches inserted into existing compiled binaries. To perform this task, cozy leverages the Python-based angr symbolic execution framework. Our tool analyzes the output of symbolic execution to find end states for the pre- and post-patched binaries that are compatible (reachable from the same input). The tool then compares compatible states for observable differences in registers, memory, and side effects. To aid in usability, cozy comes with a web-based visual interface for viewing comparison results. This interface provides a rich set of operations for pruning, filtering, and exploring different types of program data.

cs.SE

Carnap: An Open Framework for Formal Reasoning in the Browser

This paper presents an overview of Carnap, a free and open framework for the development of formal reasoning applications. Carnap's design emphasizes flexibility, extensibility, and rapid prototyping. Carnap-based applications are written in Haskell, but can be compiled to JavaScript to run in standard web browsers. This combination of features makes Carnap ideally suited for educational applications, where ease-of-use is crucial for students and adaptability to different teaching strategies and classroom needs is crucial for instructors. The paper describes Carnap's implementation, along with its current and projected pedagogical applications.

cs.HC

Yablo's Paradox And Arithmetical Incompleteness

In this short paper, I present a few theorems on sentences of arithmetic which are related to Yablo's Paradox as Gödel's first undecidable sentence was related to the Liar paradox. In particular, I consider two different arithemetizations of Yablo's sentences: one resembling Gödel's arithmetization of the Liar, with the negation outside of the provability predicate, one resembling Jeroslow's undecidable sentence, with negation inside. Both kinds of arithmetized Yablo sentence are undecidable, and connected to the consistency sentence for the ambient formal system in roughly the same manner as Gödel and Jeroslow's sentences. Finally, I consider a sentence which is related to the Henkin sentence "I am provable" in the same way that first two arithmetizations are related to Gödel and Jeroslow's sentences. I show that this sentence is provable, using Löb's theorem, as in the standard proof of the Henkin sentence.

math.LO