From 7971e57e3faf110800cd157e0b1131cb316f6ecd Mon Sep 17 00:00:00 2001
From: Gabriel <gabriel@motacilla.home>
Date: Mon, 18 Oct 2021 19:30:24 +0200
Subject: [PATCH] restructuration

---
 .github/workflows/pvs_prelude.yml                  |  5 +++--
 Makefile                                           |  2 +-
 docs/main.adoc                                     | 12 +++++++-----
 load.lisp                                          | 11 +++++++++++
 proofs/{ => src}/proof-json.lisp                   |  0
 proofs/{ => src}/tptp.lisp                         |  0
 pvs-load.lisp                                      |  7 -------
 {exporter => specs/src}/dk-recursive.lisp          |  0
 {exporter => specs/src}/dk-sig.lisp                |  0
 {exporter => specs/src}/dklog.lisp                 |  0
 {exporter => specs/src}/packages.lisp              |  0
 {exporter => specs/src}/pp-dk3.lisp                |  0
 {exporter => specs/src}/pvs.lisp                   |  0
 {exporter => specs/src}/utils.lisp                 |  0
 {tools => specs/tools}/README.md                   |  0
 lambdapi.mk => specs/tools/lambdapi.mk             |  0
 {tools => specs/tools}/lambdapi.pkg                |  0
 {tools => specs/tools}/prelude/Makefile            |  0
 {tools => specs/tools}/prelude/README.md           |  0
 {tools => specs/tools}/prelude/divides.lp.sh       |  0
 {tools => specs/tools}/prelude/mk_dummy.sh         |  0
 .../tools}/prelude/number_fields.lp.patch          |  0
 {tools => specs/tools}/prelude/theories            |  0
 .../tools}/prelude_patches/01-functions.diff       |  0
 .../tools}/prelude_patches/02-orders.diff          |  0
 .../tools}/prelude_patches/03-sets.diff            |  0
 .../tools}/prelude_patches/04-sequences.diff       |  0
 .../tools}/prelude_patches/05-function_image.diff  |  0
 .../tools}/prelude_patches/patch-prelude.sh        |  0
 {tools => specs/tools}/pvs2dk.sh                   |  0
 {tools => specs/tools}/simple/Makefile             |  0
 tools/bootstrap.sh                                 |  2 +-
 tools/load-personoj.lisp                           | 14 ++++++++++++++
 33 files changed, 37 insertions(+), 16 deletions(-)
 create mode 100644 load.lisp
 rename proofs/{ => src}/proof-json.lisp (100%)
 rename proofs/{ => src}/tptp.lisp (100%)
 delete mode 100644 pvs-load.lisp
 rename {exporter => specs/src}/dk-recursive.lisp (100%)
 rename {exporter => specs/src}/dk-sig.lisp (100%)
 rename {exporter => specs/src}/dklog.lisp (100%)
 rename {exporter => specs/src}/packages.lisp (100%)
 rename {exporter => specs/src}/pp-dk3.lisp (100%)
 rename {exporter => specs/src}/pvs.lisp (100%)
 rename {exporter => specs/src}/utils.lisp (100%)
 rename {tools => specs/tools}/README.md (100%)
 rename lambdapi.mk => specs/tools/lambdapi.mk (100%)
 rename {tools => specs/tools}/lambdapi.pkg (100%)
 rename {tools => specs/tools}/prelude/Makefile (100%)
 rename {tools => specs/tools}/prelude/README.md (100%)
 rename {tools => specs/tools}/prelude/divides.lp.sh (100%)
 rename {tools => specs/tools}/prelude/mk_dummy.sh (100%)
 rename {tools => specs/tools}/prelude/number_fields.lp.patch (100%)
 rename {tools => specs/tools}/prelude/theories (100%)
 rename {tools => specs/tools}/prelude_patches/01-functions.diff (100%)
 rename {tools => specs/tools}/prelude_patches/02-orders.diff (100%)
 rename {tools => specs/tools}/prelude_patches/03-sets.diff (100%)
 rename {tools => specs/tools}/prelude_patches/04-sequences.diff (100%)
 rename {tools => specs/tools}/prelude_patches/05-function_image.diff (100%)
 rename {tools => specs/tools}/prelude_patches/patch-prelude.sh (100%)
 rename {tools => specs/tools}/pvs2dk.sh (100%)
 rename {tools => specs/tools}/simple/Makefile (100%)
 create mode 100644 tools/load-personoj.lisp

diff --git a/.github/workflows/pvs_prelude.yml b/.github/workflows/pvs_prelude.yml
index 381bc9e..3cc87a0 100644
--- a/.github/workflows/pvs_prelude.yml
+++ b/.github/workflows/pvs_prelude.yml
@@ -17,13 +17,14 @@ jobs:
       run: |
         eval $(opam env --switch=~/lambdapi --set-switch)
         bmake -C encoding install
-        sed "s:PVSDKPATH:$(pwd):" pvs-load.lisp > ~/.pvs.lisp
+        cp 'tools/load-personoj.lisp' > ~/.pvs.lisp
+        echo '(load-personoj)' >> ~/.pvs.lisp
         cat ~/.pvs.lisp
 
     - name: translate and typecheck
       run: |
         eval $(opam env --switch=~/lambdapi --set-switch)
-        cd tools/prelude || exit 1
+        cd specs/tools/prelude || exit 1
         # Comment out theories that consume too much memory during 
         # typechecking
         sed -i 's/^floor_ceil$/-floor_ceil/' theories
diff --git a/Makefile b/Makefile
index e3d841f..df01951 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
 .PHONY: install
 install:
 	${MAKE} -C encoding install
-	@sed 's:PVSDKPATH:${PWD}:' pvs-load.lisp | cat
+	@sed 's:PVSDKPATH:${PWD}:' tools/load-personoj.lisp | cat
 
 .PHONY: encoding
 encoding:
diff --git a/docs/main.adoc b/docs/main.adoc
index ef136fe..eeaa488 100644
--- a/docs/main.adoc
+++ b/docs/main.adoc
@@ -128,8 +128,10 @@ To install the encoding
 [source,sh]
 personoj $ bmake -C encoding install
 
-To install the exporter, add the content of +pvs-load.lisp+ to
-+$HOME/.pvs.lisp+ replacing +PVSDKPATH+ with the path to the root of
-personoj.
-[source,sh]
-personoj $ sed "s:PVSDKPATH:$(pwd):" pvs-load.lisp >> ~/.pvs.lisp
+To install the exporter, add the content of +tools/load-personoj.lisp+ to
++$HOME/.pvs.lisp+, add the line
+[source,lisp]
+(load-personoj)
+
+at the end of +$HOME/.pvs.lisp+ and set the environment variable
++PERSONOJPATH+ to the path to the local copy of +PERSONOJ+.
diff --git a/load.lisp b/load.lisp
new file mode 100644
index 0000000..904bdfe
--- /dev/null
+++ b/load.lisp
@@ -0,0 +1,11 @@
+(dolist (m '("utils"
+             "packages"
+             "dklog"
+             "dk-sig"
+             "dk-recursive"
+             "pp-dk3"
+             "pvs"))
+  (load (concatenate 'string "specs/src/" m ".lisp") ))
+
+(dolist (m '("tptp" "proof-json"))
+  (load (concatenate 'string "proofs/src/" m ".lisp")))
diff --git a/proofs/proof-json.lisp b/proofs/src/proof-json.lisp
similarity index 100%
rename from proofs/proof-json.lisp
rename to proofs/src/proof-json.lisp
diff --git a/proofs/tptp.lisp b/proofs/src/tptp.lisp
similarity index 100%
rename from proofs/tptp.lisp
rename to proofs/src/tptp.lisp
diff --git a/pvs-load.lisp b/pvs-load.lisp
deleted file mode 100644
index bdb1982..0000000
--- a/pvs-load.lisp
+++ /dev/null
@@ -1,7 +0,0 @@
-;;;; Place this at the top of "~/.pvs.lisp"
-
-(defparameter *pvs-dedukti-path* "PVSDKPATH")
-(dolist (m '("utils" "packages" "dklog" "dk-sig" "dk-recursive" "pp-dk3" "pvs"))
-  (load (concatenate 'string *pvs-dedukti-path* "/exporter/" m ".lisp")))
-(dolist (m '("tptp" "proof-json"))
-  (load (concatenate 'string *pvs-dedukti-path* "/proofs/" m ".lisp")))
diff --git a/exporter/dk-recursive.lisp b/specs/src/dk-recursive.lisp
similarity index 100%
rename from exporter/dk-recursive.lisp
rename to specs/src/dk-recursive.lisp
diff --git a/exporter/dk-sig.lisp b/specs/src/dk-sig.lisp
similarity index 100%
rename from exporter/dk-sig.lisp
rename to specs/src/dk-sig.lisp
diff --git a/exporter/dklog.lisp b/specs/src/dklog.lisp
similarity index 100%
rename from exporter/dklog.lisp
rename to specs/src/dklog.lisp
diff --git a/exporter/packages.lisp b/specs/src/packages.lisp
similarity index 100%
rename from exporter/packages.lisp
rename to specs/src/packages.lisp
diff --git a/exporter/pp-dk3.lisp b/specs/src/pp-dk3.lisp
similarity index 100%
rename from exporter/pp-dk3.lisp
rename to specs/src/pp-dk3.lisp
diff --git a/exporter/pvs.lisp b/specs/src/pvs.lisp
similarity index 100%
rename from exporter/pvs.lisp
rename to specs/src/pvs.lisp
diff --git a/exporter/utils.lisp b/specs/src/utils.lisp
similarity index 100%
rename from exporter/utils.lisp
rename to specs/src/utils.lisp
diff --git a/tools/README.md b/specs/tools/README.md
similarity index 100%
rename from tools/README.md
rename to specs/tools/README.md
diff --git a/lambdapi.mk b/specs/tools/lambdapi.mk
similarity index 100%
rename from lambdapi.mk
rename to specs/tools/lambdapi.mk
diff --git a/tools/lambdapi.pkg b/specs/tools/lambdapi.pkg
similarity index 100%
rename from tools/lambdapi.pkg
rename to specs/tools/lambdapi.pkg
diff --git a/tools/prelude/Makefile b/specs/tools/prelude/Makefile
similarity index 100%
rename from tools/prelude/Makefile
rename to specs/tools/prelude/Makefile
diff --git a/tools/prelude/README.md b/specs/tools/prelude/README.md
similarity index 100%
rename from tools/prelude/README.md
rename to specs/tools/prelude/README.md
diff --git a/tools/prelude/divides.lp.sh b/specs/tools/prelude/divides.lp.sh
similarity index 100%
rename from tools/prelude/divides.lp.sh
rename to specs/tools/prelude/divides.lp.sh
diff --git a/tools/prelude/mk_dummy.sh b/specs/tools/prelude/mk_dummy.sh
similarity index 100%
rename from tools/prelude/mk_dummy.sh
rename to specs/tools/prelude/mk_dummy.sh
diff --git a/tools/prelude/number_fields.lp.patch b/specs/tools/prelude/number_fields.lp.patch
similarity index 100%
rename from tools/prelude/number_fields.lp.patch
rename to specs/tools/prelude/number_fields.lp.patch
diff --git a/tools/prelude/theories b/specs/tools/prelude/theories
similarity index 100%
rename from tools/prelude/theories
rename to specs/tools/prelude/theories
diff --git a/tools/prelude_patches/01-functions.diff b/specs/tools/prelude_patches/01-functions.diff
similarity index 100%
rename from tools/prelude_patches/01-functions.diff
rename to specs/tools/prelude_patches/01-functions.diff
diff --git a/tools/prelude_patches/02-orders.diff b/specs/tools/prelude_patches/02-orders.diff
similarity index 100%
rename from tools/prelude_patches/02-orders.diff
rename to specs/tools/prelude_patches/02-orders.diff
diff --git a/tools/prelude_patches/03-sets.diff b/specs/tools/prelude_patches/03-sets.diff
similarity index 100%
rename from tools/prelude_patches/03-sets.diff
rename to specs/tools/prelude_patches/03-sets.diff
diff --git a/tools/prelude_patches/04-sequences.diff b/specs/tools/prelude_patches/04-sequences.diff
similarity index 100%
rename from tools/prelude_patches/04-sequences.diff
rename to specs/tools/prelude_patches/04-sequences.diff
diff --git a/tools/prelude_patches/05-function_image.diff b/specs/tools/prelude_patches/05-function_image.diff
similarity index 100%
rename from tools/prelude_patches/05-function_image.diff
rename to specs/tools/prelude_patches/05-function_image.diff
diff --git a/tools/prelude_patches/patch-prelude.sh b/specs/tools/prelude_patches/patch-prelude.sh
similarity index 100%
rename from tools/prelude_patches/patch-prelude.sh
rename to specs/tools/prelude_patches/patch-prelude.sh
diff --git a/tools/pvs2dk.sh b/specs/tools/pvs2dk.sh
similarity index 100%
rename from tools/pvs2dk.sh
rename to specs/tools/pvs2dk.sh
diff --git a/tools/simple/Makefile b/specs/tools/simple/Makefile
similarity index 100%
rename from tools/simple/Makefile
rename to specs/tools/simple/Makefile
diff --git a/tools/bootstrap.sh b/tools/bootstrap.sh
index d6eaf11..f21a423 100755
--- a/tools/bootstrap.sh
+++ b/tools/bootstrap.sh
@@ -39,7 +39,7 @@ gclone https://github.com/SRI-CSL/PVS.git PVS pvs7.1
  PVSPATH="${HOME}/PVS"
  export PVSPATH
 
- for p in $(find tools/prelude_patches -name '*.diff' | sort); do
+ for p in $(find specs/tools/prelude_patches -name '*.diff' | sort); do
      patch "${PVSPATH}/lib/prelude.pvs" "$p"
  done
 
diff --git a/tools/load-personoj.lisp b/tools/load-personoj.lisp
new file mode 100644
index 0000000..6e91d84
--- /dev/null
+++ b/tools/load-personoj.lisp
@@ -0,0 +1,14 @@
+;;;; Call (load-personoj) from ~/.pvs.lisp to load Personoj automatically into
+;;;; PVS
+
+(defmacro load-personoj (&optional pth)
+  "Load Personoj specification exporter and proof exporter. If given, PTH is the
+path to the root of the repository. Otherwise, the root is taken from the
+environment variable PERSONOJ"
+  (let ((pth (cond
+               (pth pth)
+               ((uiop:getenvp "PERSONOJPATH")
+                (uiop:getenv-pathname "PERSONOJPATH" :ensure-directory t))
+               (t (error "Cannot load personoj: PERSONOJPATH not set.")))))
+    `(uiop:with-current-directory (,pth)
+       (load "load.lisp"))))
-- 
GitLab