From 59214186b817329342d9d72e23adf12f7a3b1348 Mon Sep 17 00:00:00 2001 From: stuebinm Date: Sat, 29 Jun 2024 21:31:22 +0200 Subject: had some fun writing an IsabelleHOL backend (do not actually use this, most things are broken, and the primitives lib barely exists and is simply incorrect. But it is enough to create syntax-correct Isabelle code for relatively simply rust code, as long as it does not contain any uses of traits) --- backends/IsabelleHOL/Primitives.thy | 19 +++++++++++ backends/IsabelleHOL/ROOT | 6 ++++ backends/IsabelleHOL/document/root.tex | 60 ++++++++++++++++++++++++++++++++++ 3 files changed, 85 insertions(+) create mode 100644 backends/IsabelleHOL/Primitives.thy create mode 100644 backends/IsabelleHOL/ROOT create mode 100644 backends/IsabelleHOL/document/root.tex (limited to 'backends') diff --git a/backends/IsabelleHOL/Primitives.thy b/backends/IsabelleHOL/Primitives.thy new file mode 100644 index 00000000..a0cc40bd --- /dev/null +++ b/backends/IsabelleHOL/Primitives.thy @@ -0,0 +1,19 @@ +theory Primitives imports + Main + "HOL-Library.Monad_Syntax" +begin + + +datatype u32 = u32 nat +datatype 'a result = Ok 'a | Err +fun u32_lt :: "u32 \ u32 \ bool" where + "u32_lt (u32 a) (u32 b) = (a < b)" + +definition bind :: "'a result \ ('a \ 'b result) \ 'b result" where + "bind m f \ (case m of Err \ Err | Ok a \ f a)" + +adhoc_overloading Monad_Syntax.bind bind + +declare bind_def[simp] + +end \ No newline at end of file diff --git a/backends/IsabelleHOL/ROOT b/backends/IsabelleHOL/ROOT new file mode 100644 index 00000000..9f8e0820 --- /dev/null +++ b/backends/IsabelleHOL/ROOT @@ -0,0 +1,6 @@ +session Aeneas = "HOL-Library" + + options [document = pdf, document_output = "output"] + theories [document = false] + Primitives + document_files + "root.tex" diff --git a/backends/IsabelleHOL/document/root.tex b/backends/IsabelleHOL/document/root.tex new file mode 100644 index 00000000..63ac8e42 --- /dev/null +++ b/backends/IsabelleHOL/document/root.tex @@ -0,0 +1,60 @@ +\documentclass[11pt,a4paper]{article} +\usepackage[T1]{fontenc} +\usepackage{isabelle,isabellesym} + +% further packages required for unusual symbols (see also +% isabellesym.sty), use only when needed + +%\usepackage{amssymb} + %for \, \, \, \, \, \, + %\, \, \, \, \, + %\, \, \ + +%\usepackage{eurosym} + %for \ + +%\usepackage[only,bigsqcap,bigparallel,fatsemi,interleave,sslash]{stmaryrd} + %for \, \, \, \, \ + +%\usepackage{eufrak} + %for \ ... \, \ ... \ (also included in amssymb) + +%\usepackage{textcomp} + %for \, \, \, \, \, + %\ + +% this should be the last package used +\usepackage{pdfsetup} + +% urls in roman style, theory text in math-similar italics +\urlstyle{rm} +\isabellestyle{it} + +% for uniform font size +%\renewcommand{\isastyle}{\isastyleminor} + + +\begin{document} + +\title{IsabelleHOL} +\author{stuebinm} +\maketitle + +\tableofcontents + +% sane default for proof documents +\parindent 0pt\parskip 0.5ex + +% generated text of all theories +\input{session} + +% optional bibliography +%\bibliographystyle{abbrv} +%\bibliography{root} + +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: -- cgit v1.2.3