% GENERAL FORMAT OF EACH SLIDE
% ----------------------------

%\begin{frame}

%\newlibtitle or \implibtitle % for new vs. improved libraries

%\bookpath{path/to/the/library}: % directory or file, use macro for font
% Short description of what this library is, 1-2 lines.
%\begin{itemize}
%\item
% A highlight about this new or improved library.
%\item
% Another highlight.
%\item
% Say if it's described in a paper at this workshop,
% in which case, there may be little to say here.
%\end{itemize}

%\separation % to separate the next entry, if any

%\bookpath{another/path}: % as above

%\end{frame}

% ORDER OF THE SLIDES AND ENTRIES
% -------------------------------

% First all the new libraries, in alphabetical order.

% Then all the improved libraries, in alphabetical order.

% Then one or more slides with additional contributions.

% Don't worry about adding your contributions in order:
% Alessandro will quickly put them in order if needed,
% and also fix any formatting issues.

% TITLE SLIDE
% -----------

% Add your name as co-author, in alphabetical order of last name.

% Add your organization, in alphabetical order.
% Renumber the \inst{n} instances as needed
% (both inside \author{...} and inside \institute{...}).

% Or ask Alessandro to do this.

% OTHER REMARKS
% -------------

% Use the \code{...} macro for code (i.e.\ fixed-width) font within the text.

% If you want to show code block snippets,
% use the verbatim environment,
% and add [fragile] just after \begin{frame}.

% For guidelines on content and level of detail,
% please see existing entries.
% The goal is to provide enough information to get possible users interested.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\documentclass{beamer}
\usetheme{Singapore}
\usecolortheme{seagull}
\usepackage{inconsolata}

\beamertemplatenavigationsymbolsempty

\setbeamertemplate{footline}[frame number]

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\newcommand{\code}[1]{\texttt{#1}}
\newenvironment{codeblock}{\begin{alltt}}{\end{alltt}}

\newcommand{\bookpath}[1]{\textbf{\code{#1}}}

\newcommand{\newlibtitle}{\frametitle{New Libraries}}
\newcommand{\implibtitle}{\frametitle{Improved Libraries}}

\newcommand{\separation}{\vspace*{1.5ex}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\title{What's New in the Community Books}

\subtitle{Since the ACL2-2023 Workshop}

\author{Alessandro Coglio\inst{2,3,4} (presenter),\\
        Grant Jurgensen\inst{2},
        Matt Kaufmann\inst{5},\\
        Eric McCarthy\inst{2,4},
        J Strother Moore\inst{5},\\
        Eric Smith\inst{2,3},
        Yahya Sohail,
        Sol Swords\inst{1}}

\institute{\inst{1}Arm Inc.,
           \inst{2}Kestrel Institute,
           \inst{3}Kestrel Technology LLC,\\
           \inst{4}Provable Inc.,
           \inst{5}University of Texas at Austin (retired)}

\date{ACL2-2025 Workshop}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\frame[noframenumbering,plain]{\titlepage}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\frametitle{Overview}

\begin{itemize}
\item Over 7,000 non-merge commits since the last Workshop.
\item From several contributors from several organizations.
\item Spanning hardware, mathematics, cryptography, blockchain,
      programming languages, virtual machines, machine code,
      standards, analysis, synthesis, and more.
\item These slides provide succinct summaries of major items,
      ordered by book path within each of the new and improved library parts.
      See the book release notes for more details.
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\newlibtitle

\bookpath{intel/ifp}:
Floating-point arithmetic specs formerly used at Intel:
\begin{itemize}
\item Specs for core arithmetic operations and rounding.
\item Some theorems about rounding and error bounds.
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\newlibtitle

\bookpath{kestrel/c/syntax}:
Representation, with accompanying tools,
of the syntax of all of C after preprocessing,
including many GCC extensions:
\begin{itemize}
\item A tool to invoke an external C preprocessor.
\item An abstract syntax that retains
      much of the information from the concrete syntax.
\item An ABNF grammar.
\item A parser that captures ambiguous constructs as such.
\item A disambiguator to be used after parsing.
\item A partial validator to check typing rules, scoping rules, etc.,
      and to annotate the abstract syntax with validation information
      (e.g.\ types, linkage).
\item A pretty-printer with some customization options.
\item Tools to input/output C code from/to files.
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\newlibtitle

\bookpath{kestrel/c/transformation}:
Tools for transforming C code,
generating correctness proofs (in the supported subset of C):
\begin{itemize}
\item Constant propagation and folding.
\item Simplification of certain kinds of expressions.
\item Specialization.
\item Function splitting.
\item Struct splitting.
\end{itemize}

\separation

\bookpath{kestrel/c/transformation/utilities}:
Auxiliary utilities for C code:
\begin{itemize}
\item Call graph calculation.
\item Identifier manipulation.
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\newlibtitle

\bookpath{kestrel/riscv}:
A preliminary model of the RISC-V ISA:
\begin{itemize}
\item Unprivileged RV32IM and RV64IM
      (except \code{FENCE}, \code{HINT}, \code{ECALL}, and \code{EBREAK}).
\item Little endian memory access.
\item Fully readable and writable address space.
\item Being extended to support different bases and extensions,
      via a data structure representing the ISA features.
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\newlibtitle

\bookpath{kestrel/treeset}:
Ordered finite sets represented as treaps:
\begin{itemize}
\item A treap (= ``tree'' + ``heap'') is a binary search tree with an
      additional max heap property.
\item Unique representations, like \code{oset}s.
\item Logarithmic complexity for membership, insertion, and deletion.
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\newlibtitle

\bookpath{kestrel/xml}:
Add a simple XML parser.

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\newlibtitle

\bookpath{projects/acl2-in-hol}:
Support for much of the ACL2 side of the dormant link from ACL2 into HOL.

\separation

\bookpath{projects/hol-in-acl2}:
A translator from HOL4 to ACL2, with examples.

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\newlibtitle

\bookpath{projects/aleo}:
Formal specifications and proofs about the Aleo blockchain and ecosystem:
\begin{itemize}
\item Formal models and correctness proofs of AleoBFT,
      a Byzantine-fault-tolerant blockchain consensus protocol.
\item Definition and proofs of the ABNF grammar of
      the Leo programming language for zero-knowledge applications.
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\newlibtitle

\bookpath{projects/poseidon}:
Poseidon cryptographic hash:
\begin{itemize}
\item Parameterized definition.
\item Various instantiations.
\item Tests for the instantiations.
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\newlibtitle

\bookpath{projects/schroeder-bernstein}:
A proof of the Schr{\"o}der-Bernstein theorem:
\begin{itemize}
\item Described in this year's workshop paper,
      ``A Proof of the Schr{\"o}der-Bernstein Theorem in {ACL2}.''
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\newlibtitle

\bookpath{projects/set-theory}:
Set theory:
\begin{itemize}
\item Supports the use of ACL2 to reason about first-order set theory.
\item Provides an alternative to \code{apply\$} for higher-order
      functional programming.
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Improvements to existing libraries start here
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\implibtitle

\bookpath{build}:
New build options:
\begin{itemize}
\item Add new \code{cert\_param} \code{non-acl2p},
      to exclude books that don't work with ACL2(p).
\item New \code{FAILURE\_LINES} variable
      limits printing for failed/interrupted builds.
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\implibtitle

\bookpath{centaur/fgl}:
Bit-blasting rewriter.
\begin{itemize}
\item Added/improved some debugging utilities.
\item Added feature to match a hyp containing
      free variables against assumptions.
\item Added documentation about binder functions/rules.
\item Added some utilities to help support rewriting of FTY sum/product types.
\item Improved integration with AIG library to make it more feasible.
      to programmatically configure AIG transformations.
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\implibtitle

\bookpath{centaur/fty}:
Fixtype library (the part under \code{centaur/}):
\begin{itemize}
\item Added \code{multicase} macro for
      matching against multiple sum types at once.
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\implibtitle

\bookpath{centaur/sv}:
VL/SV hardware verification package:
\begin{itemize}
\item Improvements in reasoning about designs as FSMs
      (as opposed to unrolled pipeline functions).
\item Add SRT4 divide tutorial example.

\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\implibtitle

\bookpath{demos}:
Demos (1/2):
\begin{itemize}
\item Added demos for \code{attach-stobjs} (in
      \code{demos/attach-stobj});
      see also directory \code{system/tests/attachable-stobjs/}.
\item Added demos for floating-point operations (in \code{demos/fp});
      see also extensive suite in \code{books/demos/floating-point-input.lsp}
      with corresponding output file \code{books/demos/floating-point-log.txt}.
\item Added \code{demos/swap-stobj-fields.lisp} to demonstrate how
      to swap two stobj fields of a given stobj and to illustrate the
      corresponding implicit update of the parent stobj.
\item Added \code{demos/element-type.lisp} to show how to specify
      the raw-Lisp  element type for a stobj array field.
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\implibtitle

\bookpath{demos}:
Demos (2/2):
\begin{itemize}
\item Added \code{demos/defabsstobj-example-1-df.lisp} to illustrate
      the use of dfs (ACL2 floats) with abstract stobjs.
\item Added \code{demos/ppr1-experiments-thm-1-ppr1.lisp} and
      \code{demos/ppr1-experiments.lisp} to illustrate how
      ruler-extenders can sometimes improve the induction scheme
      suggested by a recursive function (see :DOC
      induction-coarse-v-fine-grained).
\item Added \code{demos/toy-csort.lisp} as an interesting exercise in
      generalization.
\item Added answers to the problems in :DOC introduction-to-apply\$ in
      \code{projects/apply/answers-to-doc-intro-to-apply.lisp}.
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\implibtitle

\bookpath{doc/100-theorems}:
More of the 100 Theorems now in ACL2:
\begin{itemize}
\item Cramer's Rule.
\item Mathematical Induction.
\item Schr{\"o}der-Bernstein (2 versions).
\item Cantor's Theorem.
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\implibtitle

\bookpath{kestrel/axe}:
Major improvements to:
\begin{itemize}
\item Rewriters (e.g., binding hyps, SMT to relieve hyps, XOR nest handling).
\item SMT connection.
\item Equivalence Checker.
\item Provers (Tactic Prover, R1CS Prover, etc.).
\item Clause Processors.
\item x86 Binary Lifter.
\item JVM (Java) Code Lifter.
\item Formal Unit Testers.
\item Supporting rules.
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\implibtitle

\bookpath{kestrel/crypto}:
Add formalizations:
\begin{itemize}
\item Add spec of the CHACHA20 stream cipher.
\item Add spec of the BLAKE2b hash function.
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\implibtitle

\bookpath{kestrel/ethereum}:
Library about the Ethereum blockchain:
\begin{itemize}
\item Add partial formal specification of the Ethereum Virtual Machine.
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\implibtitle

\bookpath{kestrel/fty}:
Fixtype library (the part under the Kestrel Books):
\begin{itemize}
\item Added a new \code{deffold-reduce} tool
      to generate a class of ``reducing'' fold functions over fixtypes.
\item Added some utilities to query the fixtype database,
      extending the ones under \code{centaur/fty}.
\item Made \code{defset} and \code{defomap} more robust.
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\implibtitle

\bookpath{kestrel/helpers}:
Improvements to tools that:
\begin{itemize}
\item Help find new proofs and fix broken proofs.
\item Suggest improvements to functions/theorems/books.
\item Find problems (Linter).
\item Speed up proofs/books.
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\implibtitle

\bookpath{kestrel/terms-light}:
Add several verified term simplifiers:
\begin{itemize}
\item Improve lambdas
      (subst constants, drop unused/trivial/unnecessary bindings).
\item Simplify ORs.
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\implibtitle

\bookpath{kestrel/x86}:
Tools for reasoning about x86 binary code:
\begin{itemize}
\item Normal forms for x86 reasoning.
\item Equivalent alternate defs for certain instructions.
\item Many rules (including new rewriting strategies).
\item Auto-generation of assumptions for proving/lifting.
\item Handling of memory reads, writes and disjointness.
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\implibtitle

\bookpath{kestrel}:
Many improvements to basic libraries:
\begin{itemize}
\item \code{acl2-arrays} (e.g., much longer arrays)
\item \code{arithmetic-light}
\item \code{booleans}
\item \code{bv} and \code{bv-lists} (including bv-arrays)
\item \code{clause-processors}
\item \code{evaluators} (e.g., \code{defevaluator+})
\item \code{file-io-light}
\item \code{floats} (rounding, connection to RTL)
\item \code{json-parser}
\item \code{lists-light}, \code{typed-lists-light}, \code{alists-light}
\item \code{prime-fields}
\item \code{sequences}
\item \code{strings-light} and \code{unicode-light}
\item \code{utilities}
\item \code{world-light}

\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}

\implibtitle

\bookpath{projects/x86isa}:
Formal model of the x86 ISA:
\begin{itemize}
\item Added support for a number of new instructions.
\item Added some test tools.
\item Added TLB model.
\item Added TTY and timer peripherals.
\item Added Linux support with patched kernel.
\item Added cosimulation validation tool.
\item Sped up many books.
\item New summary of instruction coverage
      (see \code{:doc sdm-instruction-set-summary}).
\end{itemize}

\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\end{document}
