Generate the mapping from ACL2 package names to Java class names.
(atj-pkgs-to-classes pkgs java-class$) → pkg-class-names
We call atj-pkg-to-class on all the argument package names, and generate an alist from those to the corresponding Java class names. This function is called on all the packages that include ACL2 functions that must be translated to Java.
For now each package name is translated independently from the others, but future versions of this function could generate mappings according to more ``global'' strategies.
The resulting alist is passed to the code generation functions, which use the alist to look up the Java class names corresponding to the ACL2 package names.
Function:
(defun atj-pkgs-to-classes (pkgs java-class$) (declare (xargs :guard (and (string-listp pkgs) (stringp java-class$)))) (declare (xargs :guard (no-duplicatesp-equal pkgs))) (let ((__function__ 'atj-pkgs-to-classes)) (declare (ignorable __function__)) (b* (((when (endp pkgs)) nil) (pkg (car pkgs)) (class (atj-pkg-to-class pkg java-class$)) (rest-alist (atj-pkgs-to-classes (cdr pkgs) java-class$))) (acons pkg class rest-alist))))
Theorem:
(defthm string-string-alistp-of-atj-pkgs-to-classes (implies (string-listp pkgs) (b* ((pkg-class-names (atj-pkgs-to-classes pkgs java-class$))) (string-string-alistp pkg-class-names))) :rule-classes :rewrite)