2018
DOI: 10.4204/eptcs.280.1
|View full text |Cite
|
Sign up to set email alerts
|

A Simple Java Code Generator for ACL2 Based on a Deep Embedding of ACL2 in Java

Abstract: AIJ (ACL2 In Java) is a deep embedding in Java of an executable, side-effect-free, non-stobjaccessing subset of the ACL2 language without guards. ATJ (ACL2 To Java) is a simple Java code generator that turns ACL2 functions into AIJ representations that are evaluated by the AIJ interpreter. AIJ and ATJ enable possibly verified ACL2 code to run as, and interoperate with, Java code, without much of the ACL2 framework or any of the Lisp runtime. The current speed of the resulting Java code may be adequate to some … Show more

Help me understand this report
View preprint versions

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1

Citation Types

0
17
0

Year Published

2020
2020
2022
2022

Publication Types

Select...
3

Relationship

3
0

Authors

Journals

citations
Cited by 3 publications
(17 citation statements)
references
References 4 publications
0
17
0
Order By: Relevance
“…The work reported in this paper builds upon, and significantly extends, the work reported in the ACL2-2018 Workshop paper "A Simple Java Code Generator Based on a Deep Embedding of ACL2 in Java" [5]. That paper described a relatively simple (and somewhat unconventional) approach to run ACL2 code in Java by running an ACL2 interpreter written in Java on a Java representation of the ACL2 code, where the interpreter is a deep embedding of ACL2 in Java.…”
Section: Introductionmentioning
confidence: 86%
“…The work reported in this paper builds upon, and significantly extends, the work reported in the ACL2-2018 Workshop paper "A Simple Java Code Generator Based on a Deep Embedding of ACL2 in Java" [5]. That paper described a relatively simple (and somewhat unconventional) approach to run ACL2 code in Java by running an ACL2 interpreter written in Java on a Java representation of the ACL2 code, where the interpreter is a deep embedding of ACL2 in Java.…”
Section: Introductionmentioning
confidence: 86%
“…A large and interesting subset of data type refinements involves isomorphic mappings between abstract and concrete representations; examples are refining finite sets to duplicate-free ordered lists or to bit vectors, adding record components that are computable from the others for caching, and some perhaps less expected ones as in Section 4.2. Many other data type refinements do not involve isomorphic mappings; see Section 6. In an interactive theorem prover like ACL2, stepwise program refinement can be carried out using predicates over (deeply or shallowly embedded) implementations as specifications s i and (reversed) implication as ↝ (an approach called 'pop-refinement') [4,5]; and c ↦ may be realized either as a ↝ sequence entirely in the logic of the prover [4], or via a more typical code generator [6] [23,Topic ATJ]. The APT (Automated Program Transformations) library [23, Topic APT] provides tools to carry out derivation steps s i ↝ s i+1 via automated transformations (as outlined above) in ACL2.…”
Section: Background Motivation and Contributionmentioning
confidence: 99%
“…• osi, the isomorphism from new to old, like ξ −1 or υ −1 in Section 2. Defiso attempts to prove the following applicability conditions (assuming unary functions): 6 • (old o) ⇒ (new (iso o)), i.e. iso maps values in old to values in new.…”
Section: Establishing Isomorphic Mappingsmentioning
confidence: 99%
See 2 more Smart Citations