diff --git a/.gitignore b/.gitignore
index e073285..f30f860 100644
--- a/.gitignore
+++ b/.gitignore
@@ -23,3 +23,5 @@ Deeper.ml*
DeeperWithFail.ml*
*.dir-locals.el
*.cache
+fraplib
+fraplib.tgz
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..b41933f
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,59 @@
+"Formal Reasoning About Programs" code license information
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+CAUTION: Most of the source files in this distribution are NOT
+open-source in the usual sense. See the comment at the beginning of
+each source file for its license, which is Creative Commons, oriented
+more toward free distribution of books than the usual collaborative
+model of open-source software. The author really is trying to keep
+you from remixing your own versions of the book.
+
+However, a few of the library modules used here are sufficiently
+useful that they are released separately under a BSD license, included
+below. However, the author's advice is: please don't use these
+library modules in real projects. They are not designed for any use
+beside getting the reader up and running quickly in reading the book,
+sacrificing practicality (and minimal use of axioms) for simplicity.
+
+The following license applies ONLY to the source files:
+Relations.v
+Map.v
+Var.v
+Invariant.v
+ModelCheck.v
+FrapWithoutSets.v
+Sets.v
+Frap.v
+AbstractInterpret.v
+SepCancel.v
+
+~~~~~~~~~~~
+BSD LICENSE
+~~~~~~~~~~~
+
+Copyright (c) 2016-2020, Adam Chlipala
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+- Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+- Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+- The names of contributors may not be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/Makefile b/Makefile
index a0c622e..e38bf34 100644
--- a/Makefile
+++ b/Makefile
@@ -25,9 +25,29 @@ clean:: Makefile.coq
frap.tgz: Makefile _CoqProject *.v *.tex *.html
git archive --format=tar.gz HEAD >frap.tgz
+fraplib.tgz: Makefile
+ rm -rf fraplib
+ mkdir fraplib
+ cp LICENSE fraplib/
+ cp Makefile.fraplib fraplib/Makefile
+ cp _CoqProject.fraplib fraplib/_CoqProject
+ cp Relations.v fraplib/
+ cp Map.v fraplib/
+ cp Var.v fraplib/
+ cp Invariant.v fraplib/
+ cp ModelCheck.v fraplib/
+ cp FrapWithoutSets.v fraplib/
+ cp Sets.v fraplib/
+ cp Frap.v fraplib/
+ cp Imp.v fraplib/
+ cp AbstractInterpret.v fraplib/
+ cp SepCancel.v fraplib/
+ tar cf fraplib.tgz fraplib/*
+
WHERE=chlipala.net:sites/chlipala/adam/frap/
-install: index.html frap_book.pdf frap.tgz
+install: index.html frap_book.pdf frap.tgz fraplib.tgz
rsync frap_book.pdf $(WHERE)
rsync frap.tgz $(WHERE)
+ rsync fraplib.tgz $(WHERE)
rsync index.html $(WHERE)
diff --git a/Makefile.fraplib b/Makefile.fraplib
new file mode 100644
index 0000000..5d62089
--- /dev/null
+++ b/Makefile.fraplib
@@ -0,0 +1,11 @@
+.PHONY: coq
+
+coq: Makefile.coq
+ $(MAKE) -f Makefile.coq
+
+Makefile.coq: Makefile _CoqProject *.v
+ coq_makefile -f _CoqProject -o Makefile.coq
+
+clean:: Makefile.coq
+ $(MAKE) -f Makefile.coq clean
+ rm -f Makefile.coq
diff --git a/_CoqProject.fraplib b/_CoqProject.fraplib
new file mode 100644
index 0000000..72daee3
--- /dev/null
+++ b/_CoqProject.fraplib
@@ -0,0 +1,13 @@
+-R . Frap
+-arg -w -arg -undeclared-scope
+Map.v
+Var.v
+Sets.v
+Relations.v
+Invariant.v
+ModelCheck.v
+Imp.v
+AbstractInterpret.v
+FrapWithoutSets.v
+Frap.v
+SepCancel.v
diff --git a/index.html b/index.html
index 9174503..5f97a67 100644
--- a/index.html
+++ b/index.html
@@ -15,6 +15,7 @@
Source on GitHub
Quasi-latest PDF draft
Quasi-latest source-code tarball
+ Quasi-latest source-code tarball, library only (warning: the author really does not recommend using it in serious projects!)