From 22693289b1e57d82d62627dd292b0af9542a4b52 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones"
Date: Fri, 6 Dec 2019 15:12:20 +0000
Subject: [PATCH 001/113] OCaml 4.09.0 (final) rebuild.
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index 4900984..3f85fd1 100644
--- a/why3.spec
+++ b/why3.spec
@@ -9,7 +9,7 @@
Name: why3
Version: 1.2.1
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
@@ -289,6 +289,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Fri Dec 06 2019 Richard W.M. Jones - 1.2.1-2
+- OCaml 4.09.0 (final) rebuild.
+
* Tue Oct 29 2019 Jerry James - 1.2.1-1
- New upstream release
- Add -proofgeneral subpackage
From a4e5472b99205a13b69b513066c0d5d45b4298ac Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Wed, 22 Jan 2020 09:55:57 -0700
Subject: [PATCH 002/113] OCaml 4.10.0+beta1 rebuild.
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index 3f85fd1..70dbe31 100644
--- a/why3.spec
+++ b/why3.spec
@@ -9,7 +9,7 @@
Name: why3
Version: 1.2.1
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
@@ -289,6 +289,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Wed Jan 22 2020 Jerry James - 1.2.1-3
+- OCaml 4.10.0+beta1 rebuild.
+
* Fri Dec 06 2019 Richard W.M. Jones - 1.2.1-2
- OCaml 4.09.0 (final) rebuild.
From b6d8ef5355f603ca5f86195d79860accb27d1466 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Fri, 24 Jan 2020 10:44:11 -0700
Subject: [PATCH 003/113] R yices-tools, which has the command line tool, not
yices.
---
why3.spec | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index 70dbe31..69fa4fe 100644
--- a/why3.spec
+++ b/why3.spec
@@ -94,7 +94,7 @@ This package contains an XEmacs support file for working with %{name} files.
%package all
Summary: Complete Why3 software verification platform suite
Requires: %{name}%{?_isa} = %{version}-%{release}
-Requires: alt-ergo coq cvc4 E gappalib-coq yices z3 zenon
+Requires: alt-ergo coq cvc4 E gappalib-coq yices-tools z3 zenon
%description all
This package provides a complete software verification platform suite
From f67c772f71f94d1a13a35eb4dacd4132fb0127af Mon Sep 17 00:00:00 2001
From: Fedora Release Engineering
Date: Fri, 31 Jan 2020 03:41:29 +0000
Subject: [PATCH 004/113] - Rebuilt for
https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
Signed-off-by: Fedora Release Engineering
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index 69fa4fe..cddbeea 100644
--- a/why3.spec
+++ b/why3.spec
@@ -9,7 +9,7 @@
Name: why3
Version: 1.2.1
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
@@ -289,6 +289,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Fri Jan 31 2020 Fedora Release Engineering - 1.2.1-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
+
* Wed Jan 22 2020 Jerry James - 1.2.1-3
- OCaml 4.10.0+beta1 rebuild.
From b5b1f855be903015c9ce6934d7752b966748a917 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Wed, 25 Mar 2020 14:01:51 -0600
Subject: [PATCH 005/113] Version 1.3.1.
---
sources | 2 +-
why3.spec | 52 +++++++++++++++++++++++++++++++++++++---------------
2 files changed, 38 insertions(+), 16 deletions(-)
diff --git a/sources b/sources
index 4f8ade4..4fd5814 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
SHA512 (why3-man.tar.xz) = 8355776ac8a67a56ae7354f8fd40dc5d2057022d1035090a3e38e139fbfe3c258fe3ccbed6e333cb005e66c7b4cdbbf6580e3420170fd08384cc9b36ce5ec2a1
-SHA512 (why3-1.2.1.tar.gz) = 7a5d4403bda5a9c88490d83803a6c3d30b80b9949398de6d35b92df80a90980235c014d59afb46dd1bdd3028f20252ae1f59756a3d6978228e5c8fd9aefa1b3d
+SHA512 (why3-1.3.1.tar.gz) = 2412c9bfcac8dbbee6657d39ec3ed006e1a8dc7522873041c53b9c572a752e7cc20b55378fe916e0f9d97de82705f6c01a17d2aa2f8c20a4fbdd2673bb78d34a
diff --git a/why3.spec b/why3.spec
index cddbeea..b61a105 100644
--- a/why3.spec
+++ b/why3.spec
@@ -8,14 +8,14 @@
%endif
Name: why3
-Version: 1.2.1
-Release: 4%{?dist}
+Version: 1.3.1
+Release: 1%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
License: LGPLv2 with exceptions
URL: http://why3.lri.fr/
-Source0: https://gforge.inria.fr/frs/download.php/file/38185/%{name}-%{version}.tar.gz
+Source0: https://gforge.inria.fr/frs/download.php/file/38291/%{name}-%{version}.tar.gz
# Man pages written by Jerry James using text found in the sources. Hence,
# the copyright and license are the same as for the upstream sources.
Source1: %{name}-man.tar.xz
@@ -29,26 +29,36 @@ BuildRequires: emacs-proofgeneral
BuildRequires: evince
BuildRequires: flocq
BuildRequires: hevea
+BuildRequires: latexmk
BuildRequires: libappstream-glib
BuildRequires: ocaml
BuildRequires: ocaml-camlp5-devel
BuildRequires: ocaml-findlib
-BuildRequires: ocaml-lablgtk-devel
+BuildRequires: ocaml-lablgtk3-sourceview3-devel
BuildRequires: ocaml-ocamldoc
BuildRequires: ocaml-ocamlgraph-devel
BuildRequires: ocaml-menhir-devel
+BuildRequires: ocaml-mlmpfr-devel
BuildRequires: ocaml-num-devel
+BuildRequires: ocaml-re-devel
+BuildRequires: ocaml-seq-devel
BuildRequires: ocaml-sqlite-devel
BuildRequires: ocaml-zarith-devel
BuildRequires: ocaml-zip-devel
-BuildRequires: pkgconfig(gtksourceview-2.0)
-BuildRequires: rubber
+BuildRequires: python3dist(sphinx)
+BuildRequires: python3dist(sphinxcontrib-bibtex)
+BuildRequires: tex(capt-of.sty)
BuildRequires: tex(comment.sty)
+BuildRequires: tex(fncychap.sty)
+BuildRequires: tex(framed.sty)
+BuildRequires: tex(needspace.sty)
+BuildRequires: tex(tabulary.sty)
BuildRequires: tex(upquote.sty)
+BuildRequires: tex(wrapfig.sty)
BuildRequires: tex-urlbst
BuildRequires: emacs xemacs xemacs-packages-extra
-Requires: gtksourceview2
+Requires: gtksourceview3
Requires: hicolor-icon-theme
Requires: texlive-base
Requires: vim-filesystem
@@ -94,7 +104,7 @@ This package contains an XEmacs support file for working with %{name} files.
%package all
Summary: Complete Why3 software verification platform suite
Requires: %{name}%{?_isa} = %{version}-%{release}
-Requires: alt-ergo coq cvc4 E gappalib-coq yices-tools z3 zenon
+Requires: alt-ergo coq cvc4 E yices-tools z3 zenon
%description all
This package provides a complete software verification platform suite
@@ -110,8 +120,10 @@ of why3 to applications.
%package -n ocaml-%{name}-devel
Summary: Development files for using the ocaml-%{name} library
Requires: ocaml-%{name}%{?_isa} = %{version}-%{release}
-Requires: ocaml-menhir-devel%{?_isa}
+Requires: ocaml-menhir%{?_isa}
Requires: ocaml-num-devel%{?_isa}
+Requires: ocaml-re-devel%{?_isa}
+Requires: ocaml-seq-devel%{?_isa}
Requires: ocaml-zip-devel%{?_isa}
%description -n ocaml-%{name}-devel
@@ -128,7 +140,7 @@ BuildArch: noarch
This package provides a why3 plugin for ProofGeneral.
%prep
-%setup -q
+%autosetup -p0
%setup -q -T -D -a 1
fixtimestamp() {
@@ -162,10 +174,15 @@ fixtimestamp examples/bts/20881.why
sed -i.orig 's,(MY_PATH_TO_WHY3)/share/whyitp,%{_emacs_sitelispdir},' share/whyitp/README
fixtimestamp share/whyitp/README
+# Fix building with mlmpfr support
+sed -i '/EXTPKGS/s/@ZIPLIB@/& @MLMPFR@/' Makefile.in
+sed -i 's/4\.0\.0/4.0.2/g' configure
+
%build
%configure --enable-verbose-make
make #%%{?_smp_mflags}
-make doc/manual.pdf
+make doc
+rm -f doc/html/.buildinfo examples/use_api/.merlin.in
%install
make install DESTDIR=%{buildroot}
@@ -193,9 +210,9 @@ mkdir -p %{buildroot}%{_texmf}/tex/latex/why3
cp -p share/latex/why3lang.sty %{buildroot}%{_texmf}/tex/latex/why3
# Move the gtksourceview language file to the right place
-mkdir -p %{buildroot}%{_datadir}/gtksourceview-2.0
+mkdir -p %{buildroot}%{_datadir}/gtksourceview-3.0
mv %{buildroot}%{_datadir}/%{name}/lang \
- %{buildroot}%{_datadir}/gtksourceview-2.0/language-specs
+ %{buildroot}%{_datadir}/gtksourceview-3.0/language-specs
# Install the desktop file
mkdir -p %{buildroot}%{_datadir}/applications
@@ -238,13 +255,15 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%{buildroot}%{_libdir}/ocaml/%{name}/*.cmxs
%files
-%doc AUTHORS CHANGES.md README.md doc/manual.pdf
+%doc AUTHORS CHANGES.md README.md doc/html doc/latex/manual.pdf
%license LICENSE
%{_bindir}/%{name}
%{_datadir}/%{name}/
%{_datadir}/applications/%{name}.desktop
%{_datadir}/bash-completion/
-%{_datadir}/gtksourceview-2.0/language-specs/%{name}.lang
+%{_datadir}/gtksourceview-3.0/language-specs/%{name}.lang
+%{_datadir}/gtksourceview-3.0/language-specs/%{name}c.lang
+%{_datadir}/gtksourceview-3.0/language-specs/%{name}py.lang
%{_datadir}/icons/hicolor/scalable/%{name}.svg
%{_datadir}/vim/vimfiles/ftdetect/%{name}.vim
%{_datadir}/vim/vimfiles/syntax/%{name}.vim
@@ -289,6 +308,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Wed Mar 25 2020 Jerry James - 1.3.1-1
+- Version 1.3.1
+
* Fri Jan 31 2020 Fedora Release Engineering - 1.2.1-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
From 1afbf9d426087420293c17044c9e1db782ecaee2 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Sat, 28 Mar 2020 07:59:20 -0600
Subject: [PATCH 006/113] Remove useless BRs and Rs (bz 1817878).
---
why3.spec | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/why3.spec b/why3.spec
index b61a105..93984b7 100644
--- a/why3.spec
+++ b/why3.spec
@@ -9,7 +9,7 @@
Name: why3
Version: 1.3.1
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
@@ -26,9 +26,7 @@ Source3: %{name}.appdata.xml
BuildRequires: coq
BuildRequires: emacs-proofgeneral
-BuildRequires: evince
BuildRequires: flocq
-BuildRequires: hevea
BuildRequires: latexmk
BuildRequires: libappstream-glib
BuildRequires: ocaml
@@ -36,13 +34,9 @@ BuildRequires: ocaml-camlp5-devel
BuildRequires: ocaml-findlib
BuildRequires: ocaml-lablgtk3-sourceview3-devel
BuildRequires: ocaml-ocamldoc
-BuildRequires: ocaml-ocamlgraph-devel
BuildRequires: ocaml-menhir-devel
BuildRequires: ocaml-mlmpfr-devel
BuildRequires: ocaml-num-devel
-BuildRequires: ocaml-re-devel
-BuildRequires: ocaml-seq-devel
-BuildRequires: ocaml-sqlite-devel
BuildRequires: ocaml-zarith-devel
BuildRequires: ocaml-zip-devel
BuildRequires: python3dist(sphinx)
@@ -51,6 +45,7 @@ BuildRequires: tex(capt-of.sty)
BuildRequires: tex(comment.sty)
BuildRequires: tex(fncychap.sty)
BuildRequires: tex(framed.sty)
+BuildRequires: tex(latex)
BuildRequires: tex(needspace.sty)
BuildRequires: tex(tabulary.sty)
BuildRequires: tex(upquote.sty)
@@ -308,6 +303,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Sat Mar 28 2020 Jerry James - 1.3.1-2
+- Remove useless BRs and Rs (bz 1817878)
+
* Wed Mar 25 2020 Jerry James - 1.3.1-1
- Version 1.3.1
From f0bb60aa8f05995d1254ef316766995533ab29d7 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Wed, 1 Apr 2020 15:41:27 -0600
Subject: [PATCH 007/113] Do not build with mlmpfr; symbols clash with
mlgmpidl, causing frama-c to fail to start. Obsolete the why2 packages.
---
why3.spec | 33 ++++++++++++++++++++++++---------
1 file changed, 24 insertions(+), 9 deletions(-)
diff --git a/why3.spec b/why3.spec
index 93984b7..7bade29 100644
--- a/why3.spec
+++ b/why3.spec
@@ -7,9 +7,12 @@
%global debug_package %{nil}
%endif
+# The plugin loader does not work with PIE
+%undefine _hardened_build
+
Name: why3
Version: 1.3.1
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
@@ -35,7 +38,6 @@ BuildRequires: ocaml-findlib
BuildRequires: ocaml-lablgtk3-sourceview3-devel
BuildRequires: ocaml-ocamldoc
BuildRequires: ocaml-menhir-devel
-BuildRequires: ocaml-mlmpfr-devel
BuildRequires: ocaml-num-devel
BuildRequires: ocaml-zarith-devel
BuildRequires: ocaml-zip-devel
@@ -53,15 +55,23 @@ BuildRequires: tex(wrapfig.sty)
BuildRequires: tex-urlbst
BuildRequires: emacs xemacs xemacs-packages-extra
-Requires: gtksourceview3
+Requires: gtksourceview3%{?_isa}
Requires: hicolor-icon-theme
-Requires: texlive-base
+Requires: texlive-base%{?_isa}
Requires: vim-filesystem
Provides: bundled(jquery)
# The corresponding Provides is not generated, so filter this out
%global __requires_exclude ocaml\\\(Why3\\\)
+# This can be removed when F36 reaches EOL
+Obsoletes: why < 2.41-12
+Provides: why = 2.41-12%{?dist}
+Obsoletes: why-jessie < 2.41-12
+Provides: why-jessie = 2.41-12%{?dist}
+Obsoletes: why-pvs-support < 2.41-12
+Provides: why-pvs-support = 2.41-12%{?dist}
+
%description
Why3 is the next generation of the Why software verification platform.
Why3 clearly separates the purely logical specification part from
@@ -99,7 +109,11 @@ This package contains an XEmacs support file for working with %{name} files.
%package all
Summary: Complete Why3 software verification platform suite
Requires: %{name}%{?_isa} = %{version}-%{release}
-Requires: alt-ergo coq cvc4 E yices-tools z3 zenon
+Requires: alt-ergo coq cvc4 E gappa yices-tools z3 zenon
+
+# This can be removed when F36 reaches EOL
+Obsoletes: why-all < 2.41-12
+Provides: why-all = 2.41-12%{?dist}
%description all
This package provides a complete software verification platform suite
@@ -169,10 +183,6 @@ fixtimestamp examples/bts/20881.why
sed -i.orig 's,(MY_PATH_TO_WHY3)/share/whyitp,%{_emacs_sitelispdir},' share/whyitp/README
fixtimestamp share/whyitp/README
-# Fix building with mlmpfr support
-sed -i '/EXTPKGS/s/@ZIPLIB@/& @MLMPFR@/' Makefile.in
-sed -i 's/4\.0\.0/4.0.2/g' configure
-
%build
%configure --enable-verbose-make
make #%%{?_smp_mflags}
@@ -303,6 +313,11 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Wed Apr 1 2020 Jerry James - 1.3.1-3
+- Do not build with mlmpfr; symbols clash with mlgmpidl, causing frama-c to
+ fail to start
+- Obsolete the why2 packages
+
* Sat Mar 28 2020 Jerry James - 1.3.1-2
- Remove useless BRs and Rs (bz 1817878)
From a11f9e23734ff44ad30ed2f49bb9bf5a6ed65839 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones"
Date: Sun, 5 Apr 2020 01:21:54 +0100
Subject: [PATCH 008/113] Update all OCaml dependencies for RPM 4.16.
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index 7bade29..66c266a 100644
--- a/why3.spec
+++ b/why3.spec
@@ -12,7 +12,7 @@
Name: why3
Version: 1.3.1
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
@@ -313,6 +313,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Sun Apr 05 2020 Richard W.M. Jones - 1.3.1-4
+- Update all OCaml dependencies for RPM 4.16.
+
* Wed Apr 1 2020 Jerry James - 1.3.1-3
- Do not build with mlmpfr; symbols clash with mlgmpidl, causing frama-c to
fail to start
From eff98692c983eb12614246e8b6f722bd9ab4281f Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Wed, 8 Apr 2020 21:16:14 -0600
Subject: [PATCH 009/113] Rebuild for flocq 3.2.1.
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index 66c266a..27a9102 100644
--- a/why3.spec
+++ b/why3.spec
@@ -12,7 +12,7 @@
Name: why3
Version: 1.3.1
-Release: 4%{?dist}
+Release: 5%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
@@ -313,6 +313,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Wed Apr 8 2020 Jerry James - 1.3.1-5
+- Rebuild for flocq 3.2.1
+
* Sun Apr 05 2020 Richard W.M. Jones - 1.3.1-4
- Update all OCaml dependencies for RPM 4.16.
From 957d86beca9b1aa57fe94e8a5944d5e03a22f0e9 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Sun, 12 Apr 2020 11:28:51 -0600
Subject: [PATCH 010/113] Make the dependencies on ocaml-num and ocaml-zip
explicit (bz 1795083).
---
why3.spec | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/why3.spec b/why3.spec
index 27a9102..2189927 100644
--- a/why3.spec
+++ b/why3.spec
@@ -7,12 +7,9 @@
%global debug_package %{nil}
%endif
-# The plugin loader does not work with PIE
-%undefine _hardened_build
-
Name: why3
Version: 1.3.1
-Release: 5%{?dist}
+Release: 6%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
@@ -121,6 +118,8 @@ based on Why3, including various automated and interactive provers.
%package -n ocaml-%{name}
Summary: Software verification library for ocaml
+Requires: ocaml-num%{?_isa}
+Requires: ocaml-zip-devel%{?_isa}
%description -n ocaml-%{name}
This package contains an ocaml library that exposes the functionality
@@ -133,7 +132,6 @@ Requires: ocaml-menhir%{?_isa}
Requires: ocaml-num-devel%{?_isa}
Requires: ocaml-re-devel%{?_isa}
Requires: ocaml-seq-devel%{?_isa}
-Requires: ocaml-zip-devel%{?_isa}
%description -n ocaml-%{name}-devel
This package contains development files needed to build applications
@@ -313,6 +311,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Sun Apr 12 2020 Jerry James - 1.3.1-6
+- Make the dependencies on ocaml-num and ocaml-zip explicit (bz 1795083)
+
* Wed Apr 8 2020 Jerry James - 1.3.1-5
- Rebuild for flocq 3.2.1
From b03827d308f0beeedb5c0f8ea87669ed534e1176 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones"
Date: Tue, 5 May 2020 18:37:15 +0100
Subject: [PATCH 011/113] OCaml 4.11.0+dev2-2020-04-22 rebuild
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index 2189927..92b71c8 100644
--- a/why3.spec
+++ b/why3.spec
@@ -9,7 +9,7 @@
Name: why3
Version: 1.3.1
-Release: 6%{?dist}
+Release: 7%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
@@ -311,6 +311,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Tue May 05 2020 Richard W.M. Jones - 1.3.1-7
+- OCaml 4.11.0+dev2-2020-04-22 rebuild
+
* Sun Apr 12 2020 Jerry James - 1.3.1-6
- Make the dependencies on ocaml-num and ocaml-zip explicit (bz 1795083)
From c8fd5541d548c4db20b2bd7279b4ded12df831d0 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Wed, 20 May 2020 10:26:29 -0600
Subject: [PATCH 012/113] Rebuild for coq 8.11.1.
---
why3.spec | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/why3.spec b/why3.spec
index 92b71c8..00e5716 100644
--- a/why3.spec
+++ b/why3.spec
@@ -9,7 +9,7 @@
Name: why3
Version: 1.3.1
-Release: 7%{?dist}
+Release: 8%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
@@ -56,6 +56,9 @@ Requires: gtksourceview3%{?_isa}
Requires: hicolor-icon-theme
Requires: texlive-base%{?_isa}
Requires: vim-filesystem
+
+Recommends: bash-completion
+
Provides: bundled(jquery)
# The corresponding Provides is not generated, so filter this out
@@ -263,7 +266,7 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%{_bindir}/%{name}
%{_datadir}/%{name}/
%{_datadir}/applications/%{name}.desktop
-%{_datadir}/bash-completion/
+%{_datadir}/bash-completion/completions/why3
%{_datadir}/gtksourceview-3.0/language-specs/%{name}.lang
%{_datadir}/gtksourceview-3.0/language-specs/%{name}c.lang
%{_datadir}/gtksourceview-3.0/language-specs/%{name}py.lang
@@ -311,6 +314,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Wed May 20 2020 Jerry James - 1.3.1-8
+- Rebuild for coq 8.11.1
+
* Tue May 05 2020 Richard W.M. Jones - 1.3.1-7
- OCaml 4.11.0+dev2-2020-04-22 rebuild
From 3c88e1d2c431efb6c62cf79a5e0b23969b0454c3 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Sun, 14 Jun 2020 10:42:30 -0600
Subject: [PATCH 013/113] Rebuild for flocq 3.3.1.
- Build the coq files with the native compiler when possible.
---
why3.spec | 20 ++++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-)
diff --git a/why3.spec b/why3.spec
index 00e5716..b5ff825 100644
--- a/why3.spec
+++ b/why3.spec
@@ -9,7 +9,7 @@
Name: why3
Version: 1.3.1
-Release: 8%{?dist}
+Release: 9%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
@@ -159,11 +159,14 @@ fixtimestamp() {
}
# Use the correct compiler flags, keep timestamps, and harden the build due to
-# network use
+# network use. Force native compilation when available.
# Link the binaries with runtime compiled with -fPIC.
# This avoids many link-time errors.
sed -e "s|-Wall|$RPM_OPT_FLAGS|;s/ -O -g//" \
-e "s/cp /cp -p /" \
+%ifarch %{ocaml_native_compiler}
+ -e 's/\$(COQC)/& -native-compiler yes/' \
+%endif
-e "s|^OLINKFLAGS =.*|& -runtime-variant _pic -ccopt \"$RPM_LD_FLAGS\"|" \
-i Makefile.in
@@ -194,6 +197,15 @@ rm -f doc/html/.buildinfo examples/use_api/.merlin.in
make install DESTDIR=%{buildroot}
make install-lib DESTDIR=%{buildroot}
+%ifarch %{ocaml_native_compiler}
+# Install the native coq files
+cd lib/coq
+for dir in $(find . -name .coq-native); do
+ cp -a $dir %{buildroot}%{_libdir}/%{name}/coq/$dir
+done
+cd -
+%endif
+
# Install the man pages
mkdir -p %{buildroot}%{_mandir}/man1
cd man
@@ -314,6 +326,10 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Sat Jun 13 2020 Jerry James - 1.3.1-9
+- Rebuild for flocq 3.3.1
+- Build the coq files with the native compiler when possible
+
* Wed May 20 2020 Jerry James - 1.3.1-8
- Rebuild for coq 8.11.1
From 0e4bdcd4be86605c45651b5c389c4f9bb1a3d2ca Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Mon, 15 Jun 2020 14:41:39 -0600
Subject: [PATCH 014/113] Rebuild for coq 8.11.2.
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index b5ff825..cbd706e 100644
--- a/why3.spec
+++ b/why3.spec
@@ -9,7 +9,7 @@
Name: why3
Version: 1.3.1
-Release: 9%{?dist}
+Release: 10%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
@@ -326,6 +326,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Mon Jun 15 2020 Jerry James - 1.3.1-10
+- Rebuild for coq 8.11.2
+
* Sat Jun 13 2020 Jerry James - 1.3.1-9
- Rebuild for flocq 3.3.1
- Build the coq files with the native compiler when possible
From 202d697c56acba502483e3e13d7a83a363a80689 Mon Sep 17 00:00:00 2001
From: Fedora Release Engineering
Date: Wed, 29 Jul 2020 14:07:45 +0000
Subject: [PATCH 015/113] - Rebuilt for
https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
Signed-off-by: Fedora Release Engineering
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index cbd706e..86737fc 100644
--- a/why3.spec
+++ b/why3.spec
@@ -9,7 +9,7 @@
Name: why3
Version: 1.3.1
-Release: 10%{?dist}
+Release: 11%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
@@ -326,6 +326,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Wed Jul 29 2020 Fedora Release Engineering - 1.3.1-11
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
+
* Mon Jun 15 2020 Jerry James - 1.3.1-10
- Rebuild for coq 8.11.2
From f2bbb5e16f606533e50ec7adab8ae1e013807330 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Thu, 6 Aug 2020 21:41:16 -0600
Subject: [PATCH 016/113] Rebuild for ocaml-lablgtk3 3.1.1 and ocaml-menhir
20200624.
---
why3.spec | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/why3.spec b/why3.spec
index 86737fc..3fe222c 100644
--- a/why3.spec
+++ b/why3.spec
@@ -9,7 +9,7 @@
Name: why3
Version: 1.3.1
-Release: 11%{?dist}
+Release: 12%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
@@ -33,13 +33,13 @@ BuildRequires: ocaml
BuildRequires: ocaml-camlp5-devel
BuildRequires: ocaml-findlib
BuildRequires: ocaml-lablgtk3-sourceview3-devel
-BuildRequires: ocaml-ocamldoc
-BuildRequires: ocaml-menhir-devel
+BuildRequires: ocaml-menhir
BuildRequires: ocaml-num-devel
+BuildRequires: ocaml-ocamldoc
BuildRequires: ocaml-zarith-devel
BuildRequires: ocaml-zip-devel
-BuildRequires: python3dist(sphinx)
-BuildRequires: python3dist(sphinxcontrib-bibtex)
+BuildRequires: %{py3_dist sphinx}
+BuildRequires: %{py3_dist sphinxcontrib-bibtex}
BuildRequires: tex(capt-of.sty)
BuildRequires: tex(comment.sty)
BuildRequires: tex(fncychap.sty)
@@ -326,6 +326,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Thu Aug 6 2020 Jerry James - 1.3.1-13
+- Rebuild for ocaml-lablgtk3 3.1.1 and ocaml-menhir 20200624
+
* Wed Jul 29 2020 Fedora Release Engineering - 1.3.1-11
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
From 369eac4f4ee3d01f8c36cac6ef32f287aa388793 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones"
Date: Mon, 24 Aug 2020 16:32:42 +0100
Subject: [PATCH 017/113] OCaml 4.11.0 rebuild
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index 3fe222c..71ec658 100644
--- a/why3.spec
+++ b/why3.spec
@@ -9,7 +9,7 @@
Name: why3
Version: 1.3.1
-Release: 12%{?dist}
+Release: 13%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
@@ -326,6 +326,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Mon Aug 24 2020 Richard W.M. Jones - 1.3.1-13
+- OCaml 4.11.0 rebuild
+
* Thu Aug 6 2020 Jerry James - 1.3.1-13
- Rebuild for ocaml-lablgtk3 3.1.1 and ocaml-menhir 20200624
From acfebc1a4533b6b5aa3eb40bd09145ebd19e8d06 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones"
Date: Mon, 24 Aug 2020 16:52:27 +0100
Subject: [PATCH 018/113] +BR graphviz
Previous build failed with:
ccomps -X smt-libv2.gen doc/generated/drivers-all.dot > doc/generated/drivers-smt.dot
/bin/sh: ccomps: command not found
---
why3.spec | 1 +
1 file changed, 1 insertion(+)
diff --git a/why3.spec b/why3.spec
index 71ec658..756dfb0 100644
--- a/why3.spec
+++ b/why3.spec
@@ -51,6 +51,7 @@ BuildRequires: tex(upquote.sty)
BuildRequires: tex(wrapfig.sty)
BuildRequires: tex-urlbst
BuildRequires: emacs xemacs xemacs-packages-extra
+BuildRequires: graphviz
Requires: gtksourceview3%{?_isa}
Requires: hicolor-icon-theme
From 78b813a96f621ee6a27494a885f716a2dd19625e Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Tue, 1 Sep 2020 14:32:30 -0600
Subject: [PATCH 019/113] Rebuild for coq 8.12.0.
---
why3.spec | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/why3.spec b/why3.spec
index 756dfb0..b6bfda4 100644
--- a/why3.spec
+++ b/why3.spec
@@ -160,14 +160,10 @@ fixtimestamp() {
}
# Use the correct compiler flags, keep timestamps, and harden the build due to
-# network use. Force native compilation when available.
-# Link the binaries with runtime compiled with -fPIC.
+# network use. Link the binaries with runtime compiled with -fPIC.
# This avoids many link-time errors.
sed -e "s|-Wall|$RPM_OPT_FLAGS|;s/ -O -g//" \
-e "s/cp /cp -p /" \
-%ifarch %{ocaml_native_compiler}
- -e 's/\$(COQC)/& -native-compiler yes/' \
-%endif
-e "s|^OLINKFLAGS =.*|& -runtime-variant _pic -ccopt \"$RPM_LD_FLAGS\"|" \
-i Makefile.in
@@ -327,10 +323,13 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Tue Sep 1 2020 Jerry James - 1.3.1-13
+- Rebuild for coq 8.12.0
+
* Mon Aug 24 2020 Richard W.M. Jones - 1.3.1-13
- OCaml 4.11.0 rebuild
-* Thu Aug 6 2020 Jerry James - 1.3.1-13
+* Thu Aug 6 2020 Jerry James - 1.3.1-12
- Rebuild for ocaml-lablgtk3 3.1.1 and ocaml-menhir 20200624
* Wed Jul 29 2020 Fedora Release Engineering - 1.3.1-11
From 35c8f0045f31120ed3aacfe3b143c7d4e1e7a44f Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones"
Date: Wed, 2 Sep 2020 14:48:05 +0100
Subject: [PATCH 020/113] ExcludeArch s390x (see RHBZ#1874879).
---
why3.spec | 3 +++
1 file changed, 3 insertions(+)
diff --git a/why3.spec b/why3.spec
index b6bfda4..09e9c90 100644
--- a/why3.spec
+++ b/why3.spec
@@ -24,6 +24,9 @@ Source2: %{name}.desktop
# AppData file written by Jerry James
Source3: %{name}.appdata.xml
+# https://bugzilla.redhat.com/show_bug.cgi?id=1874879
+ExcludeArch: s390x
+
BuildRequires: coq
BuildRequires: emacs-proofgeneral
BuildRequires: flocq
From cb21b2babf84c097c21f704d796f39005d60a81e Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones"
Date: Wed, 2 Sep 2020 16:50:48 +0100
Subject: [PATCH 021/113] OCaml 4.11.1 rebuild
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index 09e9c90..647003e 100644
--- a/why3.spec
+++ b/why3.spec
@@ -9,7 +9,7 @@
Name: why3
Version: 1.3.1
-Release: 13%{?dist}
+Release: 14%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
@@ -326,6 +326,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Wed Sep 02 2020 Richard W.M. Jones - 1.3.1-14
+- OCaml 4.11.1 rebuild
+
* Tue Sep 1 2020 Jerry James - 1.3.1-13
- Rebuild for coq 8.12.0
From ce67cc4389882a879ed19728f1d59c14cdfc2b41 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Sat, 26 Sep 2020 14:52:38 -0600
Subject: [PATCH 022/113] Version 1.3.3.
---
sources | 2 +-
why3.spec | 22 ++++++++--------------
2 files changed, 9 insertions(+), 15 deletions(-)
diff --git a/sources b/sources
index 4fd5814..a66b83d 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
SHA512 (why3-man.tar.xz) = 8355776ac8a67a56ae7354f8fd40dc5d2057022d1035090a3e38e139fbfe3c258fe3ccbed6e333cb005e66c7b4cdbbf6580e3420170fd08384cc9b36ce5ec2a1
-SHA512 (why3-1.3.1.tar.gz) = 2412c9bfcac8dbbee6657d39ec3ed006e1a8dc7522873041c53b9c572a752e7cc20b55378fe916e0f9d97de82705f6c01a17d2aa2f8c20a4fbdd2673bb78d34a
+SHA512 (why3-1.3.3.tar.gz) = a2dc95691cea29bbd20843a05add3985f777085086b654b53566ecdb752ba892366da703e232c85d5e0237d0e59564527aed55f6ccae9118d49e5f2cf93a53ce
diff --git a/why3.spec b/why3.spec
index 647003e..9aef51a 100644
--- a/why3.spec
+++ b/why3.spec
@@ -8,14 +8,14 @@
%endif
Name: why3
-Version: 1.3.1
-Release: 14%{?dist}
+Version: 1.3.3
+Release: 1%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
License: LGPLv2 with exceptions
URL: http://why3.lri.fr/
-Source0: https://gforge.inria.fr/frs/download.php/file/38291/%{name}-%{version}.tar.gz
+Source0: https://gforge.inria.fr/frs/download.php/file/38367/%{name}-%{version}.tar.gz
# Man pages written by Jerry James using text found in the sources. Hence,
# the copyright and license are the same as for the upstream sources.
Source1: %{name}-man.tar.xz
@@ -174,15 +174,6 @@ sed -e "s|-Wall|$RPM_OPT_FLAGS|;s/ -O -g//" \
find -O3 examples -type f -perm /0111 -exec chmod a-x {} \+
chmod a+x examples/*.sh
-# Remove spurious shebangs
-sed -i.orig '/#!.*/d' examples/use_api/runstrat/{echo,run}_wait.ml
-fixtimestamp examples/use_api/runstrat/echo_wait.ml
-fixtimestamp examples/use_api/runstrat/run_wait.ml
-
-# Fix end of line encodings
-sed -i.orig 's/\r//' examples/bts/20881.why
-fixtimestamp examples/bts/20881.why
-
# Update the ProofGeneral integration instructions
sed -i.orig 's,(MY_PATH_TO_WHY3)/share/whyitp,%{_emacs_sitelispdir},' share/whyitp/README
fixtimestamp share/whyitp/README
@@ -194,8 +185,8 @@ make doc
rm -f doc/html/.buildinfo examples/use_api/.merlin.in
%install
-make install DESTDIR=%{buildroot}
-make install-lib DESTDIR=%{buildroot}
+%make_install
+make install-lib DESTDIR=%{?buildroot} INSTALL="%{__install} -p"
%ifarch %{ocaml_native_compiler}
# Install the native coq files
@@ -326,6 +317,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Fri Sep 25 2020 Jerry James - 1.3.3-1
+- Version 1.3.3
+
* Wed Sep 02 2020 Richard W.M. Jones - 1.3.1-14
- OCaml 4.11.1 rebuild
From c70fceec203f7c3f788e58829d5f0cceaff915f3 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Mon, 9 Nov 2020 21:21:12 -0700
Subject: [PATCH 023/113] Explicitly BR make.
---
why3.spec | 1 +
1 file changed, 1 insertion(+)
diff --git a/why3.spec b/why3.spec
index 9aef51a..1d49d4d 100644
--- a/why3.spec
+++ b/why3.spec
@@ -32,6 +32,7 @@ BuildRequires: emacs-proofgeneral
BuildRequires: flocq
BuildRequires: latexmk
BuildRequires: libappstream-glib
+BuildRequires: make
BuildRequires: ocaml
BuildRequires: ocaml-camlp5-devel
BuildRequires: ocaml-findlib
From d67e103d2448b515b516c75ae44da48b1d14e76a Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Wed, 2 Dec 2020 16:45:58 -0700
Subject: [PATCH 024/113] Rebuild for coq 8.12.1 and menhir 20201201.
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index 1d49d4d..5530633 100644
--- a/why3.spec
+++ b/why3.spec
@@ -9,7 +9,7 @@
Name: why3
Version: 1.3.3
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
@@ -318,6 +318,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Wed Dec 2 2020 Jerry James - 1.3.3-2
+- Rebuild for coq 8.12.1 and menhir 20201201
+
* Fri Sep 25 2020 Jerry James - 1.3.3-1
- Version 1.3.3
From 45d462efce09b6411ceda403ecef066b44e60a11 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Wed, 23 Dec 2020 20:04:28 -0700
Subject: [PATCH 025/113] Rebuild for coq 8.12.2.
---
why3-sphinxcontrib-bibtex.patch | 10 ++++++++++
why3.spec | 7 ++++++-
2 files changed, 16 insertions(+), 1 deletion(-)
create mode 100644 why3-sphinxcontrib-bibtex.patch
diff --git a/why3-sphinxcontrib-bibtex.patch b/why3-sphinxcontrib-bibtex.patch
new file mode 100644
index 0000000..9939fd8
--- /dev/null
+++ b/why3-sphinxcontrib-bibtex.patch
@@ -0,0 +1,10 @@
+--- doc/conf.py.orig 2020-09-11 08:06:19.000000000 -0600
++++ doc/conf.py 2020-12-23 08:29:46.914254118 -0700
+@@ -50,6 +50,7 @@ master_doc = 'index'
+ project = 'Why3'
+ copyright = '2020, The Why3 Development Team'
+ author = 'The Why3 Development Team'
++bibtex_bibfiles = ['manual.bib']
+
+ # The version info for the project you're documenting, acts as replacement for
+ # |version| and |release|, also used in various other places throughout the
diff --git a/why3.spec b/why3.spec
index 5530633..6514eb5 100644
--- a/why3.spec
+++ b/why3.spec
@@ -9,7 +9,7 @@
Name: why3
Version: 1.3.3
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
@@ -23,6 +23,8 @@ Source1: %{name}-man.tar.xz
Source2: %{name}.desktop
# AppData file written by Jerry James
Source3: %{name}.appdata.xml
+# Adapt to sphinxcontrib-bibtex 2.x
+Patch0: %{name}-sphinxcontrib-bibtex.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=1874879
ExcludeArch: s390x
@@ -318,6 +320,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Wed Dec 23 2020 Jerry James - 1.3.3-3
+- Rebuild for coq 8.12.2
+
* Wed Dec 2 2020 Jerry James - 1.3.3-2
- Rebuild for coq 8.12.1 and menhir 20201201
From c4d0ea219633909fab7fa34819e870a903d168a6 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Sat, 2 Jan 2021 09:58:01 -0700
Subject: [PATCH 026/113] Rebuild for flocq 3.4.0.
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index 6514eb5..17a0c26 100644
--- a/why3.spec
+++ b/why3.spec
@@ -9,7 +9,7 @@
Name: why3
Version: 1.3.3
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
@@ -320,6 +320,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Sat Jan 2 2021 Jerry James - 1.3.3-4
+- Rebuild for flocq 3.4.0
+
* Wed Dec 23 2020 Jerry James - 1.3.3-3
- Rebuild for coq 8.12.2
From 0db20fd8bfc4d8910b9bde1979f229053b89a65e Mon Sep 17 00:00:00 2001
From: Fedora Release Engineering
Date: Wed, 27 Jan 2021 23:29:11 +0000
Subject: [PATCH 027/113] - Rebuilt for
https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
Signed-off-by: Fedora Release Engineering
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index 17a0c26..ac35a48 100644
--- a/why3.spec
+++ b/why3.spec
@@ -9,7 +9,7 @@
Name: why3
Version: 1.3.3
-Release: 4%{?dist}
+Release: 5%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
@@ -320,6 +320,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Wed Jan 27 2021 Fedora Release Engineering - 1.3.3-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
+
* Sat Jan 2 2021 Jerry James - 1.3.3-4
- Rebuild for flocq 3.4.0
From 7492f576fa7383e483a246da04adc7bb85d4d477 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Sun, 21 Feb 2021 09:10:35 -0700
Subject: [PATCH 028/113] Rebuild for coq 8.13.0.
- Update metainfo and install in metainfodir.
---
why3-coq8.13.patch | 99 ++++++++++++++++++++++++++++++++++++++++++++++
why3.appdata.xml | 43 --------------------
why3.metainfo.xml | 48 ++++++++++++++++++++++
why3.spec | 18 +++++++--
4 files changed, 161 insertions(+), 47 deletions(-)
create mode 100644 why3-coq8.13.patch
delete mode 100644 why3.appdata.xml
create mode 100644 why3.metainfo.xml
diff --git a/why3-coq8.13.patch b/why3-coq8.13.patch
new file mode 100644
index 0000000..8d63618
--- /dev/null
+++ b/why3-coq8.13.patch
@@ -0,0 +1,99 @@
+--- configure.in.orig 2020-09-11 08:06:19.000000000 -0600
++++ configure.in 2021-02-06 20:18:51.197299198 -0700
+@@ -869,6 +869,9 @@ if test "$enable_coq_support" = yes; the
+ 8.12*)
+ coq_compat_version="COQ812"
+ ;;
++ 8.13*)
++ coq_compat_version="COQ813"
++ ;;
+ *)
+ enable_coq_support=no
+ AC_MSG_WARN(You need Coq 8.6 or later; Coq discarded)
+--- configure.orig 2020-09-11 08:06:19.000000000 -0600
++++ configure 2021-02-06 20:19:13.736250432 -0700
+@@ -5365,6 +5365,9 @@ $as_echo "$COQVERSION" >&6; }
+ 8.12*)
+ coq_compat_version="COQ812"
+ ;;
++ 8.13*)
++ coq_compat_version="COQ813"
++ ;;
+ *)
+ enable_coq_support=no
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You need Coq 8.6 or later; Coq discarded" >&5
+--- lib/coq/ieee_float/GenericFloat.v.orig 2020-09-11 08:06:19.000000000 -0600
++++ lib/coq/ieee_float/GenericFloat.v 2021-02-06 20:19:40.687192153 -0700
+@@ -3726,7 +3726,8 @@ Proof.
+ assert (- pow2sb <= pow2sb <= pow2sb)%Z.
+ split; auto with zarith.
+ assert (0 < pow2sb)%Z.
+- apply (Z.pow_pos_nonneg 2 sb); auto with zarith.
++ apply (Z.pow_pos_nonneg 2 sb).
++ easy.
+ apply Z.lt_le_incl, Hsb'.
+ auto with zarith.
+
+--- lib/coq/set/FsetInt.v.orig 2020-09-11 08:06:19.000000000 -0600
++++ lib/coq/set/FsetInt.v 2021-02-06 20:21:15.476987120 -0700
+@@ -166,15 +166,13 @@ induction len; eauto.
+ intros. simpl. rewrite IHlen. reflexivity.
+ Qed.
+
+-(* Why3 goal *)
+-Definition interval :
+- Numbers.BinNums.Z -> Numbers.BinNums.Z -> set.Fset.fset Numbers.BinNums.Z.
++Lemma interval_proof :
++ forall l r : int, exists s : list int,
++ List.NoDup s /\
++ forall e : int, List.In e s <->
++ (if Z_le_dec l e then if Z_lt_dec e r then true else false else false) = true.
+ Proof.
+ intros l r.
+-exists (fun x => if Z_le_dec l x then
+- if Z_lt_dec x r then true
+- else false
+- else false).
+ destruct (Z_le_dec l r).
+ + exists (seqZ l (Z.to_nat (r - l))%Z).
+ split.
+@@ -185,8 +183,8 @@ destruct (Z_le_dec l r).
+ destruct Z_le_dec.
+ * destruct Z_lt_dec. split; intros; [reflexivity|].
+ intuition.
+- intuition. inversion H.
+- * intuition. inversion H.
++ intuition ; try inversion H.
++ * intuition ; try inversion H.
+ + exists List.nil.
+ split.
+ - constructor.
+@@ -195,6 +193,18 @@ destruct (Z_le_dec l r).
+ omega.
+ inversion H.
+ inversion H.
++Qed.
++
++(* Why3 goal *)
++Definition interval :
++ Numbers.BinNums.Z -> Numbers.BinNums.Z -> set.Fset.fset Numbers.BinNums.Z.
++Proof.
++intros l r.
++exists (fun x =>
++ if Z_le_dec l x then
++ if Z_lt_dec x r then true else false
++ else false).
++apply interval_proof.
+ Defined.
+
+ (* Why3 goal *)
+--- share/provers-detection-data.conf.orig 2020-09-11 08:06:19.000000000 -0600
++++ share/provers-detection-data.conf 2021-02-06 20:21:48.348916001 -0700
+@@ -751,6 +751,7 @@ support_library = "%l/coq/version"
+ exec = "coqtop"
+ version_switch = "-v"
+ version_regexp = "The Coq Proof Assistant, version \\([^ \n]+\\)"
++version_ok = "^8\.13\.[0-9]+$"
+ version_ok = "^8\.12\.[0-9]+$"
+ version_ok = "^8\.11\.[0-9]+$"
+ version_ok = "^8\.10\.[0-9]+$"
diff --git a/why3.appdata.xml b/why3.appdata.xml
deleted file mode 100644
index d8aa5cc..0000000
--- a/why3.appdata.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
- why3.desktop
- 0BSD
- LGPL-2.1-only WITH OCaml-LGPL-linking-exception
- Why3
- Software verification platform
-
-
- Why3 is the next generation of the Why software verification platform. Why3
- clearly separates the purely logical specification part from generation of
- verification conditions for programs. It features a rich library of proof
- task transformations that can be chained to produce a suitable input for a
- large set of theorem provers, including SMT solvers, TPTP provers, as well as
- interactive proof assistants.
-
-
-
-
- http://why3.lri.fr/doc/gui-1.png
- Initial Why3 GUI window
-
-
- http://why3.lri.fr/doc/gui-2.png
- The Why3 GUI with goal G1 selected
-
-
- http://why3.lri.fr/doc/gui-3.png
- The Why3 GUI after running Alt-Ergo on each goal
-
-
- http://why3.lri.fr/doc/gui-4.png
- The Why3 GUI after splitting goal G2
-
-
- http://why3.lri.fr/doc/gui-5.png
- File reloaded after modifying goal G2
-
-
- loganjerry@gmail.com
- http://why3.lri.fr/
- https://gitlab.inria.fr/why3/why3/issues
-
diff --git a/why3.metainfo.xml b/why3.metainfo.xml
new file mode 100644
index 0000000..f6c8bda
--- /dev/null
+++ b/why3.metainfo.xml
@@ -0,0 +1,48 @@
+
+
+ why3.desktop
+ 0BSD
+ LGPL-2.1-only WITH OCaml-LGPL-linking-exception
+ Why3
+ Software verification platform
+
+
+ Why3 is the next generation of the Why software verification platform.
+ Why3 clearly separates the purely logical specification part from
+ generation of verification conditions for programs. It features a rich
+ library of proof task transformations that can be chained to produce a
+ suitable input for a large set of theorem provers, including SMT solvers,
+ TPTP provers, as well as interactive proof assistants.
+
+
+ why3.desktop
+
+
+ http://why3.lri.fr/doc/gui-1.png
+ Initial Why3 GUI window
+
+
+ http://why3.lri.fr/doc/gui-2.png
+ The Why3 GUI with goal G1 selected
+
+
+ http://why3.lri.fr/doc/gui-3.png
+ The Why3 GUI after running Alt-Ergo on each goal
+
+
+ http://why3.lri.fr/doc/gui-4.png
+ The Why3 GUI after splitting goal G2
+
+
+ http://why3.lri.fr/doc/gui-5.png
+ File reloaded after modifying goal G2
+
+
+ loganjerry@gmail.com
+ http://why3.lri.fr/
+ https://gitlab.inria.fr/why3/why3/issues
+
+
+ why3
+
+
diff --git a/why3.spec b/why3.spec
index ac35a48..8a8875c 100644
--- a/why3.spec
+++ b/why3.spec
@@ -9,7 +9,7 @@
Name: why3
Version: 1.3.3
-Release: 5%{?dist}
+Release: 6%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
@@ -22,9 +22,12 @@ Source1: %{name}-man.tar.xz
# Desktop file written by Jerry James
Source2: %{name}.desktop
# AppData file written by Jerry James
-Source3: %{name}.appdata.xml
+Source3: %{name}.metainfo.xml
# Adapt to sphinxcontrib-bibtex 2.x
Patch0: %{name}-sphinxcontrib-bibtex.patch
+# Permit use of coq 8.13.0
+# https://gitlab.inria.fr/why3/why3/-/commit/31b5bf527804793c10f26acd2a14045be71d256c
+Patch1: %{name}-coq8.13.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=1874879
ExcludeArch: s390x
@@ -42,6 +45,8 @@ BuildRequires: ocaml-lablgtk3-sourceview3-devel
BuildRequires: ocaml-menhir
BuildRequires: ocaml-num-devel
BuildRequires: ocaml-ocamldoc
+BuildRequires: ocaml-re-devel
+BuildRequires: ocaml-seq-devel
BuildRequires: ocaml-zarith-devel
BuildRequires: ocaml-zip-devel
BuildRequires: %{py3_dist sphinx}
@@ -65,6 +70,7 @@ Requires: texlive-base%{?_isa}
Requires: vim-filesystem
Recommends: bash-completion
+Recommends: flocq
Provides: bundled(jquery)
@@ -238,7 +244,7 @@ cp -p share/images/src/logo-kim.svg \
# Install the AppStream metadata
mkdir -p %{buildroot}%{_metainfodir}
cp -p %{SOURCE3} %{buildroot}%{_metainfodir}
-appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/%{name}.appdata.xml
+appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/%{name}.metainfo.xml
# Move the vim file to the right place
mkdir -p %{buildroot}%{_datadir}/vim/vimfiles
@@ -283,7 +289,7 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%{_texmf}/tex/latex/why3/
%{_libdir}/%{name}/
%{_mandir}/man1/%{name}*
-%{_metainfodir}/%{name}.appdata.xml
+%{_metainfodir}/%{name}.metainfo.xml
%files -n ocaml-%{name}
%dir %{_libdir}/ocaml/%{name}/
@@ -320,6 +326,10 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Sat Feb 20 2021 Jerry James - 1.3.3-6
+- Rebuild for coq 8.13.0
+- Update metainfo and install in metainfodir
+
* Wed Jan 27 2021 Fedora Release Engineering - 1.3.3-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
From 9f20e5d4a1fb17ae0fe95d787971f9413ca9aee1 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones"
Date: Tue, 2 Mar 2021 11:18:13 +0000
Subject: [PATCH 029/113] OCaml 4.12.0 build
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index 8a8875c..2fc4a72 100644
--- a/why3.spec
+++ b/why3.spec
@@ -9,7 +9,7 @@
Name: why3
Version: 1.3.3
-Release: 6%{?dist}
+Release: 7%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
@@ -326,6 +326,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Tue Mar 2 11:18:12 GMT 2021 Richard W.M. Jones - 1.3.3-7
+- OCaml 4.12.0 build
+
* Sat Feb 20 2021 Jerry James - 1.3.3-6
- Rebuild for coq 8.13.0
- Update metainfo and install in metainfodir
From fa27403bfbfc12d788fe1a2e7a576d0ad13151f2 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Wed, 3 Mar 2021 12:13:33 -0700
Subject: [PATCH 030/113] Rebuild for coq 8.13.1 and ocaml-zarith 1.12.
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index 2fc4a72..68bc13e 100644
--- a/why3.spec
+++ b/why3.spec
@@ -9,7 +9,7 @@
Name: why3
Version: 1.3.3
-Release: 7%{?dist}
+Release: 8%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
@@ -326,6 +326,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Wed Mar 3 2021 Jerry James - 1.3.3-8
+- Rebuild for coq 8.13.1 and ocaml-zarith 1.12
+
* Tue Mar 2 11:18:12 GMT 2021 Richard W.M. Jones - 1.3.3-7
- OCaml 4.12.0 build
From 5af1d5643b19efa5fbfce65e2d09b0c0c1eed87c Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Sat, 12 Jun 2021 15:39:50 -0600
Subject: [PATCH 031/113] Rebuild for ocaml-menhir 20210419.
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index 68bc13e..af98d64 100644
--- a/why3.spec
+++ b/why3.spec
@@ -9,7 +9,7 @@
Name: why3
Version: 1.3.3
-Release: 8%{?dist}
+Release: 9%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
@@ -326,6 +326,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Tue Jun 8 2021 Jerry James - 1.3.3-9
+- Rebuild for ocaml-menhir 20210419
+
* Wed Mar 3 2021 Jerry James - 1.3.3-8
- Rebuild for coq 8.13.1 and ocaml-zarith 1.12
From 8fbcc2ddf47ac10301c46d3e5f04bb45d39d95ec Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Wed, 14 Jul 2021 18:36:00 -0600
Subject: [PATCH 032/113] Version 1.4.0.
- Drop all patches.
- Validate with appstreamcli instead of appstream-util.
---
why3.desktop => fr.lri.why3.desktop | 0
why3.metainfo.xml => fr.lri.why3.metainfo.xml | 22 ++---
sources | 2 +-
why3-coq8.13.patch | 99 -------------------
why3-sphinxcontrib-bibtex.patch | 10 --
why3.spec | 30 +++---
6 files changed, 28 insertions(+), 135 deletions(-)
rename why3.desktop => fr.lri.why3.desktop (100%)
rename why3.metainfo.xml => fr.lri.why3.metainfo.xml (66%)
delete mode 100644 why3-coq8.13.patch
delete mode 100644 why3-sphinxcontrib-bibtex.patch
diff --git a/why3.desktop b/fr.lri.why3.desktop
similarity index 100%
rename from why3.desktop
rename to fr.lri.why3.desktop
diff --git a/why3.metainfo.xml b/fr.lri.why3.metainfo.xml
similarity index 66%
rename from why3.metainfo.xml
rename to fr.lri.why3.metainfo.xml
index f6c8bda..0c44545 100644
--- a/why3.metainfo.xml
+++ b/fr.lri.why3.metainfo.xml
@@ -1,6 +1,6 @@
- why3.desktop
+ fr.lri.why3.desktop
0BSD
LGPL-2.1-only WITH OCaml-LGPL-linking-exception
Why3
@@ -15,27 +15,27 @@
TPTP provers, as well as interactive proof assistants.
- why3.desktop
+ fr.lri.why3.desktop
- http://why3.lri.fr/doc/gui-1.png
+ http://why3.lri.fr/doc/_images/gui-1.png
Initial Why3 GUI window
- http://why3.lri.fr/doc/gui-2.png
- The Why3 GUI with goal G1 selected
+ http://why3.lri.fr/doc/_images/gui-2.png
+ The Why3 GUI with goal G1 selected
- http://why3.lri.fr/doc/gui-3.png
- The Why3 GUI after running Alt-Ergo on each goal
+ http://why3.lri.fr/doc/_images/gui-3.png
+ The Why3 GUI after running Alt-Ergo on each goal
- http://why3.lri.fr/doc/gui-4.png
- The Why3 GUI after splitting goal G2
+ http://why3.lri.fr/doc/_images/gui-4.png
+ The Why3 GUI after splitting goal G2
- http://why3.lri.fr/doc/gui-5.png
- File reloaded after modifying goal G2
+ http://why3.lri.fr/doc/_images/gui-5.png
+ File reloaded after modifying goal G2
loganjerry@gmail.com
diff --git a/sources b/sources
index a66b83d..8b12354 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
SHA512 (why3-man.tar.xz) = 8355776ac8a67a56ae7354f8fd40dc5d2057022d1035090a3e38e139fbfe3c258fe3ccbed6e333cb005e66c7b4cdbbf6580e3420170fd08384cc9b36ce5ec2a1
-SHA512 (why3-1.3.3.tar.gz) = a2dc95691cea29bbd20843a05add3985f777085086b654b53566ecdb752ba892366da703e232c85d5e0237d0e59564527aed55f6ccae9118d49e5f2cf93a53ce
+SHA512 (why3-1.4.0.tar.gz) = b492f08a3c7073782b143a4849c47766b12045ad53c56aa8d251fd5b6bc1863ddebe260c99b3ddb27c4e1e1e9ab986c8b02286ec24f4c30f99f81f5f13fdc90a
diff --git a/why3-coq8.13.patch b/why3-coq8.13.patch
deleted file mode 100644
index 8d63618..0000000
--- a/why3-coq8.13.patch
+++ /dev/null
@@ -1,99 +0,0 @@
---- configure.in.orig 2020-09-11 08:06:19.000000000 -0600
-+++ configure.in 2021-02-06 20:18:51.197299198 -0700
-@@ -869,6 +869,9 @@ if test "$enable_coq_support" = yes; the
- 8.12*)
- coq_compat_version="COQ812"
- ;;
-+ 8.13*)
-+ coq_compat_version="COQ813"
-+ ;;
- *)
- enable_coq_support=no
- AC_MSG_WARN(You need Coq 8.6 or later; Coq discarded)
---- configure.orig 2020-09-11 08:06:19.000000000 -0600
-+++ configure 2021-02-06 20:19:13.736250432 -0700
-@@ -5365,6 +5365,9 @@ $as_echo "$COQVERSION" >&6; }
- 8.12*)
- coq_compat_version="COQ812"
- ;;
-+ 8.13*)
-+ coq_compat_version="COQ813"
-+ ;;
- *)
- enable_coq_support=no
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You need Coq 8.6 or later; Coq discarded" >&5
---- lib/coq/ieee_float/GenericFloat.v.orig 2020-09-11 08:06:19.000000000 -0600
-+++ lib/coq/ieee_float/GenericFloat.v 2021-02-06 20:19:40.687192153 -0700
-@@ -3726,7 +3726,8 @@ Proof.
- assert (- pow2sb <= pow2sb <= pow2sb)%Z.
- split; auto with zarith.
- assert (0 < pow2sb)%Z.
-- apply (Z.pow_pos_nonneg 2 sb); auto with zarith.
-+ apply (Z.pow_pos_nonneg 2 sb).
-+ easy.
- apply Z.lt_le_incl, Hsb'.
- auto with zarith.
-
---- lib/coq/set/FsetInt.v.orig 2020-09-11 08:06:19.000000000 -0600
-+++ lib/coq/set/FsetInt.v 2021-02-06 20:21:15.476987120 -0700
-@@ -166,15 +166,13 @@ induction len; eauto.
- intros. simpl. rewrite IHlen. reflexivity.
- Qed.
-
--(* Why3 goal *)
--Definition interval :
-- Numbers.BinNums.Z -> Numbers.BinNums.Z -> set.Fset.fset Numbers.BinNums.Z.
-+Lemma interval_proof :
-+ forall l r : int, exists s : list int,
-+ List.NoDup s /\
-+ forall e : int, List.In e s <->
-+ (if Z_le_dec l e then if Z_lt_dec e r then true else false else false) = true.
- Proof.
- intros l r.
--exists (fun x => if Z_le_dec l x then
-- if Z_lt_dec x r then true
-- else false
-- else false).
- destruct (Z_le_dec l r).
- + exists (seqZ l (Z.to_nat (r - l))%Z).
- split.
-@@ -185,8 +183,8 @@ destruct (Z_le_dec l r).
- destruct Z_le_dec.
- * destruct Z_lt_dec. split; intros; [reflexivity|].
- intuition.
-- intuition. inversion H.
-- * intuition. inversion H.
-+ intuition ; try inversion H.
-+ * intuition ; try inversion H.
- + exists List.nil.
- split.
- - constructor.
-@@ -195,6 +193,18 @@ destruct (Z_le_dec l r).
- omega.
- inversion H.
- inversion H.
-+Qed.
-+
-+(* Why3 goal *)
-+Definition interval :
-+ Numbers.BinNums.Z -> Numbers.BinNums.Z -> set.Fset.fset Numbers.BinNums.Z.
-+Proof.
-+intros l r.
-+exists (fun x =>
-+ if Z_le_dec l x then
-+ if Z_lt_dec x r then true else false
-+ else false).
-+apply interval_proof.
- Defined.
-
- (* Why3 goal *)
---- share/provers-detection-data.conf.orig 2020-09-11 08:06:19.000000000 -0600
-+++ share/provers-detection-data.conf 2021-02-06 20:21:48.348916001 -0700
-@@ -751,6 +751,7 @@ support_library = "%l/coq/version"
- exec = "coqtop"
- version_switch = "-v"
- version_regexp = "The Coq Proof Assistant, version \\([^ \n]+\\)"
-+version_ok = "^8\.13\.[0-9]+$"
- version_ok = "^8\.12\.[0-9]+$"
- version_ok = "^8\.11\.[0-9]+$"
- version_ok = "^8\.10\.[0-9]+$"
diff --git a/why3-sphinxcontrib-bibtex.patch b/why3-sphinxcontrib-bibtex.patch
deleted file mode 100644
index 9939fd8..0000000
--- a/why3-sphinxcontrib-bibtex.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- doc/conf.py.orig 2020-09-11 08:06:19.000000000 -0600
-+++ doc/conf.py 2020-12-23 08:29:46.914254118 -0700
-@@ -50,6 +50,7 @@ master_doc = 'index'
- project = 'Why3'
- copyright = '2020, The Why3 Development Team'
- author = 'The Why3 Development Team'
-+bibtex_bibfiles = ['manual.bib']
-
- # The version info for the project you're documenting, acts as replacement for
- # |version| and |release|, also used in various other places throughout the
diff --git a/why3.spec b/why3.spec
index af98d64..e6b6a50 100644
--- a/why3.spec
+++ b/why3.spec
@@ -8,35 +8,30 @@
%endif
Name: why3
-Version: 1.3.3
-Release: 9%{?dist}
+Version: 1.4.0
+Release: 1%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
License: LGPLv2 with exceptions
URL: http://why3.lri.fr/
-Source0: https://gforge.inria.fr/frs/download.php/file/38367/%{name}-%{version}.tar.gz
+Source0: https://gforge.inria.fr/frs/download.php/file/38425/%{name}-%{version}.tar.gz
# Man pages written by Jerry James using text found in the sources. Hence,
# the copyright and license are the same as for the upstream sources.
Source1: %{name}-man.tar.xz
# Desktop file written by Jerry James
-Source2: %{name}.desktop
+Source2: fr.lri.%{name}.desktop
# AppData file written by Jerry James
-Source3: %{name}.metainfo.xml
-# Adapt to sphinxcontrib-bibtex 2.x
-Patch0: %{name}-sphinxcontrib-bibtex.patch
-# Permit use of coq 8.13.0
-# https://gitlab.inria.fr/why3/why3/-/commit/31b5bf527804793c10f26acd2a14045be71d256c
-Patch1: %{name}-coq8.13.patch
+Source3: fr.lri.%{name}.metainfo.xml
# https://bugzilla.redhat.com/show_bug.cgi?id=1874879
ExcludeArch: s390x
+BuildRequires: appstream
BuildRequires: coq
BuildRequires: emacs-proofgeneral
BuildRequires: flocq
BuildRequires: latexmk
-BuildRequires: libappstream-glib
BuildRequires: make
BuildRequires: ocaml
BuildRequires: ocaml-camlp5-devel
@@ -244,7 +239,8 @@ cp -p share/images/src/logo-kim.svg \
# Install the AppStream metadata
mkdir -p %{buildroot}%{_metainfodir}
cp -p %{SOURCE3} %{buildroot}%{_metainfodir}
-appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/%{name}.metainfo.xml
+appstreamcli validate --no-net \
+ %{buildroot}%{_metainfodir}/fr.lri.%{name}.metainfo.xml
# Move the vim file to the right place
mkdir -p %{buildroot}%{_datadir}/vim/vimfiles
@@ -277,7 +273,7 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%license LICENSE
%{_bindir}/%{name}
%{_datadir}/%{name}/
-%{_datadir}/applications/%{name}.desktop
+%{_datadir}/applications/fr.lri.%{name}.desktop
%{_datadir}/bash-completion/completions/why3
%{_datadir}/gtksourceview-3.0/language-specs/%{name}.lang
%{_datadir}/gtksourceview-3.0/language-specs/%{name}c.lang
@@ -289,7 +285,7 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%{_texmf}/tex/latex/why3/
%{_libdir}/%{name}/
%{_mandir}/man1/%{name}*
-%{_metainfodir}/%{name}.metainfo.xml
+%{_metainfodir}/fr.lri.%{name}.metainfo.xml
%files -n ocaml-%{name}
%dir %{_libdir}/ocaml/%{name}/
@@ -307,6 +303,7 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%else
%{_libdir}/ocaml/%{name}/*.cma
%endif
+%{_libdir}/ocaml/%{name}/*.cmt
%files examples
%doc examples
@@ -326,6 +323,11 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Wed Jul 14 2021 Jerry James - 1.4.0-1
+- Version 1.4.0
+- Drop all patches
+- Validate with appstreamcli instead of appstream-util
+
* Tue Jun 8 2021 Jerry James - 1.3.3-9
- Rebuild for ocaml-menhir 20210419
From cdffd5304bc8debdf3bd0837a77ccc225ab2b6d8 Mon Sep 17 00:00:00 2001
From: Fedora Release Engineering
Date: Fri, 23 Jul 2021 20:56:09 +0000
Subject: [PATCH 033/113] - Rebuilt for
https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
Signed-off-by: Fedora Release Engineering
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index e6b6a50..67ebd23 100644
--- a/why3.spec
+++ b/why3.spec
@@ -9,7 +9,7 @@
Name: why3
Version: 1.4.0
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
@@ -323,6 +323,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Fri Jul 23 2021 Fedora Release Engineering - 1.4.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
+
* Wed Jul 14 2021 Jerry James - 1.4.0-1
- Version 1.4.0
- Drop all patches
From 3419d9b7adabc52e496994aa9aec9c40f92c2bb9 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Fri, 30 Jul 2021 08:52:46 -0600
Subject: [PATCH 034/113] Rebuild for rebuilt coq.
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index 67ebd23..349c9bc 100644
--- a/why3.spec
+++ b/why3.spec
@@ -9,7 +9,7 @@
Name: why3
Version: 1.4.0
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
@@ -323,6 +323,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Fri Jul 30 2021 Jerry James - 1.4.0-3
+- Rebuild for rebuilt coq
+
* Fri Jul 23 2021 Fedora Release Engineering - 1.4.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
From 3e18f40b6108c60a4be0e3ad59a163573624973b Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones"
Date: Mon, 4 Oct 2021 18:23:21 +0100
Subject: [PATCH 035/113] Try to build on s390x with OCaml 4.13
---
why3.spec | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/why3.spec b/why3.spec
index 349c9bc..ee1041b 100644
--- a/why3.spec
+++ b/why3.spec
@@ -9,7 +9,7 @@
Name: why3
Version: 1.4.0
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
@@ -24,9 +24,6 @@ Source2: fr.lri.%{name}.desktop
# AppData file written by Jerry James
Source3: fr.lri.%{name}.metainfo.xml
-# https://bugzilla.redhat.com/show_bug.cgi?id=1874879
-ExcludeArch: s390x
-
BuildRequires: appstream
BuildRequires: coq
BuildRequires: emacs-proofgeneral
@@ -323,6 +320,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Mon Oct 04 2021 Richard W.M. Jones - 1.4.0-4
+- Try to build on s390x with OCaml 4.13
+
* Fri Jul 30 2021 Jerry James - 1.4.0-3
- Rebuild for rebuilt coq
From 2ba7144d9a6c760da74c72ed086e2b66936cfdd8 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones"
Date: Tue, 5 Oct 2021 15:24:49 +0100
Subject: [PATCH 036/113] OCaml 4.13.1 build
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index ee1041b..6b57dfc 100644
--- a/why3.spec
+++ b/why3.spec
@@ -9,7 +9,7 @@
Name: why3
Version: 1.4.0
-Release: 4%{?dist}
+Release: 5%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
@@ -320,6 +320,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Tue Oct 05 2021 Richard W.M. Jones - 1.4.0-5
+- OCaml 4.13.1 build
+
* Mon Oct 04 2021 Richard W.M. Jones - 1.4.0-4
- Try to build on s390x with OCaml 4.13
From 2f315d1b600f1759dac21c10657195017aadb425 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Thu, 21 Oct 2021 12:10:49 -0600
Subject: [PATCH 037/113] Rebuild for coq 8.14.0 and menhir 20211012.
- Add -coq8.14 patch.
- Drop XEmacs support.
---
README.md | 16 +
why3-coq8.14.patch | 3446 ++++++++++++++++++++++++++++++++++++++++++++
why3.spec | 45 +-
3 files changed, 3484 insertions(+), 23 deletions(-)
create mode 100644 README.md
create mode 100644 why3-coq8.14.patch
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..bad69ce
--- /dev/null
+++ b/README.md
@@ -0,0 +1,16 @@
+# why3
+
+Why3 is a platform for deductive program verification. It provides a rich
+language for specification and programming, called WhyML, and relies on
+external theorem provers, both automated and interactive, to discharge
+verification conditions. (See the
+[list of supported provers](http://why3.lri.fr/#provers).) Why3 comes with a
+standard library of logical theories (integer and real arithmetic, Boolean
+operations, sets and maps, etc.) and basic programming data structures
+(arrays, queues, hash tables, etc.). A user can write WhyML programs directly
+and get correct-by-construction OCaml programs through an automated extraction
+mechanism. WhyML is also used as an intermediate language for the
+verification of C, Java, or Ada programs. (See the list of
+[Projects using Why3](http://why3.lri.fr/#users).) Why3 can be extended
+easily with support for new theorem provers. Why3 can be used as a software
+library, through an OCaml API.
diff --git a/why3-coq8.14.patch b/why3-coq8.14.patch
new file mode 100644
index 0000000..4bc5210
--- /dev/null
+++ b/why3-coq8.14.patch
@@ -0,0 +1,3446 @@
+--- a/configure 2021-03-13 02:24:39.000000000 -0700
++++ b/configure 2021-10-20 08:34:30.402015180 -0600
+@@ -5293,14 +5293,11 @@ if test "$enable_coq_support" = yes; the
+ COQLIB=`$COQC -where | sed -e 's|\\\|/|g' -e 's| |\\ |g'`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking Coq version" >&5
+ $as_echo_n "checking Coq version... " >&6; }
+- COQVERSION=`$COQC -v | sed -n -e 's|.*version *\([^ ]*\) .*$|\1|p'`
++ COQVERSION=`$COQC -v | sed -n -e 's|.*version *\([^ ]*\).*|\1|p'`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $COQVERSION" >&5
+ $as_echo "$COQVERSION" >&6; }
+
+ case $COQVERSION in
+- 8.6*)
+- coq_compat_version="COQ86"
+- ;;
+ 8.7*)
+ coq_compat_version="COQ87"
+ ;;
+@@ -5322,11 +5319,14 @@ $as_echo "$COQVERSION" >&6; }
+ 8.13*)
+ coq_compat_version="COQ813"
+ ;;
++ 8.14*)
++ coq_compat_version="COQ814"
++ ;;
+ *)
+ enable_coq_support=no
+- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You need Coq 8.6 or later; Coq discarded" >&5
+-$as_echo "$as_me: WARNING: You need Coq 8.6 or later; Coq discarded" >&2;}
+- reason_coq_support=" (need version >= 8.6)"
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You need Coq 8.7 or later; Coq discarded" >&5
++$as_echo "$as_me: WARNING: You need Coq 8.7 or later; Coq discarded" >&2;}
++ reason_coq_support=" (need version >= 8.7)"
+ ;;
+ esac
+ fi
+--- a/lib/coq/bv/BV_Gen.v 2021-03-13 02:24:39.000000000 -0700
++++ b/lib/coq/bv/BV_Gen.v 2021-10-20 08:43:59.506098099 -0600
+@@ -19,6 +19,8 @@ Require int.Abs.
+ Require int.EuclideanDivision.
+ Require bv.Pow2int.
+
++Require Import Lia.
++
+ Local Parameter last_bit : nat.
+ (* Important notice: do not remove 'Local' above, otherwise 'why3 realize' will
+ assume it comes from Why3 and will remove it. We use 'Parameter' instead of
+@@ -38,7 +40,7 @@ Qed.
+
+ (* Why3 goal *)
+ Lemma size_pos : (0%Z < size)%Z.
+- rewrite size_int_S; omega.
++ rewrite size_int_S; lia.
+ Qed.
+
+ Require Import Bool.Bvector.
+@@ -60,29 +62,29 @@ Lemma nth_cons {l} (v : Vector.t bool l)
+ nth_aux (Vector.cons bool b l v) (Z.succ m) = nth_aux v m.
+ intro; simpl.
+ case Z.eq_dec; intro.
+- assert False by omega; easy.
++ assert False by lia; easy.
+ rewrite <- Zpred_succ; easy.
+ Qed.
+
+ Lemma nth_cons_pred {l} (v : Vector.t bool l) (m : Z) b : (m <> 0)%Z ->
+ nth_aux (Vector.cons bool b l v) m = nth_aux v (Z.pred m).
+ intro.
+- rewrite Zsucc_pred with (n := m), <- Zpred_succ; apply nth_cons; omega.
++ rewrite Zsucc_pred with (n := m), <- Zpred_succ; apply nth_cons; lia.
+ Qed.
+
+ Lemma nth_high : forall {l} (v : Vector.t bool l) m, (m >= (Z.of_nat l))%Z -> nth_aux v m = false.
+ induction v.
+ easy.
+ rewrite Nat2Z.inj_succ.
+- intros; rewrite nth_cons_pred by omega.
+- apply IHv; omega.
++ intros; rewrite nth_cons_pred by lia.
++ apply IHv; lia.
+ Qed.
+
+ Lemma nth_low : forall {l} (v : Vector.t bool l) m, (m < 0)%Z -> nth_aux v m = false.
+ induction v.
+ easy.
+- intros; rewrite nth_cons_pred by omega.
+- apply IHv; omega.
++ intros; rewrite nth_cons_pred by lia.
++ apply IHv; lia.
+ Qed.
+
+ Lemma nth_zeros_is_hd : forall {l} (b : Vector.t bool (S l)), nth_aux b 0 = Vector.hd b.
+@@ -93,7 +95,7 @@ Lemma nth_predl_is_last : forall {l} (b
+ apply Vector.rectS.
+ easy.
+ intros.
+- rewrite Nat2Z.inj_succ, nth_cons by omega.
++ rewrite Nat2Z.inj_succ, nth_cons by lia.
+ easy.
+ Qed.
+
+@@ -101,22 +103,22 @@ Lemma nth_const {l} (m : Z) b: (0 <= m <
+ revert b m.
+ induction l.
+ simpl.
+- intros; assert False by omega; easy.
++ intros; assert False by lia; easy.
+ rewrite Nat2Z.inj_succ; intros; simpl.
+ case (Z.eq_dec m 0); intro.
+ easy.
+- apply IHl; omega.
++ apply IHl; lia.
+ Qed.
+
+ Lemma nth_aux_map : forall {l} (f : bool -> bool) (v : Vector.t bool l) m,
+ (0 <= m < Z.of_nat l)%Z ->
+ f (nth_aux v m) = nth_aux (Vector.map f v) m.
+ induction v.
+- simpl; intros; assert False by omega; easy.
++ simpl; intros; assert False by lia; easy.
+ rewrite Nat2Z.inj_succ; intros; simpl.
+ case (Z.eq_dec m 0); intro.
+ easy.
+- apply IHv; omega.
++ apply IHv; lia.
+ Qed.
+
+ Lemma nth_aux_map2 : forall {l} (f : bool -> bool -> bool) (v1 v2 : Vector.t bool l) m,
+@@ -124,12 +126,12 @@ Lemma nth_aux_map2 : forall {l} (f : boo
+ f (nth_aux v1 m) (nth_aux v2 m) = nth_aux (Vector.map2 f v1 v2) m.
+ intros l f v1 v2; pattern l, v1, v2.
+ apply Vector.rect2.
+- simpl; intros; assert False by omega; easy.
++ simpl; intros; assert False by lia; easy.
+ intros.
+ rewrite Nat2Z.inj_succ in H0; simpl.
+ case (Z.eq_dec m 0); intro.
+ easy.
+- apply H; omega.
++ apply H; lia.
+ Qed.
+
+ Lemma nth_aux_tl : forall {l} (v : Vector.t bool (S l)) m, (m <> -1)%Z -> nth_aux (Vector.tl v) m = nth_aux v (Z.succ m).
+@@ -137,11 +139,11 @@ Lemma nth_aux_tl : forall {l} (v : Vecto
+ apply Vector.rectS.
+ simpl.
+ intros; case Z.eq_dec.
+- intro; assert False by omega; easy.
++ intro; assert False by lia; easy.
+ trivial.
+ intros.
+ simpl (Vector.tl (a :: v0)).
+- symmetry; apply nth_cons; omega.
++ symmetry; apply nth_cons; lia.
+ Qed.
+
+ Lemma nth_aux_shiftout_last : forall {l} (v : Vector.t bool (S l)), nth_aux (Vector.shiftout v) (Z.of_nat l) = false.
+@@ -150,7 +152,7 @@ Lemma nth_aux_shiftout_last : forall {l}
+ easy.
+ rewrite Nat2Z.inj_succ.
+ assert (Vector.shiftout (a :: v0) = a :: (Vector.shiftout v0)) by easy.
+- rewrite H0, nth_cons by omega.
++ rewrite H0, nth_cons by lia.
+ apply H.
+ Qed.
+
+@@ -160,7 +162,7 @@ Lemma nth_aux_shiftout_not_last : forall
+ simpl; case Z.eq_dec; easy.
+ simpl; case Z.eq_dec; trivial.
+ intro; apply H.
+- rewrite Nat2Z.inj_succ in H0; omega.
++ rewrite Nat2Z.inj_succ in H0; lia.
+ Qed.
+
+ Lemma nth_aux_shiftin_false : forall {l} (v : Vector.t bool l) m, nth_aux (Vector.shiftin false v) m = nth_aux v m.
+@@ -173,7 +175,7 @@ Lemma nth_aux_shiftin_low : forall {l} (
+ simpl; case Z.eq_dec.
+ easy.
+ rewrite Nat2Z.inj_succ in H0.
+- intro; apply IHv; omega.
++ intro; apply IHv; lia.
+ Qed.
+
+ Lemma nth_aux_shiftin_high : forall {l} (v : Vector.t bool l) b, nth_aux (Vector.shiftin b v) (Z.of_nat l) = b.
+@@ -182,7 +184,7 @@ Lemma nth_aux_shiftin_high : forall {l}
+ unfold Vector.shiftin.
+ fold (@Vector.shiftin bool).
+ rewrite Nat2Z.inj_succ.
+- intro; rewrite nth_cons by omega.
++ intro; rewrite nth_cons by lia.
+ apply IHv.
+ Qed.
+
+@@ -201,7 +203,7 @@ simpl.
+ intros.
+ case Z.eq_dec.
+ intros; elimtype False; destruct H.
+-omega.
++lia.
+ subst n0.
+ auto with zarith.
+ intro; rewrite IHv;auto.
+@@ -209,7 +211,7 @@ destruct H.
+ left; auto with zarith.
+ right.
+ rewrite Zpos_P_of_succ_nat in H.
+-omega.
++lia.
+ Qed.
+
+ (* Why3 goal *)
+@@ -335,10 +337,10 @@ Lemma bshiftRl_iter_nth : forall b s m,
+ rewrite Nat2Z.inj_succ; intros.
+ simpl BshiftRl_iter.
+ unfold BshiftRl, Bhigh.
+- rewrite nth_aux_tl by omega.
++ rewrite nth_aux_tl by lia.
+ rewrite nth_aux_shiftin_false.
+ rewrite <- Zplus_succ_r_reverse, <- Z.add_succ_l.
+- apply IHs; omega.
++ apply IHs; lia.
+ Qed.
+
+ (* Why3 goal *)
+@@ -348,7 +350,7 @@ Lemma Lsr_nth_low :
+ ((nth (lsr b s) n) = (nth b (n + s)%Z)).
+ intros b n s h1 h2 h3.
+ rewrite <-Z2Nat.id with (n := s) at 2; auto.
+-apply bshiftRl_iter_nth; omega.
++apply bshiftRl_iter_nth; lia.
+ Qed.
+
+ (* Why3 goal *)
+@@ -361,9 +363,9 @@ Lemma Lsr_nth_high :
+ cut (nth_aux b (n + Z.of_nat (Z.to_nat s)) = false).
+ intro.
+ rewrite <-H.
+- apply bshiftRl_iter_nth; omega.
+- rewrite Z2Nat.id by omega.
+- apply nth_out_of_bound; omega.
++ apply bshiftRl_iter_nth; lia.
++ rewrite Z2Nat.id by lia.
++ apply nth_out_of_bound; lia.
+ Qed.
+
+ (* Why3 goal *)
+@@ -385,13 +387,13 @@ Lemma eq_aux_cons : forall {l} v1 v2 b b
+ split; intros.
+ simpl; case Z.eq_dec; intro.
+ easy.
+- apply H; omega.
++ apply H; lia.
+ split.
+- apply (H 0%Z); omega.
++ apply (H 0%Z); lia.
+ intros.
+- rewrite <- (nth_cons v1 n b) by omega.
+- rewrite <- (nth_cons v2 n b') by omega.
+- apply H; omega.
++ rewrite <- (nth_cons v1 n b) by lia.
++ rewrite <- (nth_cons v2 n b') by lia.
++ apply H; lia.
+ Qed.
+
+ Lemma Extensionality_aux : forall {l} (x y : Vector.t bool l), eq_aux x y -> x = y.
+@@ -408,7 +410,7 @@ Qed.
+
+ Lemma singleton_is_singl : forall b : Vector.t bool 1, b = [ Vector.hd b ].
+ intro; apply Extensionality_aux; unfold eq_aux; intros.
+- change (Z.of_nat 1) with 1%Z in H; assert (n = 0%Z) as e by omega; rewrite e; simpl.
++ change (Z.of_nat 1) with 1%Z in H; assert (n = 0%Z) as e by lia; rewrite e; simpl.
+ apply nth_zeros_is_hd.
+ Qed.
+
+@@ -438,13 +440,13 @@ Lemma BshiftRa_iter_nth_low : forall (b:
+ rewrite Nat2Z.inj_succ; intros.
+ simpl BshiftRa_iter.
+ unfold BshiftRa, Bhigh.
+- rewrite nth_aux_tl by omega.
++ rewrite nth_aux_tl by lia.
+ rewrite shiftrepeat_is_shiftin.
+ rewrite nth_aux_shiftin_low.
+ rewrite <- Zplus_succ_r_reverse, <- Z.add_succ_l.
+- apply IHs; omega.
+- omega.
+- fold size_nat; fold size; omega.
++ apply IHs; lia.
++ lia.
++ fold size_nat; fold size; lia.
+ Qed.
+
+ (* Why3 goal *)
+@@ -455,9 +457,9 @@ Lemma Asr_nth_low :
+ unfold nth, lsr.
+ intros.
+ assert ((n + s)%Z = (n + Z.of_nat (Z.to_nat s))%Z).
+- rewrite Z2Nat.id with (n := s); omega.
++ rewrite Z2Nat.id with (n := s); lia.
+ rewrite H2.
+- apply BshiftRa_iter_nth_low; omega.
++ apply BshiftRa_iter_nth_low; lia.
+ Qed.
+
+ Lemma bshiftra_iter_last : forall {l} (v : Bvector (S l)) s, Vector.last (BshiftRa_iter l v s) = Vector.last v.
+@@ -476,11 +478,11 @@ Lemma BhiftRa_iter_nth_high : forall (b:
+ simpl BshiftRa_iter.
+ simpl (Z.of_nat 0).
+ intros.
+- assert (n = size - 1)%Z by omega; rewrite H1; trivial.
++ assert (n = size - 1)%Z by lia; rewrite H1; trivial.
+ rewrite Nat2Z.inj_succ; intros.
+ simpl BshiftRa_iter.
+ unfold BshiftRa, Bhigh.
+- rewrite nth_aux_tl by omega.
++ rewrite nth_aux_tl by lia.
+ rewrite shiftrepeat_is_shiftin.
+ case (Z.eq_dec (Z.succ n) size).
+ intro; unfold size in e.
+@@ -489,9 +491,9 @@ Lemma BhiftRa_iter_nth_high : forall (b:
+ rewrite size_int_S, Z.sub_1_r, <- Zpred_succ.
+ symmetry; apply nth_predl_is_last.
+ intro; rewrite nth_aux_shiftin_low.
+- apply IHs; omega.
+- omega.
+- fold size_nat; fold size; omega.
++ apply IHs; lia.
++ lia.
++ fold size_nat; fold size; lia.
+ Qed.
+
+ (* Why3 goal *)
+@@ -502,8 +504,8 @@ Lemma Asr_nth_high :
+ unfold nth, asr.
+ intros.
+ apply BhiftRa_iter_nth_high.
+- omega.
+- rewrite Z2Nat.id; omega.
++ lia.
++ rewrite Z2Nat.id; lia.
+ Qed.
+
+ (* Why3 goal *)
+@@ -526,10 +528,10 @@ Lemma bshiftL_iter_nth_high : forall {l}
+ rewrite e; simpl; apply Pos2Z.neg_is_neg.
+ rewrite Nat2Z.inj_succ in H, H0.
+ case (Z.eq_dec (Z.pred m) (Z.of_nat l));intro.
+- assert False by omega; easy.
+- rewrite nth_aux_shiftout_not_last by omega.
++ assert False by lia; easy.
++ rewrite nth_aux_shiftout_not_last by lia.
+ rewrite Zpos_P_of_succ_nat, Z.sub_succ_r, <- Z.sub_pred_l.
+- apply IHs; omega.
++ apply IHs; lia.
+ Qed.
+
+ (* Why3 goal *)
+@@ -539,28 +541,28 @@ Lemma Lsl_nth_high :
+ ((nth (lsl b s) n) = (nth b (n - s)%Z)).
+ intros.
+ unfold lsl, nth.
+- rewrite <-Z2Nat.id with (n := s) at 2 by omega.
++ rewrite <-Z2Nat.id with (n := s) at 2 by lia.
+ destruct H.
+ destruct H0.
+ apply (bshiftL_iter_nth_high b (Z.to_nat s) n).
+ auto with zarith.
+- rewrite Z2Nat.id; omega.
++ rewrite Z2Nat.id; lia.
+ rewrite size_int_S in H1.
+- omega.
++ lia.
+ Qed.
+
+ Lemma Lsl_nth_low_aux : forall {l} x b (n : int),
+ (0 <= n < Z.of_nat x)%Z -> nth_aux (BshiftL_iter l b x) n = false.
+ induction x.
+- simpl; intros; assert False by omega; easy.
++ simpl; intros; assert False by lia; easy.
+ rewrite Nat2Z.inj_succ; intros.
+ simpl.
+ case Z.eq_dec;intro.
+ trivial.
+ case (Z.eq_dec (Z.pred n) (Z.of_nat l));intro.
+- apply nth_high; omega.
++ apply nth_high; lia.
+ rewrite nth_aux_shiftout_not_last by auto.
+- apply IHx; omega.
++ apply IHx; lia.
+ Qed.
+
+ (* Why3 goal *)
+@@ -569,7 +571,7 @@ Lemma Lsl_nth_low :
+ (0%Z <= n)%Z /\ (n < s)%Z -> ((nth (lsl b s) n) = Init.Datatypes.false).
+ intros.
+ apply Lsl_nth_low_aux.
+- rewrite Z2Nat.id; omega.
++ rewrite Z2Nat.id; lia.
+ Qed.
+
+ (* Why3 goal *)
+@@ -582,7 +584,7 @@ Lemma max_int_nat : forall l, (0 <= Pow2
+ rewrite Z.sub_1_r.
+ apply Zlt_0_le_0_pred.
+ apply Pow2int.pow2pos.
+- omega.
++ lia.
+ Qed.
+
+ Fixpoint bvec_to_nat n (v : Bvector n) {struct v} : nat :=
+@@ -593,7 +595,7 @@ Fixpoint bvec_to_nat n (v : Bvector n) {
+ end.
+
+ Lemma bvec_to_nat_zeros : forall {l}, bvec_to_nat l (Vector.const false l) = 0.
+- induction l; [easy|simpl; omega].
++ induction l; [easy|simpl; lia].
+ Qed.
+
+ Definition twos_complement n (v : Bvector n) : Z.
+@@ -630,10 +632,10 @@ Lemma bvec_to_nat_extensionality : foral
+ apply Vector.rect2.
+ trivial.
+ case a, b; intros.
+- rewrite H; auto; inversion H0; omega.
+- inversion H0; assert False; omega.
+- inversion H0; assert False; omega.
+- rewrite H; auto; inversion H0; omega.
++ rewrite H; auto; inversion H0; lia.
++ inversion H0; assert False; lia.
++ inversion H0; assert False; lia.
++ rewrite H; auto; inversion H0; lia.
+ Qed.
+
+ (* pow2 helper lemmas *)
+@@ -644,23 +646,23 @@ Lemma id_lt_pow2: forall n, (Z.of_nat (S
+ easy.
+ rewrite Nat2Z.inj_succ.
+ apply Z.le_lt_trans with (m := (2 * Z.of_nat (S n))%Z).
+- rewrite Nat2Z.inj_succ; omega.
++ rewrite Nat2Z.inj_succ; lia.
+ apply Z.lt_le_trans with (m := (2 * Pow2int.pow2 (Z.of_nat (S n)))%Z).
+- omega.
+- rewrite two_p_S by omega.
+- unfold Pow2int.pow2; omega.
++ lia.
++ rewrite two_p_S by lia.
++ unfold Pow2int.pow2; lia.
+ Qed.
+
+ Lemma pow2_lt_mono_nat : forall i j : nat, (i < j) -> (Pow2int.pow2 (Z.of_nat i) < Pow2int.pow2 (Z.of_nat j))%Z.
+ intros.
+ unfold Pow2int.pow2; rewrite two_p_equiv, two_p_equiv.
+- apply Z.pow_lt_mono_r; omega.
++ apply Z.pow_lt_mono_r; lia.
+ Qed.
+
+ Lemma pow2_le_mono_nat : forall i j : nat, (i <= j) -> (Pow2int.pow2 (Z.of_nat i) <= Pow2int.pow2 (Z.of_nat j))%Z.
+ intros.
+ unfold Pow2int.pow2; rewrite two_p_equiv, two_p_equiv.
+- apply Z.pow_le_mono_r; omega.
++ apply Z.pow_le_mono_r; lia.
+ Qed.
+
+ Lemma pow2_le_mono_pos : forall i j : positive, (Pos.le i j) -> (Pow2int.pow2 (Zpos i) <= Pow2int.pow2 (Zpos j))%Z.
+@@ -682,7 +684,7 @@ Qed.
+ (* arithmetic helper lemmas *)
+
+ Lemma lem_time2 : forall a b, a < b -> 1 + 2 * a < 2 * b.
+- intros; omega.
++ intros; lia.
+ Qed.
+
+ Lemma le_le_le: forall x y z t, (t <= z)%Z -> (x <= y <= t)%Z -> (x <= y <= z)%Z.
+@@ -700,7 +702,7 @@ Lemma factor_sub : forall n m p, (n * m
+ Qed.
+
+ Lemma lt_sym: forall x y, (x < y)%Z <-> (y > x)%Z.
+- intro; split; omega.
++ intro; split; lia.
+ Qed.
+
+ (* end of arithmetic helpers *)
+@@ -709,15 +711,15 @@ Lemma bvec_to_nat_range : forall {n} v,
+ induction v.
+ simpl bvec_to_nat; auto.
+ apply Nat.le_lt_trans with (m := 1 + (bvec_to_nat n v * 2)).
+- simpl; case h; omega.
+- rewrite Nat2Z.inj_succ, <- Z.add_1_r, Pow2int.Power_s by omega.
++ simpl; case h; lia.
++ rewrite Nat2Z.inj_succ, <- Z.add_1_r, Pow2int.Power_s by lia.
+ rewrite Z2Nat.inj_mul.
+ assert (Z.to_nat 2 = 2) by easy; rewrite H.
+ rewrite mult_comm.
+ apply lem_time2.
+ easy.
+ easy.
+- apply Zlt_le_weak, Pow2int.pow2pos; omega.
++ apply Zlt_le_weak, Pow2int.pow2pos; lia.
+ Qed.
+
+ Lemma twos_complement_neg : forall {n} v, Bsign n v = true -> (twos_complement (S n) v < 0)%Z.
+@@ -729,14 +731,14 @@ Lemma twos_complement_neg : forall {n} v
+ rewrite Z2Nat.inj_lt.
+ rewrite Nat2Z.id.
+ apply bvec_to_nat_range.
+- omega.
+- apply Zlt_le_weak, Pow2int.pow2pos; omega.
+- omega.
++ lia.
++ apply Zlt_le_weak, Pow2int.pow2pos; lia.
++ lia.
+ Qed.
+
+ Lemma twos_complement_pos : forall {n} v, Bsign n v = false -> (twos_complement (S n) v >= 0)%Z.
+ intros.
+- unfold twos_complement; rewrite H; omega.
++ unfold twos_complement; rewrite H; lia.
+ Qed.
+
+
+@@ -757,28 +759,28 @@ Lemma twos_complement_extensionality : f
+ Z.of_nat (bvec_to_nat (S m) v') < 0)%Z.
+ {
+ split.
+- + omega.
++ + lia.
+ + rewrite <- H. generalize (bvec_to_nat_range v). intros.
+ eapply Z.lt_sub_0. rewrite <- Z2Nat.id.
+ apply inj_lt. assumption.
+ eapply Z.le_trans. apply (max_int_nat (S m)).
+- omega.
++ lia.
+ }
+- omega.
++ lia.
+ destruct Bsign.
+ (* TODO improve this (copy/paste) *)
+ assert (Z.of_nat (bvec_to_nat (S m) v) >= 0 /\
+ Z.of_nat (bvec_to_nat (S m) v) < 0)%Z.
+ {
+ split.
+- + omega.
++ + lia.
+ + rewrite H. generalize (bvec_to_nat_range v'). intros.
+ eapply Z.lt_sub_0. rewrite <- Z2Nat.id.
+ apply inj_lt. assumption.
+ eapply Z.le_trans. apply (max_int_nat (S m)).
+- omega.
++ lia.
+ }
+- omega.
++ lia.
+ reflexivity.
+ }
+ unfold twos_complement in H. rewrite <- H0 in H.
+@@ -797,9 +799,9 @@ Lemma odd_is_odd : forall n : nat, Even.
+ rewrite Zodd_bool_iff, Zodd_ex_iff, Even.odd_equiv.
+ unfold Nat.Odd.
+ split; intro; destruct H.
+- exists (Z.of_nat x); omega.
+- rewrite <-Z2Nat.id with (n := x) in H by omega.
+- exists (Z.to_nat x); omega.
++ exists (Z.of_nat x); lia.
++ rewrite <-Z2Nat.id with (n := x) in H by lia.
++ exists (Z.to_nat x); lia.
+ Qed.
+
+ Lemma even_not_odd : forall n : nat, Even.even n <-> not (Even.odd n).
+@@ -833,7 +835,7 @@ Qed.
+ Lemma pow2_is_even : forall n, (n > 0)%Z -> Z.even (Pow2int.pow2 n) = true.
+ intros.
+ unfold Pow2int.pow2.
+- rewrite two_p_equiv, Z.even_pow by omega; easy.
++ rewrite two_p_equiv, Z.even_pow by lia; easy.
+ Qed.
+
+ Lemma max_int_is_odd : forall n, (n > 0)%Z -> Z.odd (Pow2int.pow2 n - 1) = true.
+@@ -847,7 +849,7 @@ Qed.
+ Lemma bvec_to_nat_nat_to_bvec : forall {n} i, (Z.of_nat i <= Pow2int.pow2 (Z.of_nat n) - 1)%Z ->
+ bvec_to_nat n (nat_to_bvec n i) = i.
+ induction n.
+- simpl; intro; omega.
++ simpl; intro; lia.
+ destruct i; intros.
+ simpl.
+ rewrite <- Nat_to_bvec_zeros, bvec_to_nat_zeros; trivial.
+@@ -865,9 +867,9 @@ Lemma bvec_to_nat_nat_to_bvec : forall {
+ rewrite Z.mul_le_mono_pos_l with (p := 2%Z) by easy.
+ rewrite Z.add_le_mono_l with (p := 1%Z) by easy.
+ apply Z.le_trans with (m := Z.of_nat (S i)).
+- rewrite <- Div2.even_div2, <- Nat2Z.inj_mul with (n:= 2), <- Nat.double_twice, <- Div2.even_double, Nat2Z.inj_succ by trivial; omega.
++ rewrite <- Div2.even_div2, <- Nat2Z.inj_mul with (n:= 2), <- Nat.double_twice, <- Div2.even_double, Nat2Z.inj_succ by trivial; lia.
+ apply Z.le_trans with (m := (Pow2int.pow2 (Z.of_nat (S n)) - 1)%Z); trivial.
+- rewrite Nat2Z.inj_succ, <- Z.add_1_r, Pow2int.Power_s; omega.
++ rewrite Nat2Z.inj_succ, <- Z.add_1_r, Pow2int.Power_s; lia.
+ rewrite e.
+ change (2 * bvec_to_nat n (nat_to_bvec n (Div2.div2 (S i))) = S i).
+ rewrite IHn.
+@@ -876,16 +878,16 @@ Lemma bvec_to_nat_nat_to_bvec : forall {
+ rewrite Z.mul_le_mono_pos_l with (p := 2%Z) by easy.
+ apply Z.le_trans with (m := Z.of_nat (S i)).
+ rewrite <- Nat2Z.inj_mul with (n := 2), <- Nat.double_twice, <- Div2.even_double.
+- omega.
++ lia.
+ rewrite even_not_odd, odd_is_odd, not_true_iff_false; trivial.
+ apply odd_even_le, Z.lt_le_pred in H.
+ apply Z.le_trans with (m := (Pow2int.pow2 (Z.of_nat (S n)) - 2)%Z).
+- omega.
+- rewrite Nat2Z.inj_succ, <- Z.add_1_r, Pow2int.Power_s; omega.
++ lia.
++ rewrite Nat2Z.inj_succ, <- Z.add_1_r, Pow2int.Power_s; lia.
+ rewrite Zeven.Zeven_odd_bool, e; easy.
+ unfold Pow2int.pow2.
+ rewrite Z.sub_1_r, Z.odd_pred, Nat2Z.inj_succ.
+- rewrite pow2_is_even by omega; easy.
++ rewrite pow2_is_even by lia; easy.
+ Qed.
+
+ Lemma Nat_to_bvec_ones : forall {n}, Vector.const true n = nat_to_bvec n (Z.to_nat (Pow2int.pow2 (Z.of_nat n) - 1)).
+@@ -900,12 +902,12 @@ Lemma Nat_to_bvec_ones : forall {n}, Vec
+ rewrite Div2.odd_div2.
+ rewrite <- Z2Nat.inj_succ by (apply max_int_nat).
+ rewrite Z.sub_1_r, <- Zsucc_pred, Nat2Z.inj_succ, <- Z.add_1_r.
+- rewrite Pow2int.Power_s by omega.
++ rewrite Pow2int.Power_s by lia.
+ rewrite Z2Nat.inj_mul, Div2.div2_double.
+ rewrite <- Z2Nat.inj_succ by (apply max_int_nat).
+ rewrite Z.sub_1_r, <- Zsucc_pred; trivial.
+ easy.
+- apply Z.lt_le_incl, Pow2int.pow2pos; omega.
++ apply Z.lt_le_incl, Pow2int.pow2pos; lia.
+ rewrite odd_is_odd.
+ rewrite Z2Nat.id by (apply max_int_nat).
+ apply max_int_is_odd; easy.
+@@ -920,32 +922,32 @@ Lemma mod1_nat : forall x y, 0 < y -> 0
+ intros.
+ unfold mod1, div.
+ case Z_le_dec; intro.
+- apply Zle_minus_le_0, Z_mult_div_ge; omega.
++ apply Zle_minus_le_0, Z_mult_div_ge; lia.
+ destruct n; apply Z.mod_pos_bound; trivial.
+ Qed.
+
+ Lemma mod1_nat_high_bound_lt: forall u v, 0 < v -> mod1 u v < v.
+ intros.
+- rewrite <- Z.abs_eq by omega.
+- apply Mod_bound; omega.
++ rewrite <- Z.abs_eq by lia.
++ apply Mod_bound; lia.
+ Qed.
+
+ Lemma mod1_nat_high_bound_le: forall u v, 0 <= v ->
+ mod1 u (v + 1) <= v.
+ intros.
+ rewrite Zpred_succ, <- Z.lt_le_pred.
+- apply mod1_nat_high_bound_lt; omega.
++ apply mod1_nat_high_bound_lt; lia.
+ Qed.
+
+ Lemma mod1_out : forall x y, 0 <= x < y -> mod1 x y = x.
+ intros; unfold mod1.
+- rewrite Div_inf; omega.
++ rewrite Div_inf; lia.
+ Qed.
+
+ Lemma mod_mod_mult: forall a b c, b > 0 -> c > 0 -> ((a mod (c * b)) mod b) = a mod b.
+ intros.
+ rewrite Z.mul_comm.
+- rewrite Z.rem_mul_r by omega.
++ rewrite Z.rem_mul_r by lia.
+ rewrite <-Zplus_mod_idemp_r.
+ rewrite Z.mul_comm, Z_mod_mult, Zplus_0_r.
+ apply Zmod_mod.
+@@ -970,39 +972,39 @@ end.
+ Lemma mod1_is_mod : forall x y, y > 0 -> mod1 x y = Zmod x y.
+ intros; unfold mod1, div.
+ case Z_le_dec; intro.
+- rewrite Z.mod_eq by omega; trivial.
+- destruct n; apply Z_mod_lt; omega.
++ rewrite Z.mod_eq by lia; trivial.
++ destruct n; apply Z_mod_lt; lia.
+ Qed.
+
+ Lemma mod1_succ_low : forall x y, y > 0 -> mod1 x y < (Z.pred y) -> mod1 (Z.succ x) y = Z.succ (mod1 x y).
+ intros x y H.
+ rewrite mod1_is_mod, mod1_is_mod by trivial.
+- rewrite Z.mod_eq, Z.mod_eq by omega.
++ rewrite Z.mod_eq, Z.mod_eq by lia.
+ intro; cut (Z.succ x / y = x / y).
+- intro e; rewrite e; omega.
++ intro e; rewrite e; lia.
+ rewrite Z.div_unique_pos with (a := Z.succ x) (b := y) (r := (x mod y) + 1) (q := x / y).
+ trivial.
+- rewrite <- Z.mod_eq in H0 by omega.
+- split; [apply Z.le_le_succ_r, Z_mod_lt; trivial|omega].
+- rewrite <- Zplus_assoc_reverse, <- Z_div_mod_eq by omega; omega.
++ rewrite <- Z.mod_eq in H0 by lia.
++ split; [apply Z.le_le_succ_r, Z_mod_lt; trivial|lia].
++ rewrite <- Zplus_assoc_reverse, <- Z_div_mod_eq by lia; lia.
+ Qed.
+
+ Lemma mod1_succ_high : forall x y, y > 0 -> mod1 x y = (Z.pred y) -> mod1 (Z.succ x) y = 0.
+ intros x y H.
+- rewrite mod1_is_mod, mod1_is_mod by omega; intro.
++ rewrite mod1_is_mod, mod1_is_mod by lia; intro.
+ rewrite <- Z.add_1_r, Zplus_mod, H0.
+ case (Z.eq_dec y 1); intro e.
+ rewrite e; easy.
+- rewrite Zmod_1_l by omega.
++ rewrite Zmod_1_l by lia.
+ rewrite Z.add_1_r, <- Zsucc_pred.
+ apply Z_mod_same_full.
+ Qed.
+
+ Lemma mod1_add : forall x y, y > 0 -> mod1 (x + y) y = mod1 x y.
+ intros.
+- rewrite mod1_is_mod, mod1_is_mod by omega.
++ rewrite mod1_is_mod, mod1_is_mod by lia.
+ rewrite <- Z.mul_1_l with (n := x + y), <- Zred_factor4, Z.mul_1_l.
+- apply Z.mod_add; omega.
++ apply Z.mod_add; lia.
+ Qed.
+
+ Lemma Nth_rotate_aux_left :
+@@ -1018,13 +1020,13 @@ Lemma Nth_rotate_aux_left :
+ rewrite <-mod1_add by auto with zarith.
+ rewrite Z.sub_0_l, Int.Comm, Z.add_opp_r.
+ rewrite Nat2Z.inj_succ, Z.sub_succ_r, <-Z.sub_pred_l, <-Zpred_succ.
+- rewrite <-IHn by omega.
++ rewrite <-IHn by lia.
+ simpl.
+ symmetry; apply nth_predl_is_last.
+
+ rewrite Nat2Z.inj_succ, Z.sub_succ_r, <-Z.sub_pred_l.
+ rewrite <-Nat2Z.inj_pred by auto with zarith.
+- rewrite <-IHn by (rewrite Nat2Z.inj_pred; omega).
++ rewrite <-IHn by (rewrite Nat2Z.inj_pred; lia).
+ rewrite Nat2Z.inj_pred by auto with zarith.
+ simpl.
+ destruct Z.eq_dec; try easy.
+@@ -1035,37 +1037,37 @@ Lemma Nth_rotate_aux_right : forall {l}
+ (Z.of_nat i < (Z.succ (Z.of_nat l))) ->
+ (nth_aux (rotate_right_aux v n) (Z.of_nat i)) = (nth_aux v (mod1 ((Z.of_nat i) + (Z.of_nat n)) (Z.succ (Z.of_nat l)))).
+ induction n.
+- simpl; intros; rewrite <- Zplus_0_r_reverse, mod1_out; [trivial|omega].
++ simpl; intros; rewrite <- Zplus_0_r_reverse, mod1_out; [trivial|lia].
+ intros; rewrite Nat2Z.inj_succ, <-Z.add_succ_comm, <-Nat2Z.inj_succ.
+ case (Z.eq_dec (Z.of_nat i) (Z.of_nat l)); intro e.
+ rewrite Nat2Z.inj_succ, e.
+ simpl (rotate_right_aux v (S n)).
+ rewrite nth_aux_shiftin_high.
+- rewrite Z.add_comm, mod1_add by omega.
++ rewrite Z.add_comm, mod1_add by lia.
+ rewrite <-nth_zeros_is_hd.
+- apply (IHn 0%nat); simpl; omega.
+- rewrite <-IHn by (rewrite Nat2Z.inj_succ; omega).
++ apply (IHn 0%nat); simpl; lia.
++ rewrite <-IHn by (rewrite Nat2Z.inj_succ; lia).
+ simpl (rotate_right_aux v (S n)).
+- rewrite nth_aux_shiftin_low by omega.
++ rewrite nth_aux_shiftin_low by lia.
+ rewrite Nat2Z.inj_succ.
+- apply nth_aux_tl; omega.
++ apply nth_aux_tl; lia.
+ Qed.
+
+ Lemma bvec_to_nat_tl: forall {l} v, Z.of_nat (bvec_to_nat l (Vector.tl v)) = Z.of_nat (bvec_to_nat (S l) v) / 2.
+ apply Vector.rectS; intros.
+ simpl.
+ symmetry; case a.
+- apply Zdiv_1_l; omega.
++ apply Zdiv_1_l; lia.
+ apply Zdiv_0_l.
+ simpl (Vector.tl (a :: v)).
+ case a.
+ change (Z.of_nat (bvec_to_nat (S n) v) =
+ Z.of_nat (S (2 * bvec_to_nat (S n) v)) / 2).
+ rewrite Nat2Z.inj_succ, Nat2Z.inj_mul, Z.mul_comm, <-Z.add_1_l.
+- rewrite Z.div_add, Zdiv_1_l by omega; omega.
++ rewrite Z.div_add, Zdiv_1_l by lia; lia.
+ change (Z.of_nat (bvec_to_nat (S n) v) =
+ Z.of_nat (2 * bvec_to_nat (S n) v) / 2).
+- rewrite Nat2Z.inj_mul, Z.mul_comm, Z_div_mult_full; omega.
++ rewrite Nat2Z.inj_mul, Z.mul_comm, Z_div_mult_full; lia.
+ Qed.
+
+ Lemma bvec_to_nat_shiftin: forall {l} v, bvec_to_nat (S l) (Vector.shiftin false v) = bvec_to_nat l v.
+@@ -1082,7 +1084,7 @@ Lemma bvec_to_nat_shiftout_mod1 : forall
+ symmetry; apply Zmod_1_r.
+ case a.
+ change (Z.of_nat (S (2 * bvec_to_nat n (Vector.shiftout v))) = (Z.of_nat (S (2 * bvec_to_nat (S n) v))) mod (Pow2int.pow2 (Z.of_nat (S n)))).
+- rewrite Nat2Z.inj_succ with (n := n), <-Z.add_1_r with (n := Z.of_nat n), Pow2int.Power_s by omega.
++ rewrite Nat2Z.inj_succ with (n := n), <-Z.add_1_r with (n := Z.of_nat n), Pow2int.Power_s by lia.
+ rewrite Nat2Z.inj_succ, Nat2Z.inj_succ, <-Z.add_1_l, <-Z.add_1_l, Nat2Z.inj_mul, Nat2Z.inj_mul.
+ rewrite Z.rem_mul_r.
+ rewrite Zmod_odd.
+@@ -1090,10 +1092,10 @@ Lemma bvec_to_nat_shiftout_mod1 : forall
+ rewrite H0.
+ rewrite Int.Comm1 with (y := Z.of_nat (bvec_to_nat (S n) v)), Z_div_plus_full, Zdiv_1_l by easy.
+ rewrite H; easy.
+- omega.
+- apply Pow2int.pow2pos; omega.
++ lia.
++ apply Pow2int.pow2pos; lia.
+ change (Z.of_nat (2 * bvec_to_nat n (Vector.shiftout v)) = (Z.of_nat (2 * bvec_to_nat (S n) v)) mod (Pow2int.pow2 (Z.of_nat (S n)))).
+- rewrite Nat2Z.inj_succ with (n := n), <-Z.add_1_r with (n := Z.of_nat n), Pow2int.Power_s by omega.
++ rewrite Nat2Z.inj_succ with (n := n), <-Z.add_1_r with (n := Z.of_nat n), Pow2int.Power_s by lia.
+ rewrite Nat2Z.inj_mul, Nat2Z.inj_mul.
+ rewrite Zmult_mod_distr_l.
+ rewrite H; trivial.
+@@ -1244,12 +1246,12 @@ Lemma to_uint_bounds :
+ intros v.
+ unfold to_uint, uint_in_range.
+ split.
+- omega.
++ lia.
+ assert (two_power_size = Z.of_nat (Z.to_nat two_power_size)).
+ rewrite Z2Nat.id.
+ easy.
+ unfold two_power_size, size.
+- transitivity (Pow2int.pow2 (Z.of_nat size_nat) - 1);[apply max_int_nat|omega].
++ transitivity (Pow2int.pow2 (Z.of_nat size_nat) - 1);[apply max_int_nat|lia].
+ rewrite H.
+ apply inj_lt.
+ apply bvec_to_nat_range.
+@@ -1265,7 +1267,7 @@ Qed.
+ Lemma to_uint_lsr_aux : forall (v:t) (n:nat), ((to_uint (lsr v
+ (Z.of_nat n))) = (div (to_uint v) (Pow2int.pow2 (Z.of_nat n)))).
+ unfold div.
+- intros; case Z_le_dec; [|intro e; destruct e; apply Z_mod_lt, lt_sym, Pow2int.pow2pos; omega].
++ intros; case Z_le_dec; [|intro e; destruct e; apply Z_mod_lt, lt_sym, Pow2int.pow2pos; lia].
+ revert v n.
+ induction n; intro.
+ simpl.
+@@ -1276,22 +1278,22 @@ Lemma to_uint_lsr_aux : forall (v:t) (n:
+ unfold BshiftRl, Bhigh, to_uint, div.
+ rewrite bvec_to_nat_tl.
+ rewrite bvec_to_nat_shiftin.
+- rewrite Nat2Z.inj_succ, <-Z.add_1_r, Pow2int.Power_s by omega.
++ rewrite Nat2Z.inj_succ, <-Z.add_1_r, Pow2int.Power_s by lia.
+ rewrite Z.mul_comm, <-Zdiv_Zdiv.
+ rewrite <- Nat2Z.id with (n := n).
+ change (to_uint (lsr v (Z.of_nat n)) / 2 =
+ to_uint v / Pow2int.pow2 (Z.of_nat (Z.to_nat (Z.of_nat n))) / 2).
+ rewrite Nat2Z.id.
+ rewrite IHn.
+- omega.
+- apply Z_mod_lt, lt_sym, Pow2int.pow2pos; omega.
+- apply Z.lt_le_incl, Pow2int.pow2pos; omega.
+- omega.
++ lia.
++ apply Z_mod_lt, lt_sym, Pow2int.pow2pos; lia.
++ apply Z.lt_le_incl, Pow2int.pow2pos; lia.
++ lia.
+ Qed.
+
+ Lemma size_in_range: uint_in_range size.
+ unfold uint_in_range, max_int, size, size.
+- split; [omega|apply Z.lt_le_pred, id_lt_pow2].
++ split; [lia|apply Z.lt_le_pred, id_lt_pow2].
+ Qed.
+
+ Lemma mod1_in_range : forall x, uint_in_range (mod1 x two_power_size).
+@@ -1317,7 +1319,7 @@ Proof.
+ simpl.
+ apply Zmod_unique with (q := 0).
+ apply to_uint_bounds.
+- assert (lsl v 0 = v) as H by easy; rewrite H; omega.
++ assert (lsl v 0 = v) as H by easy; rewrite H; lia.
+ unfold lsl.
+ rewrite Nat2Z.id.
+ unfold BshiftL, Bcons, to_uint.
+@@ -1329,16 +1331,16 @@ Proof.
+ rewrite bvec_to_nat_shiftout_mod1.
+ change (2 * ((to_uint (lsl v (Z.of_nat n))) mod (Pow2int.pow2 (Z.of_nat last_bit))) = (to_uint v * Pow2int.pow2 (Z.of_nat (S n))) mod two_power_size).
+ unfold two_power_size.
+- rewrite size_int_S, Nat2Z.inj_succ, <-Z.add_1_r, Pow2int.Power_s by omega.
+- rewrite Zmult_assoc, Int.Comm1 with (y := 2), <-Z.add_1_r, Pow2int.Power_s by omega.
++ rewrite size_int_S, Nat2Z.inj_succ, <-Z.add_1_r, Pow2int.Power_s by lia.
++ rewrite Zmult_assoc, Int.Comm1 with (y := 2), <-Z.add_1_r, Pow2int.Power_s by lia.
+ rewrite Zmult_assoc_reverse, Zmult_mod_distr_l.
+- rewrite Z.mul_cancel_l by omega.
++ rewrite Z.mul_cancel_l by lia.
+ rewrite IHn.
+ unfold two_power_size.
+- rewrite size_int_S, <-Z.add_1_r, Pow2int.Power_s by omega.
++ rewrite size_int_S, <-Z.add_1_r, Pow2int.Power_s by lia.
+ apply mod_mod_mult.
+- apply lt_sym, Pow2int.pow2pos; omega.
+- omega.
++ apply lt_sym, Pow2int.pow2pos; lia.
++ lia.
+ Qed.
+ (* end of to_uint helpers *)
+
+@@ -1350,7 +1352,7 @@ Lemma to_uint_of_int :
+ unfold to_uint, of_int.
+ rewrite bvec_to_nat_nat_to_bvec.
+ apply Z2Nat.id; easy.
+- rewrite Z2Nat.id; [fold size; fold two_power_size; omega|easy].
++ rewrite Z2Nat.id; [fold size; fold two_power_size; lia|easy].
+ Qed.
+
+ (* Why3 goal *)
+@@ -1451,6 +1453,7 @@ Qed.
+ (* Why3 goal *)
+ Lemma positive_is_ge_zeros :
+ forall (x:t), is_signed_positive x <-> sge x zeros.
++Proof.
+ intros.
+ unfold is_signed_positive, sge, to_int, twos_complement, size_nat.
+ rewrite zeros_sign_false. destruct Bsign.
+@@ -1459,14 +1462,14 @@ Lemma positive_is_ge_zeros :
+ generalize (bvec_to_nat_range x). intros.
+ simpl (Z.of_nat 0) in H.
+ assert (Pow2int.pow2 (Z.of_nat (S last_bit)) <= Z.of_nat (bvec_to_nat (S last_bit) x)).
+- omega. unfold size_nat in *.
+- apply Z2Nat.inj_le in H1; try omega.
+- rewrite Nat2Z.id in H1; try omega.
+- eapply Z.le_trans. apply (max_int_nat (S last_bit)). omega.
++ lia. unfold size_nat in *.
++ apply Z2Nat.inj_le in H1.
++ rewrite Nat2Z.id in H1; lia.
++ eapply Z.le_trans. apply (max_int_nat (S last_bit)). lia.
+
+ intuition.
+ unfold zeros, zeros_aux.
+- rewrite bvec_to_nat_zeros. simpl. omega.
++ rewrite bvec_to_nat_zeros. simpl. lia.
+ Qed.
+
+ (* Why3 goal *)
+@@ -1574,13 +1577,19 @@ Lemma to_uint_udiv :
+ forall (v1:t) (v2:t),
+ ((to_uint (udiv v1 v2)) =
+ (int.EuclideanDivision.div (to_uint v1) (to_uint v2))).
++Proof.
+ intros v1 v2.
+ apply to_uint_of_int.
+ case (Z.eq_dec (to_uint v2) 0); intro.
+- rewrite e; unfold uint_in_range, div.
+- rewrite Zmod_0_r; simpl.
+- rewrite Zdiv_0_r.
++ unfold div.
++ case Z_le_dec.
++ intros _.
++ rewrite e, Zdiv_0_r.
+ split; [easy|apply Pow2int.pow2pos;easy].
++ rewrite e, Zmod_0_r.
++ intros H.
++ elim H.
++ apply to_uint_nat.
+ split.
+ apply Div_bound; split;[|apply Z.le_neq;split;[|auto]];apply to_uint_nat.
+ apply (Z.le_lt_trans _ (to_uint v1)).
+@@ -1852,7 +1861,7 @@ Lemma mask_succ :
+ rewrite mod1_is_mod by easy.
+ rewrite Z.mul_mod_idemp_l by easy.
+ rewrite Zmult_assoc_reverse, (Int.Comm1 (Pow2int.pow2 (Z.of_nat n)) 2).
+- rewrite <-Pow2int.Power_s by omega.
++ rewrite <-Pow2int.Power_s by lia.
+ rewrite <-mod1_is_mod with (x := to_uint (of_int 1) * Pow2int.pow2 (Z.of_nat n + 1)) by easy.
+ rewrite Z.add_1_r with (n := Z.of_nat n).
+ rewrite <- Nat2Z.inj_succ.
+@@ -1948,7 +1957,7 @@ Lemma mask_succ_tmp :
+ rewrite <-Z.add_1_r, Zplus_assoc_reverse, Nat2Z.inj_mul in l.
+ simpl (1 + 1) in l.
+ rewrite Zred_factor3 in l.
+- rewrite <-(Z.mul_lt_mono_pos_l 2) in l by omega.
++ rewrite <-(Z.mul_lt_mono_pos_l 2) in l by lia.
+ rewrite Z.add_1_l in l.
+ apply Zlt_succ_le in l; trivial.
+ rewrite Z2Nat.inj_lt, Nat2Z.id.
+@@ -1982,7 +1991,7 @@ Lemma nth_bit_pred_high :
+ Proof.
+ induction n;intros.
+ assert (Z.of_nat 0 <= to_uint i) by apply to_uint_bounds.
+- omega.
++ lia.
+ rewrite <-Nth_bv_is_nth.
+ rewrite mask_succ_2; simpl.
+ unfold bw_or, nth.
+@@ -1994,7 +2003,7 @@ Proof.
+ right.
+ assert (to_uint i = 0).
+ assert (H' := to_uint_bounds i).
+- omega.
++ lia.
+ rewrite H1; apply nth_zeros_is_hd.
+
+ left.
+@@ -2006,11 +2015,11 @@ Proof.
+ rewrite mod1_out; trivial.
+ split; auto with zarith.
+ apply (Z.lt_trans _ (to_uint i)).
+- omega.
++ lia.
+ apply to_uint_bounds.
+
+ rewrite H1, Nth_bv_is_nth.
+- apply IHn; rewrite <-H1; rewrite Nat2Z.inj_succ in H0; omega.
++ apply IHn; rewrite <-H1; rewrite Nat2Z.inj_succ in H0; lia.
+ Qed.
+
+ Lemma one_nth: forall {l},
+@@ -2040,8 +2049,8 @@ Lemma nth_bit_pred_low :
+ apply to_uint_extensionality.
+ rewrite to_uint_sub, to_uint_of_int, to_uint_of_int.
+ apply mod1_out.
+- split; [omega|apply Pow2int.pow2pos, Z.lt_le_incl, size_pos].
+- split; [omega|apply Pow2int.pow2pos, Z.lt_le_incl, size_pos].
++ split; [lia|apply Pow2int.pow2pos, Z.lt_le_incl, size_pos].
++ split; [lia|apply Pow2int.pow2pos, Z.lt_le_incl, size_pos].
+ apply in_range_1'.
+ rewrite H0, <-Of_int_zeros.
+ apply Nth_zeros.
+@@ -2062,18 +2071,18 @@ Lemma nth_bit_pred_low :
+ rewrite mod1_out; trivial.
+ split; auto with zarith.
+ apply (Z.lt_trans _ (to_uint i)).
+- omega.
++ lia.
+ apply to_uint_bounds.
+ rewrite H0,Nth_bv_is_nth.
+ apply IHn.
+- rewrite <-H0; omega.
+- assert (to_uint i > 0) by omega.
++ rewrite <-H0; lia.
++ assert (to_uint i > 0) by lia.
+ unfold of_int, size, size_nat.
+ rewrite one_nth.
+ rewrite nth_cons_pred by auto with zarith.
+ apply Nth_zeros_aux.
+ apply nth_aux_out_of_bound.
+- fold size; omega.
++ fold size; lia.
+ Qed.
+
+ Lemma mask_correctness :
+@@ -2090,11 +2099,11 @@ Proof.
+ rewrite uint_in_range_power in u.
+ rewrite Lsl_nth_high; auto with zarith.
+ assert (j - to_uint i = to_uint (sub (of_int j) i)).
+- rewrite to_uint_sub by omega.
++ rewrite to_uint_sub by lia.
+ rewrite to_uint_of_int by (split; auto with zarith).
+ rewrite mod1_out by auto with zarith; trivial.
+ rewrite H2.
+- rewrite Nth_bv_is_nth by omega.
++ rewrite Nth_bv_is_nth by lia.
+ apply nth_bit_pred_high; auto with zarith.
+ rewrite <-H2.
+ fold (to_uint n); auto with zarith.
+--- a/lib/coq/floating_point/GenFloat.v 2021-03-13 02:24:39.000000000 -0700
++++ b/lib/coq/floating_point/GenFloat.v 2021-10-20 08:45:02.905109791 -0600
+@@ -21,6 +21,7 @@ Require real.Abs.
+ Require real.FromInt.
+ Require floating_point.Rounding.
+
++Require Import Lia.
+ Require Import Flocq.Core.Core.
+ Require Import Flocq.IEEE754.Binary.
+ Require Import int.Abs.
+@@ -226,7 +227,7 @@ unfold FLT_exp.
+ rewrite Z.max_l.
+ apply Z.le_refl.
+ unfold emin.
+-generalize Hprec' Hemax' ; clear ; omega.
++generalize Hprec' Hemax' ; clear ; lia.
+ rewrite <- abs_IZR, Z.abs_eq, <- 2!IZR_Zpower.
+ split.
+ apply IZR_le.
+@@ -240,12 +241,12 @@ apply bpow_lt.
+ apply Zlt_pred.
+ apply Zlt_le_weak.
+ exact Hprec'.
+-generalize Hprec' ; clear ; omega.
++generalize Hprec' ; clear ; lia.
+ apply IZR_lt.
+ apply Zlt_pred.
+ apply Zlt_le_weak.
+ exact Hprec'.
+-generalize Hprec' ; clear ; omega.
++generalize Hprec' ; clear ; lia.
+ apply Zlt_succ_le.
+ change (2 ^ prec - 1)%Z with (Z.pred (2^prec))%Z.
+ rewrite <- Zsucc_pred.
+@@ -299,7 +300,7 @@ apply generic_format_abs.
+ apply generic_format_B2R.
+ apply generic_format_bpow.
+ unfold FLT_exp, emin.
+-zify ; generalize Hprec' Hemax' ; omega.
++zify ; generalize Hprec' Hemax' ; lia.
+ apply abs_B2R_lt_emax.
+ rewrite pred_eq_pos.
+ unfold pred_pos.
+@@ -316,7 +317,7 @@ rewrite minus_IZR, IZR_Zpower.
+ simpl; ring.
+ apply Zlt_le_weak.
+ exact Hprec'.
+-generalize Hprec' Hemax' ; omega.
++generalize Hprec' Hemax' ; lia.
+ apply bpow_ge_0.
+ Qed.
+
+@@ -340,7 +341,7 @@ exists (Float radix2 z 0).
+ unfold F2R ; simpl.
+ now rewrite Rmult_1_r.
+ easy.
+-simpl; unfold emin; generalize Hprec' Hemax'; omega.
++simpl; unfold emin; generalize Hprec' Hemax'; lia.
+ unfold max_representable_integer in Bz.
+ change 2%Z with (radix_val radix2) in Bz.
+ apply generic_format_abs_inv.
+@@ -348,7 +349,7 @@ rewrite <- abs_IZR, Bz, IZR_Zpower.
+ apply generic_format_bpow.
+ unfold FLT_exp, emin.
+ clear Bz; generalize Hprec' Hemax'; zify.
+-omega.
++lia.
+ apply Zlt_le_weak.
+ apply Hprec'.
+ Qed.
+--- a/lib/coq/for_drivers/ComputerOfEuclideanDivision.v 2021-03-13 02:24:39.000000000 -0700
++++ b/lib/coq/for_drivers/ComputerOfEuclideanDivision.v 2021-10-20 08:47:21.041133426 -0600
+@@ -18,8 +18,11 @@ Require int.Abs.
+ Require int.EuclideanDivision.
+ Require int.ComputerDivision.
+
++Require Import Lia.
++
+ Lemma on_pos_euclidean_is_div:
+ forall n d, (int.EuclideanDivision.div n (Zpos d)) = Z.div n (Zpos d).
++Proof.
+ intros n d.
+ unfold EuclideanDivision.div.
+ assert (0 < Z.pos d)%Z by reflexivity.
+@@ -40,6 +43,7 @@ Lemma cdiv_cases :
+ ((ZArith.BinInt.Z.quot n d) = (-(int.EuclideanDivision.div n (-d)%Z))%Z)) /\
+ ((n <= 0%Z)%Z -> (d < 0%Z)%Z ->
+ ((ZArith.BinInt.Z.quot n d) = (int.EuclideanDivision.div (-n)%Z (-d)%Z))).
++Proof.
+ intros n d.
+ destruct d as [|d|d]; destruct n as [|n|n]; intuition (try discriminate; try contradiction).
+ + assert (NZ_d:((Zpos d) <> 0)%Z) by discriminate.
+@@ -75,11 +79,12 @@ Lemma cmod_cases :
+ ((n <= 0%Z)%Z -> (d < 0%Z)%Z ->
+ ((ZArith.BinInt.Z.rem n d) =
+ (-(int.EuclideanDivision.mod1 (-n)%Z (-d)%Z))%Z)).
++Proof.
+ intros n d.
+ unfold int.EuclideanDivision.mod1.
+ assert (Z.rem n d = n - (d * (Z.quot n d)))%Z.
+ assert (H:= Z.quot_rem' n d).
+- omega.
++ lia.
+ rewrite H.
+ assert (H2:=cdiv_cases n d).
+ intuition idtac.
+@@ -87,13 +92,13 @@ Lemma cmod_cases :
+ reflexivity.
+ + rewrite H4.
+ rewrite Z.mul_opp_r.
+- omega.
++ lia.
+ + rewrite H1.
+ rewrite Z.mul_opp_r.
+ rewrite Z.mul_opp_l.
+ reflexivity.
+ + rewrite H4.
+ rewrite Z.mul_opp_l.
+- omega.
++ lia.
+ Qed.
+
+--- a/lib/coq/ieee_float/Float32.v 2021-03-13 02:24:39.000000000 -0700
++++ b/lib/coq/ieee_float/Float32.v 2021-10-20 08:48:02.353140032 -0600
+@@ -26,6 +26,7 @@ Require bv.Pow2int.
+ Require ieee_float.RoundingMode.
+ Require ieee_float.GenericFloat.
+
++Require Import Lia.
+ Import Flocq.Core.Core.
+ Import Flocq.IEEE754.Binary.
+ Import ieee_float.RoundingMode.
+@@ -79,7 +80,7 @@ apply Digits.Zpower_gt_Zdigits.
+ revert H1.
+ generalize (Digits.Zdigits radix2 (Z.pos m)).
+ unfold FLT_exp, sb.
+-intros ; zify ; omega.
++intros ; lia.
+ now apply bpow_le.
+ Qed.
+
+--- a/lib/coq/ieee_float/Float64.v 2021-03-13 02:24:39.000000000 -0700
++++ b/lib/coq/ieee_float/Float64.v 2021-10-20 08:48:31.377144412 -0600
+@@ -26,6 +26,7 @@ Require bv.Pow2int.
+ Require ieee_float.RoundingMode.
+ Require ieee_float.GenericFloat.
+
++Require Import Lia.
+ Import Flocq.Core.Core.
+ Import Flocq.IEEE754.Binary.
+ Import ieee_float.RoundingMode.
+@@ -82,7 +83,7 @@ apply Digits.Zpower_gt_Zdigits.
+ revert H1.
+ generalize (Digits.Zdigits radix2 (Z.pos m)).
+ unfold FLT_exp, sb.
+-intros ; zify ; omega.
++intros ; lia.
+ now apply bpow_le.
+ Qed.
+
+--- a/lib/coq/ieee_float/GenericFloat.v 2021-03-13 02:24:39.000000000 -0700
++++ b/lib/coq/ieee_float/GenericFloat.v 2021-10-20 09:00:59.075275716 -0600
+@@ -184,7 +184,7 @@ Proof.
+ apply Zeq_bool_true.
+ rewrite Digits.Zpos_digits2_pos.
+ rewrite (Digits.Zdigits_unique radix2 _ sb).
+- assert (sb + (emax - sb) - sb = emax - sb)%Z by omega; rewrite H0.
++ assert (sb + (emax - sb) - sb = emax - sb)%Z by ring; rewrite H0.
+ apply Zmax_left.
+ assert (1 < emax)%Z.
+ apply Z.le_lt_trans with (m := sb).
+@@ -204,7 +204,7 @@ Proof.
+ rewrite Z.pow_succ_r by trivial.
+ assert (1 <= 2 ^ (sb - 1))%Z.
+ apply Z.lt_pred_le, (Zpower_gt_0 radix2 (sb - 1)); trivial.
+- omega.
++ lia.
+ apply Zle_bool_true; auto with zarith.
+ Qed.
+
+@@ -633,7 +633,7 @@ Proof.
+ rewrite H0 in a.
+ replace (Z.abs (Z.pos m)) with (Z.pos m) in a by auto with zarith.
+ destruct a. clear H1.
+- assert (Z.pos m = radix2 ^ sb - 1 \/ Z.pos m < radix2 ^ sb - 1)%Z by omega.
++ assert (Z.pos m = radix2 ^ sb - 1 \/ Z.pos m < radix2 ^ sb - 1)%Z by lia.
+ destruct H1.
+ right.
+ replace (radix2 ^ sb)%Z with (Z.pos 2 ^ Z.pos sb_pos)%Z in H1 by auto.
+@@ -1212,9 +1212,9 @@ Proof.
+ unfold FLT_exp.
+ replace (sb - 1 + 1 + 1 - sb)%Z with 1%Z by ring.
+ apply Z.max_l.
+- pose sb_gt_1; pose Hemax'; omega.
++ pose sb_gt_1; pose Hemax'; lia.
+ apply Zle_bool_true.
+- pose Hemax'; pose Hsbb; omega.
++ pose Hemax'; pose Hsbb; lia.
+ Qed.
+
+ Definition Bmax_rep_int: t.
+@@ -1288,15 +1288,15 @@ exists (Float radix2 z 0).
+ unfold F2R ; simpl.
+ now rewrite Rmult_1_r.
+ easy.
+-simpl; unfold emin; generalize Hsb' Hemax'; omega.
++simpl; unfold emin; generalize Hsb' Hemax'; lia.
+ unfold pow2sb in Bz.
+ change 2%Z with (radix_val radix2) in Bz.
+ apply generic_format_abs_inv.
+ rewrite <- abs_IZR, Bz, IZR_Zpower.
+ apply generic_format_bpow.
+ unfold FLT_exp, emin.
+-clear Bz; generalize Hsb' Hemax'; zify.
+-omega.
++clear Bz; generalize Hsb' Hemax'.
++lia.
+ apply Zlt_le_weak.
+ apply Hsb'.
+ Qed.
+@@ -2371,8 +2371,7 @@ intros m x y r.
+ replace (Z.pow_pos 2 sb_pos - 1)%Z with (Z.pos (2 ^ sb_pos - 1)) in H.
+ + unfold to_real. rewrite <-min_real_is_F2R, <-FF2R_B2FF, H; auto.
+ + rewrite Pos2Z.inj_sub, Pos2Z.inj_pow_pos; auto.
+- apply Pos.pow_gt_1.
+- zify; auto with zarith.
++ now apply Pos.pow_gt_1.
+ - split.
+ destruct r; easy.
+ intro.
+@@ -2394,8 +2393,7 @@ intros m x y r.
+ replace (Z.pow_pos 2 sb_pos - 1)%Z with (Z.pos (2 ^ sb_pos - 1)) in H.
+ + unfold to_real. rewrite <-max_real_is_F2R, <-FF2R_B2FF, H; auto.
+ + rewrite Pos2Z.inj_sub, Pos2Z.inj_pow_pos; auto.
+- apply Pos.pow_gt_1.
+- zify; auto with zarith.
++ now apply Pos.pow_gt_1.
+ + assert (~is_nan r) by
+ (destruct r; try easy; destruct n; easy).
+ rewrite is_positive_Bsign; easy. }
+@@ -2412,16 +2410,14 @@ intros m x y r.
+ replace (Z.pow_pos 2 sb_pos - 1)%Z with (Z.pos (2 ^ sb_pos - 1)) in H.
+ + unfold to_real. rewrite <-min_real_is_F2R, <-FF2R_B2FF, H; auto.
+ + rewrite Pos2Z.inj_sub, Pos2Z.inj_pow_pos; auto.
+- apply Pos.pow_gt_1.
+- zify; auto with zarith.
++ now apply Pos.pow_gt_1.
+ - split.
+ + intro; split.
+ destruct r; try easy; destruct n; easy.
+ replace (Z.pow_pos 2 sb_pos - 1)%Z with (Z.pos (2 ^ sb_pos - 1)) in H.
+ * unfold to_real. rewrite <-max_real_is_F2R, <-FF2R_B2FF, H; auto.
+ * rewrite Pos2Z.inj_sub, Pos2Z.inj_pow_pos; auto.
+- apply Pos.pow_gt_1.
+- zify; auto with zarith.
++ now apply Pos.pow_gt_1.
+ + easy. }
+ - destruct H.
+ pose proof (Bplus_correct sb emax Hsb' Hemax' nan_bf m x y H H0).
+@@ -2635,8 +2631,7 @@ Proof.
+ replace (Z.pow_pos 2 sb_pos - 1)%Z with (Z.pos (2 ^ sb_pos - 1)) in H.
+ + unfold to_real. rewrite <-min_real_is_F2R, <-FF2R_B2FF, H; auto.
+ + rewrite Pos2Z.inj_sub, Pos2Z.inj_pow_pos; auto.
+- apply Pos.pow_gt_1.
+- zify; auto with zarith.
++ now apply Pos.pow_gt_1.
+ - split.
+ destruct r; easy.
+ intro.
+@@ -2658,8 +2653,7 @@ Proof.
+ replace (Z.pow_pos 2 sb_pos - 1)%Z with (Z.pos (2 ^ sb_pos - 1)) in H.
+ + unfold to_real. rewrite <-max_real_is_F2R, <-FF2R_B2FF, H; auto.
+ + rewrite Pos2Z.inj_sub, Pos2Z.inj_pow_pos; auto.
+- apply Pos.pow_gt_1.
+- zify; auto with zarith.
++ now apply Pos.pow_gt_1.
+ + assert (~is_nan r) by
+ (destruct r; try easy; destruct n; easy).
+ rewrite is_positive_Bsign; easy. }
+@@ -2676,16 +2670,14 @@ Proof.
+ replace (Z.pow_pos 2 sb_pos - 1)%Z with (Z.pos (2 ^ sb_pos - 1)) in H.
+ + unfold to_real. rewrite <-min_real_is_F2R, <-FF2R_B2FF, H; auto.
+ + rewrite Pos2Z.inj_sub, Pos2Z.inj_pow_pos; auto.
+- apply Pos.pow_gt_1.
+- zify; auto with zarith.
++ now apply Pos.pow_gt_1.
+ - split.
+ + intro; split.
+ destruct r; try easy; destruct n; easy.
+ replace (Z.pow_pos 2 sb_pos - 1)%Z with (Z.pos (2 ^ sb_pos - 1)) in H.
+ * unfold to_real. rewrite <-max_real_is_F2R, <-FF2R_B2FF, H; auto.
+ * rewrite Pos2Z.inj_sub, Pos2Z.inj_pow_pos; auto.
+- apply Pos.pow_gt_1.
+- zify; auto with zarith.
++ now apply Pos.pow_gt_1.
+ + easy. }
+ - destruct H.
+ pose proof (Bminus_correct sb emax Hsb' Hemax' nan_bf m x y H H0).
+@@ -2854,8 +2846,7 @@ Proof.
+ replace (Z.pow_pos 2 sb_pos - 1)%Z with (Z.pos (2 ^ sb_pos - 1)) in H1.
+ + unfold to_real. rewrite <-min_real_is_F2R, <-FF2R_B2FF, H1; auto.
+ + rewrite Pos2Z.inj_sub, Pos2Z.inj_pow_pos; auto.
+- apply Pos.pow_gt_1.
+- zify; auto with zarith.
++ now apply Pos.pow_gt_1.
+ - split.
+ assert (~is_nan r) by
+ (destruct r; try easy; destruct n; easy).
+@@ -2865,8 +2856,7 @@ Proof.
+ replace (Z.pow_pos 2 sb_pos - 1)%Z with (Z.pos (2 ^ sb_pos - 1)) in H1.
+ + unfold to_real. rewrite <-min_real_is_F2R, <-FF2R_B2FF, H1; auto.
+ + rewrite Pos2Z.inj_sub, Pos2Z.inj_pow_pos; auto.
+- apply Pos.pow_gt_1.
+- zify; auto with zarith.
++ now apply Pos.pow_gt_1.
+ - split.
+ destruct r; easy.
+ assert (~is_nan r) by
+@@ -2883,8 +2873,7 @@ Proof.
+ replace (Z.pow_pos 2 sb_pos - 1)%Z with (Z.pos (2 ^ sb_pos - 1)) in H1.
+ + unfold to_real. rewrite <-max_real_is_F2R, <-FF2R_B2FF, H1; auto.
+ + rewrite Pos2Z.inj_sub, Pos2Z.inj_pow_pos; auto.
+- apply Pos.pow_gt_1.
+- zify; auto with zarith. }
++ now apply Pos.pow_gt_1. }
+ assert (~is_nan r) by
+ (destruct r; try easy; destruct n; easy).
+ rewrite is_positive_Bsign, H1'; intro h; contradict h; easy.
+@@ -2904,8 +2893,7 @@ Proof.
+ replace (Z.pow_pos 2 sb_pos - 1)%Z with (Z.pos (2 ^ sb_pos - 1)) in H1.
+ + unfold to_real. rewrite <-max_real_is_F2R, <-FF2R_B2FF, H1; auto.
+ + rewrite Pos2Z.inj_sub, Pos2Z.inj_pow_pos; auto.
+- apply Pos.pow_gt_1.
+- zify; auto with zarith. }
++ now apply Pos.pow_gt_1. }
+ assert (~is_nan r) by
+ (destruct r; try easy; destruct n; easy).
+ rewrite is_positive_Bsign, H1'; intro h; contradict h; easy. }
+@@ -2937,8 +2925,7 @@ Proof.
+ (destruct r; try easy; destruct n; easy).
+ rewrite is_positive_Bsign, H1'; intro h; contradict h; easy. }
+ rewrite Pos2Z.inj_sub, Pos2Z.inj_pow_pos; auto.
+- apply Pos.pow_gt_1.
+- zify; auto with zarith.
++ now apply Pos.pow_gt_1.
+ - pose proof (Bmult_correct sb emax Hsb' Hemax' nan_bf m x y).
+ destruct (Rlt_le_dec (Rabs (round m (to_real x * to_real y))) (bpow radix2 emax));
+ [rewrite Rlt_bool_true in H1; auto| rewrite Rlt_bool_false in H1; auto].
+@@ -3051,8 +3038,7 @@ Proof.
+ simpl in H4.
+ replace (Z.pow_pos 2 sb_pos - 1)%Z with (Z.pos (2 ^ sb_pos - 1)) in H4 by
+ (rewrite Pos2Z.inj_sub, Pos2Z.inj_pow_pos; auto;
+- apply Pos.pow_gt_1;
+- zify; auto with zarith).
++ now apply Pos.pow_gt_1).
+ rewrite <-min_real_is_F2R; assumption. }
+ split; intro; [destruct r; easy|].
+ destruct r; try easy.
+@@ -3069,8 +3055,7 @@ Proof.
+ simpl in H4.
+ replace (Z.pow_pos 2 sb_pos - 1)%Z with (Z.pos (2 ^ sb_pos - 1)) in H4 by
+ (rewrite Pos2Z.inj_sub, Pos2Z.inj_pow_pos; auto;
+- apply Pos.pow_gt_1;
+- zify; auto with zarith).
++ now apply Pos.pow_gt_1).
+ rewrite <-max_real_is_F2R; assumption.
+ + destruct r; try easy; try (destruct n; easy).
+ destruct s; try easy.
+@@ -3084,8 +3069,7 @@ Proof.
+ simpl in H4.
+ replace (Z.pow_pos 2 sb_pos - 1)%Z with (Z.pos (2 ^ sb_pos - 1)) in H4 by
+ (rewrite Pos2Z.inj_sub, Pos2Z.inj_pow_pos; auto;
+- apply Pos.pow_gt_1;
+- zify; auto with zarith).
++ now apply Pos.pow_gt_1).
+ rewrite <-min_real_is_F2R; assumption.
+ - split; [destruct r; try easy| ].
+ apply (f_equal (FF2R radix2)) in H4.
+@@ -3093,8 +3077,7 @@ Proof.
+ simpl in H4.
+ replace (Z.pow_pos 2 sb_pos - 1)%Z with (Z.pos (2 ^ sb_pos - 1)) in H4 by
+ (rewrite Pos2Z.inj_sub, Pos2Z.inj_pow_pos; auto;
+- apply Pos.pow_gt_1;
+- zify; auto with zarith).
++ now apply Pos.pow_gt_1).
+ rewrite <-max_real_is_F2R; assumption.
+ - contradict H5.
+ destruct r; destruct s; easy. }
+@@ -4541,7 +4524,7 @@ Proof.
+ { assert (IZR (floor(to_real x)) < 0) by lra.
+ assert (-2 < IZR (floor (to_real x))) by lra.
+ apply lt_IZR in H1; apply lt_IZR in H2.
+- now replace (floor (to_real x)) with (-1)%Z by omega. }
++ now replace (floor (to_real x)) with (-1)%Z by lia. }
+ lra.
+ Qed.
+
+@@ -4559,7 +4542,7 @@ Proof.
+ { assert (0 < IZR (ceil( to_real x))) by lra.
+ assert (IZR (ceil(to_real x)) < 2) by lra.
+ apply lt_IZR in H1; apply lt_IZR in H2.
+- now replace (ceil (to_real x)) with 1%Z by omega. }
++ now replace (ceil (to_real x)) with 1%Z by lia. }
+ lra.
+ Qed.
+
+@@ -4615,9 +4598,9 @@ Proof.
+ unfold FLT_exp.
+ replace (sb - 1 + 1 + - sb)%Z with 0%Z by ring.
+ apply Z.max_l.
+- pose sb_gt_1; pose Hemax'; omega.
++ pose sb_gt_1; pose Hemax'; lia.
+ apply Zle_bool_true.
+- pose Hemax'; pose sb_gt_1; omega.
++ pose Hemax'; pose sb_gt_1; lia.
+ Qed.
+
+ Definition half: t.
+--- a/lib/coq/int/Abs.v 2021-03-13 02:24:39.000000000 -0700
++++ b/lib/coq/int/Abs.v 2021-10-20 09:01:55.793292871 -0600
+@@ -15,6 +15,8 @@ Require Import BuiltIn.
+ Require BuiltIn.
+ Require int.Int.
+
++Require Import Lia.
++
+ (* Why3 comment *)
+ (* abs is replaced with (ZArith.BinInt.Z.abs x) by the coq driver *)
+
+@@ -38,14 +40,15 @@ Qed.
+ Lemma Abs_le :
+ forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z),
+ ((ZArith.BinInt.Z.abs x) <= y)%Z <-> ((-y)%Z <= x)%Z /\ (x <= y)%Z.
++Proof.
+ intros x y.
+-zify.
+-omega.
++lia.
+ Qed.
+
+ (* Why3 goal *)
+ Lemma Abs_pos :
+ forall (x:Numbers.BinNums.Z), (0%Z <= (ZArith.BinInt.Z.abs x))%Z.
++Proof.
+ exact Zabs_pos.
+ Qed.
+
+--- a/lib/coq/int/ComputerDivision.v 2021-03-13 02:24:39.000000000 -0700
++++ b/lib/coq/int/ComputerDivision.v 2021-10-20 09:12:14.876540134 -0600
+@@ -16,7 +16,7 @@ Require BuiltIn.
+ Require int.Int.
+ Require int.Abs.
+
+-Require Import Zquot.
++Require Import Zquot Lia.
+
+ (* Why3 comment *)
+ (* div is replaced with (ZArith.BinInt.Z.quot x x1) by the coq driver *)
+@@ -28,6 +28,7 @@ Require Import Zquot.
+ Lemma Div_mod :
+ forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z), ~ (y = 0%Z) ->
+ (x = ((y * (ZArith.BinInt.Z.quot x y))%Z + (ZArith.BinInt.Z.rem x y))%Z).
++Proof.
+ intros x y _.
+ apply Z.quot_rem'.
+ Qed.
+@@ -38,6 +39,7 @@ Lemma Div_bound :
+ (0%Z <= x)%Z /\ (0%Z < y)%Z ->
+ (0%Z <= (ZArith.BinInt.Z.quot x y))%Z /\
+ ((ZArith.BinInt.Z.quot x y) <= x)%Z.
++Proof.
+ intros x y (Hx,Hy).
+ split.
+ now apply Z.quot_pos.
+@@ -47,7 +49,7 @@ apply Z.le_refl.
+ destruct (Zle_lt_or_eq 0 x Hx) as [H'|H'].
+ apply Zlt_le_weak.
+ apply Z.quot_lt with (1 := H').
+-omega.
++lia.
+ now rewrite <- H', Zquot_0_l.
+ Qed.
+
+@@ -56,13 +58,14 @@ Lemma Mod_bound :
+ forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z), ~ (y = 0%Z) ->
+ ((-(ZArith.BinInt.Z.abs y))%Z < (ZArith.BinInt.Z.rem x y))%Z /\
+ ((ZArith.BinInt.Z.rem x y) < (ZArith.BinInt.Z.abs y))%Z.
++Proof.
+ intros x y Zy.
+ destruct (Zle_or_lt 0 x) as [Hx|Hx].
+ refine ((fun H => conj (Z.lt_le_trans _ 0 _ _ (proj1 H)) (proj2 H)) _).
+-clear -Zy ; zify ; omega.
++clear -Zy ; lia.
+ now apply Zrem_lt_pos.
+ refine ((fun H => conj (proj1 H) (Z.le_lt_trans _ 0 _ (proj2 H) _)) _).
+-clear -Zy ; zify ; omega.
++clear -Zy ; lia.
+ apply Zrem_lt_neg with (2 := Zy).
+ now apply Zlt_le_weak.
+ Qed.
+@@ -71,6 +74,7 @@ Qed.
+ Lemma Div_sign_pos :
+ forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z),
+ (0%Z <= x)%Z /\ (0%Z < y)%Z -> (0%Z <= (ZArith.BinInt.Z.quot x y))%Z.
++Proof.
+ intros x y (Hx, Hy).
+ now apply Z.quot_pos.
+ Qed.
+@@ -79,16 +83,18 @@ Qed.
+ Lemma Div_sign_neg :
+ forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z),
+ (x <= 0%Z)%Z /\ (0%Z < y)%Z -> ((ZArith.BinInt.Z.quot x y) <= 0%Z)%Z.
++Proof.
+ intros x y (Hx, Hy).
+ generalize (Z.quot_pos (-x) y).
+ rewrite Zquot_opp_l.
+-omega.
++lia.
+ Qed.
+
+ (* Why3 goal *)
+ Lemma Mod_sign_pos :
+ forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z),
+ (0%Z <= x)%Z /\ ~ (y = 0%Z) -> (0%Z <= (ZArith.BinInt.Z.rem x y))%Z.
++Proof.
+ intros x y (Hx, Zy).
+ now apply Zrem_lt_pos.
+ Qed.
+@@ -97,6 +103,7 @@ Qed.
+ Lemma Mod_sign_neg :
+ forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z),
+ (x <= 0%Z)%Z /\ ~ (y = 0%Z) -> ((ZArith.BinInt.Z.rem x y) <= 0%Z)%Z.
++Proof.
+ intros x y (Hx, Zy).
+ now apply Zrem_lt_neg.
+ Qed.
+@@ -106,23 +113,25 @@ Lemma Rounds_toward_zero :
+ forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z), ~ (y = 0%Z) ->
+ ((ZArith.BinInt.Z.abs ((ZArith.BinInt.Z.quot x y) * y)%Z) <=
+ (ZArith.BinInt.Z.abs x))%Z.
++Proof.
+ intros x y Zy.
+ rewrite Zmult_comm.
+-zify.
+ generalize (Z.mul_quot_le x y).
+ generalize (Z.mul_quot_ge x y).
+-omega.
++lia.
+ Qed.
+
+ (* Why3 goal *)
+ Lemma Div_1 :
+ forall (x:Numbers.BinNums.Z), ((ZArith.BinInt.Z.quot x 1%Z) = x).
++Proof.
+ exact Z.quot_1_r.
+ Qed.
+
+ (* Why3 goal *)
+ Lemma Mod_1 :
+ forall (x:Numbers.BinNums.Z), ((ZArith.BinInt.Z.rem x 1%Z) = 0%Z).
++Proof.
+ exact Z.rem_1_r.
+ Qed.
+
+@@ -130,6 +139,7 @@ Qed.
+ Lemma Div_inf :
+ forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z),
+ (0%Z <= x)%Z /\ (x < y)%Z -> ((ZArith.BinInt.Z.quot x y) = 0%Z).
++Proof.
+ exact Z.quot_small.
+ Qed.
+
+@@ -137,6 +147,7 @@ Qed.
+ Lemma Mod_inf :
+ forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z),
+ (0%Z <= x)%Z /\ (x < y)%Z -> ((ZArith.BinInt.Z.rem x y) = x).
++Proof.
+ exact Z.rem_small.
+ Qed.
+
+@@ -146,6 +157,7 @@ Lemma Div_mult :
+ (0%Z < x)%Z /\ (0%Z <= y)%Z /\ (0%Z <= z)%Z ->
+ ((ZArith.BinInt.Z.quot ((x * y)%Z + z)%Z x) =
+ (y + (ZArith.BinInt.Z.quot z x))%Z).
++Proof.
+ intros x y z (Hx&Hy&Hz).
+ rewrite (Zplus_comm y).
+ rewrite <- Z_quot_plus.
+@@ -163,6 +175,7 @@ Lemma Mod_mult :
+ forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z) (z:Numbers.BinNums.Z),
+ (0%Z < x)%Z /\ (0%Z <= y)%Z /\ (0%Z <= z)%Z ->
+ ((ZArith.BinInt.Z.rem ((x * y)%Z + z)%Z x) = (ZArith.BinInt.Z.rem z x)).
++Proof.
+ intros x y z (Hx&Hy&Hz).
+ rewrite Zplus_comm, Zmult_comm.
+ apply Z_rem_plus.
+--- a/lib/coq/int/Div2.v 2021-03-13 02:24:39.000000000 -0700
++++ b/lib/coq/int/Div2.v 2021-10-20 09:12:36.451550754 -0600
+@@ -15,6 +15,7 @@ Require Import BuiltIn.
+ Require BuiltIn.
+ Require int.Int.
+
++Require Import Lia.
+ Require Import int.EuclideanDivision.
+
+ (* Why3 goal *)
+@@ -28,6 +29,6 @@ exists (div x 2).
+ refine (_ (Mod_bound x 2 _) (Div_mod x 2 _)) ; try easy.
+ intros H1 H2.
+ simpl in H1.
+-omega.
++lia.
+ Qed.
+
+--- a/lib/coq/int/EuclideanDivision.v 2021-03-13 02:24:39.000000000 -0700
++++ b/lib/coq/int/EuclideanDivision.v 2021-10-20 09:15:30.675626764 -0600
+@@ -16,8 +16,11 @@ Require BuiltIn.
+ Require int.Int.
+ Require int.Abs.
+
++Require Import Lia.
++
+ (* Why3 goal *)
+ Definition div : Numbers.BinNums.Z -> Numbers.BinNums.Z -> Numbers.BinNums.Z.
++Proof.
+ intros x y.
+ case (Z_le_dec 0 (Zmod x y)) ; intros H.
+ exact (Z.div x y).
+@@ -27,6 +30,7 @@ Defined.
+ (* Why3 goal *)
+ Definition mod1 :
+ Numbers.BinNums.Z -> Numbers.BinNums.Z -> Numbers.BinNums.Z.
++Proof.
+ intros x y.
+ exact (x - y * div x y)%Z.
+ Defined.
+@@ -35,6 +39,7 @@ Defined.
+ Lemma Div_mod :
+ forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z), ~ (y = 0%Z) ->
+ (x = ((y * (div x y))%Z + (mod1 x y))%Z).
++Proof.
+ intros x y Zy.
+ unfold mod1, div.
+ case Z_le_dec ; intros H ; ring.
+@@ -44,6 +49,7 @@ Qed.
+ Lemma Mod_bound :
+ forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z), ~ (y = 0%Z) ->
+ (0%Z <= (mod1 x y))%Z /\ ((mod1 x y) < (ZArith.BinInt.Z.abs y))%Z.
++Proof.
+ intros x y Zy.
+ assert (H := Zabs_spec y).
+ assert (H1 := Z_mod_neg x y).
+@@ -51,10 +57,10 @@ assert (H2 := Z_mod_lt x y).
+ unfold mod1, div.
+ case Z_le_dec ; intros H0.
+ rewrite Zmult_comm, <- Zmod_eq_full with (1 := Zy).
+-omega.
++lia.
+ replace (x - y * (x / y + 1))%Z with (x - x / y * y - y)%Z by ring.
+ rewrite <- Zmod_eq_full with (1 := Zy).
+-omega.
++lia.
+ Qed.
+
+ (* Why3 goal *)
+@@ -62,29 +68,31 @@ Lemma Div_unique :
+ forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z) (q:Numbers.BinNums.Z),
+ (0%Z < y)%Z -> ((q * y)%Z <= x)%Z /\ (x < ((q * y)%Z + y)%Z)%Z ->
+ ((div x y) = q).
++Proof.
+ intros x y q h1 (h2,h3).
+-assert (h:(~(y=0))%Z) by omega.
++assert (h:(~(y=0))%Z) by lia.
+ generalize (Mod_bound x y h); intro h0.
+ rewrite Z.abs_eq in h0; auto with zarith.
+ generalize (Div_mod x y h); clear h; intro h.
+-assert (cases:(div x y = q \/ (div x y <= q - 1 \/ div x y >= q+1))%Z) by omega.
++assert (cases:(div x y = q \/ (div x y <= q - 1 \/ div x y >= q+1))%Z) by lia.
+ destruct cases as [h4 | [h5 | h6]]; auto.
+ assert (y * div x y <= y * (q - 1))%Z.
+ apply Zmult_le_compat_l; auto with zarith.
+ replace (y*(q-1))%Z with (q*y - y)%Z in H by ring.
+ elimtype False.
+-omega.
++lia.
+ assert (y * div x y >= y * (q + 1))%Z.
+ apply Zmult_ge_compat_l; auto with zarith.
+ replace (y*(q+1))%Z with (q*y + y)%Z in H by ring.
+ elimtype False.
+-omega.
++lia.
+ Qed.
+
+ (* Why3 goal *)
+ Lemma Div_bound :
+ forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z),
+ (0%Z <= x)%Z /\ (0%Z < y)%Z -> (0%Z <= (div x y))%Z /\ ((div x y) <= x)%Z.
++Proof.
+ intros x y (Hx,Hy).
+ unfold div.
+ case Z_le_dec ; intros H.
+@@ -96,7 +104,7 @@ rewrite H', Zdiv_1_r.
+ apply Z.le_refl.
+ rewrite <- (Zdiv_1_r x) at 2.
+ apply Zdiv_le_compat_l with (1 := Hx).
+-omega.
++lia.
+ elim H.
+ apply Z_mod_lt.
+ now apply Z.lt_gt.
+@@ -104,6 +112,7 @@ Qed.
+
+ (* Why3 goal *)
+ Lemma Mod_1 : forall (x:Numbers.BinNums.Z), ((mod1 x 1%Z) = 0%Z).
++Proof.
+ intros x.
+ unfold mod1, div.
+ rewrite Zmod_1_r, Zdiv_1_r, Zmult_1_l.
+@@ -112,6 +121,7 @@ Qed.
+
+ (* Why3 goal *)
+ Lemma Div_1 : forall (x:Numbers.BinNums.Z), ((div x 1%Z) = x).
++Proof.
+ intros x.
+ unfold div.
+ now rewrite Zmod_1_r, Zdiv_1_r.
+@@ -121,6 +131,7 @@ Qed.
+ Lemma Div_inf :
+ forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z),
+ (0%Z <= x)%Z /\ (x < y)%Z -> ((div x y) = 0%Z).
++Proof.
+ intros x y Hxy.
+ unfold div.
+ case Z_le_dec ; intros H.
+@@ -133,8 +144,9 @@ Qed.
+ Lemma Div_inf_neg :
+ forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z),
+ (0%Z < x)%Z /\ (x <= y)%Z -> ((div (-x)%Z y) = (-1%Z)%Z).
++Proof.
+ intros x y Hxy.
+-assert (h: (x < y \/ x = y)%Z) by omega.
++assert (h: (x < y \/ x = y)%Z) by lia.
+ destruct h.
+ (* case 0 < x < y *)
+ assert (h1: (x mod y = x)%Z).
+@@ -165,6 +177,7 @@ Qed.
+ (* Why3 goal *)
+ Lemma Mod_0 :
+ forall (y:Numbers.BinNums.Z), ~ (y = 0%Z) -> ((mod1 0%Z y) = 0%Z).
++Proof.
+ intros y Hy.
+ unfold mod1, div.
+ rewrite Zmod_0_l.
+@@ -175,6 +188,7 @@ Qed.
+ (* Why3 goal *)
+ Lemma Div_1_left :
+ forall (y:Numbers.BinNums.Z), (1%Z < y)%Z -> ((div 1%Z y) = 0%Z).
++Proof.
+ intros y Hy.
+ rewrite Div_inf; auto with zarith.
+ Qed.
+@@ -182,6 +196,7 @@ Qed.
+ (* Why3 goal *)
+ Lemma Div_minus1_left :
+ forall (y:Numbers.BinNums.Z), (1%Z < y)%Z -> ((div (-1%Z)%Z y) = (-1%Z)%Z).
++Proof.
+ intros y Hy.
+ unfold div.
+ assert (h1: (1 mod y = 1)%Z).
+@@ -197,6 +212,7 @@ Qed.
+ (* Why3 goal *)
+ Lemma Mod_1_left :
+ forall (y:Numbers.BinNums.Z), (1%Z < y)%Z -> ((mod1 1%Z y) = 1%Z).
++Proof.
+ intros y Hy.
+ unfold mod1.
+ rewrite Div_1_left; auto with zarith.
+@@ -206,6 +222,7 @@ Qed.
+ Lemma Mod_minus1_left :
+ forall (y:Numbers.BinNums.Z), (1%Z < y)%Z ->
+ ((mod1 (-1%Z)%Z y) = (y - 1%Z)%Z).
++Proof.
+ intros y Hy.
+ unfold mod1.
+ rewrite Div_minus1_left; auto with zarith.
+@@ -217,6 +234,7 @@ Open Scope Z_scope.
+ Lemma Div_mult :
+ forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z) (z:Numbers.BinNums.Z),
+ (0%Z < x)%Z -> ((div ((x * y)%Z + z)%Z x) = (y + (div z x))%Z).
++Proof.
+ intros x y z h.
+ unfold div.
+ destruct (Z_le_dec 0 (z mod x)).
+@@ -231,6 +249,7 @@ Qed.
+ Lemma Mod_mult :
+ forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z) (z:Numbers.BinNums.Z),
+ (0%Z < x)%Z -> ((mod1 ((x * y)%Z + z)%Z x) = (mod1 z x)).
++Proof.
+ intros x y z h.
+ unfold mod1.
+ rewrite Div_mult.
+--- a/lib/coq/int/Exponentiation.v 2021-03-13 02:24:39.000000000 -0700
++++ b/lib/coq/int/Exponentiation.v 2021-10-20 09:16:14.466643317 -0600
+@@ -69,7 +69,8 @@ Lemma Power_s_alt :
+ Proof.
+ intros x n h1.
+ rewrite <- Power_s; auto with zarith.
+-f_equal; omega.
++apply f_equal.
++ring.
+ Qed.
+
+ (* Why3 goal *)
+--- a/lib/coq/int/MinMax.v 2021-03-13 02:24:39.000000000 -0700
++++ b/lib/coq/int/MinMax.v 2021-10-20 09:20:06.034764663 -0600
+@@ -15,6 +15,8 @@ Require Import BuiltIn.
+ Require BuiltIn.
+ Require int.Int.
+
++Require Import Lia.
++
+ (* Why3 comment *)
+ (* min is replaced with (ZArith.BinInt.Z.min x x1) by the coq driver *)
+
+@@ -28,7 +30,7 @@ intros x y.
+ split ; intros H.
+ now apply Z.min_l.
+ apply Z.min_r.
+-omega.
++lia.
+ Qed.
+
+ (* Why3 comment *)
+@@ -44,13 +46,14 @@ intros x y.
+ split ; intros H.
+ now apply Z.max_r.
+ apply Z.max_l.
+-omega.
++lia.
+ Qed.
+
+ (* Why3 goal *)
+ Lemma Min_r :
+ forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z), (y <= x)%Z ->
+ ((ZArith.BinInt.Z.min x y) = y).
++Proof.
+ exact Z.min_r.
+ Qed.
+
+@@ -58,6 +61,7 @@ Qed.
+ Lemma Max_l :
+ forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z), (y <= x)%Z ->
+ ((ZArith.BinInt.Z.max x y) = x).
++Proof.
+ exact Z.max_l.
+ Qed.
+
+@@ -65,6 +69,7 @@ Qed.
+ Lemma Min_comm :
+ forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z),
+ ((ZArith.BinInt.Z.min x y) = (ZArith.BinInt.Z.min y x)).
++Proof.
+ exact Z.min_comm.
+ Qed.
+
+@@ -72,6 +77,7 @@ Qed.
+ Lemma Max_comm :
+ forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z),
+ ((ZArith.BinInt.Z.max x y) = (ZArith.BinInt.Z.max y x)).
++Proof.
+ exact Z.max_comm.
+ Qed.
+
+--- a/lib/coq/int/NumOf.v 2021-03-13 02:24:39.000000000 -0700
++++ b/lib/coq/int/NumOf.v 2021-10-20 09:22:55.402885709 -0600
+@@ -16,6 +16,8 @@ Require BuiltIn.
+ Require HighOrd.
+ Require int.Int.
+
++Require Import Lia.
++
+ Fixpoint numof_aux (f : Z -> bool) (a : Z) (n : nat) : Z :=
+ match n with
+ | S n => (numof_aux f a n + (if f (a + (Z.of_nat n)) then 1%Z else 0%Z))%Z
+@@ -47,13 +49,13 @@ split ; intros h1.
+ - assert (Z.to_nat (b - a) = 0).
+ revert h1.
+ rewrite <-Z.le_sub_0.
+- destruct (b - a)%Z ; try easy ; intros H ; now elim H. (* TODO: replace by now after 8.4 *)
++ now destruct (b - a)%Z.
+ now rewrite H.
+ - rewrite S_pred with (m := 0) (n := Z.to_nat (b - a)).
+- 2: apply (Z2Nat.inj_lt 0); omega.
++ 2: apply (Z2Nat.inj_lt 0); lia.
+ rewrite <- Z2Nat.inj_pred.
+ simpl numof_aux.
+- rewrite Z2Nat.id by omega.
++ rewrite Z2Nat.id by lia.
+ replace (a + Z.pred (b - a))%Z with (b - 1)%Z by (unfold Z.pred ; ring).
+ replace (Z.pred (b - a)) with (b - 1 - a)%Z by (unfold Z.pred ; ring).
+ split ; intros h2.
+@@ -80,12 +82,12 @@ Proof.
+ intros p a b h1.
+ unfold numof.
+ set (x := Z.to_nat (b - a)).
+- rewrite <-Z2Nat.id with (n := (b - a)%Z) by omega.
++ rewrite <-Z2Nat.id with (n := (b - a)%Z) by lia.
+ change (0 <= numof_aux p a x <= Z.of_nat x)%Z.
+ induction x.
+- simpl; omega.
++ split ; apply Z.le_refl.
+ rewrite Nat2Z.inj_succ; simpl numof_aux.
+- case (p (a + Z.of_nat x)%Z); omega.
++ case (p (a + Z.of_nat x)%Z); lia.
+ Qed.
+
+ (* Why3 goal *)
+@@ -101,7 +103,7 @@ Proof.
+ intros.
+ case (Z.eq_dec b x).
+ intro e; rewrite e.
+- rewrite Numof_empty with (a := x) (b := x); omega.
++ rewrite Numof_empty with (a := x) (b := x); lia.
+ intro H6.
+ refine (_ (proj2 (numof'def p a x) _)).
+ intros [H1 H2].
+@@ -110,15 +112,15 @@ Proof.
+ destruct (Bool.bool_dec (p (x - 1)%Z) true) as [H5|H5].
+ rewrite H1, H3, H ; auto with zarith.
+ rewrite H2, H4, H ; auto with zarith.
+- clear -H0 H6 ; omega.
+- clear -h1 H0 H6 ; omega.
++ clear -H0 H6 ; lia.
++ clear -h1 H0 H6 ; lia.
+ Qed.
+
+ Lemma numof_succ: forall p a, numof p a (a + 1) = (if p a then 1%Z else 0%Z).
+ Proof.
+ intros.
+ unfold numof.
+- replace (a + 1 - a)%Z with 1%Z by omega.
++ replace (a + 1 - a)%Z with 1%Z by ring.
+ simpl.
+ rewrite <-Zplus_0_r_reverse.
+ trivial.
+@@ -129,8 +131,8 @@ Proof.
+ intros.
+ replace (numof p (a - 1) a)%Z with (numof p (a - 1) ((a - 1) + 1))%Z.
+ apply numof_succ.
+- repeat apply f_equal.
+- omega.
++ apply f_equal.
++ ring.
+ Qed.
+
+ (* Why3 goal *)
+@@ -141,7 +143,7 @@ Lemma Numof_left_no_add :
+ ((numof p a b) = (numof p (a + 1%Z)%Z b)).
+ Proof.
+ intros p a b h1 h2.
+- rewrite Numof_append with (b := (a+1)%Z) by omega.
++ rewrite Numof_append with (b := (a+1)%Z) by lia.
+ rewrite (numof_succ p a).
+ apply Bool.not_true_is_false in h2.
+ rewrite h2; trivial.
+@@ -155,7 +157,7 @@ Lemma Numof_left_add :
+ ((numof p a b) = (1%Z + (numof p (a + 1%Z)%Z b))%Z).
+ Proof.
+ intros p a b h1 h2.
+- rewrite Numof_append with (b := (a+1)%Z) by omega.
++ rewrite Numof_append with (b := (a+1)%Z) by lia.
+ rewrite (numof_succ p a).
+ rewrite h2; trivial.
+ Qed.
+@@ -173,11 +175,11 @@ Proof.
+ pattern b.
+ apply Zlt_lower_bound_ind with (z := a); auto with zarith; intros.
+ case (Z.eq_dec a x); intro e.
+- rewrite e; apply Numof_empty; omega.
+- rewrite Numof_append with (b := (x - 1)%Z) by omega.
++ rewrite e; apply Numof_empty; lia.
++ rewrite Numof_append with (b := (x - 1)%Z) by lia.
+ assert (numof p (x - 1) x = 0)%Z.
+ rewrite numof_pred.
+- assert (a <= (x - 1)%Z < x)%Z as H2 by omega.
++ assert (a <= (x - 1)%Z < x)%Z as H2 by lia.
+ generalize (H1 (x - 1)%Z H2).
+ intro H3; apply Bool.not_true_is_false in H3; rewrite H3; trivial.
+ rewrite H2.
+@@ -197,11 +199,11 @@ Proof.
+ pattern b.
+ apply Zlt_lower_bound_ind with (z := a); auto with zarith; intros.
+ case (Z.eq_dec a x); intro e.
+- rewrite e; rewrite Zminus_diag; apply Numof_empty; omega.
+- rewrite Numof_append with (b := (x - 1)%Z) by omega.
++ rewrite e; rewrite Zminus_diag; apply Numof_empty; lia.
++ rewrite Numof_append with (b := (x - 1)%Z) by lia.
+ assert (numof p (x - 1) x = 1)%Z.
+ rewrite numof_pred.
+- assert (a <= (x - 1)%Z < x)%Z as H2 by omega.
++ assert (a <= (x - 1)%Z < x)%Z as H2 by lia.
+ generalize (H1 (x - 1)%Z H2).
+ intro; rewrite H3; trivial.
+ rewrite H2.
+@@ -215,10 +217,10 @@ Proof.
+ pattern b.
+ apply Zlt_lower_bound_ind with (z := a) (x := b); auto with zarith; intros.
+ case (Z.eq_dec a x); intro e.
+- rewrite e; rewrite Numof_empty; omega.
+- rewrite Numof_append with (b := (x - 1)%Z) by omega.
++ rewrite e; rewrite Numof_empty; lia.
++ rewrite Numof_append with (b := (x - 1)%Z) by lia.
+ apply Z.add_nonneg_nonneg.
+- apply H; omega.
++ apply H; lia.
+ rewrite numof_pred.
+ case (p (x - 1)%Z); easy.
+ Qed.
+@@ -229,7 +231,7 @@ Proof.
+ generalize h; pattern b.
+ apply Zlt_lower_bound_ind with (z := (a + 1)%Z) (x := b); auto with zarith; intros.
+ rewrite Z.add_1_r in H0; apply Zle_succ_gt in H0.
+- rewrite Numof_append with (b := (x - 1)%Z) by omega.
++ rewrite Numof_append with (b := (x - 1)%Z) by lia.
+ case (Z.eq_dec k (x-1)); intro e.
+ rewrite e in H1.
+ apply Z.add_nonneg_pos.
+@@ -247,7 +249,7 @@ Lemma numof_increasing :
+ (i <= j)%Z /\ (j <= k)%Z -> ((numof p i j) <= (numof p i k))%Z.
+ Proof.
+ intros p i j k (h1,h2).
+-rewrite (Numof_append p i j k) by omega.
++rewrite (Numof_append p i j k) by lia.
+ rewrite <-Z.le_sub_le_add_l, Zminus_diag.
+ apply numof_nat.
+ Qed.
+@@ -260,7 +262,7 @@ Lemma numof_strictly_increasing :
+ ((numof p i j) < (numof p i l))%Z.
+ Proof.
+ intros p i j k l (h1,(h2,h3)) h4.
+-rewrite (Numof_append p i j l) by omega.
++rewrite (Numof_append p i j l) by lia.
+ rewrite <-Z.lt_sub_lt_add_l, Zminus_diag.
+ apply numof_pos with (k := k); auto with zarith.
+ Qed.
+@@ -275,13 +277,13 @@ Lemma numof_change_any :
+ ((numof p1 a b) <= (numof p2 a b))%Z.
+ Proof.
+ intros p1 p2 a b.
+- case (Z_lt_le_dec a b); intro; [|rewrite Numof_empty, Numof_empty; omega].
++ case (Z_lt_le_dec a b); intro; [|rewrite Numof_empty, Numof_empty; lia].
+ pattern b.
+ apply Zlt_lower_bound_ind with (z := a); auto with zarith; intros.
+ case (Z.eq_dec a x); intro eq.
+- rewrite eq; rewrite Numof_empty, Numof_empty; omega.
+- rewrite Numof_append with (b := (x-1)%Z) by omega.
+- rewrite Numof_append with (p := p2) (b := (x-1)%Z) by omega.
++ rewrite eq; rewrite Numof_empty, Numof_empty; lia.
++ rewrite Numof_append with (b := (x-1)%Z) by lia.
++ rewrite Numof_append with (p := p2) (b := (x-1)%Z) by lia.
+ apply Z.add_le_mono.
+ apply H; auto with zarith.
+ rewrite numof_pred, numof_pred.
+@@ -306,14 +308,14 @@ Proof.
+ generalize (Z_le_lt_eq_dec _ _ (numof_change_any p1 p2 a b h3)).
+ intro H; destruct H; trivial.
+ cut False; auto with zarith.
+- rewrite Numof_append with (b := i) in e by omega.
+- rewrite Numof_append with (p := p2) (b := i) in e by omega.
++ rewrite Numof_append with (b := i) in e by lia.
++ rewrite Numof_append with (p := p2) (b := i) in e by lia.
+ rewrite (Numof_left_add _ _ _ h2 h5), (Numof_left_no_add _ _ _ h2 h4) in e.
+ assert (forall j : int, (a <= j < i)%Z -> p1 j = true -> p2 j = true) by auto with zarith.
+ generalize (numof_change_any p1 p2 _ _ H).
+ assert (forall j : int, ((i + 1) <= j < b)%Z -> p1 j = true -> p2 j = true) by auto with zarith.
+ generalize (numof_change_any p1 p2 _ _ H0).
+- omega.
++ lia.
+ Qed.
+
+ Lemma le_ge_eq: forall a b, (a <= b)%Z /\ (b <= a)%Z -> (a = b)%Z.
+--- a/lib/coq/int/Power.v 2021-03-13 02:24:39.000000000 -0700
++++ b/lib/coq/int/Power.v 2021-10-20 09:24:31.241953629 -0600
+@@ -15,6 +15,7 @@ Require Import BuiltIn.
+ Require BuiltIn.
+ Require int.Int.
+
++Require Import Lia.
+ Require Import Exponentiation.
+
+ (* Why3 goal *)
+@@ -54,10 +55,11 @@ Qed.
+ Lemma Power_s_alt :
+ forall (x:Numbers.BinNums.Z) (n:Numbers.BinNums.Z), (0%Z < n)%Z ->
+ ((power x n) = (x * (power x (n - 1%Z)%Z))%Z).
++Proof.
+ intros x n h1.
+-rewrite <- Power_s.
+-f_equal; auto with zarith.
+-omega.
++rewrite <- Power_s by lia.
++apply f_equal.
++ring.
+ Qed.
+
+ (* Why3 goal *)
+@@ -94,7 +96,7 @@ Lemma Power_comm1 :
+ (((power x n) * y)%Z = (y * (power x n))%Z).
+ Proof.
+ intros x y h1 n h2.
+-auto with zarith.
++apply Zmult_comm.
+ Qed.
+
+ (* Why3 goal *)
+@@ -112,6 +114,7 @@ Qed.
+ Lemma Power_non_neg :
+ forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z),
+ (0%Z <= x)%Z /\ (0%Z <= y)%Z -> (0%Z <= (power x y))%Z.
++Proof.
+ intros x y (h1,h2).
+ now apply Z.pow_nonneg.
+ Qed.
+@@ -131,6 +134,7 @@ Open Scope Z_scope.
+ Lemma Power_monotonic :
+ forall (x:Numbers.BinNums.Z) (n:Numbers.BinNums.Z) (m:Numbers.BinNums.Z),
+ (0%Z < x)%Z /\ (0%Z <= n)%Z /\ (n <= m)%Z -> ((power x n) <= (power x m))%Z.
++Proof.
+ intros.
+ apply Z.pow_le_mono_r; auto with zarith.
+ Qed.
+--- a/lib/coq/list/Length.v 2021-03-13 02:24:39.000000000 -0700
++++ b/lib/coq/list/Length.v 2021-10-20 09:29:10.475152106 -0600
+@@ -16,6 +16,8 @@ Require BuiltIn.
+ Require int.Int.
+ Require list.List.
+
++Require Import Lia.
++
+ (* Why3 assumption *)
+ Fixpoint length {a:Type} {a_WT:WhyType a}
+ (l:Init.Datatypes.list a) {struct l}: Numbers.BinNums.Z :=
+@@ -54,6 +56,6 @@ unfold length. fold length.
+ intros H.
+ exfalso.
+ generalize (Length_nonnegative t).
+-omega.
++lia.
+ Qed.
+
+--- a/lib/coq/list/NthHdTl.v 2021-03-13 02:24:39.000000000 -0700
++++ b/lib/coq/list/NthHdTl.v 2021-10-20 09:29:43.331175519 -0600
+@@ -19,6 +19,8 @@ Require list.Nth.
+ Require option.Option.
+ Require list.HdTl.
+
++Require Import Lia.
++
+ (* Why3 goal *)
+ Lemma Nth_tl {a:Type} {a_WT:WhyType a} :
+ forall (l1:Init.Datatypes.list a) (l2:Init.Datatypes.list a),
+@@ -33,7 +35,7 @@ generalize (Zeq_bool_if (i + 1) 0).
+ case Zeq_bool.
+ intro H.
+ exfalso.
+-omega.
++lia.
+ intros _.
+ simpl in h1.
+ inversion h1.
+--- a/lib/coq/list/NthLengthAppend.v 2021-03-13 02:24:39.000000000 -0700
++++ b/lib/coq/list/NthLengthAppend.v 2021-10-20 09:30:59.842230039 -0600
+@@ -22,6 +22,8 @@ Require option.Option.
+ Require list.NthLength.
+ Require list.Append.
+
++Require Import Lia.
++
+ (* Why3 goal *)
+ Lemma nth_append_1 {a:Type} {a_WT:WhyType a} :
+ forall (l1:Init.Datatypes.list a) (l2:Init.Datatypes.list a)
+@@ -41,7 +43,7 @@ easy.
+ intros _.
+ apply IHl1.
+ assert (i < 1 + Length.length l1)%Z by exact Hi.
+-omega.
++lia.
+ Qed.
+
+ (* Why3 goal *)
+@@ -67,9 +69,9 @@ case Zeq_bool.
+ intros Hi'.
+ exfalso.
+ generalize (Length.Length_nonnegative l1).
+-omega.
++lia.
+ intros _.
+ apply IHl1.
+-omega.
++lia.
+ Qed.
+
+--- a/lib/coq/list/NthLength.v 2021-03-13 02:24:39.000000000 -0700
++++ b/lib/coq/list/NthLength.v 2021-10-20 09:30:29.027208081 -0600
+@@ -19,6 +19,8 @@ Require list.Length.
+ Require list.Nth.
+ Require option.Option.
+
++Require Import Lia.
++
+ (* Why3 goal *)
+ Lemma nth_none_1 {a:Type} {a_WT:WhyType a} :
+ forall (l:Init.Datatypes.list a) (i:Numbers.BinNums.Z), (i < 0%Z)%Z ->
+@@ -35,7 +37,7 @@ intros H'.
+ now rewrite H' in H.
+ intros _.
+ apply IHq.
+-omega.
++lia.
+ Qed.
+
+ (* Why3 goal *)
+@@ -57,10 +59,10 @@ intros H'.
+ rewrite H' in H.
+ exfalso.
+ generalize (Length.Length_nonnegative q).
+-omega.
++lia.
+ intros _.
+ apply IHq.
+-omega.
++lia.
+ Qed.
+
+ (* Why3 goal *)
+@@ -73,7 +75,7 @@ intros l.
+ induction l as [|h q].
+ intros i _.
+ simpl.
+-omega.
++lia.
+ intros i.
+ simpl (Nth.nth i (h :: q)).
+ change (Length.length (h :: q)) with (1 + Length.length q)%Z.
+@@ -82,6 +84,6 @@ case Zeq_bool.
+ easy.
+ intros Hi H.
+ specialize (IHq _ H).
+-omega.
++lia.
+ Qed.
+
+--- a/lib/coq/list/NumOcc.v 2021-03-13 02:24:39.000000000 -0700
++++ b/lib/coq/list/NumOcc.v 2021-10-20 09:31:50.459266109 -0600
+@@ -20,6 +20,8 @@ Require list.Mem.
+ Require list.Append.
+ Require list.Reverse.
+
++Require Import Lia.
++
+ (* Why3 goal *)
+ Definition num_occ {a:Type} {a_WT:WhyType a} :
+ a -> Init.Datatypes.list a -> Numbers.BinNums.Z.
+@@ -53,12 +55,13 @@ Qed.
+ (* Why3 goal *)
+ Lemma Num_Occ_NonNeg {a:Type} {a_WT:WhyType a} :
+ forall (x:a) (l:Init.Datatypes.list a), (0%Z <= (num_occ x l))%Z.
++Proof.
+ intros x l.
+ induction l as [|lh lt IHl].
+ easy.
+ simpl.
+ case why_decidable_eq ; intros H.
+-omega.
++lia.
+ easy.
+ Qed.
+
+@@ -75,7 +78,7 @@ case why_decidable_eq ; intros H ; split
+ intros _.
+ clear.
+ generalize (Num_Occ_NonNeg x lt).
+-omega.
++lia.
+ now left.
+ intros [H'|H'] ; try easy.
+ now apply IHl.
+--- a/lib/coq/list/Permut.v 2021-03-13 02:24:39.000000000 -0700
++++ b/lib/coq/list/Permut.v 2021-10-20 09:32:21.163287990 -0600
+@@ -21,6 +21,8 @@ Require list.Append.
+ Require list.Reverse.
+ Require list.NumOcc.
+
++Require Import Lia.
++
+ (* Why3 assumption *)
+ Definition permut {a:Type} {a_WT:WhyType a} (l1:Init.Datatypes.list a)
+ (l2:Init.Datatypes.list a) : Prop :=
+@@ -147,7 +149,7 @@ induction l1 as [|l1h l1t IHl1].
+ simpl.
+ case why_decidable_eq ; intros H.
+ generalize (NumOcc.Num_Occ_NonNeg l2h l2t).
+- omega.
++ lia.
+ now elim H.
+ - intros l2 H.
+ assert (H': Mem.mem l1h l2).
+@@ -157,7 +159,7 @@ induction l1 as [|l1h l1t IHl1].
+ destruct (why_decidable_eq l1h l1h) as [_|H'].
+ 2: now elim H'.
+ generalize (NumOcc.Num_Occ_NonNeg l1h l1t).
+- omega.
++ lia.
+ destruct (Append.mem_decomp _ _ H') as [l2a [l2b Hl2]].
+ rewrite Hl2.
+ rewrite Append.Append_length.
+@@ -175,6 +177,6 @@ induction l1 as [|l1h l1t IHl1].
+ intros l H y.
+ specialize (H y).
+ simpl in H.
+- omega.
++ lia.
+ Qed.
+
+--- a/lib/coq/map/MapInjection.v 2021-03-13 02:24:39.000000000 -0700
++++ b/lib/coq/map/MapInjection.v 2021-10-20 09:33:53.595353868 -0600
+@@ -31,8 +31,7 @@ Definition surjection (n:nat) (f:nat ->
+ forall i:nat, i < n ->
+ exists j:nat, j < n /\ f j = i.
+
+-Require Omega.
+-Require Import Peano_dec.
++Require Import Lia Peano_dec.
+
+ Theorem injective_implies_surjective:
+ forall n:nat,
+@@ -44,11 +43,11 @@ Proof.
+ induction n.
+ (* case n = 0 *)
+ unfold surjection; intros.
+-elimtype False; omega.
++elimtype False; lia.
+ (* case n > 0 *)
+ intros f Hinto Hinj.
+ pose (k := f n).
+-assert (Hbound_k: k < S n) by (apply Hinto; omega).
++assert (Hbound_k: k < S n) by (apply Hinto; lia).
+ (* transposition n <-> k *)
+ pose (trans i :=
+ if eq_nat_dec i n then k else
+@@ -61,21 +60,21 @@ assert (Ginto: into n g).
+ unfold into, g, trans; intros.
+ destruct (eq_nat_dec (f i) n).
+ (* f i = n *)
+- assert (h : k < n \/ k = n) by omega.
++ assert (h : k < n \/ k = n) by lia.
+ destruct h; auto.
+ elimtype False.
+ clear g trans; subst.
+ assert (f i = i) by (apply Hinj; auto with * ).
+- omega.
++ lia.
+ (* f i <> n *)
+ destruct (eq_nat_dec (f i) k).
+ (* f i = k *)
+ elimtype False.
+ assert (i = n) by (apply Hinj; auto with * ).
+- omega.
++ lia.
+ (* f i <> k *)
+- assert (f i < S n) by (apply Hinto; omega).
+- omega.
++ assert (f i < S n) by (apply Hinto; lia).
++ lia.
+
+ (* second step: trans is injective *)
+
+@@ -85,14 +84,14 @@ assert (trans_inj: injection (S n) trans
+ (* i = n *)
+ destruct (eq_nat_dec j n); auto with *.
+ (* i = n and j <> n *)
+- destruct (eq_nat_dec j k); omega.
++ destruct (eq_nat_dec j k); lia.
+ (* i <> n *)
+ destruct (eq_nat_dec i k); auto with *.
+ destruct (eq_nat_dec j n); auto with *.
+- destruct (eq_nat_dec j k); omega.
++ destruct (eq_nat_dec j k); lia.
+ (* i <> n and i <> k *)
+ destruct (eq_nat_dec j n); auto with *.
+- destruct (eq_nat_dec j k); omega.
++ destruct (eq_nat_dec j k); lia.
+
+ (* third step: g is injective on [0;n[ *)
+ assert (Ginj: injection n g).
+@@ -118,12 +117,12 @@ assert (f_is_trans_o_g: forall i, f i =
+
+ (* conclusion *)
+ red; intros.
+-assert (h: i = k \/ i <> k) by omega.
++assert (h: i = k \/ i <> k) by lia.
+ destruct h.
+ (* case i = k: the preimage is n *)
+ exists n; auto.
+ (* case i <> k *)
+-assert (h: i = n \/ i <> n) by omega.
++assert (h: i = n \/ i <> n) by lia.
+ destruct h.
+ (* case i = n: the preimage is the preimage of k by g *)
+ elim Gsurj with (i:=k).
+@@ -135,7 +134,7 @@ rewrite h2.
+ unfold trans.
+ destruct (eq_nat_dec k n); auto with *.
+ destruct (eq_nat_dec k k); auto with *.
+-omega.
++lia.
+ (* case i <> n and i <> k:
+ the preimage is the preimage of i by g
+ *)
+@@ -148,7 +147,7 @@ rewrite h2.
+ unfold trans.
+ destruct (eq_nat_dec i n); auto with *.
+ destruct (eq_nat_dec i k); auto with *.
+-omega.
++lia.
+ Qed.
+
+
+@@ -183,7 +182,7 @@ Proof.
+ intros n f Hinto.
+ elim (lifting n f Hinto).
+ intros g Heq_g_f Hinj i Hi_inf_n.
+-assert (n_pos: 0 <= n) by omega.
++assert (n_pos: 0 <= n) by lia.
+ elim (Z_of_nat_complete_inf n n_pos).
+ intros m Heq_n_m.
+
+@@ -191,7 +190,7 @@ intros m Heq_n_m.
+
+ assert (Hinto_g: into m g).
+ red; intros i0 Hinter.
+- assert (0 <= f (Z_of_nat i0) < n) by (apply Hinto; omega).
++ assert (0 <= f (Z_of_nat i0) < n) by (apply Hinto; lia).
+ apply inj_lt_rev; auto with *.
+ rewrite Heq_g_f; auto with *.
+
+@@ -206,14 +205,14 @@ assert (Hinj_g: injection m g).
+ (* conclusion *)
+ generalize (injective_implies_surjective m g Hinto_g Hinj_g).
+ intro Hsurj_g.
+-assert (i_pos: 0 <= i) by omega.
++assert (i_pos: 0 <= i) by lia.
+ elim (Z_of_nat_complete_inf i i_pos).
+ intros j Heq_j_i.
+ elim (Hsurj_g j); auto with *.
+ intros x (inter_x, eq_x).
+ exists (Z_of_nat x).
+ split; auto with *.
+-rewrite <- Heq_g_f; omega.
++rewrite <- Heq_g_f; lia.
+ Qed.
+
+
+@@ -248,7 +247,7 @@ intros a n h1 h2.
+ intros.
+ apply Zinjective_implies_surjective; auto.
+ intros.
+-assert (h: (i0 = j \/ i0 <> j)%Z) by omega.
++assert (h: (i0 = j \/ i0 <> j)%Z) by lia.
+ destruct h; auto.
+ red in h1.
+ elimtype False; apply h1 with i0 j; clear h1; auto.
+@@ -265,78 +264,78 @@ Proof.
+ intros m n; split.
+ (* -> *)
+ intros inj v.
+-assert (case: (occ v m 0 n <= 1 \/ occ v m 0 n >= 2)%Z) by omega. destruct case.
++assert (case: (occ v m 0 n <= 1 \/ occ v m 0 n >= 2)%Z) by lia. destruct case.
+ trivial.
+-destruct (occ_exists v m 0 n) as (i,(hi1,hi2)). omega.
++destruct (occ_exists v m 0 n) as (i,(hi1,hi2)). lia.
+ assert (0 <= occ v m 0 i)%Z.
+- generalize (occ_bounds v m 0 i). omega.
+-assert (case: (occ v m 0 i = 0 \/ occ v m 0 i > 0)%Z) by omega. destruct case.
++ generalize (occ_bounds v m 0 i). lia.
++assert (case: (occ v m 0 i = 0 \/ occ v m 0 i > 0)%Z) by lia. destruct case.
+ assert (0 < occ v m (i+1) n)%Z.
+ assert (occ v m 0 n = occ v m 0 i + occ v m i n)%Z.
+- apply occ_append; omega.
++ apply occ_append; lia.
+ assert (occ v m i n = occ v m i (i+1) + occ v m (i+1) n)%Z.
+- apply occ_append; omega.
++ apply occ_append; lia.
+ assert (occ v m i (i+1) = 1)%Z.
+ rewrite occ_right_add.
+- replace (i+1-1)%Z with i by omega.
+- rewrite occ_empty; omega.
+- omega.
+- replace (i+1-1)%Z with i by omega. auto.
+- omega.
+-destruct (occ_exists v m (i+1) n) as (j,(hj1,hj2)). omega.
+-elim (inj i j); omega.
+-destruct (occ_exists v m 0 i) as (j,(hj1,hj2)). omega.
+-elim (inj i j); omega.
++ replace (i+1-1)%Z with i by lia.
++ rewrite occ_empty; lia.
++ lia.
++ replace (i+1-1)%Z with i by lia. auto.
++ lia.
++destruct (occ_exists v m (i+1) n) as (j,(hj1,hj2)). lia.
++elim (inj i j); lia.
++destruct (occ_exists v m 0 i) as (j,(hj1,hj2)). lia.
++elim (inj i j); lia.
+
+ (* <- *)
+ intros Hocc i j hi hj neq eq.
+ pose (v := m i).
+ assert (occ v m 0 n >= 2)%Z.
+ assert (occ v m 0 n = occ v m 0 i + occ v m i n)%Z.
+- apply occ_append; omega.
++ apply occ_append; lia.
+ assert (occ v m i n = occ v m i (i+1) + occ v m (i+1) n)%Z.
+- apply occ_append; omega.
++ apply occ_append; lia.
+ assert (occ v m i (i+1) = 1)%Z.
+ rewrite occ_right_add.
+- replace (i+1-1)%Z with i by omega.
+- rewrite occ_empty; omega.
+- omega.
+- replace (i+1-1)%Z with i by omega. auto.
+-assert (case: (j < i \/ i+1 <= j)%Z) by omega. destruct case.
++ replace (i+1-1)%Z with i by lia.
++ rewrite occ_empty; lia.
++ lia.
++ replace (i+1-1)%Z with i by lia. auto.
++assert (case: (j < i \/ i+1 <= j)%Z) by lia. destruct case.
+ assert (occ v m 0 i >= 1)%Z.
+ assert (occ v m 0 i = occ v m 0 j + occ v m j i)%Z.
+- apply occ_append; omega.
++ apply occ_append; lia.
+ assert (occ v m j i = occ v m j (j+1) + occ v m (j+1) i)%Z.
+- apply occ_append; omega.
++ apply occ_append; lia.
+ assert (occ v m j (j+1) = 1)%Z.
+ rewrite occ_right_add.
+- replace (j+1-1)%Z with j by omega.
+- rewrite occ_empty; omega.
+- omega.
+- replace (j+1-1)%Z with j by omega. auto.
++ replace (j+1-1)%Z with j by lia.
++ rewrite occ_empty; lia.
++ lia.
++ replace (j+1-1)%Z with j by lia. auto.
+ generalize (occ_bounds v m (i+1) n).
+ generalize (occ_bounds v m 0 j).
+ generalize (occ_bounds v m (j+1) i).
+- omega.
++ lia.
+ generalize (occ_bounds v m (i+1) n).
+-omega.
++lia.
+ assert (occ v m (i+1) n >= 1)%Z.
+ assert (occ v m (i+1) n = occ v m (i+1) j + occ v m j n)%Z.
+- apply occ_append; omega.
++ apply occ_append; lia.
+ assert (occ v m j n = occ v m j (j+1) + occ v m (j+1) n)%Z.
+- apply occ_append; omega.
++ apply occ_append; lia.
+ assert (occ v m j (j+1) = 1)%Z.
+ rewrite occ_right_add.
+- replace (j+1-1)%Z with j by omega.
+- rewrite occ_empty; omega.
+- omega.
+- replace (j+1-1)%Z with j by omega. auto.
++ replace (j+1-1)%Z with j by lia.
++ rewrite occ_empty; lia.
++ lia.
++ replace (j+1-1)%Z with j by lia. auto.
+ generalize (occ_bounds v m (j+1) n).
+ generalize (occ_bounds v m 0 i).
+ generalize (occ_bounds v m (i+1) j).
+- omega.
++ lia.
+ generalize (occ_bounds v m 0 i).
+- omega.
+-generalize (Hocc v); omega.
++ lia.
++generalize (Hocc v); lia.
+ Qed.
+
+--- a/lib/coq/map/Occ.v 2021-03-13 02:24:39.000000000 -0700
++++ b/lib/coq/map/Occ.v 2021-10-20 09:35:21.683416654 -0600
+@@ -17,6 +17,8 @@ Require HighOrd.
+ Require int.Int.
+ Require map.Map.
+
++Require Import Lia.
++
+ (* Why3 goal *)
+ Definition occ {a:Type} {a_WT:WhyType a} :
+ a -> (Numbers.BinNums.Z -> a) -> Numbers.BinNums.Z -> Numbers.BinNums.Z ->
+@@ -35,11 +37,11 @@ Lemma occ_equation :
+ ((if why_decidable_eq (m (u - 1)%Z) v then 1 else 0) + occ v m l (u - 1))%Z.
+ Proof.
+ intros a a_WT v m l u Hlu.
+-assert (0 < u - l)%Z as h1' by omega.
++assert (0 < u - l)%Z as h1' by lia.
+ unfold occ.
+ replace (u - 1 - l)%Z with (u - l - 1)%Z by ring.
+ replace (u - 1)%Z with (l + (u - l - 1))%Z by ring.
+-rewrite <- (Z2Nat.id (u - l - 1)) by omega.
++rewrite <- (Z2Nat.id (u - l - 1)) by lia.
+ rewrite (Z2Nat.inj_sub _ 1) by easy.
+ destruct (u - l)%Z ; try easy.
+ simpl.
+@@ -70,15 +72,15 @@ rewrite <- Zplus_assoc.
+ apply f_equal.
+ rewrite Zplus_comm.
+ apply H.
+-clear -Hlu' ; unfold Zwf ; omega.
+-clear -Hlu' ; omega.
++clear -Hlu' ; unfold Zwf ; lia.
++clear -Hlu' ; lia.
+ replace u with (l + 1)%Z.
+ unfold occ.
+ rewrite Z.add_simpl_l.
+ rewrite <- Zminus_diag_reverse.
+ simpl.
+ now rewrite (Zplus_0_r l).
+-clear -Hlu Hlu' ; omega.
++clear -Hlu Hlu' ; lia.
+ Qed.
+
+ (* Why3 goal *)
+@@ -88,7 +90,7 @@ Lemma occ_empty {a:Type} {a_WT:WhyType a
+ (u <= l)%Z -> ((occ v m l u) = 0%Z).
+ Proof.
+ intros v m l u h1.
+-assert (u - l <= 0)%Z as h1' by omega.
++assert (u - l <= 0)%Z as h1' by lia.
+ unfold occ.
+ destruct (u - l)%Z ; try reflexivity.
+ now elim h1'.
+@@ -148,28 +150,28 @@ Lemma occ_bounds {a:Type} {a_WT:WhyType
+ (l <= u)%Z -> (0%Z <= (occ v m l u))%Z /\ ((occ v m l u) <= (u - l)%Z)%Z.
+ Proof.
+ intros v m l u h1.
+-cut (0 <= u - l)%Z. 2: omega.
++cut (0 <= u - l)%Z. 2: lia.
+ replace (occ v m l u) with (occ v m l (l + (u - l)))%Z.
+-pattern (u - l)%Z; apply Z_lt_induction. 2: omega.
++pattern (u - l)%Z; apply Z_lt_induction. 2: lia.
+ intros.
+-assert (h: (x = 0 \/ x <> 0)%Z) by omega. destruct h.
+-now rewrite occ_empty; omega.
++assert (h: (x = 0 \/ x <> 0)%Z) by lia. destruct h.
++now rewrite occ_empty; lia.
+ destruct (why_decidable_eq (m (l + (x-1))%Z) v).
+ rewrite occ_right_add.
+ generalize (H (x-1)%Z); clear H; intros.
+ assert (0 <= occ v m l (l + (x - 1)) <= x-1)%Z.
+-apply H; omega.
++apply H; lia.
+ replace (l + x - 1)%Z with (l+(x-1))%Z by ring.
+-omega.
+-omega.
++lia.
++lia.
+ replace (l + x - 1)%Z with (l+(x-1))%Z by ring.
+ trivial.
+ rewrite occ_right_no_add.
+ assert (0 <= occ v m l (l + (x - 1)) <= x-1)%Z.
+-apply H; omega.
++apply H; lia.
+ replace (l + x - 1)%Z with (l+(x-1))%Z by ring.
+-omega.
+-omega.
++lia.
++lia.
+ replace (l + x - 1)%Z with (l+(x-1))%Z by ring.
+ trivial.
+ replace (l + (u-l))%Z with u by ring. trivial.
+@@ -183,38 +185,38 @@ Lemma occ_append {a:Type} {a_WT:WhyType
+ ((occ v m l u) = ((occ v m l mid) + (occ v m mid u))%Z).
+ Proof.
+ intros v m l mid u (h1,h2).
+-cut (0 <= u - mid)%Z. 2: omega.
++cut (0 <= u - mid)%Z. 2: lia.
+ replace (occ v m l u) with (occ v m l (mid + (u - mid)))%Z.
+ replace (occ v m mid u) with (occ v m mid (mid + (u - mid)))%Z.
+-pattern (u - mid)%Z; apply Z_lt_induction. 2: omega.
++pattern (u - mid)%Z; apply Z_lt_induction. 2: lia.
+ intros.
+-assert (h: (x = 0 \/ x <> 0)%Z) by omega. destruct h.
++assert (h: (x = 0 \/ x <> 0)%Z) by lia. destruct h.
+ rewrite (occ_empty _ _ mid (mid+x)%Z).
+ subst x. ring_simplify ((mid+0)%Z). ring.
+-omega.
++lia.
+ destruct (why_decidable_eq (m (mid + (x-1))%Z) v).
+ rewrite (occ_right_add _ _ l (mid+x))%Z.
+ rewrite (occ_right_add _ _ mid (mid+x))%Z.
+ generalize (H (x-1)%Z); clear H; intros.
+ assert ((occ v m l (mid+(x-1)) = (occ v m l mid) + occ v m mid (mid + (x - 1)))%Z).
+-apply H; omega.
++apply H; lia.
+ replace (mid + x - 1)%Z with (mid+(x-1))%Z by ring.
+-omega. omega.
++lia. lia.
+ trivial.
+ replace (mid + x - 1)%Z with (mid+(x-1))%Z by ring. trivial.
+-omega.
++lia.
+ replace (mid + x - 1)%Z with (mid+(x-1))%Z by ring. trivial.
+
+ rewrite (occ_right_no_add _ _ l (mid+x))%Z.
+ rewrite (occ_right_no_add _ _ mid (mid+x))%Z.
+ generalize (H (x-1)%Z); clear H; intros.
+ assert ((occ v m l (mid+(x-1)) = (occ v m l mid) + occ v m mid (mid + (x - 1)))%Z).
+-apply H; omega.
++apply H; lia.
+ replace (mid + x - 1)%Z with (mid+(x-1))%Z by ring.
+-omega. omega.
++lia. lia.
+ trivial.
+ replace (mid + x - 1)%Z with (mid+(x-1))%Z by ring. trivial.
+-omega.
++lia.
+ replace (mid + x - 1)%Z with (mid+(x-1))%Z by ring. trivial.
+
+ replace (mid + (u-mid))%Z with u by ring. trivial.
+@@ -229,23 +231,23 @@ Lemma occ_neq {a:Type} {a_WT:WhyType a}
+ ((occ v m l u) = 0%Z).
+ Proof.
+ intros v m l u.
+-assert (h: (u < l \/ 0 <= u - l)%Z) by omega. destruct h.
+-rewrite occ_empty. trivial. omega.
++assert (h: (u < l \/ 0 <= u - l)%Z) by lia. destruct h.
++rewrite occ_empty. trivial. lia.
+ replace u with (l + (u - l))%Z. 2:ring.
+ generalize H.
+-pattern (u - l)%Z; apply Z_lt_induction. 2: omega.
++pattern (u - l)%Z; apply Z_lt_induction. 2: lia.
+ clear H; intros.
+-assert (h: (x = 0 \/ x <> 0)%Z) by omega. destruct h.
+-now rewrite occ_empty; omega.
++assert (h: (x = 0 \/ x <> 0)%Z) by lia. destruct h.
++now rewrite occ_empty; lia.
+ destruct (why_decidable_eq (m (l + (x-1))%Z) v).
+ assert (m (l + (x - 1)) <> v)%Z.
+- apply H1; omega.
++ apply H1; lia.
+ intuition.
+ rewrite occ_right_no_add.
+ replace (l+x-1)%Z with (l+(x-1))%Z by ring.
+ apply H; intuition.
+-apply (H1 i). omega. assumption.
+-omega.
++apply (H1 i). lia. assumption.
++lia.
+ replace (l + x - 1)%Z with (l+(x-1))%Z by ring.
+ trivial.
+ Qed.
+@@ -258,23 +260,23 @@ Lemma occ_exists {a:Type} {a_WT:WhyType
+ exists i:Numbers.BinNums.Z, ((l <= i)%Z /\ (i < u)%Z) /\ ((m i) = v).
+ Proof.
+ intros v m l u h1.
+-assert (h: (u < l \/ 0 <= u - l)%Z) by omega. destruct h.
+-rewrite occ_empty in h1. elimtype False; omega. omega.
++assert (h: (u < l \/ 0 <= u - l)%Z) by lia. destruct h.
++rewrite occ_empty in h1. elimtype False; lia. lia.
+ generalize h1.
+ replace u with (l + (u - l))%Z. 2:ring.
+ generalize H.
+-pattern (u - l)%Z; apply Z_lt_induction. 2: omega.
++pattern (u - l)%Z; apply Z_lt_induction. 2: lia.
+ clear H; intros.
+-assert (h: (x = 0 \/ x <> 0)%Z) by omega. destruct h.
+-rewrite occ_empty in h0. elimtype False; omega. omega.
++assert (h: (x = 0 \/ x <> 0)%Z) by lia. destruct h.
++rewrite occ_empty in h0. elimtype False; lia. lia.
+ destruct (why_decidable_eq (m (l + (x-1))%Z) v).
+-exists (l+(x-1))%Z. split. omega. now trivial.
+-destruct (H (x-1))%Z as (i,(hi1,hi2)). omega. omega.
++exists (l+(x-1))%Z. split. lia. now trivial.
++destruct (H (x-1))%Z as (i,(hi1,hi2)). lia. lia.
+ rewrite occ_right_no_add in h0.
+ replace (l + (x - 1))%Z with (l+x-1)%Z by ring. trivial.
+-omega.
++lia.
+ replace (l + x - 1)%Z with (l+(x-1))%Z by ring. trivial.
+-exists i. split. omega. assumption.
++exists i. split. lia. assumption.
+ Qed.
+
+ (* Why3 goal *)
+@@ -286,17 +288,17 @@ Proof.
+ intros m l u i (h1,h2).
+ pose (v := m i). fold v.
+ assert (occ v m l u = occ v m l i + occ v m i u)%Z.
+- apply occ_append. omega.
++ apply occ_append. lia.
+ assert (occ v m i u = occ v m i (i+1) + occ v m (i+1) u)%Z.
+- apply occ_append. omega.
++ apply occ_append. lia.
+ assert (occ v m i (i + 1) = 1)%Z.
+ rewrite occ_right_add.
+- ring_simplify (i+1-1)%Z. rewrite occ_empty. ring. omega. omega.
++ ring_simplify (i+1-1)%Z. rewrite occ_empty. ring. lia. lia.
+ ring_simplify (i+1-1)%Z. auto.
+-assert (0 <= occ v m l i <= i -l)%Z. apply occ_bounds. omega.
+-assert (0 <= occ v m i (i+1) <= (i+1)-i)%Z. apply occ_bounds. omega.
+-assert (0 <= occ v m (i+1) u <= u - (i+1))%Z. apply occ_bounds. omega.
+-omega.
++assert (0 <= occ v m l i <= i -l)%Z. apply occ_bounds. lia.
++assert (0 <= occ v m i (i+1) <= (i+1)-i)%Z. apply occ_bounds. lia.
++assert (0 <= occ v m (i+1) u <= u - (i+1))%Z. apply occ_bounds. lia.
++lia.
+ Qed.
+
+ (* Why3 goal *)
+@@ -308,33 +310,33 @@ Lemma occ_eq {a:Type} {a_WT:WhyType a} :
+ ((occ v m1 l u) = (occ v m2 l u)).
+ Proof.
+ intros v m1 m2 l u h1.
+-assert (h: (u < l \/ 0 <= u - l)%Z) by omega. destruct h.
++assert (h: (u < l \/ 0 <= u - l)%Z) by lia. destruct h.
+ rewrite occ_empty.
+ rewrite occ_empty. trivial.
+-omega. omega.
++lia. lia.
+ generalize h1.
+ replace u with (l + (u - l))%Z. 2:ring.
+ generalize H.
+-pattern (u - l)%Z; apply Z_lt_induction. 2: omega.
++pattern (u - l)%Z; apply Z_lt_induction. 2: lia.
+ clear H; intros.
+-assert (h: (x = 0 \/ x <> 0)%Z) by omega. destruct h.
+-rewrite occ_empty. rewrite occ_empty. trivial. omega. omega.
++assert (h: (x = 0 \/ x <> 0)%Z) by lia. destruct h.
++rewrite occ_empty. rewrite occ_empty. trivial. lia. lia.
+ destruct (why_decidable_eq (m1 (l + (x-1))%Z) v).
+ rewrite occ_right_add.
+ rewrite (occ_right_add v m2).
+ apply f_equal.
+ replace (l + x - 1)%Z with (l+(x-1))%Z by ring.
+-apply H. omega. omega. intros. apply h0. omega. omega.
++apply H. lia. lia. intros. apply h0. lia. lia.
+ replace (l + x - 1)%Z with (l+(x-1))%Z by ring.
+-rewrite <- h0. trivial. omega. omega.
++rewrite <- h0. trivial. lia. lia.
+ replace (l + x - 1)%Z with (l+(x-1))%Z by ring. assumption.
+
+ rewrite occ_right_no_add.
+ rewrite (occ_right_no_add v m2).
+ replace (l + x - 1)%Z with (l+(x-1))%Z by ring.
+-apply H. omega. omega. intros. apply h0. omega. omega.
++apply H. lia. lia. intros. apply h0. lia. lia.
+ replace (l + x - 1)%Z with (l+(x-1))%Z by ring.
+-rewrite <- h0. trivial. omega. omega.
++rewrite <- h0. trivial. lia. lia.
+ replace (l + x - 1)%Z with (l+(x-1))%Z by ring. assumption.
+ Qed.
+
+@@ -358,18 +360,18 @@ Lemma occ_set {a:Type} {a_WT:WhyType a}
+ if why_decidable_eq (m i) y then 1 else 0)%Z.
+ Proof.
+ intros m l u i x y H.
+-rewrite 2!(occ_append _ _ l i u) by omega.
+-rewrite 2!(occ_append _ _ i (i + 1) u) by omega.
++rewrite 2!(occ_append _ _ l i u) by lia.
++rewrite 2!(occ_append _ _ i (i + 1) u) by lia.
+ rewrite 2!occ_single.
+ rewrite (proj1 (Map.set'def _ _ _ _) eq_refl).
+ rewrite 2!(occ_eq _ (Map.set m i x) m).
+ ring.
+ intros j H1.
+ apply Map.set'def.
+-omega.
++lia.
+ intros j H1.
+ apply Map.set'def.
+-omega.
++lia.
+ Qed.
+
+ (* Why3 goal *)
+--- a/lib/coq/number/Prime.v 2021-03-13 02:24:39.000000000 -0700
++++ b/lib/coq/number/Prime.v 2021-10-20 09:36:46.651469216 -0600
+@@ -20,7 +20,7 @@ Require int.ComputerDivision.
+ Require number.Parity.
+ Require number.Divisibility.
+
+-Import Znumtheory.
++Require Import Lia Znumtheory.
+
+ (* Why3 assumption *)
+ Definition prime (p:Numbers.BinNums.Z) : Prop :=
+@@ -39,6 +39,7 @@ Qed.
+
+ (* Why3 goal *)
+ Lemma not_prime_1 : ~ prime 1%Z.
++Proof.
+ intros (H1,_).
+ now elim H1.
+ Qed.
+@@ -84,26 +85,26 @@ elimtype False.
+ (* *)
+ assert (exists d, (2 <= d)%Z /\ (d * d <= p)%Z /\ prime d /\ Z.divide d p).
+ clear H.
+-assert (Hp' : (0 <= p)%Z) by omega.
++assert (Hp' : (0 <= p)%Z) by lia.
+ revert p Hp' Hp Pp.
+ apply (Zlt_0_ind (fun p => 2 <= p -> ~ Znumtheory.prime p -> (exists d : Z, 2 <= d /\ d * d <= p /\ prime d /\ (d | p)))%Z).
+ intros p IH _ Hp Pp.
+ destruct (not_prime_divide p) as (x,(Hx1,Hx2)).
+-clear -Hp ; omega.
++clear -Hp ; lia.
+ exact Pp.
+ destruct (Zle_or_lt (x * x) p) as [Hx|Hx].
+ destruct (prime_dec x) as [Px|Px].
+ exists x.
+ split.
+-clear -Hx1 ; omega.
++clear -Hx1 ; lia.
+ split.
+ exact Hx.
+ split.
+ now apply <- prime_is_Zprime.
+ exact Hx2.
+ destruct (IH x) as (y&Hy1&Hy2&Hy3&Hy4).
+-clear -Hx1 ; omega.
+-clear -Hx1 ; omega.
++clear -Hx1 ; lia.
++clear -Hx1 ; lia.
+ exact Px.
+ exists y.
+ refine (conj Hy1 (conj _ (conj Hy3 _))).
+@@ -112,14 +113,14 @@ apply Z.le_trans with (2 := Hx).
+ rewrite <- (Zmult_1_r x) at 1.
+ apply Zmult_le_compat_l.
+ now apply Zlt_le_weak.
+-clear -Hx1 ; omega.
++clear -Hx1 ; lia.
+ now apply Z.divide_trans with x.
+ case Hx2.
+ intros q Hq1.
+ assert (Hq2 : (2 <= q)%Z).
+ apply (Zlt_le_succ 1).
+ apply Zmult_lt_reg_r with x.
+-clear -Hx1 ; omega.
++clear -Hx1 ; lia.
+ now rewrite Zmult_1_l, <- Hq1.
+ destruct (prime_dec q) as [Pq|Pq].
+ exists q.
+@@ -130,20 +131,20 @@ rewrite Hq1.
+ apply Zmult_le_compat_l.
+ apply Zlt_le_weak.
+ apply Zmult_lt_reg_r with x.
+-clear -Hx1 ; omega.
++clear -Hx1 ; lia.
+ now rewrite <- Hq1.
+-clear -Hq2 ; omega.
++clear -Hq2 ; lia.
+ split.
+ now apply <- prime_is_Zprime.
+ exists x.
+ now rewrite Zmult_comm.
+ destruct (IH q) as (y&Hy1&Hy2&Hy3&Hy4).
+ split.
+-clear -Hq2 ; omega.
++clear -Hq2 ; lia.
+ rewrite <- (Zmult_1_r q), Hq1.
+ apply Zmult_lt_compat_l.
+-clear -Hq2 ; omega.
+-clear -Hx1 ; omega.
++clear -Hq2 ; lia.
++clear -Hx1 ; lia.
+ exact Hq2.
+ exact Pq.
+ exists y.
+@@ -151,8 +152,8 @@ refine (conj Hy1 (conj _ (conj Hy3 _))).
+ apply Z.le_trans with (1 := Hy2).
+ rewrite <- (Zmult_1_r q), Hq1.
+ apply Zmult_le_compat_l.
+-clear -Hx1 ; omega.
+-clear -Hq2 ; omega.
++clear -Hx1 ; lia.
++clear -Hq2 ; lia.
+ apply Z.divide_trans with (1 := Hy4).
+ exists x.
+ now rewrite Zmult_comm.
+@@ -175,13 +176,7 @@ assert (Z.divide q p).
+ now exists 2%Z.
+ intros.
+ refine (_ (fun H1 => H0 H1 H) (proj1 Pp)).
+-(* ??? omega fails to solve this goal ??? *)
+-clear -Hq.
+-intros H Hp.
+-destruct (Zle_lt_or_eq 2 p Hp) as [Hp'|Hp'].
+-elim H.
+-omega.
+-easy.
++lia.
+ Qed.
+
+ (* Why3 goal *)
+@@ -193,6 +188,6 @@ intros p Pp Hp.
+ apply <- Divisibility.odd_divides.
+ apply proj2 in Pp.
+ apply Pp.
+-omega.
++lia.
+ Qed.
+
+--- a/lib/coq/real/PowerInt.v 2021-03-13 02:24:39.000000000 -0700
++++ b/lib/coq/real/PowerInt.v 2021-10-20 09:38:32.731532867 -0600
+@@ -18,6 +18,7 @@ Require int.Int.
+ Require real.Real.
+ Require real.RealInfix.
+
++Require Import Lia.
+ Require Import Exponentiation.
+ Import Rfunctions.
+
+@@ -62,10 +63,12 @@ Lemma Power_s_alt :
+ forall (x:Reals.Rdefinitions.R) (n:Numbers.BinNums.Z), (0%Z < n)%Z ->
+ ((Reals.Rfunctions.powerRZ x n) =
+ (x * (Reals.Rfunctions.powerRZ x (n - 1%Z)%Z))%R).
++Proof.
+ intros x n h1.
+ rewrite <- Power_s.
+-f_equal; omega.
+-omega.
++apply f_equal.
++ring.
++lia.
+ Qed.
+
+ (* Why3 goal *)
+@@ -105,6 +108,7 @@ Lemma Power_comm1 :
+ ((x * y)%R = (y * x)%R) -> forall (n:Numbers.BinNums.Z), (0%Z <= n)%Z ->
+ (((Reals.Rfunctions.powerRZ x n) * y)%R =
+ (y * (Reals.Rfunctions.powerRZ x n))%R).
++Proof.
+ intros x y h1 n h2.
+ apply Rmult_comm.
+ Qed.
+@@ -125,17 +129,18 @@ Qed.
+ Lemma Pow_ge_one :
+ forall (x:Reals.Rdefinitions.R) (n:Numbers.BinNums.Z),
+ (0%Z <= n)%Z /\ (1%R <= x)%R -> (1%R <= (Reals.Rfunctions.powerRZ x n))%R.
++Proof.
+ intros x n (h1,h2).
+ generalize h1.
+ pattern n; apply Z_lt_induction; auto.
+ clear n h1; intros n Hind h1.
+-assert (h: (n = 0 \/ 0 < n)%Z) by omega.
++assert (h: (n = 0 \/ 0 < n)%Z) by lia.
+ destruct h.
+ subst n; rewrite Power_0; auto with *.
+-replace n with ((n-1)+1)%Z by omega.
++replace n with ((n-1)+1)%Z by ring.
+ rewrite Power_s; auto with zarith.
+ assert (h : (1 <= powerRZ x (n-1))%R).
+-apply Hind; omega.
++apply Hind; lia.
+ replace 1%R with (1*1)%R by auto with real.
+ apply Rmult_le_compat; auto with real.
+ Qed.
+--- a/lib/coq/set/Cardinal.v 2021-03-13 02:24:39.000000000 -0700
++++ b/lib/coq/set/Cardinal.v 2021-10-20 09:39:23.827563515 -0600
+@@ -19,6 +19,8 @@ Require set.Set.
+ Require map.Map.
+ Require map.Const.
+
++Require Import Lia.
++
+ (* Why3 goal *)
+ Definition is_finite {a:Type} {a_WT:WhyType a} :
+ (a -> Init.Datatypes.bool) -> Prop.
+@@ -304,7 +306,7 @@ Proof.
+ intros s.
+ unfold cardinal. destruct ClassicalEpsilon.excluded_middle_informative.
+ destruct ClassicalEpsilon.classical_indefinite_description.
+-omega.
++lia.
+ reflexivity.
+ Qed.
+
+@@ -430,7 +432,7 @@ assert (List.length x <= List.length x0)
+ intros e H1.
+ eapply Heqx0. eapply Heqx in H1. unfold set.Set.subset, set.Set.mem in h2. eapply h2 in H1. assumption.
+ }
+-omega.
++lia.
+ Qed.
+
+ (* Why3 goal *)
+@@ -465,10 +467,10 @@ unfold set.Set.subset in h2.
+ rewrite <- Heq2, <- Heq1.
+ assert (List.length l1 = List.length l2).
+ {
+- omega.
++ lia.
+ }
+ split. eauto.
+-eapply List.NoDup_length_incl; eauto. omega.
++eapply List.NoDup_length_incl; eauto. lia.
+ Qed.
+
+ (* Why3 goal *)
+@@ -487,7 +489,7 @@ destruct ClassicalEpsilon.excluded_middl
+ + inversion h1.
+ + destruct x0.
+ - simpl in a0. eapply a0 in h2. eapply a0 in H0. intuition. subst. reflexivity.
+- - simpl in h1; contradict h1; zify; omega.
++ - simpl in h1; contradict h1; lia.
+ * inversion h1.
+ Qed.
+
+@@ -520,7 +522,7 @@ induction lu; intros.
+ subst. inversion H. intuition.
+ }
+ rewrite Hlieq. rewrite List.app_length. simpl length.
+- rewrite H4. rewrite List.app_length. omega.
++ rewrite H4. rewrite List.app_length. lia.
+ * assert (List.In a lui). { eapply H3. split. left. reflexivity. assumption. }
+ destruct (List.in_split a lui H4) as [lui' [lui'' Hlui]].
+ assert (length (List.app lui' lui'') = length lu - length li).
+@@ -545,7 +547,7 @@ induction lu; intros.
+ intros e Hincl. specialize (H2 e Hincl). simpl in H2. intuition. subst.
+ intuition.
+ }
+- omega.
++ lia.
+ Qed.
+
+ Lemma NoDup_app: forall {A} l l'
+@@ -657,7 +659,7 @@ assert (List.length (List.app l1_lint l2
+ eapply List.NoDup_incl_length; intuition. intro. apply H6.
+ assert (List.length (List.app l1_lint l2_lint) >= List.length lun_lint).
+ eapply List.NoDup_incl_length; intuition. intro. apply H7.
+- omega.
++ lia.
+ }
+
+ assert (length l1 >= length lint).
+@@ -675,7 +677,7 @@ assert (length lun >= length lint).
+ eapply List.NoDup_incl_length; intuition. intros e Hincl. eapply Heq_int in Hincl.
+ eapply Heq_un. eapply set.Set.inter'def in Hincl. eapply set.Set.union'def. intuition.
+ }
+-rewrite List.app_length in H5. omega.
++rewrite List.app_length in H5. lia.
+ Qed.
+
+ (* Why3 goal *)
+@@ -729,7 +731,7 @@ eapply List.NoDup_incl_length; intuition
+ intros e Hincl. eapply H4. eapply H6 in Hincl. rewrite set.Set.inter'def in Hincl.
+ intuition.
+ }
+-omega.
++lia.
+ Qed.
+
+ (* Why3 goal *)
+@@ -758,6 +760,6 @@ assert (List.length x <= List.length x0)
+ eapply List.NoDup_incl_length; eauto.
+ - rewrite List.map_length; eauto.
+ }
+-omega.
++lia.
+ Qed.
+
+--- a/lib/coq/set/FsetInt.v 2021-03-13 02:24:39.000000000 -0700
++++ b/lib/coq/set/FsetInt.v 2021-10-20 09:43:12.813700711 -0600
+@@ -17,6 +17,8 @@ Require HighOrd.
+ Require int.Int.
+ Require set.Fset.
+
++Require Import Lia.
++
+ (* Why3 goal *)
+ Definition min_elt : set.Fset.fset Numbers.BinNums.Z -> Numbers.BinNums.Z.
+ Proof.
+@@ -49,18 +51,18 @@ induction l0; intros.
+ { destruct H. }
+ assert (forall l z, List.fold_left (fun x1 acc : int => if Z_le_dec x1 acc then x1 else acc) l z <= z)%Z.
+ {
+- induction l1; intros; simpl; eauto. omega.
+- simpl. destruct Z_le_dec. eauto. eapply Z.le_trans with a0; eauto. omega.
++ induction l1; intros; simpl; eauto. lia.
++ simpl. destruct Z_le_dec. eauto. eapply Z.le_trans with a0; eauto. lia.
+ }
+ simpl. destruct Z_le_dec.
+ destruct (Z_le_dec z0 x0).
+ eapply Z.le_trans with z0. eapply H0. assumption.
+-simpl in H. destruct H. subst. omega.
++simpl in H. destruct H. subst. lia.
+ eapply IHl0; eauto.
+
+ destruct (Z_le_dec a x0).
+ eapply Z.le_trans with a. eapply H0. assumption.
+-simpl in H. destruct H. subst. omega.
++simpl in H. destruct H. subst. lia.
+ eapply IHl0; eauto.
+ }
+
+@@ -79,7 +81,7 @@ rewrite <- Heql. simpl. specialize (H0 l
+
+ intros. eapply Heql in H1. eapply (H (List.cons z l) z) in H1; eauto. simpl in H1.
+ destruct Z_le_dec. assumption.
+-omega.
++lia.
+ Qed.
+
+ (* Why3 goal *)
+@@ -115,7 +117,7 @@ assert (min_elt (Fset.map (fun x => - x)
+ {
+ eapply H1; eauto. apply Fset.mem_map. assumption.
+ }
+-omega.
++lia.
+ Qed.
+
+ Fixpoint seqZ l len : list Numbers.BinNums.Z :=
+@@ -133,16 +135,16 @@ Qed.
+ Lemma seqZ_le2: forall len x l, List.In x (seqZ l len) -> (x < l + Z.of_nat len)%Z.
+ Proof.
+ induction len; simpl; intuition idtac.
+-- subst. zify. omega.
+-- eapply IHlen in H0. zify. omega.
++- subst. lia.
++- eapply IHlen in H0. lia.
+ Qed.
+
+ Lemma seqZ_rev: forall len x l, (l <= x < l + Z.of_nat len)%Z -> List.In x (seqZ l len).
+ Proof.
+ induction len; intros; simpl in *.
+-+ omega.
+++ lia.
+ + destruct (Z.eq_dec l x); eauto.
+- right. eapply IHlen; eauto. zify; omega.
++ right. eapply IHlen; eauto. lia.
+ Qed.
+
+ Lemma seqZ_In_iff: forall l len x, List.In x (seqZ l len) <-> (l <= x < l + Z.of_nat len)%Z.
+@@ -157,7 +159,7 @@ Proof.
+ induction len; intros.
+ + constructor.
+ + simpl. constructor; eauto.
+- intro Habs. eapply seqZ_le in Habs. omega.
++ intro Habs. eapply seqZ_le in Habs. lia.
+ Qed.
+
+ Lemma seqZ_length: forall len l, List.length (seqZ l len) = len.
+@@ -179,7 +181,7 @@ destruct (Z_le_dec l r).
+ - eapply seqZ_NoDup.
+ - intros.
+ rewrite seqZ_In_iff.
+- rewrite Z2Nat.id; [|omega].
++ rewrite Z2Nat.id; [|lia].
+ destruct Z_le_dec.
+ * destruct Z_lt_dec. split; intros; [reflexivity|].
+ intuition.
+@@ -190,7 +192,7 @@ destruct (Z_le_dec l r).
+ - constructor.
+ - intros.
+ destruct Z_le_dec; try destruct Z_lt_dec; intuition.
+- omega.
++ lia.
+ inversion H.
+ inversion H.
+ Qed.
+@@ -228,7 +230,7 @@ destruct (Z_le_dec l r).
+ + exists (seqZ l (Z.to_nat (r - l)%Z)).
+ split. apply seqZ_NoDup.
+ intros. rewrite seqZ_In_iff.
+- rewrite Z2Nat.id; [|omega].
++ rewrite Z2Nat.id; [|lia].
+ destruct Z_le_dec; try destruct Z_lt_dec; intuition; try inversion H.
+ + exists nil. split. constructor.
+ simpl. intros. destruct Z_le_dec; try destruct Z_lt_dec; intuition.
+@@ -255,15 +257,15 @@ split.
+ eapply Nat.le_antisymm.
+ + eapply List.NoDup_incl_length. eapply seqZ_NoDup. intro. rewrite H2.
+ rewrite seqZ_In_iff. destruct Z_le_dec; try destruct Z_lt_dec; intuition idtac.
+- rewrite Z2Nat.id in H5; omega.
++ rewrite Z2Nat.id in H5; lia.
+ + eapply List.NoDup_incl_length. assumption. intro. rewrite H2.
+ rewrite seqZ_In_iff. destruct Z_le_dec; try destruct Z_lt_dec; intuition (try discriminate).
+- rewrite Z2Nat.id; omega.
++ rewrite Z2Nat.id; lia.
+ }
+- rewrite <- H3. rewrite seqZ_length. rewrite Z2Nat.id; omega.
++ rewrite <- H3. rewrite seqZ_length. rewrite Z2Nat.id; lia.
+ + intros. destruct a.
+ destruct x. reflexivity.
+ specialize (H2 z). contradict H2. destruct Z_le_dec.
+- destruct Z_lt_dec. omega. intuition. intuition.
++ destruct Z_lt_dec. lia. intuition. intuition.
+ Qed.
+
+--- a/lib/coq/set/FsetSum.v 2021-03-13 02:24:39.000000000 -0700
++++ b/lib/coq/set/FsetSum.v 2021-10-20 09:43:38.628716168 -0600
+@@ -17,6 +17,8 @@ Require HighOrd.
+ Require int.Int.
+ Require set.Fset.
+
++Require Import Lia.
++
+ (* Why3 goal *)
+ Definition sum {a:Type} {a_WT:WhyType a} :
+ set.Fset.fset a -> (a -> Numbers.BinNums.Z) -> Numbers.BinNums.Z.
+@@ -192,7 +194,7 @@ destruct a2 as (Hx1dup, Hx1eq).
+ - intros. rewrite Hx1eq. rewrite Hdieq in H0. rewrite set.Set.diff'def in H0.
+ intuition.
+ }
+-omega.
++lia.
+ Qed.
+
+ Lemma sum_union_disj {a:Type} {a_WT:WhyType a} :
+@@ -255,7 +257,7 @@ assert (sum (Fset.union s1 s2) f - sum (
+ + eapply Fset.subset_trans with s1. eapply Fset.subset_inter_1.
+ eapply Fset.subset_union_1.
+ }
+-omega.
++lia.
+ Qed.
+
+ (* Why3 goal *)
+--- a/lib/coq/set/Fset.v 2021-03-13 02:24:39.000000000 -0700
++++ b/lib/coq/set/Fset.v 2021-10-20 09:40:37.348607589 -0600
+@@ -16,7 +16,9 @@ Require BuiltIn.
+ Require HighOrd.
+ Require int.Int.
+
+-Require Import ClassicalEpsilon.
++Require Import ClassicalEpsilon Lia.
++Require Logic.ProofIrrelevance.
++Require set.Set set.Cardinal.
+
+ (* Why3 goal *)
+ Definition fset : forall (a:Type), Type.
+@@ -40,8 +42,6 @@ Qed.
+ Definition mem {a:Type} {a_WT:WhyType a} : a -> fset a -> Prop.
+ Proof.
+ intros. destruct X0 as (f, P).
+-(* TODO remove this *)
+-Require set.Set.
+ apply (set.Set.mem X f).
+ Defined.
+
+@@ -62,7 +62,6 @@ eapply set.Set.extensionality. intro. ea
+ subst.
+ assert (e = e0).
+ (* TODO maybe provable on such property ? *)
+-Require Logic.ProofIrrelevance.
+ apply Logic.ProofIrrelevance.proof_irrelevance.
+ subst. reflexivity.
+ Qed.
+@@ -96,8 +95,6 @@ Definition is_empty {a:Type} {a_WT:WhyTy
+ Definition empty {a:Type} {a_WT:WhyType a} : fset a.
+ Proof.
+ exists (fun x => false).
+-(* TODO remove this *)
+-Require Cardinal.
+ apply Cardinal.is_finite_empty. unfold set.Set.is_empty.
+ unfold set.Set.mem. intuition.
+ Defined.
+@@ -591,10 +588,10 @@ destruct ClassicalEpsilon.excluded_middl
+ intro. intros. rewrite H2. rewrite H0 in H3. rewrite Bool.andb_true_iff in H3.
+ apply H3.
+ }
+- omega.
++ lia.
+ - destruct ClassicalEpsilon.classical_indefinite_description.
+ destruct ClassicalEpsilon.excluded_middle_informative; [| intuition].
+- unfold Z.zero. omega.
++ unfold Z.zero. lia.
+ Qed.
+
+ (* Why3 goal *)
+--- a/share/provers-detection-data.conf 2021-03-13 02:24:39.000000000 -0700
++++ b/share/provers-detection-data.conf 2021-10-20 09:45:16.028775089 -0600
+@@ -812,6 +812,7 @@ support_library = "%l/coq/version"
+ exec = "coqtop"
+ version_switch = "-v"
+ version_regexp = "The Coq Proof Assistant, version \\([^ \n]+\\)"
++version_ok = "^8\.14\.[0-9]+$"
+ version_ok = "^8\.13\.[0-9]+$"
+ version_ok = "^8\.12\.[0-9]+$"
+ version_ok = "^8\.11\.[0-9]+$"
diff --git a/why3.spec b/why3.spec
index 6b57dfc..f3c5fd9 100644
--- a/why3.spec
+++ b/why3.spec
@@ -9,13 +9,13 @@
Name: why3
Version: 1.4.0
-Release: 5%{?dist}
+Release: 6%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
License: LGPLv2 with exceptions
URL: http://why3.lri.fr/
-Source0: https://gforge.inria.fr/frs/download.php/file/38425/%{name}-%{version}.tar.gz
+Source0: https://why3.gitlabpages.inria.fr/releases/%{name}-%{version}.tar.gz
# Man pages written by Jerry James using text found in the sources. Hence,
# the copyright and license are the same as for the upstream sources.
Source1: %{name}-man.tar.xz
@@ -23,6 +23,9 @@ Source1: %{name}-man.tar.xz
Source2: fr.lri.%{name}.desktop
# AppData file written by Jerry James
Source3: fr.lri.%{name}.metainfo.xml
+# Add support for coq 8.14.0
+# https://gitlab.inria.fr/why3/why3/-/commit/a41e40f88987a26a7ac35f62e7637a2f6fcf1c07
+Patch0: %{name}-coq8.14.patch
BuildRequires: appstream
BuildRequires: coq
@@ -35,10 +38,15 @@ BuildRequires: ocaml-camlp5-devel
BuildRequires: ocaml-findlib
BuildRequires: ocaml-lablgtk3-sourceview3-devel
BuildRequires: ocaml-menhir
+BuildRequires: ocaml-mlmpfr-devel
BuildRequires: ocaml-num-devel
BuildRequires: ocaml-ocamldoc
+BuildRequires: ocaml-ocamlgraph-devel
+BuildRequires: ocaml-ppx-deriving-devel
+BuildRequires: ocaml-ppx-sexp-conv-devel
BuildRequires: ocaml-re-devel
BuildRequires: ocaml-seq-devel
+BuildRequires: ocaml-sexplib-devel
BuildRequires: ocaml-zarith-devel
BuildRequires: ocaml-zip-devel
BuildRequires: %{py3_dist sphinx}
@@ -53,7 +61,7 @@ BuildRequires: tex(tabulary.sty)
BuildRequires: tex(upquote.sty)
BuildRequires: tex(wrapfig.sty)
BuildRequires: tex-urlbst
-BuildRequires: emacs xemacs xemacs-packages-extra
+BuildRequires: emacs
BuildRequires: graphviz
Requires: gtksourceview3%{?_isa}
@@ -77,6 +85,9 @@ Provides: why-jessie = 2.41-12%{?dist}
Obsoletes: why-pvs-support < 2.41-12
Provides: why-pvs-support = 2.41-12%{?dist}
+# This can be removed when F39 reaches EOL
+Obsoletes: %{name}-xemacs < 1.4.0-4
+
%description
Why3 is the next generation of the Why software verification platform.
Why3 clearly separates the purely logical specification part from
@@ -102,15 +113,6 @@ BuildArch: noarch
%description emacs
This package contains an Emacs support file for working with %{name} files.
-%package xemacs
-Summary: XEmacs support file for %{name} files
-Requires: %{name} = %{version}-%{release}
-Requires: xemacs(bin)
-BuildArch: noarch
-
-%description xemacs
-This package contains an XEmacs support file for working with %{name} files.
-
%package all
Summary: Complete Why3 software verification platform suite
Requires: %{name}%{?_isa} = %{version}-%{release}
@@ -155,7 +157,7 @@ BuildArch: noarch
This package provides a why3 plugin for ProofGeneral.
%prep
-%autosetup -p0
+%autosetup -p1
%setup -q -T -D -a 1
fixtimestamp() {
@@ -245,16 +247,11 @@ mv %{buildroot}%{_datadir}/%{name}/vim/ftdetect \
%{buildroot}%{_datadir}/%{name}/vim/syntax \
%{buildroot}%{_datadir}/vim/vimfiles
-# Byte compile the (X)Emacs support files
-mkdir -p %{buildroot}%{_xemacs_sitelispdir}
-cp -p %{buildroot}%{_emacs_sitelispdir}/%{name}.el \
- %{buildroot}%{_xemacs_sitelispdir}
+# Byte compile the Emacs support files
cp -p share/whyitp/whyitp.el %{buildroot}%{_emacs_sitelispdir}
-pushd %{buildroot}%{_xemacs_sitelispdir}
-%{_xemacs_bytecompile} %{name}.el
cd %{buildroot}%{_emacs_sitelispdir}
%{_emacs_bytecompile} %{name}.el whyitp.el
-popd
+cd -
# Remove misplaced documentation
rm -fr %{buildroot}%{_datadir}/doc
@@ -308,9 +305,6 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files emacs
%{_emacs_sitelispdir}/%{name}.el*
-%files xemacs
-%{_xemacs_sitelispdir}/%{name}.el*
-
%files proofgeneral
%doc share/whyitp/README
%{_emacs_sitelispdir}/whyitp.el*
@@ -320,6 +314,11 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Thu Oct 21 2021 Jerry James - 1.4.0-6
+- Rebuild for coq 8.14.0 and menhir 20211012
+- Add -coq8.14 patch
+- Drop XEmacs support
+
* Tue Oct 05 2021 Richard W.M. Jones - 1.4.0-5
- OCaml 4.13.1 build
From 34f2a3d2bfb58eff979cf0480dad4f1d7a7ac3c3 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Tue, 30 Nov 2021 13:36:09 -0700
Subject: [PATCH 038/113] Rebuild for coq 8.14.1, sexplib0 0.15.0 and menhir
20211128.
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index f3c5fd9..53790d3 100644
--- a/why3.spec
+++ b/why3.spec
@@ -9,7 +9,7 @@
Name: why3
Version: 1.4.0
-Release: 6%{?dist}
+Release: 7%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
@@ -314,6 +314,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Tue Nov 30 2021 Jerry James - 1.4.0-7
+- Rebuild for coq 8.14.1, sexplib0 0.15.0 and menhir 20211128
+
* Thu Oct 21 2021 Jerry James - 1.4.0-6
- Rebuild for coq 8.14.0 and menhir 20211012
- Add -coq8.14 patch
From a6b6dd4acf6c4a098904a9f5680a920e866c6056 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Thu, 30 Dec 2021 19:03:54 -0700
Subject: [PATCH 039/113] Rebuild for alt-ergo 2.3.0 and ocaml-zip 1.11.
---
why3.spec | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index 53790d3..6af4be7 100644
--- a/why3.spec
+++ b/why3.spec
@@ -9,7 +9,7 @@
Name: why3
Version: 1.4.0
-Release: 7%{?dist}
+Release: 8%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
@@ -142,6 +142,8 @@ Requires: ocaml-menhir%{?_isa}
Requires: ocaml-num-devel%{?_isa}
Requires: ocaml-re-devel%{?_isa}
Requires: ocaml-seq-devel%{?_isa}
+Requires: ocaml-sexplib-devel%{?_isa}
+Requires: ocaml-zip-devel%{?_isa}
%description -n ocaml-%{name}-devel
This package contains development files needed to build applications
@@ -314,6 +316,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Mon Dec 27 2021 Jerry James - 1.4.0-8
+- Rebuild for alt-ergo 2.3.0 and ocaml-zip 1.11
+
* Tue Nov 30 2021 Jerry James - 1.4.0-7
- Rebuild for coq 8.14.1, sexplib0 0.15.0 and menhir 20211128
From cd3b9cb53409505600d95746adaa9dc9c1cd6cd9 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Mon, 17 Jan 2022 16:45:10 -0700
Subject: [PATCH 040/113] Rebuild for menhir 20211230.
---
why3.rpmlintrc | 28 ----------------------------
why3.spec | 5 ++++-
2 files changed, 4 insertions(+), 29 deletions(-)
delete mode 100644 why3.rpmlintrc
diff --git a/why3.rpmlintrc b/why3.rpmlintrc
deleted file mode 100644
index 7b0f672..0000000
--- a/why3.rpmlintrc
+++ /dev/null
@@ -1,28 +0,0 @@
-# THIS FILE IS FOR WHITELISTING RPMLINT ERRORS AND WARNINGS IN TASKOTRON
-# https://fedoraproject.org/wiki/Taskotron/Tasks/dist.rpmlint#Whitelisting_errors
-
-# The dictionary lacks some technical words
-addFilter(r'W: spelling-error .* provers')
-
-# Caused by ocaml; this package cannot fix it
-addFilter(r'why3\.[^:]+: E: missing-call-to-chdir-with-chroot')
-
-# Indeed there is no documentation
-addFilter(r'ocaml-why3(|-devel).[^:]+: W: no-documentation')
-addFilter(r'why3-(all|emacs|xemacs).[^:]+: W: no-documentation')
-
-# This file is not a text file
-addFilter(r'W: file-not-utf8 .*\.mlw')
-
-# The TeX input carries its own character encoding declaration
-addFilter(r'why3-examples\.noarch: W: file-not-utf8 .*digit_sum\.tex')
-
-# The .notempty files are markers
-addFilter(r'why3-examples\.noarch: W: hidden-file-or-dir .*/\.notempty')
-addFilter(r'why3-examples\.noarch: E: zero-length .*/\.notempty')
-
-# We use the version of jquery provided by ocamldoc
-addFilter(r'W: unversioned-explicit-provides bundled\(jquery\)')
-
-# The man pages were created by the Fedora packager; there is no URL
-addFilter(r'why3\.spec: W: invalid-url Source1: why3-man\.tar\.xz')
diff --git a/why3.spec b/why3.spec
index 6af4be7..a42f07e 100644
--- a/why3.spec
+++ b/why3.spec
@@ -9,7 +9,7 @@
Name: why3
Version: 1.4.0
-Release: 8%{?dist}
+Release: 9%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
@@ -316,6 +316,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Mon Jan 17 2022 Jerry James - 1.4.0-9
+- Rebuild for menhir 20211230
+
* Mon Dec 27 2021 Jerry James - 1.4.0-8
- Rebuild for alt-ergo 2.3.0 and ocaml-zip 1.11
From 40997707ae79b1754e9070c5041000a2d32abd46 Mon Sep 17 00:00:00 2001
From: Fedora Release Engineering
Date: Sat, 22 Jan 2022 04:27:35 +0000
Subject: [PATCH 041/113] - Rebuilt for
https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
Signed-off-by: Fedora Release Engineering
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index a42f07e..e4c18d6 100644
--- a/why3.spec
+++ b/why3.spec
@@ -9,7 +9,7 @@
Name: why3
Version: 1.4.0
-Release: 9%{?dist}
+Release: 10%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
@@ -316,6 +316,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Sat Jan 22 2022 Fedora Release Engineering - 1.4.0-10
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
+
* Mon Jan 17 2022 Jerry James - 1.4.0-9
- Rebuild for menhir 20211230
From 7ef696872b1d292a1dc5bb2637c3151bdf65d40a Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones"
Date: Fri, 4 Feb 2022 20:19:41 +0000
Subject: [PATCH 042/113] OCaml 4.13.1 rebuild to remove package notes
---
why3.spec | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index e4c18d6..522738c 100644
--- a/why3.spec
+++ b/why3.spec
@@ -1,3 +1,4 @@
+%undefine _package_note_flags
# NOTE: Upstream has said that the Frama-C support is still experimental, and
# less functional than the corresponding support in why2. They recommend not
# enabling it for now. We abide by their wishes. Revisit this decision each
@@ -9,7 +10,7 @@
Name: why3
Version: 1.4.0
-Release: 10%{?dist}
+Release: 11%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
@@ -316,6 +317,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Fri Feb 04 2022 Richard W.M. Jones - 1.4.0-11
+- OCaml 4.13.1 rebuild to remove package notes
+
* Sat Jan 22 2022 Fedora Release Engineering - 1.4.0-10
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
From facae9f941d9ae34943739796a54bfb088012f76 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Mon, 28 Feb 2022 20:02:14 -0700
Subject: [PATCH 043/113] Version 1.4.1.
---
sources | 2 +-
why3-coq8.14.patch | 5 +++--
why3.spec | 19 ++++++++++++-------
3 files changed, 16 insertions(+), 10 deletions(-)
diff --git a/sources b/sources
index 8b12354..e8064dc 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
SHA512 (why3-man.tar.xz) = 8355776ac8a67a56ae7354f8fd40dc5d2057022d1035090a3e38e139fbfe3c258fe3ccbed6e333cb005e66c7b4cdbbf6580e3420170fd08384cc9b36ce5ec2a1
-SHA512 (why3-1.4.0.tar.gz) = b492f08a3c7073782b143a4849c47766b12045ad53c56aa8d251fd5b6bc1863ddebe260c99b3ddb27c4e1e1e9ab986c8b02286ec24f4c30f99f81f5f13fdc90a
+SHA512 (why3-1.4.1.tar.gz) = 7990519179c088be1bc9b5b6d469f6d6fbd683445e20cbf5edd5c97682f2931b2657a92b60e539d7647033bfdc5a63401f28af61fd9b14b41011144afa2016e0
diff --git a/why3-coq8.14.patch b/why3-coq8.14.patch
index 4bc5210..ff7ac1e 100644
--- a/why3-coq8.14.patch
+++ b/why3-coq8.14.patch
@@ -20,7 +20,7 @@
8.13*)
coq_compat_version="COQ813"
;;
-+ 8.14*)
++ 8.14*|8.15*)
+ coq_compat_version="COQ814"
+ ;;
*)
@@ -3436,10 +3436,11 @@
(* Why3 goal *)
--- a/share/provers-detection-data.conf 2021-03-13 02:24:39.000000000 -0700
+++ b/share/provers-detection-data.conf 2021-10-20 09:45:16.028775089 -0600
-@@ -812,6 +812,7 @@ support_library = "%l/coq/version"
+@@ -812,6 +812,8 @@ support_library = "%l/coq/version"
exec = "coqtop"
version_switch = "-v"
version_regexp = "The Coq Proof Assistant, version \\([^ \n]+\\)"
++version_ok = "^8\.15\.[0-9]+$"
+version_ok = "^8\.14\.[0-9]+$"
version_ok = "^8\.13\.[0-9]+$"
version_ok = "^8\.12\.[0-9]+$"
diff --git a/why3.spec b/why3.spec
index 522738c..881b2ee 100644
--- a/why3.spec
+++ b/why3.spec
@@ -1,16 +1,17 @@
-%undefine _package_note_flags
# NOTE: Upstream has said that the Frama-C support is still experimental, and
# less functional than the corresponding support in why2. They recommend not
# enabling it for now. We abide by their wishes. Revisit this decision each
# release.
+%undefine _package_note_flags
+
%ifnarch %{ocaml_native_compiler}
%global debug_package %{nil}
%endif
Name: why3
-Version: 1.4.0
-Release: 11%{?dist}
+Version: 1.4.1
+Release: 1%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
@@ -39,7 +40,8 @@ BuildRequires: ocaml-camlp5-devel
BuildRequires: ocaml-findlib
BuildRequires: ocaml-lablgtk3-sourceview3-devel
BuildRequires: ocaml-menhir
-BuildRequires: ocaml-mlmpfr-devel
+# mlmpfr <= 4.0 is required, but we have 4.1
+# BuildRequires: ocaml-mlmpfr-devel
BuildRequires: ocaml-num-devel
BuildRequires: ocaml-ocamldoc
BuildRequires: ocaml-ocamlgraph-devel
@@ -171,13 +173,13 @@ fixtimestamp() {
# Use the correct compiler flags, keep timestamps, and harden the build due to
# network use. Link the binaries with runtime compiled with -fPIC.
# This avoids many link-time errors.
-sed -e "s|-Wall|$RPM_OPT_FLAGS|;s/ -O -g//" \
+sed -e "s|-Wall|%{build_cflags}|;s/ -O -g//" \
-e "s/cp /cp -p /" \
- -e "s|^OLINKFLAGS =.*|& -runtime-variant _pic -ccopt \"$RPM_LD_FLAGS\"|" \
+ -e "s|^OLINKFLAGS =.*|& -runtime-variant _pic -ccopt \"%{build_ldflags}\"|" \
-i Makefile.in
# Remove spurious executable bits
-find -O3 examples -type f -perm /0111 -exec chmod a-x {} \+
+find -O3 examples -type f -perm /0111 -exec chmod a-x {} +
chmod a+x examples/*.sh
# Update the ProofGeneral integration instructions
@@ -317,6 +319,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Mon Feb 28 2022 Jerry James - 1.4.1-1
+- Version 1.4.1
+
* Fri Feb 04 2022 Richard W.M. Jones - 1.4.0-11
- OCaml 4.13.1 rebuild to remove package notes
From a64a0ed5e919eaa663861f3cf377eb7c826d9092 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Fri, 25 Mar 2022 11:55:10 -0600
Subject: [PATCH 044/113] Rebuild for coq 8.15.1.
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index 881b2ee..1b5f8d7 100644
--- a/why3.spec
+++ b/why3.spec
@@ -11,7 +11,7 @@
Name: why3
Version: 1.4.1
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
@@ -319,6 +319,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Fri Mar 25 2022 Jerry James - 1.4.1-2
+- Rebuild for coq 8.15.1
+
* Mon Feb 28 2022 Jerry James - 1.4.1-1
- Version 1.4.1
From 204eb83925093f5225e5c330a1b6813ae62e58fb Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones"
Date: Sun, 19 Jun 2022 19:24:51 +0100
Subject: [PATCH 045/113] OCaml 4.14.0 rebuild
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index 1b5f8d7..7672e7f 100644
--- a/why3.spec
+++ b/why3.spec
@@ -11,7 +11,7 @@
Name: why3
Version: 1.4.1
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
@@ -319,6 +319,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Sun Jun 19 2022 Richard W.M. Jones - 1.4.1-3
+- OCaml 4.14.0 rebuild
+
* Fri Mar 25 2022 Jerry James - 1.4.1-2
- Rebuild for coq 8.15.1
From 2e53fbb730355e252b09485f549d80a7ab87ed4e Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Thu, 7 Jul 2022 15:37:13 -0600
Subject: [PATCH 046/113] Version 1.5.0.
- Add ocaml-mlmpfr support.
- Drop unmaintained man pages.
- Use new OCaml macros.
---
sources | 3 +-
why3-coq8.14.patch | 3447 --------------------------------------------
why3.spec | 72 +-
3 files changed, 34 insertions(+), 3488 deletions(-)
delete mode 100644 why3-coq8.14.patch
diff --git a/sources b/sources
index e8064dc..5fba922 100644
--- a/sources
+++ b/sources
@@ -1,2 +1 @@
-SHA512 (why3-man.tar.xz) = 8355776ac8a67a56ae7354f8fd40dc5d2057022d1035090a3e38e139fbfe3c258fe3ccbed6e333cb005e66c7b4cdbbf6580e3420170fd08384cc9b36ce5ec2a1
-SHA512 (why3-1.4.1.tar.gz) = 7990519179c088be1bc9b5b6d469f6d6fbd683445e20cbf5edd5c97682f2931b2657a92b60e539d7647033bfdc5a63401f28af61fd9b14b41011144afa2016e0
+SHA512 (why3-1.5.0.tar.gz) = 3ae443733321f2e487d6e503c4dbfe37d0e24c7dbe88eb94a3907775a1e6e30530b58ff835e3b2fff3fac5cd16622d758602e4f2b59aea567c7073199d67888c
diff --git a/why3-coq8.14.patch b/why3-coq8.14.patch
deleted file mode 100644
index ff7ac1e..0000000
--- a/why3-coq8.14.patch
+++ /dev/null
@@ -1,3447 +0,0 @@
---- a/configure 2021-03-13 02:24:39.000000000 -0700
-+++ b/configure 2021-10-20 08:34:30.402015180 -0600
-@@ -5293,14 +5293,11 @@ if test "$enable_coq_support" = yes; the
- COQLIB=`$COQC -where | sed -e 's|\\\|/|g' -e 's| |\\ |g'`
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking Coq version" >&5
- $as_echo_n "checking Coq version... " >&6; }
-- COQVERSION=`$COQC -v | sed -n -e 's|.*version *\([^ ]*\) .*$|\1|p'`
-+ COQVERSION=`$COQC -v | sed -n -e 's|.*version *\([^ ]*\).*|\1|p'`
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $COQVERSION" >&5
- $as_echo "$COQVERSION" >&6; }
-
- case $COQVERSION in
-- 8.6*)
-- coq_compat_version="COQ86"
-- ;;
- 8.7*)
- coq_compat_version="COQ87"
- ;;
-@@ -5322,11 +5319,14 @@ $as_echo "$COQVERSION" >&6; }
- 8.13*)
- coq_compat_version="COQ813"
- ;;
-+ 8.14*|8.15*)
-+ coq_compat_version="COQ814"
-+ ;;
- *)
- enable_coq_support=no
-- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You need Coq 8.6 or later; Coq discarded" >&5
--$as_echo "$as_me: WARNING: You need Coq 8.6 or later; Coq discarded" >&2;}
-- reason_coq_support=" (need version >= 8.6)"
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You need Coq 8.7 or later; Coq discarded" >&5
-+$as_echo "$as_me: WARNING: You need Coq 8.7 or later; Coq discarded" >&2;}
-+ reason_coq_support=" (need version >= 8.7)"
- ;;
- esac
- fi
---- a/lib/coq/bv/BV_Gen.v 2021-03-13 02:24:39.000000000 -0700
-+++ b/lib/coq/bv/BV_Gen.v 2021-10-20 08:43:59.506098099 -0600
-@@ -19,6 +19,8 @@ Require int.Abs.
- Require int.EuclideanDivision.
- Require bv.Pow2int.
-
-+Require Import Lia.
-+
- Local Parameter last_bit : nat.
- (* Important notice: do not remove 'Local' above, otherwise 'why3 realize' will
- assume it comes from Why3 and will remove it. We use 'Parameter' instead of
-@@ -38,7 +40,7 @@ Qed.
-
- (* Why3 goal *)
- Lemma size_pos : (0%Z < size)%Z.
-- rewrite size_int_S; omega.
-+ rewrite size_int_S; lia.
- Qed.
-
- Require Import Bool.Bvector.
-@@ -60,29 +62,29 @@ Lemma nth_cons {l} (v : Vector.t bool l)
- nth_aux (Vector.cons bool b l v) (Z.succ m) = nth_aux v m.
- intro; simpl.
- case Z.eq_dec; intro.
-- assert False by omega; easy.
-+ assert False by lia; easy.
- rewrite <- Zpred_succ; easy.
- Qed.
-
- Lemma nth_cons_pred {l} (v : Vector.t bool l) (m : Z) b : (m <> 0)%Z ->
- nth_aux (Vector.cons bool b l v) m = nth_aux v (Z.pred m).
- intro.
-- rewrite Zsucc_pred with (n := m), <- Zpred_succ; apply nth_cons; omega.
-+ rewrite Zsucc_pred with (n := m), <- Zpred_succ; apply nth_cons; lia.
- Qed.
-
- Lemma nth_high : forall {l} (v : Vector.t bool l) m, (m >= (Z.of_nat l))%Z -> nth_aux v m = false.
- induction v.
- easy.
- rewrite Nat2Z.inj_succ.
-- intros; rewrite nth_cons_pred by omega.
-- apply IHv; omega.
-+ intros; rewrite nth_cons_pred by lia.
-+ apply IHv; lia.
- Qed.
-
- Lemma nth_low : forall {l} (v : Vector.t bool l) m, (m < 0)%Z -> nth_aux v m = false.
- induction v.
- easy.
-- intros; rewrite nth_cons_pred by omega.
-- apply IHv; omega.
-+ intros; rewrite nth_cons_pred by lia.
-+ apply IHv; lia.
- Qed.
-
- Lemma nth_zeros_is_hd : forall {l} (b : Vector.t bool (S l)), nth_aux b 0 = Vector.hd b.
-@@ -93,7 +95,7 @@ Lemma nth_predl_is_last : forall {l} (b
- apply Vector.rectS.
- easy.
- intros.
-- rewrite Nat2Z.inj_succ, nth_cons by omega.
-+ rewrite Nat2Z.inj_succ, nth_cons by lia.
- easy.
- Qed.
-
-@@ -101,22 +103,22 @@ Lemma nth_const {l} (m : Z) b: (0 <= m <
- revert b m.
- induction l.
- simpl.
-- intros; assert False by omega; easy.
-+ intros; assert False by lia; easy.
- rewrite Nat2Z.inj_succ; intros; simpl.
- case (Z.eq_dec m 0); intro.
- easy.
-- apply IHl; omega.
-+ apply IHl; lia.
- Qed.
-
- Lemma nth_aux_map : forall {l} (f : bool -> bool) (v : Vector.t bool l) m,
- (0 <= m < Z.of_nat l)%Z ->
- f (nth_aux v m) = nth_aux (Vector.map f v) m.
- induction v.
-- simpl; intros; assert False by omega; easy.
-+ simpl; intros; assert False by lia; easy.
- rewrite Nat2Z.inj_succ; intros; simpl.
- case (Z.eq_dec m 0); intro.
- easy.
-- apply IHv; omega.
-+ apply IHv; lia.
- Qed.
-
- Lemma nth_aux_map2 : forall {l} (f : bool -> bool -> bool) (v1 v2 : Vector.t bool l) m,
-@@ -124,12 +126,12 @@ Lemma nth_aux_map2 : forall {l} (f : boo
- f (nth_aux v1 m) (nth_aux v2 m) = nth_aux (Vector.map2 f v1 v2) m.
- intros l f v1 v2; pattern l, v1, v2.
- apply Vector.rect2.
-- simpl; intros; assert False by omega; easy.
-+ simpl; intros; assert False by lia; easy.
- intros.
- rewrite Nat2Z.inj_succ in H0; simpl.
- case (Z.eq_dec m 0); intro.
- easy.
-- apply H; omega.
-+ apply H; lia.
- Qed.
-
- Lemma nth_aux_tl : forall {l} (v : Vector.t bool (S l)) m, (m <> -1)%Z -> nth_aux (Vector.tl v) m = nth_aux v (Z.succ m).
-@@ -137,11 +139,11 @@ Lemma nth_aux_tl : forall {l} (v : Vecto
- apply Vector.rectS.
- simpl.
- intros; case Z.eq_dec.
-- intro; assert False by omega; easy.
-+ intro; assert False by lia; easy.
- trivial.
- intros.
- simpl (Vector.tl (a :: v0)).
-- symmetry; apply nth_cons; omega.
-+ symmetry; apply nth_cons; lia.
- Qed.
-
- Lemma nth_aux_shiftout_last : forall {l} (v : Vector.t bool (S l)), nth_aux (Vector.shiftout v) (Z.of_nat l) = false.
-@@ -150,7 +152,7 @@ Lemma nth_aux_shiftout_last : forall {l}
- easy.
- rewrite Nat2Z.inj_succ.
- assert (Vector.shiftout (a :: v0) = a :: (Vector.shiftout v0)) by easy.
-- rewrite H0, nth_cons by omega.
-+ rewrite H0, nth_cons by lia.
- apply H.
- Qed.
-
-@@ -160,7 +162,7 @@ Lemma nth_aux_shiftout_not_last : forall
- simpl; case Z.eq_dec; easy.
- simpl; case Z.eq_dec; trivial.
- intro; apply H.
-- rewrite Nat2Z.inj_succ in H0; omega.
-+ rewrite Nat2Z.inj_succ in H0; lia.
- Qed.
-
- Lemma nth_aux_shiftin_false : forall {l} (v : Vector.t bool l) m, nth_aux (Vector.shiftin false v) m = nth_aux v m.
-@@ -173,7 +175,7 @@ Lemma nth_aux_shiftin_low : forall {l} (
- simpl; case Z.eq_dec.
- easy.
- rewrite Nat2Z.inj_succ in H0.
-- intro; apply IHv; omega.
-+ intro; apply IHv; lia.
- Qed.
-
- Lemma nth_aux_shiftin_high : forall {l} (v : Vector.t bool l) b, nth_aux (Vector.shiftin b v) (Z.of_nat l) = b.
-@@ -182,7 +184,7 @@ Lemma nth_aux_shiftin_high : forall {l}
- unfold Vector.shiftin.
- fold (@Vector.shiftin bool).
- rewrite Nat2Z.inj_succ.
-- intro; rewrite nth_cons by omega.
-+ intro; rewrite nth_cons by lia.
- apply IHv.
- Qed.
-
-@@ -201,7 +203,7 @@ simpl.
- intros.
- case Z.eq_dec.
- intros; elimtype False; destruct H.
--omega.
-+lia.
- subst n0.
- auto with zarith.
- intro; rewrite IHv;auto.
-@@ -209,7 +211,7 @@ destruct H.
- left; auto with zarith.
- right.
- rewrite Zpos_P_of_succ_nat in H.
--omega.
-+lia.
- Qed.
-
- (* Why3 goal *)
-@@ -335,10 +337,10 @@ Lemma bshiftRl_iter_nth : forall b s m,
- rewrite Nat2Z.inj_succ; intros.
- simpl BshiftRl_iter.
- unfold BshiftRl, Bhigh.
-- rewrite nth_aux_tl by omega.
-+ rewrite nth_aux_tl by lia.
- rewrite nth_aux_shiftin_false.
- rewrite <- Zplus_succ_r_reverse, <- Z.add_succ_l.
-- apply IHs; omega.
-+ apply IHs; lia.
- Qed.
-
- (* Why3 goal *)
-@@ -348,7 +350,7 @@ Lemma Lsr_nth_low :
- ((nth (lsr b s) n) = (nth b (n + s)%Z)).
- intros b n s h1 h2 h3.
- rewrite <-Z2Nat.id with (n := s) at 2; auto.
--apply bshiftRl_iter_nth; omega.
-+apply bshiftRl_iter_nth; lia.
- Qed.
-
- (* Why3 goal *)
-@@ -361,9 +363,9 @@ Lemma Lsr_nth_high :
- cut (nth_aux b (n + Z.of_nat (Z.to_nat s)) = false).
- intro.
- rewrite <-H.
-- apply bshiftRl_iter_nth; omega.
-- rewrite Z2Nat.id by omega.
-- apply nth_out_of_bound; omega.
-+ apply bshiftRl_iter_nth; lia.
-+ rewrite Z2Nat.id by lia.
-+ apply nth_out_of_bound; lia.
- Qed.
-
- (* Why3 goal *)
-@@ -385,13 +387,13 @@ Lemma eq_aux_cons : forall {l} v1 v2 b b
- split; intros.
- simpl; case Z.eq_dec; intro.
- easy.
-- apply H; omega.
-+ apply H; lia.
- split.
-- apply (H 0%Z); omega.
-+ apply (H 0%Z); lia.
- intros.
-- rewrite <- (nth_cons v1 n b) by omega.
-- rewrite <- (nth_cons v2 n b') by omega.
-- apply H; omega.
-+ rewrite <- (nth_cons v1 n b) by lia.
-+ rewrite <- (nth_cons v2 n b') by lia.
-+ apply H; lia.
- Qed.
-
- Lemma Extensionality_aux : forall {l} (x y : Vector.t bool l), eq_aux x y -> x = y.
-@@ -408,7 +410,7 @@ Qed.
-
- Lemma singleton_is_singl : forall b : Vector.t bool 1, b = [ Vector.hd b ].
- intro; apply Extensionality_aux; unfold eq_aux; intros.
-- change (Z.of_nat 1) with 1%Z in H; assert (n = 0%Z) as e by omega; rewrite e; simpl.
-+ change (Z.of_nat 1) with 1%Z in H; assert (n = 0%Z) as e by lia; rewrite e; simpl.
- apply nth_zeros_is_hd.
- Qed.
-
-@@ -438,13 +440,13 @@ Lemma BshiftRa_iter_nth_low : forall (b:
- rewrite Nat2Z.inj_succ; intros.
- simpl BshiftRa_iter.
- unfold BshiftRa, Bhigh.
-- rewrite nth_aux_tl by omega.
-+ rewrite nth_aux_tl by lia.
- rewrite shiftrepeat_is_shiftin.
- rewrite nth_aux_shiftin_low.
- rewrite <- Zplus_succ_r_reverse, <- Z.add_succ_l.
-- apply IHs; omega.
-- omega.
-- fold size_nat; fold size; omega.
-+ apply IHs; lia.
-+ lia.
-+ fold size_nat; fold size; lia.
- Qed.
-
- (* Why3 goal *)
-@@ -455,9 +457,9 @@ Lemma Asr_nth_low :
- unfold nth, lsr.
- intros.
- assert ((n + s)%Z = (n + Z.of_nat (Z.to_nat s))%Z).
-- rewrite Z2Nat.id with (n := s); omega.
-+ rewrite Z2Nat.id with (n := s); lia.
- rewrite H2.
-- apply BshiftRa_iter_nth_low; omega.
-+ apply BshiftRa_iter_nth_low; lia.
- Qed.
-
- Lemma bshiftra_iter_last : forall {l} (v : Bvector (S l)) s, Vector.last (BshiftRa_iter l v s) = Vector.last v.
-@@ -476,11 +478,11 @@ Lemma BhiftRa_iter_nth_high : forall (b:
- simpl BshiftRa_iter.
- simpl (Z.of_nat 0).
- intros.
-- assert (n = size - 1)%Z by omega; rewrite H1; trivial.
-+ assert (n = size - 1)%Z by lia; rewrite H1; trivial.
- rewrite Nat2Z.inj_succ; intros.
- simpl BshiftRa_iter.
- unfold BshiftRa, Bhigh.
-- rewrite nth_aux_tl by omega.
-+ rewrite nth_aux_tl by lia.
- rewrite shiftrepeat_is_shiftin.
- case (Z.eq_dec (Z.succ n) size).
- intro; unfold size in e.
-@@ -489,9 +491,9 @@ Lemma BhiftRa_iter_nth_high : forall (b:
- rewrite size_int_S, Z.sub_1_r, <- Zpred_succ.
- symmetry; apply nth_predl_is_last.
- intro; rewrite nth_aux_shiftin_low.
-- apply IHs; omega.
-- omega.
-- fold size_nat; fold size; omega.
-+ apply IHs; lia.
-+ lia.
-+ fold size_nat; fold size; lia.
- Qed.
-
- (* Why3 goal *)
-@@ -502,8 +504,8 @@ Lemma Asr_nth_high :
- unfold nth, asr.
- intros.
- apply BhiftRa_iter_nth_high.
-- omega.
-- rewrite Z2Nat.id; omega.
-+ lia.
-+ rewrite Z2Nat.id; lia.
- Qed.
-
- (* Why3 goal *)
-@@ -526,10 +528,10 @@ Lemma bshiftL_iter_nth_high : forall {l}
- rewrite e; simpl; apply Pos2Z.neg_is_neg.
- rewrite Nat2Z.inj_succ in H, H0.
- case (Z.eq_dec (Z.pred m) (Z.of_nat l));intro.
-- assert False by omega; easy.
-- rewrite nth_aux_shiftout_not_last by omega.
-+ assert False by lia; easy.
-+ rewrite nth_aux_shiftout_not_last by lia.
- rewrite Zpos_P_of_succ_nat, Z.sub_succ_r, <- Z.sub_pred_l.
-- apply IHs; omega.
-+ apply IHs; lia.
- Qed.
-
- (* Why3 goal *)
-@@ -539,28 +541,28 @@ Lemma Lsl_nth_high :
- ((nth (lsl b s) n) = (nth b (n - s)%Z)).
- intros.
- unfold lsl, nth.
-- rewrite <-Z2Nat.id with (n := s) at 2 by omega.
-+ rewrite <-Z2Nat.id with (n := s) at 2 by lia.
- destruct H.
- destruct H0.
- apply (bshiftL_iter_nth_high b (Z.to_nat s) n).
- auto with zarith.
-- rewrite Z2Nat.id; omega.
-+ rewrite Z2Nat.id; lia.
- rewrite size_int_S in H1.
-- omega.
-+ lia.
- Qed.
-
- Lemma Lsl_nth_low_aux : forall {l} x b (n : int),
- (0 <= n < Z.of_nat x)%Z -> nth_aux (BshiftL_iter l b x) n = false.
- induction x.
-- simpl; intros; assert False by omega; easy.
-+ simpl; intros; assert False by lia; easy.
- rewrite Nat2Z.inj_succ; intros.
- simpl.
- case Z.eq_dec;intro.
- trivial.
- case (Z.eq_dec (Z.pred n) (Z.of_nat l));intro.
-- apply nth_high; omega.
-+ apply nth_high; lia.
- rewrite nth_aux_shiftout_not_last by auto.
-- apply IHx; omega.
-+ apply IHx; lia.
- Qed.
-
- (* Why3 goal *)
-@@ -569,7 +571,7 @@ Lemma Lsl_nth_low :
- (0%Z <= n)%Z /\ (n < s)%Z -> ((nth (lsl b s) n) = Init.Datatypes.false).
- intros.
- apply Lsl_nth_low_aux.
-- rewrite Z2Nat.id; omega.
-+ rewrite Z2Nat.id; lia.
- Qed.
-
- (* Why3 goal *)
-@@ -582,7 +584,7 @@ Lemma max_int_nat : forall l, (0 <= Pow2
- rewrite Z.sub_1_r.
- apply Zlt_0_le_0_pred.
- apply Pow2int.pow2pos.
-- omega.
-+ lia.
- Qed.
-
- Fixpoint bvec_to_nat n (v : Bvector n) {struct v} : nat :=
-@@ -593,7 +595,7 @@ Fixpoint bvec_to_nat n (v : Bvector n) {
- end.
-
- Lemma bvec_to_nat_zeros : forall {l}, bvec_to_nat l (Vector.const false l) = 0.
-- induction l; [easy|simpl; omega].
-+ induction l; [easy|simpl; lia].
- Qed.
-
- Definition twos_complement n (v : Bvector n) : Z.
-@@ -630,10 +632,10 @@ Lemma bvec_to_nat_extensionality : foral
- apply Vector.rect2.
- trivial.
- case a, b; intros.
-- rewrite H; auto; inversion H0; omega.
-- inversion H0; assert False; omega.
-- inversion H0; assert False; omega.
-- rewrite H; auto; inversion H0; omega.
-+ rewrite H; auto; inversion H0; lia.
-+ inversion H0; assert False; lia.
-+ inversion H0; assert False; lia.
-+ rewrite H; auto; inversion H0; lia.
- Qed.
-
- (* pow2 helper lemmas *)
-@@ -644,23 +646,23 @@ Lemma id_lt_pow2: forall n, (Z.of_nat (S
- easy.
- rewrite Nat2Z.inj_succ.
- apply Z.le_lt_trans with (m := (2 * Z.of_nat (S n))%Z).
-- rewrite Nat2Z.inj_succ; omega.
-+ rewrite Nat2Z.inj_succ; lia.
- apply Z.lt_le_trans with (m := (2 * Pow2int.pow2 (Z.of_nat (S n)))%Z).
-- omega.
-- rewrite two_p_S by omega.
-- unfold Pow2int.pow2; omega.
-+ lia.
-+ rewrite two_p_S by lia.
-+ unfold Pow2int.pow2; lia.
- Qed.
-
- Lemma pow2_lt_mono_nat : forall i j : nat, (i < j) -> (Pow2int.pow2 (Z.of_nat i) < Pow2int.pow2 (Z.of_nat j))%Z.
- intros.
- unfold Pow2int.pow2; rewrite two_p_equiv, two_p_equiv.
-- apply Z.pow_lt_mono_r; omega.
-+ apply Z.pow_lt_mono_r; lia.
- Qed.
-
- Lemma pow2_le_mono_nat : forall i j : nat, (i <= j) -> (Pow2int.pow2 (Z.of_nat i) <= Pow2int.pow2 (Z.of_nat j))%Z.
- intros.
- unfold Pow2int.pow2; rewrite two_p_equiv, two_p_equiv.
-- apply Z.pow_le_mono_r; omega.
-+ apply Z.pow_le_mono_r; lia.
- Qed.
-
- Lemma pow2_le_mono_pos : forall i j : positive, (Pos.le i j) -> (Pow2int.pow2 (Zpos i) <= Pow2int.pow2 (Zpos j))%Z.
-@@ -682,7 +684,7 @@ Qed.
- (* arithmetic helper lemmas *)
-
- Lemma lem_time2 : forall a b, a < b -> 1 + 2 * a < 2 * b.
-- intros; omega.
-+ intros; lia.
- Qed.
-
- Lemma le_le_le: forall x y z t, (t <= z)%Z -> (x <= y <= t)%Z -> (x <= y <= z)%Z.
-@@ -700,7 +702,7 @@ Lemma factor_sub : forall n m p, (n * m
- Qed.
-
- Lemma lt_sym: forall x y, (x < y)%Z <-> (y > x)%Z.
-- intro; split; omega.
-+ intro; split; lia.
- Qed.
-
- (* end of arithmetic helpers *)
-@@ -709,15 +711,15 @@ Lemma bvec_to_nat_range : forall {n} v,
- induction v.
- simpl bvec_to_nat; auto.
- apply Nat.le_lt_trans with (m := 1 + (bvec_to_nat n v * 2)).
-- simpl; case h; omega.
-- rewrite Nat2Z.inj_succ, <- Z.add_1_r, Pow2int.Power_s by omega.
-+ simpl; case h; lia.
-+ rewrite Nat2Z.inj_succ, <- Z.add_1_r, Pow2int.Power_s by lia.
- rewrite Z2Nat.inj_mul.
- assert (Z.to_nat 2 = 2) by easy; rewrite H.
- rewrite mult_comm.
- apply lem_time2.
- easy.
- easy.
-- apply Zlt_le_weak, Pow2int.pow2pos; omega.
-+ apply Zlt_le_weak, Pow2int.pow2pos; lia.
- Qed.
-
- Lemma twos_complement_neg : forall {n} v, Bsign n v = true -> (twos_complement (S n) v < 0)%Z.
-@@ -729,14 +731,14 @@ Lemma twos_complement_neg : forall {n} v
- rewrite Z2Nat.inj_lt.
- rewrite Nat2Z.id.
- apply bvec_to_nat_range.
-- omega.
-- apply Zlt_le_weak, Pow2int.pow2pos; omega.
-- omega.
-+ lia.
-+ apply Zlt_le_weak, Pow2int.pow2pos; lia.
-+ lia.
- Qed.
-
- Lemma twos_complement_pos : forall {n} v, Bsign n v = false -> (twos_complement (S n) v >= 0)%Z.
- intros.
-- unfold twos_complement; rewrite H; omega.
-+ unfold twos_complement; rewrite H; lia.
- Qed.
-
-
-@@ -757,28 +759,28 @@ Lemma twos_complement_extensionality : f
- Z.of_nat (bvec_to_nat (S m) v') < 0)%Z.
- {
- split.
-- + omega.
-+ + lia.
- + rewrite <- H. generalize (bvec_to_nat_range v). intros.
- eapply Z.lt_sub_0. rewrite <- Z2Nat.id.
- apply inj_lt. assumption.
- eapply Z.le_trans. apply (max_int_nat (S m)).
-- omega.
-+ lia.
- }
-- omega.
-+ lia.
- destruct Bsign.
- (* TODO improve this (copy/paste) *)
- assert (Z.of_nat (bvec_to_nat (S m) v) >= 0 /\
- Z.of_nat (bvec_to_nat (S m) v) < 0)%Z.
- {
- split.
-- + omega.
-+ + lia.
- + rewrite H. generalize (bvec_to_nat_range v'). intros.
- eapply Z.lt_sub_0. rewrite <- Z2Nat.id.
- apply inj_lt. assumption.
- eapply Z.le_trans. apply (max_int_nat (S m)).
-- omega.
-+ lia.
- }
-- omega.
-+ lia.
- reflexivity.
- }
- unfold twos_complement in H. rewrite <- H0 in H.
-@@ -797,9 +799,9 @@ Lemma odd_is_odd : forall n : nat, Even.
- rewrite Zodd_bool_iff, Zodd_ex_iff, Even.odd_equiv.
- unfold Nat.Odd.
- split; intro; destruct H.
-- exists (Z.of_nat x); omega.
-- rewrite <-Z2Nat.id with (n := x) in H by omega.
-- exists (Z.to_nat x); omega.
-+ exists (Z.of_nat x); lia.
-+ rewrite <-Z2Nat.id with (n := x) in H by lia.
-+ exists (Z.to_nat x); lia.
- Qed.
-
- Lemma even_not_odd : forall n : nat, Even.even n <-> not (Even.odd n).
-@@ -833,7 +835,7 @@ Qed.
- Lemma pow2_is_even : forall n, (n > 0)%Z -> Z.even (Pow2int.pow2 n) = true.
- intros.
- unfold Pow2int.pow2.
-- rewrite two_p_equiv, Z.even_pow by omega; easy.
-+ rewrite two_p_equiv, Z.even_pow by lia; easy.
- Qed.
-
- Lemma max_int_is_odd : forall n, (n > 0)%Z -> Z.odd (Pow2int.pow2 n - 1) = true.
-@@ -847,7 +849,7 @@ Qed.
- Lemma bvec_to_nat_nat_to_bvec : forall {n} i, (Z.of_nat i <= Pow2int.pow2 (Z.of_nat n) - 1)%Z ->
- bvec_to_nat n (nat_to_bvec n i) = i.
- induction n.
-- simpl; intro; omega.
-+ simpl; intro; lia.
- destruct i; intros.
- simpl.
- rewrite <- Nat_to_bvec_zeros, bvec_to_nat_zeros; trivial.
-@@ -865,9 +867,9 @@ Lemma bvec_to_nat_nat_to_bvec : forall {
- rewrite Z.mul_le_mono_pos_l with (p := 2%Z) by easy.
- rewrite Z.add_le_mono_l with (p := 1%Z) by easy.
- apply Z.le_trans with (m := Z.of_nat (S i)).
-- rewrite <- Div2.even_div2, <- Nat2Z.inj_mul with (n:= 2), <- Nat.double_twice, <- Div2.even_double, Nat2Z.inj_succ by trivial; omega.
-+ rewrite <- Div2.even_div2, <- Nat2Z.inj_mul with (n:= 2), <- Nat.double_twice, <- Div2.even_double, Nat2Z.inj_succ by trivial; lia.
- apply Z.le_trans with (m := (Pow2int.pow2 (Z.of_nat (S n)) - 1)%Z); trivial.
-- rewrite Nat2Z.inj_succ, <- Z.add_1_r, Pow2int.Power_s; omega.
-+ rewrite Nat2Z.inj_succ, <- Z.add_1_r, Pow2int.Power_s; lia.
- rewrite e.
- change (2 * bvec_to_nat n (nat_to_bvec n (Div2.div2 (S i))) = S i).
- rewrite IHn.
-@@ -876,16 +878,16 @@ Lemma bvec_to_nat_nat_to_bvec : forall {
- rewrite Z.mul_le_mono_pos_l with (p := 2%Z) by easy.
- apply Z.le_trans with (m := Z.of_nat (S i)).
- rewrite <- Nat2Z.inj_mul with (n := 2), <- Nat.double_twice, <- Div2.even_double.
-- omega.
-+ lia.
- rewrite even_not_odd, odd_is_odd, not_true_iff_false; trivial.
- apply odd_even_le, Z.lt_le_pred in H.
- apply Z.le_trans with (m := (Pow2int.pow2 (Z.of_nat (S n)) - 2)%Z).
-- omega.
-- rewrite Nat2Z.inj_succ, <- Z.add_1_r, Pow2int.Power_s; omega.
-+ lia.
-+ rewrite Nat2Z.inj_succ, <- Z.add_1_r, Pow2int.Power_s; lia.
- rewrite Zeven.Zeven_odd_bool, e; easy.
- unfold Pow2int.pow2.
- rewrite Z.sub_1_r, Z.odd_pred, Nat2Z.inj_succ.
-- rewrite pow2_is_even by omega; easy.
-+ rewrite pow2_is_even by lia; easy.
- Qed.
-
- Lemma Nat_to_bvec_ones : forall {n}, Vector.const true n = nat_to_bvec n (Z.to_nat (Pow2int.pow2 (Z.of_nat n) - 1)).
-@@ -900,12 +902,12 @@ Lemma Nat_to_bvec_ones : forall {n}, Vec
- rewrite Div2.odd_div2.
- rewrite <- Z2Nat.inj_succ by (apply max_int_nat).
- rewrite Z.sub_1_r, <- Zsucc_pred, Nat2Z.inj_succ, <- Z.add_1_r.
-- rewrite Pow2int.Power_s by omega.
-+ rewrite Pow2int.Power_s by lia.
- rewrite Z2Nat.inj_mul, Div2.div2_double.
- rewrite <- Z2Nat.inj_succ by (apply max_int_nat).
- rewrite Z.sub_1_r, <- Zsucc_pred; trivial.
- easy.
-- apply Z.lt_le_incl, Pow2int.pow2pos; omega.
-+ apply Z.lt_le_incl, Pow2int.pow2pos; lia.
- rewrite odd_is_odd.
- rewrite Z2Nat.id by (apply max_int_nat).
- apply max_int_is_odd; easy.
-@@ -920,32 +922,32 @@ Lemma mod1_nat : forall x y, 0 < y -> 0
- intros.
- unfold mod1, div.
- case Z_le_dec; intro.
-- apply Zle_minus_le_0, Z_mult_div_ge; omega.
-+ apply Zle_minus_le_0, Z_mult_div_ge; lia.
- destruct n; apply Z.mod_pos_bound; trivial.
- Qed.
-
- Lemma mod1_nat_high_bound_lt: forall u v, 0 < v -> mod1 u v < v.
- intros.
-- rewrite <- Z.abs_eq by omega.
-- apply Mod_bound; omega.
-+ rewrite <- Z.abs_eq by lia.
-+ apply Mod_bound; lia.
- Qed.
-
- Lemma mod1_nat_high_bound_le: forall u v, 0 <= v ->
- mod1 u (v + 1) <= v.
- intros.
- rewrite Zpred_succ, <- Z.lt_le_pred.
-- apply mod1_nat_high_bound_lt; omega.
-+ apply mod1_nat_high_bound_lt; lia.
- Qed.
-
- Lemma mod1_out : forall x y, 0 <= x < y -> mod1 x y = x.
- intros; unfold mod1.
-- rewrite Div_inf; omega.
-+ rewrite Div_inf; lia.
- Qed.
-
- Lemma mod_mod_mult: forall a b c, b > 0 -> c > 0 -> ((a mod (c * b)) mod b) = a mod b.
- intros.
- rewrite Z.mul_comm.
-- rewrite Z.rem_mul_r by omega.
-+ rewrite Z.rem_mul_r by lia.
- rewrite <-Zplus_mod_idemp_r.
- rewrite Z.mul_comm, Z_mod_mult, Zplus_0_r.
- apply Zmod_mod.
-@@ -970,39 +972,39 @@ end.
- Lemma mod1_is_mod : forall x y, y > 0 -> mod1 x y = Zmod x y.
- intros; unfold mod1, div.
- case Z_le_dec; intro.
-- rewrite Z.mod_eq by omega; trivial.
-- destruct n; apply Z_mod_lt; omega.
-+ rewrite Z.mod_eq by lia; trivial.
-+ destruct n; apply Z_mod_lt; lia.
- Qed.
-
- Lemma mod1_succ_low : forall x y, y > 0 -> mod1 x y < (Z.pred y) -> mod1 (Z.succ x) y = Z.succ (mod1 x y).
- intros x y H.
- rewrite mod1_is_mod, mod1_is_mod by trivial.
-- rewrite Z.mod_eq, Z.mod_eq by omega.
-+ rewrite Z.mod_eq, Z.mod_eq by lia.
- intro; cut (Z.succ x / y = x / y).
-- intro e; rewrite e; omega.
-+ intro e; rewrite e; lia.
- rewrite Z.div_unique_pos with (a := Z.succ x) (b := y) (r := (x mod y) + 1) (q := x / y).
- trivial.
-- rewrite <- Z.mod_eq in H0 by omega.
-- split; [apply Z.le_le_succ_r, Z_mod_lt; trivial|omega].
-- rewrite <- Zplus_assoc_reverse, <- Z_div_mod_eq by omega; omega.
-+ rewrite <- Z.mod_eq in H0 by lia.
-+ split; [apply Z.le_le_succ_r, Z_mod_lt; trivial|lia].
-+ rewrite <- Zplus_assoc_reverse, <- Z_div_mod_eq by lia; lia.
- Qed.
-
- Lemma mod1_succ_high : forall x y, y > 0 -> mod1 x y = (Z.pred y) -> mod1 (Z.succ x) y = 0.
- intros x y H.
-- rewrite mod1_is_mod, mod1_is_mod by omega; intro.
-+ rewrite mod1_is_mod, mod1_is_mod by lia; intro.
- rewrite <- Z.add_1_r, Zplus_mod, H0.
- case (Z.eq_dec y 1); intro e.
- rewrite e; easy.
-- rewrite Zmod_1_l by omega.
-+ rewrite Zmod_1_l by lia.
- rewrite Z.add_1_r, <- Zsucc_pred.
- apply Z_mod_same_full.
- Qed.
-
- Lemma mod1_add : forall x y, y > 0 -> mod1 (x + y) y = mod1 x y.
- intros.
-- rewrite mod1_is_mod, mod1_is_mod by omega.
-+ rewrite mod1_is_mod, mod1_is_mod by lia.
- rewrite <- Z.mul_1_l with (n := x + y), <- Zred_factor4, Z.mul_1_l.
-- apply Z.mod_add; omega.
-+ apply Z.mod_add; lia.
- Qed.
-
- Lemma Nth_rotate_aux_left :
-@@ -1018,13 +1020,13 @@ Lemma Nth_rotate_aux_left :
- rewrite <-mod1_add by auto with zarith.
- rewrite Z.sub_0_l, Int.Comm, Z.add_opp_r.
- rewrite Nat2Z.inj_succ, Z.sub_succ_r, <-Z.sub_pred_l, <-Zpred_succ.
-- rewrite <-IHn by omega.
-+ rewrite <-IHn by lia.
- simpl.
- symmetry; apply nth_predl_is_last.
-
- rewrite Nat2Z.inj_succ, Z.sub_succ_r, <-Z.sub_pred_l.
- rewrite <-Nat2Z.inj_pred by auto with zarith.
-- rewrite <-IHn by (rewrite Nat2Z.inj_pred; omega).
-+ rewrite <-IHn by (rewrite Nat2Z.inj_pred; lia).
- rewrite Nat2Z.inj_pred by auto with zarith.
- simpl.
- destruct Z.eq_dec; try easy.
-@@ -1035,37 +1037,37 @@ Lemma Nth_rotate_aux_right : forall {l}
- (Z.of_nat i < (Z.succ (Z.of_nat l))) ->
- (nth_aux (rotate_right_aux v n) (Z.of_nat i)) = (nth_aux v (mod1 ((Z.of_nat i) + (Z.of_nat n)) (Z.succ (Z.of_nat l)))).
- induction n.
-- simpl; intros; rewrite <- Zplus_0_r_reverse, mod1_out; [trivial|omega].
-+ simpl; intros; rewrite <- Zplus_0_r_reverse, mod1_out; [trivial|lia].
- intros; rewrite Nat2Z.inj_succ, <-Z.add_succ_comm, <-Nat2Z.inj_succ.
- case (Z.eq_dec (Z.of_nat i) (Z.of_nat l)); intro e.
- rewrite Nat2Z.inj_succ, e.
- simpl (rotate_right_aux v (S n)).
- rewrite nth_aux_shiftin_high.
-- rewrite Z.add_comm, mod1_add by omega.
-+ rewrite Z.add_comm, mod1_add by lia.
- rewrite <-nth_zeros_is_hd.
-- apply (IHn 0%nat); simpl; omega.
-- rewrite <-IHn by (rewrite Nat2Z.inj_succ; omega).
-+ apply (IHn 0%nat); simpl; lia.
-+ rewrite <-IHn by (rewrite Nat2Z.inj_succ; lia).
- simpl (rotate_right_aux v (S n)).
-- rewrite nth_aux_shiftin_low by omega.
-+ rewrite nth_aux_shiftin_low by lia.
- rewrite Nat2Z.inj_succ.
-- apply nth_aux_tl; omega.
-+ apply nth_aux_tl; lia.
- Qed.
-
- Lemma bvec_to_nat_tl: forall {l} v, Z.of_nat (bvec_to_nat l (Vector.tl v)) = Z.of_nat (bvec_to_nat (S l) v) / 2.
- apply Vector.rectS; intros.
- simpl.
- symmetry; case a.
-- apply Zdiv_1_l; omega.
-+ apply Zdiv_1_l; lia.
- apply Zdiv_0_l.
- simpl (Vector.tl (a :: v)).
- case a.
- change (Z.of_nat (bvec_to_nat (S n) v) =
- Z.of_nat (S (2 * bvec_to_nat (S n) v)) / 2).
- rewrite Nat2Z.inj_succ, Nat2Z.inj_mul, Z.mul_comm, <-Z.add_1_l.
-- rewrite Z.div_add, Zdiv_1_l by omega; omega.
-+ rewrite Z.div_add, Zdiv_1_l by lia; lia.
- change (Z.of_nat (bvec_to_nat (S n) v) =
- Z.of_nat (2 * bvec_to_nat (S n) v) / 2).
-- rewrite Nat2Z.inj_mul, Z.mul_comm, Z_div_mult_full; omega.
-+ rewrite Nat2Z.inj_mul, Z.mul_comm, Z_div_mult_full; lia.
- Qed.
-
- Lemma bvec_to_nat_shiftin: forall {l} v, bvec_to_nat (S l) (Vector.shiftin false v) = bvec_to_nat l v.
-@@ -1082,7 +1084,7 @@ Lemma bvec_to_nat_shiftout_mod1 : forall
- symmetry; apply Zmod_1_r.
- case a.
- change (Z.of_nat (S (2 * bvec_to_nat n (Vector.shiftout v))) = (Z.of_nat (S (2 * bvec_to_nat (S n) v))) mod (Pow2int.pow2 (Z.of_nat (S n)))).
-- rewrite Nat2Z.inj_succ with (n := n), <-Z.add_1_r with (n := Z.of_nat n), Pow2int.Power_s by omega.
-+ rewrite Nat2Z.inj_succ with (n := n), <-Z.add_1_r with (n := Z.of_nat n), Pow2int.Power_s by lia.
- rewrite Nat2Z.inj_succ, Nat2Z.inj_succ, <-Z.add_1_l, <-Z.add_1_l, Nat2Z.inj_mul, Nat2Z.inj_mul.
- rewrite Z.rem_mul_r.
- rewrite Zmod_odd.
-@@ -1090,10 +1092,10 @@ Lemma bvec_to_nat_shiftout_mod1 : forall
- rewrite H0.
- rewrite Int.Comm1 with (y := Z.of_nat (bvec_to_nat (S n) v)), Z_div_plus_full, Zdiv_1_l by easy.
- rewrite H; easy.
-- omega.
-- apply Pow2int.pow2pos; omega.
-+ lia.
-+ apply Pow2int.pow2pos; lia.
- change (Z.of_nat (2 * bvec_to_nat n (Vector.shiftout v)) = (Z.of_nat (2 * bvec_to_nat (S n) v)) mod (Pow2int.pow2 (Z.of_nat (S n)))).
-- rewrite Nat2Z.inj_succ with (n := n), <-Z.add_1_r with (n := Z.of_nat n), Pow2int.Power_s by omega.
-+ rewrite Nat2Z.inj_succ with (n := n), <-Z.add_1_r with (n := Z.of_nat n), Pow2int.Power_s by lia.
- rewrite Nat2Z.inj_mul, Nat2Z.inj_mul.
- rewrite Zmult_mod_distr_l.
- rewrite H; trivial.
-@@ -1244,12 +1246,12 @@ Lemma to_uint_bounds :
- intros v.
- unfold to_uint, uint_in_range.
- split.
-- omega.
-+ lia.
- assert (two_power_size = Z.of_nat (Z.to_nat two_power_size)).
- rewrite Z2Nat.id.
- easy.
- unfold two_power_size, size.
-- transitivity (Pow2int.pow2 (Z.of_nat size_nat) - 1);[apply max_int_nat|omega].
-+ transitivity (Pow2int.pow2 (Z.of_nat size_nat) - 1);[apply max_int_nat|lia].
- rewrite H.
- apply inj_lt.
- apply bvec_to_nat_range.
-@@ -1265,7 +1267,7 @@ Qed.
- Lemma to_uint_lsr_aux : forall (v:t) (n:nat), ((to_uint (lsr v
- (Z.of_nat n))) = (div (to_uint v) (Pow2int.pow2 (Z.of_nat n)))).
- unfold div.
-- intros; case Z_le_dec; [|intro e; destruct e; apply Z_mod_lt, lt_sym, Pow2int.pow2pos; omega].
-+ intros; case Z_le_dec; [|intro e; destruct e; apply Z_mod_lt, lt_sym, Pow2int.pow2pos; lia].
- revert v n.
- induction n; intro.
- simpl.
-@@ -1276,22 +1278,22 @@ Lemma to_uint_lsr_aux : forall (v:t) (n:
- unfold BshiftRl, Bhigh, to_uint, div.
- rewrite bvec_to_nat_tl.
- rewrite bvec_to_nat_shiftin.
-- rewrite Nat2Z.inj_succ, <-Z.add_1_r, Pow2int.Power_s by omega.
-+ rewrite Nat2Z.inj_succ, <-Z.add_1_r, Pow2int.Power_s by lia.
- rewrite Z.mul_comm, <-Zdiv_Zdiv.
- rewrite <- Nat2Z.id with (n := n).
- change (to_uint (lsr v (Z.of_nat n)) / 2 =
- to_uint v / Pow2int.pow2 (Z.of_nat (Z.to_nat (Z.of_nat n))) / 2).
- rewrite Nat2Z.id.
- rewrite IHn.
-- omega.
-- apply Z_mod_lt, lt_sym, Pow2int.pow2pos; omega.
-- apply Z.lt_le_incl, Pow2int.pow2pos; omega.
-- omega.
-+ lia.
-+ apply Z_mod_lt, lt_sym, Pow2int.pow2pos; lia.
-+ apply Z.lt_le_incl, Pow2int.pow2pos; lia.
-+ lia.
- Qed.
-
- Lemma size_in_range: uint_in_range size.
- unfold uint_in_range, max_int, size, size.
-- split; [omega|apply Z.lt_le_pred, id_lt_pow2].
-+ split; [lia|apply Z.lt_le_pred, id_lt_pow2].
- Qed.
-
- Lemma mod1_in_range : forall x, uint_in_range (mod1 x two_power_size).
-@@ -1317,7 +1319,7 @@ Proof.
- simpl.
- apply Zmod_unique with (q := 0).
- apply to_uint_bounds.
-- assert (lsl v 0 = v) as H by easy; rewrite H; omega.
-+ assert (lsl v 0 = v) as H by easy; rewrite H; lia.
- unfold lsl.
- rewrite Nat2Z.id.
- unfold BshiftL, Bcons, to_uint.
-@@ -1329,16 +1331,16 @@ Proof.
- rewrite bvec_to_nat_shiftout_mod1.
- change (2 * ((to_uint (lsl v (Z.of_nat n))) mod (Pow2int.pow2 (Z.of_nat last_bit))) = (to_uint v * Pow2int.pow2 (Z.of_nat (S n))) mod two_power_size).
- unfold two_power_size.
-- rewrite size_int_S, Nat2Z.inj_succ, <-Z.add_1_r, Pow2int.Power_s by omega.
-- rewrite Zmult_assoc, Int.Comm1 with (y := 2), <-Z.add_1_r, Pow2int.Power_s by omega.
-+ rewrite size_int_S, Nat2Z.inj_succ, <-Z.add_1_r, Pow2int.Power_s by lia.
-+ rewrite Zmult_assoc, Int.Comm1 with (y := 2), <-Z.add_1_r, Pow2int.Power_s by lia.
- rewrite Zmult_assoc_reverse, Zmult_mod_distr_l.
-- rewrite Z.mul_cancel_l by omega.
-+ rewrite Z.mul_cancel_l by lia.
- rewrite IHn.
- unfold two_power_size.
-- rewrite size_int_S, <-Z.add_1_r, Pow2int.Power_s by omega.
-+ rewrite size_int_S, <-Z.add_1_r, Pow2int.Power_s by lia.
- apply mod_mod_mult.
-- apply lt_sym, Pow2int.pow2pos; omega.
-- omega.
-+ apply lt_sym, Pow2int.pow2pos; lia.
-+ lia.
- Qed.
- (* end of to_uint helpers *)
-
-@@ -1350,7 +1352,7 @@ Lemma to_uint_of_int :
- unfold to_uint, of_int.
- rewrite bvec_to_nat_nat_to_bvec.
- apply Z2Nat.id; easy.
-- rewrite Z2Nat.id; [fold size; fold two_power_size; omega|easy].
-+ rewrite Z2Nat.id; [fold size; fold two_power_size; lia|easy].
- Qed.
-
- (* Why3 goal *)
-@@ -1451,6 +1453,7 @@ Qed.
- (* Why3 goal *)
- Lemma positive_is_ge_zeros :
- forall (x:t), is_signed_positive x <-> sge x zeros.
-+Proof.
- intros.
- unfold is_signed_positive, sge, to_int, twos_complement, size_nat.
- rewrite zeros_sign_false. destruct Bsign.
-@@ -1459,14 +1462,14 @@ Lemma positive_is_ge_zeros :
- generalize (bvec_to_nat_range x). intros.
- simpl (Z.of_nat 0) in H.
- assert (Pow2int.pow2 (Z.of_nat (S last_bit)) <= Z.of_nat (bvec_to_nat (S last_bit) x)).
-- omega. unfold size_nat in *.
-- apply Z2Nat.inj_le in H1; try omega.
-- rewrite Nat2Z.id in H1; try omega.
-- eapply Z.le_trans. apply (max_int_nat (S last_bit)). omega.
-+ lia. unfold size_nat in *.
-+ apply Z2Nat.inj_le in H1.
-+ rewrite Nat2Z.id in H1; lia.
-+ eapply Z.le_trans. apply (max_int_nat (S last_bit)). lia.
-
- intuition.
- unfold zeros, zeros_aux.
-- rewrite bvec_to_nat_zeros. simpl. omega.
-+ rewrite bvec_to_nat_zeros. simpl. lia.
- Qed.
-
- (* Why3 goal *)
-@@ -1574,13 +1577,19 @@ Lemma to_uint_udiv :
- forall (v1:t) (v2:t),
- ((to_uint (udiv v1 v2)) =
- (int.EuclideanDivision.div (to_uint v1) (to_uint v2))).
-+Proof.
- intros v1 v2.
- apply to_uint_of_int.
- case (Z.eq_dec (to_uint v2) 0); intro.
-- rewrite e; unfold uint_in_range, div.
-- rewrite Zmod_0_r; simpl.
-- rewrite Zdiv_0_r.
-+ unfold div.
-+ case Z_le_dec.
-+ intros _.
-+ rewrite e, Zdiv_0_r.
- split; [easy|apply Pow2int.pow2pos;easy].
-+ rewrite e, Zmod_0_r.
-+ intros H.
-+ elim H.
-+ apply to_uint_nat.
- split.
- apply Div_bound; split;[|apply Z.le_neq;split;[|auto]];apply to_uint_nat.
- apply (Z.le_lt_trans _ (to_uint v1)).
-@@ -1852,7 +1861,7 @@ Lemma mask_succ :
- rewrite mod1_is_mod by easy.
- rewrite Z.mul_mod_idemp_l by easy.
- rewrite Zmult_assoc_reverse, (Int.Comm1 (Pow2int.pow2 (Z.of_nat n)) 2).
-- rewrite <-Pow2int.Power_s by omega.
-+ rewrite <-Pow2int.Power_s by lia.
- rewrite <-mod1_is_mod with (x := to_uint (of_int 1) * Pow2int.pow2 (Z.of_nat n + 1)) by easy.
- rewrite Z.add_1_r with (n := Z.of_nat n).
- rewrite <- Nat2Z.inj_succ.
-@@ -1948,7 +1957,7 @@ Lemma mask_succ_tmp :
- rewrite <-Z.add_1_r, Zplus_assoc_reverse, Nat2Z.inj_mul in l.
- simpl (1 + 1) in l.
- rewrite Zred_factor3 in l.
-- rewrite <-(Z.mul_lt_mono_pos_l 2) in l by omega.
-+ rewrite <-(Z.mul_lt_mono_pos_l 2) in l by lia.
- rewrite Z.add_1_l in l.
- apply Zlt_succ_le in l; trivial.
- rewrite Z2Nat.inj_lt, Nat2Z.id.
-@@ -1982,7 +1991,7 @@ Lemma nth_bit_pred_high :
- Proof.
- induction n;intros.
- assert (Z.of_nat 0 <= to_uint i) by apply to_uint_bounds.
-- omega.
-+ lia.
- rewrite <-Nth_bv_is_nth.
- rewrite mask_succ_2; simpl.
- unfold bw_or, nth.
-@@ -1994,7 +2003,7 @@ Proof.
- right.
- assert (to_uint i = 0).
- assert (H' := to_uint_bounds i).
-- omega.
-+ lia.
- rewrite H1; apply nth_zeros_is_hd.
-
- left.
-@@ -2006,11 +2015,11 @@ Proof.
- rewrite mod1_out; trivial.
- split; auto with zarith.
- apply (Z.lt_trans _ (to_uint i)).
-- omega.
-+ lia.
- apply to_uint_bounds.
-
- rewrite H1, Nth_bv_is_nth.
-- apply IHn; rewrite <-H1; rewrite Nat2Z.inj_succ in H0; omega.
-+ apply IHn; rewrite <-H1; rewrite Nat2Z.inj_succ in H0; lia.
- Qed.
-
- Lemma one_nth: forall {l},
-@@ -2040,8 +2049,8 @@ Lemma nth_bit_pred_low :
- apply to_uint_extensionality.
- rewrite to_uint_sub, to_uint_of_int, to_uint_of_int.
- apply mod1_out.
-- split; [omega|apply Pow2int.pow2pos, Z.lt_le_incl, size_pos].
-- split; [omega|apply Pow2int.pow2pos, Z.lt_le_incl, size_pos].
-+ split; [lia|apply Pow2int.pow2pos, Z.lt_le_incl, size_pos].
-+ split; [lia|apply Pow2int.pow2pos, Z.lt_le_incl, size_pos].
- apply in_range_1'.
- rewrite H0, <-Of_int_zeros.
- apply Nth_zeros.
-@@ -2062,18 +2071,18 @@ Lemma nth_bit_pred_low :
- rewrite mod1_out; trivial.
- split; auto with zarith.
- apply (Z.lt_trans _ (to_uint i)).
-- omega.
-+ lia.
- apply to_uint_bounds.
- rewrite H0,Nth_bv_is_nth.
- apply IHn.
-- rewrite <-H0; omega.
-- assert (to_uint i > 0) by omega.
-+ rewrite <-H0; lia.
-+ assert (to_uint i > 0) by lia.
- unfold of_int, size, size_nat.
- rewrite one_nth.
- rewrite nth_cons_pred by auto with zarith.
- apply Nth_zeros_aux.
- apply nth_aux_out_of_bound.
-- fold size; omega.
-+ fold size; lia.
- Qed.
-
- Lemma mask_correctness :
-@@ -2090,11 +2099,11 @@ Proof.
- rewrite uint_in_range_power in u.
- rewrite Lsl_nth_high; auto with zarith.
- assert (j - to_uint i = to_uint (sub (of_int j) i)).
-- rewrite to_uint_sub by omega.
-+ rewrite to_uint_sub by lia.
- rewrite to_uint_of_int by (split; auto with zarith).
- rewrite mod1_out by auto with zarith; trivial.
- rewrite H2.
-- rewrite Nth_bv_is_nth by omega.
-+ rewrite Nth_bv_is_nth by lia.
- apply nth_bit_pred_high; auto with zarith.
- rewrite <-H2.
- fold (to_uint n); auto with zarith.
---- a/lib/coq/floating_point/GenFloat.v 2021-03-13 02:24:39.000000000 -0700
-+++ b/lib/coq/floating_point/GenFloat.v 2021-10-20 08:45:02.905109791 -0600
-@@ -21,6 +21,7 @@ Require real.Abs.
- Require real.FromInt.
- Require floating_point.Rounding.
-
-+Require Import Lia.
- Require Import Flocq.Core.Core.
- Require Import Flocq.IEEE754.Binary.
- Require Import int.Abs.
-@@ -226,7 +227,7 @@ unfold FLT_exp.
- rewrite Z.max_l.
- apply Z.le_refl.
- unfold emin.
--generalize Hprec' Hemax' ; clear ; omega.
-+generalize Hprec' Hemax' ; clear ; lia.
- rewrite <- abs_IZR, Z.abs_eq, <- 2!IZR_Zpower.
- split.
- apply IZR_le.
-@@ -240,12 +241,12 @@ apply bpow_lt.
- apply Zlt_pred.
- apply Zlt_le_weak.
- exact Hprec'.
--generalize Hprec' ; clear ; omega.
-+generalize Hprec' ; clear ; lia.
- apply IZR_lt.
- apply Zlt_pred.
- apply Zlt_le_weak.
- exact Hprec'.
--generalize Hprec' ; clear ; omega.
-+generalize Hprec' ; clear ; lia.
- apply Zlt_succ_le.
- change (2 ^ prec - 1)%Z with (Z.pred (2^prec))%Z.
- rewrite <- Zsucc_pred.
-@@ -299,7 +300,7 @@ apply generic_format_abs.
- apply generic_format_B2R.
- apply generic_format_bpow.
- unfold FLT_exp, emin.
--zify ; generalize Hprec' Hemax' ; omega.
-+zify ; generalize Hprec' Hemax' ; lia.
- apply abs_B2R_lt_emax.
- rewrite pred_eq_pos.
- unfold pred_pos.
-@@ -316,7 +317,7 @@ rewrite minus_IZR, IZR_Zpower.
- simpl; ring.
- apply Zlt_le_weak.
- exact Hprec'.
--generalize Hprec' Hemax' ; omega.
-+generalize Hprec' Hemax' ; lia.
- apply bpow_ge_0.
- Qed.
-
-@@ -340,7 +341,7 @@ exists (Float radix2 z 0).
- unfold F2R ; simpl.
- now rewrite Rmult_1_r.
- easy.
--simpl; unfold emin; generalize Hprec' Hemax'; omega.
-+simpl; unfold emin; generalize Hprec' Hemax'; lia.
- unfold max_representable_integer in Bz.
- change 2%Z with (radix_val radix2) in Bz.
- apply generic_format_abs_inv.
-@@ -348,7 +349,7 @@ rewrite <- abs_IZR, Bz, IZR_Zpower.
- apply generic_format_bpow.
- unfold FLT_exp, emin.
- clear Bz; generalize Hprec' Hemax'; zify.
--omega.
-+lia.
- apply Zlt_le_weak.
- apply Hprec'.
- Qed.
---- a/lib/coq/for_drivers/ComputerOfEuclideanDivision.v 2021-03-13 02:24:39.000000000 -0700
-+++ b/lib/coq/for_drivers/ComputerOfEuclideanDivision.v 2021-10-20 08:47:21.041133426 -0600
-@@ -18,8 +18,11 @@ Require int.Abs.
- Require int.EuclideanDivision.
- Require int.ComputerDivision.
-
-+Require Import Lia.
-+
- Lemma on_pos_euclidean_is_div:
- forall n d, (int.EuclideanDivision.div n (Zpos d)) = Z.div n (Zpos d).
-+Proof.
- intros n d.
- unfold EuclideanDivision.div.
- assert (0 < Z.pos d)%Z by reflexivity.
-@@ -40,6 +43,7 @@ Lemma cdiv_cases :
- ((ZArith.BinInt.Z.quot n d) = (-(int.EuclideanDivision.div n (-d)%Z))%Z)) /\
- ((n <= 0%Z)%Z -> (d < 0%Z)%Z ->
- ((ZArith.BinInt.Z.quot n d) = (int.EuclideanDivision.div (-n)%Z (-d)%Z))).
-+Proof.
- intros n d.
- destruct d as [|d|d]; destruct n as [|n|n]; intuition (try discriminate; try contradiction).
- + assert (NZ_d:((Zpos d) <> 0)%Z) by discriminate.
-@@ -75,11 +79,12 @@ Lemma cmod_cases :
- ((n <= 0%Z)%Z -> (d < 0%Z)%Z ->
- ((ZArith.BinInt.Z.rem n d) =
- (-(int.EuclideanDivision.mod1 (-n)%Z (-d)%Z))%Z)).
-+Proof.
- intros n d.
- unfold int.EuclideanDivision.mod1.
- assert (Z.rem n d = n - (d * (Z.quot n d)))%Z.
- assert (H:= Z.quot_rem' n d).
-- omega.
-+ lia.
- rewrite H.
- assert (H2:=cdiv_cases n d).
- intuition idtac.
-@@ -87,13 +92,13 @@ Lemma cmod_cases :
- reflexivity.
- + rewrite H4.
- rewrite Z.mul_opp_r.
-- omega.
-+ lia.
- + rewrite H1.
- rewrite Z.mul_opp_r.
- rewrite Z.mul_opp_l.
- reflexivity.
- + rewrite H4.
- rewrite Z.mul_opp_l.
-- omega.
-+ lia.
- Qed.
-
---- a/lib/coq/ieee_float/Float32.v 2021-03-13 02:24:39.000000000 -0700
-+++ b/lib/coq/ieee_float/Float32.v 2021-10-20 08:48:02.353140032 -0600
-@@ -26,6 +26,7 @@ Require bv.Pow2int.
- Require ieee_float.RoundingMode.
- Require ieee_float.GenericFloat.
-
-+Require Import Lia.
- Import Flocq.Core.Core.
- Import Flocq.IEEE754.Binary.
- Import ieee_float.RoundingMode.
-@@ -79,7 +80,7 @@ apply Digits.Zpower_gt_Zdigits.
- revert H1.
- generalize (Digits.Zdigits radix2 (Z.pos m)).
- unfold FLT_exp, sb.
--intros ; zify ; omega.
-+intros ; lia.
- now apply bpow_le.
- Qed.
-
---- a/lib/coq/ieee_float/Float64.v 2021-03-13 02:24:39.000000000 -0700
-+++ b/lib/coq/ieee_float/Float64.v 2021-10-20 08:48:31.377144412 -0600
-@@ -26,6 +26,7 @@ Require bv.Pow2int.
- Require ieee_float.RoundingMode.
- Require ieee_float.GenericFloat.
-
-+Require Import Lia.
- Import Flocq.Core.Core.
- Import Flocq.IEEE754.Binary.
- Import ieee_float.RoundingMode.
-@@ -82,7 +83,7 @@ apply Digits.Zpower_gt_Zdigits.
- revert H1.
- generalize (Digits.Zdigits radix2 (Z.pos m)).
- unfold FLT_exp, sb.
--intros ; zify ; omega.
-+intros ; lia.
- now apply bpow_le.
- Qed.
-
---- a/lib/coq/ieee_float/GenericFloat.v 2021-03-13 02:24:39.000000000 -0700
-+++ b/lib/coq/ieee_float/GenericFloat.v 2021-10-20 09:00:59.075275716 -0600
-@@ -184,7 +184,7 @@ Proof.
- apply Zeq_bool_true.
- rewrite Digits.Zpos_digits2_pos.
- rewrite (Digits.Zdigits_unique radix2 _ sb).
-- assert (sb + (emax - sb) - sb = emax - sb)%Z by omega; rewrite H0.
-+ assert (sb + (emax - sb) - sb = emax - sb)%Z by ring; rewrite H0.
- apply Zmax_left.
- assert (1 < emax)%Z.
- apply Z.le_lt_trans with (m := sb).
-@@ -204,7 +204,7 @@ Proof.
- rewrite Z.pow_succ_r by trivial.
- assert (1 <= 2 ^ (sb - 1))%Z.
- apply Z.lt_pred_le, (Zpower_gt_0 radix2 (sb - 1)); trivial.
-- omega.
-+ lia.
- apply Zle_bool_true; auto with zarith.
- Qed.
-
-@@ -633,7 +633,7 @@ Proof.
- rewrite H0 in a.
- replace (Z.abs (Z.pos m)) with (Z.pos m) in a by auto with zarith.
- destruct a. clear H1.
-- assert (Z.pos m = radix2 ^ sb - 1 \/ Z.pos m < radix2 ^ sb - 1)%Z by omega.
-+ assert (Z.pos m = radix2 ^ sb - 1 \/ Z.pos m < radix2 ^ sb - 1)%Z by lia.
- destruct H1.
- right.
- replace (radix2 ^ sb)%Z with (Z.pos 2 ^ Z.pos sb_pos)%Z in H1 by auto.
-@@ -1212,9 +1212,9 @@ Proof.
- unfold FLT_exp.
- replace (sb - 1 + 1 + 1 - sb)%Z with 1%Z by ring.
- apply Z.max_l.
-- pose sb_gt_1; pose Hemax'; omega.
-+ pose sb_gt_1; pose Hemax'; lia.
- apply Zle_bool_true.
-- pose Hemax'; pose Hsbb; omega.
-+ pose Hemax'; pose Hsbb; lia.
- Qed.
-
- Definition Bmax_rep_int: t.
-@@ -1288,15 +1288,15 @@ exists (Float radix2 z 0).
- unfold F2R ; simpl.
- now rewrite Rmult_1_r.
- easy.
--simpl; unfold emin; generalize Hsb' Hemax'; omega.
-+simpl; unfold emin; generalize Hsb' Hemax'; lia.
- unfold pow2sb in Bz.
- change 2%Z with (radix_val radix2) in Bz.
- apply generic_format_abs_inv.
- rewrite <- abs_IZR, Bz, IZR_Zpower.
- apply generic_format_bpow.
- unfold FLT_exp, emin.
--clear Bz; generalize Hsb' Hemax'; zify.
--omega.
-+clear Bz; generalize Hsb' Hemax'.
-+lia.
- apply Zlt_le_weak.
- apply Hsb'.
- Qed.
-@@ -2371,8 +2371,7 @@ intros m x y r.
- replace (Z.pow_pos 2 sb_pos - 1)%Z with (Z.pos (2 ^ sb_pos - 1)) in H.
- + unfold to_real. rewrite <-min_real_is_F2R, <-FF2R_B2FF, H; auto.
- + rewrite Pos2Z.inj_sub, Pos2Z.inj_pow_pos; auto.
-- apply Pos.pow_gt_1.
-- zify; auto with zarith.
-+ now apply Pos.pow_gt_1.
- - split.
- destruct r; easy.
- intro.
-@@ -2394,8 +2393,7 @@ intros m x y r.
- replace (Z.pow_pos 2 sb_pos - 1)%Z with (Z.pos (2 ^ sb_pos - 1)) in H.
- + unfold to_real. rewrite <-max_real_is_F2R, <-FF2R_B2FF, H; auto.
- + rewrite Pos2Z.inj_sub, Pos2Z.inj_pow_pos; auto.
-- apply Pos.pow_gt_1.
-- zify; auto with zarith.
-+ now apply Pos.pow_gt_1.
- + assert (~is_nan r) by
- (destruct r; try easy; destruct n; easy).
- rewrite is_positive_Bsign; easy. }
-@@ -2412,16 +2410,14 @@ intros m x y r.
- replace (Z.pow_pos 2 sb_pos - 1)%Z with (Z.pos (2 ^ sb_pos - 1)) in H.
- + unfold to_real. rewrite <-min_real_is_F2R, <-FF2R_B2FF, H; auto.
- + rewrite Pos2Z.inj_sub, Pos2Z.inj_pow_pos; auto.
-- apply Pos.pow_gt_1.
-- zify; auto with zarith.
-+ now apply Pos.pow_gt_1.
- - split.
- + intro; split.
- destruct r; try easy; destruct n; easy.
- replace (Z.pow_pos 2 sb_pos - 1)%Z with (Z.pos (2 ^ sb_pos - 1)) in H.
- * unfold to_real. rewrite <-max_real_is_F2R, <-FF2R_B2FF, H; auto.
- * rewrite Pos2Z.inj_sub, Pos2Z.inj_pow_pos; auto.
-- apply Pos.pow_gt_1.
-- zify; auto with zarith.
-+ now apply Pos.pow_gt_1.
- + easy. }
- - destruct H.
- pose proof (Bplus_correct sb emax Hsb' Hemax' nan_bf m x y H H0).
-@@ -2635,8 +2631,7 @@ Proof.
- replace (Z.pow_pos 2 sb_pos - 1)%Z with (Z.pos (2 ^ sb_pos - 1)) in H.
- + unfold to_real. rewrite <-min_real_is_F2R, <-FF2R_B2FF, H; auto.
- + rewrite Pos2Z.inj_sub, Pos2Z.inj_pow_pos; auto.
-- apply Pos.pow_gt_1.
-- zify; auto with zarith.
-+ now apply Pos.pow_gt_1.
- - split.
- destruct r; easy.
- intro.
-@@ -2658,8 +2653,7 @@ Proof.
- replace (Z.pow_pos 2 sb_pos - 1)%Z with (Z.pos (2 ^ sb_pos - 1)) in H.
- + unfold to_real. rewrite <-max_real_is_F2R, <-FF2R_B2FF, H; auto.
- + rewrite Pos2Z.inj_sub, Pos2Z.inj_pow_pos; auto.
-- apply Pos.pow_gt_1.
-- zify; auto with zarith.
-+ now apply Pos.pow_gt_1.
- + assert (~is_nan r) by
- (destruct r; try easy; destruct n; easy).
- rewrite is_positive_Bsign; easy. }
-@@ -2676,16 +2670,14 @@ Proof.
- replace (Z.pow_pos 2 sb_pos - 1)%Z with (Z.pos (2 ^ sb_pos - 1)) in H.
- + unfold to_real. rewrite <-min_real_is_F2R, <-FF2R_B2FF, H; auto.
- + rewrite Pos2Z.inj_sub, Pos2Z.inj_pow_pos; auto.
-- apply Pos.pow_gt_1.
-- zify; auto with zarith.
-+ now apply Pos.pow_gt_1.
- - split.
- + intro; split.
- destruct r; try easy; destruct n; easy.
- replace (Z.pow_pos 2 sb_pos - 1)%Z with (Z.pos (2 ^ sb_pos - 1)) in H.
- * unfold to_real. rewrite <-max_real_is_F2R, <-FF2R_B2FF, H; auto.
- * rewrite Pos2Z.inj_sub, Pos2Z.inj_pow_pos; auto.
-- apply Pos.pow_gt_1.
-- zify; auto with zarith.
-+ now apply Pos.pow_gt_1.
- + easy. }
- - destruct H.
- pose proof (Bminus_correct sb emax Hsb' Hemax' nan_bf m x y H H0).
-@@ -2854,8 +2846,7 @@ Proof.
- replace (Z.pow_pos 2 sb_pos - 1)%Z with (Z.pos (2 ^ sb_pos - 1)) in H1.
- + unfold to_real. rewrite <-min_real_is_F2R, <-FF2R_B2FF, H1; auto.
- + rewrite Pos2Z.inj_sub, Pos2Z.inj_pow_pos; auto.
-- apply Pos.pow_gt_1.
-- zify; auto with zarith.
-+ now apply Pos.pow_gt_1.
- - split.
- assert (~is_nan r) by
- (destruct r; try easy; destruct n; easy).
-@@ -2865,8 +2856,7 @@ Proof.
- replace (Z.pow_pos 2 sb_pos - 1)%Z with (Z.pos (2 ^ sb_pos - 1)) in H1.
- + unfold to_real. rewrite <-min_real_is_F2R, <-FF2R_B2FF, H1; auto.
- + rewrite Pos2Z.inj_sub, Pos2Z.inj_pow_pos; auto.
-- apply Pos.pow_gt_1.
-- zify; auto with zarith.
-+ now apply Pos.pow_gt_1.
- - split.
- destruct r; easy.
- assert (~is_nan r) by
-@@ -2883,8 +2873,7 @@ Proof.
- replace (Z.pow_pos 2 sb_pos - 1)%Z with (Z.pos (2 ^ sb_pos - 1)) in H1.
- + unfold to_real. rewrite <-max_real_is_F2R, <-FF2R_B2FF, H1; auto.
- + rewrite Pos2Z.inj_sub, Pos2Z.inj_pow_pos; auto.
-- apply Pos.pow_gt_1.
-- zify; auto with zarith. }
-+ now apply Pos.pow_gt_1. }
- assert (~is_nan r) by
- (destruct r; try easy; destruct n; easy).
- rewrite is_positive_Bsign, H1'; intro h; contradict h; easy.
-@@ -2904,8 +2893,7 @@ Proof.
- replace (Z.pow_pos 2 sb_pos - 1)%Z with (Z.pos (2 ^ sb_pos - 1)) in H1.
- + unfold to_real. rewrite <-max_real_is_F2R, <-FF2R_B2FF, H1; auto.
- + rewrite Pos2Z.inj_sub, Pos2Z.inj_pow_pos; auto.
-- apply Pos.pow_gt_1.
-- zify; auto with zarith. }
-+ now apply Pos.pow_gt_1. }
- assert (~is_nan r) by
- (destruct r; try easy; destruct n; easy).
- rewrite is_positive_Bsign, H1'; intro h; contradict h; easy. }
-@@ -2937,8 +2925,7 @@ Proof.
- (destruct r; try easy; destruct n; easy).
- rewrite is_positive_Bsign, H1'; intro h; contradict h; easy. }
- rewrite Pos2Z.inj_sub, Pos2Z.inj_pow_pos; auto.
-- apply Pos.pow_gt_1.
-- zify; auto with zarith.
-+ now apply Pos.pow_gt_1.
- - pose proof (Bmult_correct sb emax Hsb' Hemax' nan_bf m x y).
- destruct (Rlt_le_dec (Rabs (round m (to_real x * to_real y))) (bpow radix2 emax));
- [rewrite Rlt_bool_true in H1; auto| rewrite Rlt_bool_false in H1; auto].
-@@ -3051,8 +3038,7 @@ Proof.
- simpl in H4.
- replace (Z.pow_pos 2 sb_pos - 1)%Z with (Z.pos (2 ^ sb_pos - 1)) in H4 by
- (rewrite Pos2Z.inj_sub, Pos2Z.inj_pow_pos; auto;
-- apply Pos.pow_gt_1;
-- zify; auto with zarith).
-+ now apply Pos.pow_gt_1).
- rewrite <-min_real_is_F2R; assumption. }
- split; intro; [destruct r; easy|].
- destruct r; try easy.
-@@ -3069,8 +3055,7 @@ Proof.
- simpl in H4.
- replace (Z.pow_pos 2 sb_pos - 1)%Z with (Z.pos (2 ^ sb_pos - 1)) in H4 by
- (rewrite Pos2Z.inj_sub, Pos2Z.inj_pow_pos; auto;
-- apply Pos.pow_gt_1;
-- zify; auto with zarith).
-+ now apply Pos.pow_gt_1).
- rewrite <-max_real_is_F2R; assumption.
- + destruct r; try easy; try (destruct n; easy).
- destruct s; try easy.
-@@ -3084,8 +3069,7 @@ Proof.
- simpl in H4.
- replace (Z.pow_pos 2 sb_pos - 1)%Z with (Z.pos (2 ^ sb_pos - 1)) in H4 by
- (rewrite Pos2Z.inj_sub, Pos2Z.inj_pow_pos; auto;
-- apply Pos.pow_gt_1;
-- zify; auto with zarith).
-+ now apply Pos.pow_gt_1).
- rewrite <-min_real_is_F2R; assumption.
- - split; [destruct r; try easy| ].
- apply (f_equal (FF2R radix2)) in H4.
-@@ -3093,8 +3077,7 @@ Proof.
- simpl in H4.
- replace (Z.pow_pos 2 sb_pos - 1)%Z with (Z.pos (2 ^ sb_pos - 1)) in H4 by
- (rewrite Pos2Z.inj_sub, Pos2Z.inj_pow_pos; auto;
-- apply Pos.pow_gt_1;
-- zify; auto with zarith).
-+ now apply Pos.pow_gt_1).
- rewrite <-max_real_is_F2R; assumption.
- - contradict H5.
- destruct r; destruct s; easy. }
-@@ -4541,7 +4524,7 @@ Proof.
- { assert (IZR (floor(to_real x)) < 0) by lra.
- assert (-2 < IZR (floor (to_real x))) by lra.
- apply lt_IZR in H1; apply lt_IZR in H2.
-- now replace (floor (to_real x)) with (-1)%Z by omega. }
-+ now replace (floor (to_real x)) with (-1)%Z by lia. }
- lra.
- Qed.
-
-@@ -4559,7 +4542,7 @@ Proof.
- { assert (0 < IZR (ceil( to_real x))) by lra.
- assert (IZR (ceil(to_real x)) < 2) by lra.
- apply lt_IZR in H1; apply lt_IZR in H2.
-- now replace (ceil (to_real x)) with 1%Z by omega. }
-+ now replace (ceil (to_real x)) with 1%Z by lia. }
- lra.
- Qed.
-
-@@ -4615,9 +4598,9 @@ Proof.
- unfold FLT_exp.
- replace (sb - 1 + 1 + - sb)%Z with 0%Z by ring.
- apply Z.max_l.
-- pose sb_gt_1; pose Hemax'; omega.
-+ pose sb_gt_1; pose Hemax'; lia.
- apply Zle_bool_true.
-- pose Hemax'; pose sb_gt_1; omega.
-+ pose Hemax'; pose sb_gt_1; lia.
- Qed.
-
- Definition half: t.
---- a/lib/coq/int/Abs.v 2021-03-13 02:24:39.000000000 -0700
-+++ b/lib/coq/int/Abs.v 2021-10-20 09:01:55.793292871 -0600
-@@ -15,6 +15,8 @@ Require Import BuiltIn.
- Require BuiltIn.
- Require int.Int.
-
-+Require Import Lia.
-+
- (* Why3 comment *)
- (* abs is replaced with (ZArith.BinInt.Z.abs x) by the coq driver *)
-
-@@ -38,14 +40,15 @@ Qed.
- Lemma Abs_le :
- forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z),
- ((ZArith.BinInt.Z.abs x) <= y)%Z <-> ((-y)%Z <= x)%Z /\ (x <= y)%Z.
-+Proof.
- intros x y.
--zify.
--omega.
-+lia.
- Qed.
-
- (* Why3 goal *)
- Lemma Abs_pos :
- forall (x:Numbers.BinNums.Z), (0%Z <= (ZArith.BinInt.Z.abs x))%Z.
-+Proof.
- exact Zabs_pos.
- Qed.
-
---- a/lib/coq/int/ComputerDivision.v 2021-03-13 02:24:39.000000000 -0700
-+++ b/lib/coq/int/ComputerDivision.v 2021-10-20 09:12:14.876540134 -0600
-@@ -16,7 +16,7 @@ Require BuiltIn.
- Require int.Int.
- Require int.Abs.
-
--Require Import Zquot.
-+Require Import Zquot Lia.
-
- (* Why3 comment *)
- (* div is replaced with (ZArith.BinInt.Z.quot x x1) by the coq driver *)
-@@ -28,6 +28,7 @@ Require Import Zquot.
- Lemma Div_mod :
- forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z), ~ (y = 0%Z) ->
- (x = ((y * (ZArith.BinInt.Z.quot x y))%Z + (ZArith.BinInt.Z.rem x y))%Z).
-+Proof.
- intros x y _.
- apply Z.quot_rem'.
- Qed.
-@@ -38,6 +39,7 @@ Lemma Div_bound :
- (0%Z <= x)%Z /\ (0%Z < y)%Z ->
- (0%Z <= (ZArith.BinInt.Z.quot x y))%Z /\
- ((ZArith.BinInt.Z.quot x y) <= x)%Z.
-+Proof.
- intros x y (Hx,Hy).
- split.
- now apply Z.quot_pos.
-@@ -47,7 +49,7 @@ apply Z.le_refl.
- destruct (Zle_lt_or_eq 0 x Hx) as [H'|H'].
- apply Zlt_le_weak.
- apply Z.quot_lt with (1 := H').
--omega.
-+lia.
- now rewrite <- H', Zquot_0_l.
- Qed.
-
-@@ -56,13 +58,14 @@ Lemma Mod_bound :
- forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z), ~ (y = 0%Z) ->
- ((-(ZArith.BinInt.Z.abs y))%Z < (ZArith.BinInt.Z.rem x y))%Z /\
- ((ZArith.BinInt.Z.rem x y) < (ZArith.BinInt.Z.abs y))%Z.
-+Proof.
- intros x y Zy.
- destruct (Zle_or_lt 0 x) as [Hx|Hx].
- refine ((fun H => conj (Z.lt_le_trans _ 0 _ _ (proj1 H)) (proj2 H)) _).
--clear -Zy ; zify ; omega.
-+clear -Zy ; lia.
- now apply Zrem_lt_pos.
- refine ((fun H => conj (proj1 H) (Z.le_lt_trans _ 0 _ (proj2 H) _)) _).
--clear -Zy ; zify ; omega.
-+clear -Zy ; lia.
- apply Zrem_lt_neg with (2 := Zy).
- now apply Zlt_le_weak.
- Qed.
-@@ -71,6 +74,7 @@ Qed.
- Lemma Div_sign_pos :
- forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z),
- (0%Z <= x)%Z /\ (0%Z < y)%Z -> (0%Z <= (ZArith.BinInt.Z.quot x y))%Z.
-+Proof.
- intros x y (Hx, Hy).
- now apply Z.quot_pos.
- Qed.
-@@ -79,16 +83,18 @@ Qed.
- Lemma Div_sign_neg :
- forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z),
- (x <= 0%Z)%Z /\ (0%Z < y)%Z -> ((ZArith.BinInt.Z.quot x y) <= 0%Z)%Z.
-+Proof.
- intros x y (Hx, Hy).
- generalize (Z.quot_pos (-x) y).
- rewrite Zquot_opp_l.
--omega.
-+lia.
- Qed.
-
- (* Why3 goal *)
- Lemma Mod_sign_pos :
- forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z),
- (0%Z <= x)%Z /\ ~ (y = 0%Z) -> (0%Z <= (ZArith.BinInt.Z.rem x y))%Z.
-+Proof.
- intros x y (Hx, Zy).
- now apply Zrem_lt_pos.
- Qed.
-@@ -97,6 +103,7 @@ Qed.
- Lemma Mod_sign_neg :
- forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z),
- (x <= 0%Z)%Z /\ ~ (y = 0%Z) -> ((ZArith.BinInt.Z.rem x y) <= 0%Z)%Z.
-+Proof.
- intros x y (Hx, Zy).
- now apply Zrem_lt_neg.
- Qed.
-@@ -106,23 +113,25 @@ Lemma Rounds_toward_zero :
- forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z), ~ (y = 0%Z) ->
- ((ZArith.BinInt.Z.abs ((ZArith.BinInt.Z.quot x y) * y)%Z) <=
- (ZArith.BinInt.Z.abs x))%Z.
-+Proof.
- intros x y Zy.
- rewrite Zmult_comm.
--zify.
- generalize (Z.mul_quot_le x y).
- generalize (Z.mul_quot_ge x y).
--omega.
-+lia.
- Qed.
-
- (* Why3 goal *)
- Lemma Div_1 :
- forall (x:Numbers.BinNums.Z), ((ZArith.BinInt.Z.quot x 1%Z) = x).
-+Proof.
- exact Z.quot_1_r.
- Qed.
-
- (* Why3 goal *)
- Lemma Mod_1 :
- forall (x:Numbers.BinNums.Z), ((ZArith.BinInt.Z.rem x 1%Z) = 0%Z).
-+Proof.
- exact Z.rem_1_r.
- Qed.
-
-@@ -130,6 +139,7 @@ Qed.
- Lemma Div_inf :
- forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z),
- (0%Z <= x)%Z /\ (x < y)%Z -> ((ZArith.BinInt.Z.quot x y) = 0%Z).
-+Proof.
- exact Z.quot_small.
- Qed.
-
-@@ -137,6 +147,7 @@ Qed.
- Lemma Mod_inf :
- forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z),
- (0%Z <= x)%Z /\ (x < y)%Z -> ((ZArith.BinInt.Z.rem x y) = x).
-+Proof.
- exact Z.rem_small.
- Qed.
-
-@@ -146,6 +157,7 @@ Lemma Div_mult :
- (0%Z < x)%Z /\ (0%Z <= y)%Z /\ (0%Z <= z)%Z ->
- ((ZArith.BinInt.Z.quot ((x * y)%Z + z)%Z x) =
- (y + (ZArith.BinInt.Z.quot z x))%Z).
-+Proof.
- intros x y z (Hx&Hy&Hz).
- rewrite (Zplus_comm y).
- rewrite <- Z_quot_plus.
-@@ -163,6 +175,7 @@ Lemma Mod_mult :
- forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z) (z:Numbers.BinNums.Z),
- (0%Z < x)%Z /\ (0%Z <= y)%Z /\ (0%Z <= z)%Z ->
- ((ZArith.BinInt.Z.rem ((x * y)%Z + z)%Z x) = (ZArith.BinInt.Z.rem z x)).
-+Proof.
- intros x y z (Hx&Hy&Hz).
- rewrite Zplus_comm, Zmult_comm.
- apply Z_rem_plus.
---- a/lib/coq/int/Div2.v 2021-03-13 02:24:39.000000000 -0700
-+++ b/lib/coq/int/Div2.v 2021-10-20 09:12:36.451550754 -0600
-@@ -15,6 +15,7 @@ Require Import BuiltIn.
- Require BuiltIn.
- Require int.Int.
-
-+Require Import Lia.
- Require Import int.EuclideanDivision.
-
- (* Why3 goal *)
-@@ -28,6 +29,6 @@ exists (div x 2).
- refine (_ (Mod_bound x 2 _) (Div_mod x 2 _)) ; try easy.
- intros H1 H2.
- simpl in H1.
--omega.
-+lia.
- Qed.
-
---- a/lib/coq/int/EuclideanDivision.v 2021-03-13 02:24:39.000000000 -0700
-+++ b/lib/coq/int/EuclideanDivision.v 2021-10-20 09:15:30.675626764 -0600
-@@ -16,8 +16,11 @@ Require BuiltIn.
- Require int.Int.
- Require int.Abs.
-
-+Require Import Lia.
-+
- (* Why3 goal *)
- Definition div : Numbers.BinNums.Z -> Numbers.BinNums.Z -> Numbers.BinNums.Z.
-+Proof.
- intros x y.
- case (Z_le_dec 0 (Zmod x y)) ; intros H.
- exact (Z.div x y).
-@@ -27,6 +30,7 @@ Defined.
- (* Why3 goal *)
- Definition mod1 :
- Numbers.BinNums.Z -> Numbers.BinNums.Z -> Numbers.BinNums.Z.
-+Proof.
- intros x y.
- exact (x - y * div x y)%Z.
- Defined.
-@@ -35,6 +39,7 @@ Defined.
- Lemma Div_mod :
- forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z), ~ (y = 0%Z) ->
- (x = ((y * (div x y))%Z + (mod1 x y))%Z).
-+Proof.
- intros x y Zy.
- unfold mod1, div.
- case Z_le_dec ; intros H ; ring.
-@@ -44,6 +49,7 @@ Qed.
- Lemma Mod_bound :
- forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z), ~ (y = 0%Z) ->
- (0%Z <= (mod1 x y))%Z /\ ((mod1 x y) < (ZArith.BinInt.Z.abs y))%Z.
-+Proof.
- intros x y Zy.
- assert (H := Zabs_spec y).
- assert (H1 := Z_mod_neg x y).
-@@ -51,10 +57,10 @@ assert (H2 := Z_mod_lt x y).
- unfold mod1, div.
- case Z_le_dec ; intros H0.
- rewrite Zmult_comm, <- Zmod_eq_full with (1 := Zy).
--omega.
-+lia.
- replace (x - y * (x / y + 1))%Z with (x - x / y * y - y)%Z by ring.
- rewrite <- Zmod_eq_full with (1 := Zy).
--omega.
-+lia.
- Qed.
-
- (* Why3 goal *)
-@@ -62,29 +68,31 @@ Lemma Div_unique :
- forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z) (q:Numbers.BinNums.Z),
- (0%Z < y)%Z -> ((q * y)%Z <= x)%Z /\ (x < ((q * y)%Z + y)%Z)%Z ->
- ((div x y) = q).
-+Proof.
- intros x y q h1 (h2,h3).
--assert (h:(~(y=0))%Z) by omega.
-+assert (h:(~(y=0))%Z) by lia.
- generalize (Mod_bound x y h); intro h0.
- rewrite Z.abs_eq in h0; auto with zarith.
- generalize (Div_mod x y h); clear h; intro h.
--assert (cases:(div x y = q \/ (div x y <= q - 1 \/ div x y >= q+1))%Z) by omega.
-+assert (cases:(div x y = q \/ (div x y <= q - 1 \/ div x y >= q+1))%Z) by lia.
- destruct cases as [h4 | [h5 | h6]]; auto.
- assert (y * div x y <= y * (q - 1))%Z.
- apply Zmult_le_compat_l; auto with zarith.
- replace (y*(q-1))%Z with (q*y - y)%Z in H by ring.
- elimtype False.
--omega.
-+lia.
- assert (y * div x y >= y * (q + 1))%Z.
- apply Zmult_ge_compat_l; auto with zarith.
- replace (y*(q+1))%Z with (q*y + y)%Z in H by ring.
- elimtype False.
--omega.
-+lia.
- Qed.
-
- (* Why3 goal *)
- Lemma Div_bound :
- forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z),
- (0%Z <= x)%Z /\ (0%Z < y)%Z -> (0%Z <= (div x y))%Z /\ ((div x y) <= x)%Z.
-+Proof.
- intros x y (Hx,Hy).
- unfold div.
- case Z_le_dec ; intros H.
-@@ -96,7 +104,7 @@ rewrite H', Zdiv_1_r.
- apply Z.le_refl.
- rewrite <- (Zdiv_1_r x) at 2.
- apply Zdiv_le_compat_l with (1 := Hx).
--omega.
-+lia.
- elim H.
- apply Z_mod_lt.
- now apply Z.lt_gt.
-@@ -104,6 +112,7 @@ Qed.
-
- (* Why3 goal *)
- Lemma Mod_1 : forall (x:Numbers.BinNums.Z), ((mod1 x 1%Z) = 0%Z).
-+Proof.
- intros x.
- unfold mod1, div.
- rewrite Zmod_1_r, Zdiv_1_r, Zmult_1_l.
-@@ -112,6 +121,7 @@ Qed.
-
- (* Why3 goal *)
- Lemma Div_1 : forall (x:Numbers.BinNums.Z), ((div x 1%Z) = x).
-+Proof.
- intros x.
- unfold div.
- now rewrite Zmod_1_r, Zdiv_1_r.
-@@ -121,6 +131,7 @@ Qed.
- Lemma Div_inf :
- forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z),
- (0%Z <= x)%Z /\ (x < y)%Z -> ((div x y) = 0%Z).
-+Proof.
- intros x y Hxy.
- unfold div.
- case Z_le_dec ; intros H.
-@@ -133,8 +144,9 @@ Qed.
- Lemma Div_inf_neg :
- forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z),
- (0%Z < x)%Z /\ (x <= y)%Z -> ((div (-x)%Z y) = (-1%Z)%Z).
-+Proof.
- intros x y Hxy.
--assert (h: (x < y \/ x = y)%Z) by omega.
-+assert (h: (x < y \/ x = y)%Z) by lia.
- destruct h.
- (* case 0 < x < y *)
- assert (h1: (x mod y = x)%Z).
-@@ -165,6 +177,7 @@ Qed.
- (* Why3 goal *)
- Lemma Mod_0 :
- forall (y:Numbers.BinNums.Z), ~ (y = 0%Z) -> ((mod1 0%Z y) = 0%Z).
-+Proof.
- intros y Hy.
- unfold mod1, div.
- rewrite Zmod_0_l.
-@@ -175,6 +188,7 @@ Qed.
- (* Why3 goal *)
- Lemma Div_1_left :
- forall (y:Numbers.BinNums.Z), (1%Z < y)%Z -> ((div 1%Z y) = 0%Z).
-+Proof.
- intros y Hy.
- rewrite Div_inf; auto with zarith.
- Qed.
-@@ -182,6 +196,7 @@ Qed.
- (* Why3 goal *)
- Lemma Div_minus1_left :
- forall (y:Numbers.BinNums.Z), (1%Z < y)%Z -> ((div (-1%Z)%Z y) = (-1%Z)%Z).
-+Proof.
- intros y Hy.
- unfold div.
- assert (h1: (1 mod y = 1)%Z).
-@@ -197,6 +212,7 @@ Qed.
- (* Why3 goal *)
- Lemma Mod_1_left :
- forall (y:Numbers.BinNums.Z), (1%Z < y)%Z -> ((mod1 1%Z y) = 1%Z).
-+Proof.
- intros y Hy.
- unfold mod1.
- rewrite Div_1_left; auto with zarith.
-@@ -206,6 +222,7 @@ Qed.
- Lemma Mod_minus1_left :
- forall (y:Numbers.BinNums.Z), (1%Z < y)%Z ->
- ((mod1 (-1%Z)%Z y) = (y - 1%Z)%Z).
-+Proof.
- intros y Hy.
- unfold mod1.
- rewrite Div_minus1_left; auto with zarith.
-@@ -217,6 +234,7 @@ Open Scope Z_scope.
- Lemma Div_mult :
- forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z) (z:Numbers.BinNums.Z),
- (0%Z < x)%Z -> ((div ((x * y)%Z + z)%Z x) = (y + (div z x))%Z).
-+Proof.
- intros x y z h.
- unfold div.
- destruct (Z_le_dec 0 (z mod x)).
-@@ -231,6 +249,7 @@ Qed.
- Lemma Mod_mult :
- forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z) (z:Numbers.BinNums.Z),
- (0%Z < x)%Z -> ((mod1 ((x * y)%Z + z)%Z x) = (mod1 z x)).
-+Proof.
- intros x y z h.
- unfold mod1.
- rewrite Div_mult.
---- a/lib/coq/int/Exponentiation.v 2021-03-13 02:24:39.000000000 -0700
-+++ b/lib/coq/int/Exponentiation.v 2021-10-20 09:16:14.466643317 -0600
-@@ -69,7 +69,8 @@ Lemma Power_s_alt :
- Proof.
- intros x n h1.
- rewrite <- Power_s; auto with zarith.
--f_equal; omega.
-+apply f_equal.
-+ring.
- Qed.
-
- (* Why3 goal *)
---- a/lib/coq/int/MinMax.v 2021-03-13 02:24:39.000000000 -0700
-+++ b/lib/coq/int/MinMax.v 2021-10-20 09:20:06.034764663 -0600
-@@ -15,6 +15,8 @@ Require Import BuiltIn.
- Require BuiltIn.
- Require int.Int.
-
-+Require Import Lia.
-+
- (* Why3 comment *)
- (* min is replaced with (ZArith.BinInt.Z.min x x1) by the coq driver *)
-
-@@ -28,7 +30,7 @@ intros x y.
- split ; intros H.
- now apply Z.min_l.
- apply Z.min_r.
--omega.
-+lia.
- Qed.
-
- (* Why3 comment *)
-@@ -44,13 +46,14 @@ intros x y.
- split ; intros H.
- now apply Z.max_r.
- apply Z.max_l.
--omega.
-+lia.
- Qed.
-
- (* Why3 goal *)
- Lemma Min_r :
- forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z), (y <= x)%Z ->
- ((ZArith.BinInt.Z.min x y) = y).
-+Proof.
- exact Z.min_r.
- Qed.
-
-@@ -58,6 +61,7 @@ Qed.
- Lemma Max_l :
- forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z), (y <= x)%Z ->
- ((ZArith.BinInt.Z.max x y) = x).
-+Proof.
- exact Z.max_l.
- Qed.
-
-@@ -65,6 +69,7 @@ Qed.
- Lemma Min_comm :
- forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z),
- ((ZArith.BinInt.Z.min x y) = (ZArith.BinInt.Z.min y x)).
-+Proof.
- exact Z.min_comm.
- Qed.
-
-@@ -72,6 +77,7 @@ Qed.
- Lemma Max_comm :
- forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z),
- ((ZArith.BinInt.Z.max x y) = (ZArith.BinInt.Z.max y x)).
-+Proof.
- exact Z.max_comm.
- Qed.
-
---- a/lib/coq/int/NumOf.v 2021-03-13 02:24:39.000000000 -0700
-+++ b/lib/coq/int/NumOf.v 2021-10-20 09:22:55.402885709 -0600
-@@ -16,6 +16,8 @@ Require BuiltIn.
- Require HighOrd.
- Require int.Int.
-
-+Require Import Lia.
-+
- Fixpoint numof_aux (f : Z -> bool) (a : Z) (n : nat) : Z :=
- match n with
- | S n => (numof_aux f a n + (if f (a + (Z.of_nat n)) then 1%Z else 0%Z))%Z
-@@ -47,13 +49,13 @@ split ; intros h1.
- - assert (Z.to_nat (b - a) = 0).
- revert h1.
- rewrite <-Z.le_sub_0.
-- destruct (b - a)%Z ; try easy ; intros H ; now elim H. (* TODO: replace by now after 8.4 *)
-+ now destruct (b - a)%Z.
- now rewrite H.
- - rewrite S_pred with (m := 0) (n := Z.to_nat (b - a)).
-- 2: apply (Z2Nat.inj_lt 0); omega.
-+ 2: apply (Z2Nat.inj_lt 0); lia.
- rewrite <- Z2Nat.inj_pred.
- simpl numof_aux.
-- rewrite Z2Nat.id by omega.
-+ rewrite Z2Nat.id by lia.
- replace (a + Z.pred (b - a))%Z with (b - 1)%Z by (unfold Z.pred ; ring).
- replace (Z.pred (b - a)) with (b - 1 - a)%Z by (unfold Z.pred ; ring).
- split ; intros h2.
-@@ -80,12 +82,12 @@ Proof.
- intros p a b h1.
- unfold numof.
- set (x := Z.to_nat (b - a)).
-- rewrite <-Z2Nat.id with (n := (b - a)%Z) by omega.
-+ rewrite <-Z2Nat.id with (n := (b - a)%Z) by lia.
- change (0 <= numof_aux p a x <= Z.of_nat x)%Z.
- induction x.
-- simpl; omega.
-+ split ; apply Z.le_refl.
- rewrite Nat2Z.inj_succ; simpl numof_aux.
-- case (p (a + Z.of_nat x)%Z); omega.
-+ case (p (a + Z.of_nat x)%Z); lia.
- Qed.
-
- (* Why3 goal *)
-@@ -101,7 +103,7 @@ Proof.
- intros.
- case (Z.eq_dec b x).
- intro e; rewrite e.
-- rewrite Numof_empty with (a := x) (b := x); omega.
-+ rewrite Numof_empty with (a := x) (b := x); lia.
- intro H6.
- refine (_ (proj2 (numof'def p a x) _)).
- intros [H1 H2].
-@@ -110,15 +112,15 @@ Proof.
- destruct (Bool.bool_dec (p (x - 1)%Z) true) as [H5|H5].
- rewrite H1, H3, H ; auto with zarith.
- rewrite H2, H4, H ; auto with zarith.
-- clear -H0 H6 ; omega.
-- clear -h1 H0 H6 ; omega.
-+ clear -H0 H6 ; lia.
-+ clear -h1 H0 H6 ; lia.
- Qed.
-
- Lemma numof_succ: forall p a, numof p a (a + 1) = (if p a then 1%Z else 0%Z).
- Proof.
- intros.
- unfold numof.
-- replace (a + 1 - a)%Z with 1%Z by omega.
-+ replace (a + 1 - a)%Z with 1%Z by ring.
- simpl.
- rewrite <-Zplus_0_r_reverse.
- trivial.
-@@ -129,8 +131,8 @@ Proof.
- intros.
- replace (numof p (a - 1) a)%Z with (numof p (a - 1) ((a - 1) + 1))%Z.
- apply numof_succ.
-- repeat apply f_equal.
-- omega.
-+ apply f_equal.
-+ ring.
- Qed.
-
- (* Why3 goal *)
-@@ -141,7 +143,7 @@ Lemma Numof_left_no_add :
- ((numof p a b) = (numof p (a + 1%Z)%Z b)).
- Proof.
- intros p a b h1 h2.
-- rewrite Numof_append with (b := (a+1)%Z) by omega.
-+ rewrite Numof_append with (b := (a+1)%Z) by lia.
- rewrite (numof_succ p a).
- apply Bool.not_true_is_false in h2.
- rewrite h2; trivial.
-@@ -155,7 +157,7 @@ Lemma Numof_left_add :
- ((numof p a b) = (1%Z + (numof p (a + 1%Z)%Z b))%Z).
- Proof.
- intros p a b h1 h2.
-- rewrite Numof_append with (b := (a+1)%Z) by omega.
-+ rewrite Numof_append with (b := (a+1)%Z) by lia.
- rewrite (numof_succ p a).
- rewrite h2; trivial.
- Qed.
-@@ -173,11 +175,11 @@ Proof.
- pattern b.
- apply Zlt_lower_bound_ind with (z := a); auto with zarith; intros.
- case (Z.eq_dec a x); intro e.
-- rewrite e; apply Numof_empty; omega.
-- rewrite Numof_append with (b := (x - 1)%Z) by omega.
-+ rewrite e; apply Numof_empty; lia.
-+ rewrite Numof_append with (b := (x - 1)%Z) by lia.
- assert (numof p (x - 1) x = 0)%Z.
- rewrite numof_pred.
-- assert (a <= (x - 1)%Z < x)%Z as H2 by omega.
-+ assert (a <= (x - 1)%Z < x)%Z as H2 by lia.
- generalize (H1 (x - 1)%Z H2).
- intro H3; apply Bool.not_true_is_false in H3; rewrite H3; trivial.
- rewrite H2.
-@@ -197,11 +199,11 @@ Proof.
- pattern b.
- apply Zlt_lower_bound_ind with (z := a); auto with zarith; intros.
- case (Z.eq_dec a x); intro e.
-- rewrite e; rewrite Zminus_diag; apply Numof_empty; omega.
-- rewrite Numof_append with (b := (x - 1)%Z) by omega.
-+ rewrite e; rewrite Zminus_diag; apply Numof_empty; lia.
-+ rewrite Numof_append with (b := (x - 1)%Z) by lia.
- assert (numof p (x - 1) x = 1)%Z.
- rewrite numof_pred.
-- assert (a <= (x - 1)%Z < x)%Z as H2 by omega.
-+ assert (a <= (x - 1)%Z < x)%Z as H2 by lia.
- generalize (H1 (x - 1)%Z H2).
- intro; rewrite H3; trivial.
- rewrite H2.
-@@ -215,10 +217,10 @@ Proof.
- pattern b.
- apply Zlt_lower_bound_ind with (z := a) (x := b); auto with zarith; intros.
- case (Z.eq_dec a x); intro e.
-- rewrite e; rewrite Numof_empty; omega.
-- rewrite Numof_append with (b := (x - 1)%Z) by omega.
-+ rewrite e; rewrite Numof_empty; lia.
-+ rewrite Numof_append with (b := (x - 1)%Z) by lia.
- apply Z.add_nonneg_nonneg.
-- apply H; omega.
-+ apply H; lia.
- rewrite numof_pred.
- case (p (x - 1)%Z); easy.
- Qed.
-@@ -229,7 +231,7 @@ Proof.
- generalize h; pattern b.
- apply Zlt_lower_bound_ind with (z := (a + 1)%Z) (x := b); auto with zarith; intros.
- rewrite Z.add_1_r in H0; apply Zle_succ_gt in H0.
-- rewrite Numof_append with (b := (x - 1)%Z) by omega.
-+ rewrite Numof_append with (b := (x - 1)%Z) by lia.
- case (Z.eq_dec k (x-1)); intro e.
- rewrite e in H1.
- apply Z.add_nonneg_pos.
-@@ -247,7 +249,7 @@ Lemma numof_increasing :
- (i <= j)%Z /\ (j <= k)%Z -> ((numof p i j) <= (numof p i k))%Z.
- Proof.
- intros p i j k (h1,h2).
--rewrite (Numof_append p i j k) by omega.
-+rewrite (Numof_append p i j k) by lia.
- rewrite <-Z.le_sub_le_add_l, Zminus_diag.
- apply numof_nat.
- Qed.
-@@ -260,7 +262,7 @@ Lemma numof_strictly_increasing :
- ((numof p i j) < (numof p i l))%Z.
- Proof.
- intros p i j k l (h1,(h2,h3)) h4.
--rewrite (Numof_append p i j l) by omega.
-+rewrite (Numof_append p i j l) by lia.
- rewrite <-Z.lt_sub_lt_add_l, Zminus_diag.
- apply numof_pos with (k := k); auto with zarith.
- Qed.
-@@ -275,13 +277,13 @@ Lemma numof_change_any :
- ((numof p1 a b) <= (numof p2 a b))%Z.
- Proof.
- intros p1 p2 a b.
-- case (Z_lt_le_dec a b); intro; [|rewrite Numof_empty, Numof_empty; omega].
-+ case (Z_lt_le_dec a b); intro; [|rewrite Numof_empty, Numof_empty; lia].
- pattern b.
- apply Zlt_lower_bound_ind with (z := a); auto with zarith; intros.
- case (Z.eq_dec a x); intro eq.
-- rewrite eq; rewrite Numof_empty, Numof_empty; omega.
-- rewrite Numof_append with (b := (x-1)%Z) by omega.
-- rewrite Numof_append with (p := p2) (b := (x-1)%Z) by omega.
-+ rewrite eq; rewrite Numof_empty, Numof_empty; lia.
-+ rewrite Numof_append with (b := (x-1)%Z) by lia.
-+ rewrite Numof_append with (p := p2) (b := (x-1)%Z) by lia.
- apply Z.add_le_mono.
- apply H; auto with zarith.
- rewrite numof_pred, numof_pred.
-@@ -306,14 +308,14 @@ Proof.
- generalize (Z_le_lt_eq_dec _ _ (numof_change_any p1 p2 a b h3)).
- intro H; destruct H; trivial.
- cut False; auto with zarith.
-- rewrite Numof_append with (b := i) in e by omega.
-- rewrite Numof_append with (p := p2) (b := i) in e by omega.
-+ rewrite Numof_append with (b := i) in e by lia.
-+ rewrite Numof_append with (p := p2) (b := i) in e by lia.
- rewrite (Numof_left_add _ _ _ h2 h5), (Numof_left_no_add _ _ _ h2 h4) in e.
- assert (forall j : int, (a <= j < i)%Z -> p1 j = true -> p2 j = true) by auto with zarith.
- generalize (numof_change_any p1 p2 _ _ H).
- assert (forall j : int, ((i + 1) <= j < b)%Z -> p1 j = true -> p2 j = true) by auto with zarith.
- generalize (numof_change_any p1 p2 _ _ H0).
-- omega.
-+ lia.
- Qed.
-
- Lemma le_ge_eq: forall a b, (a <= b)%Z /\ (b <= a)%Z -> (a = b)%Z.
---- a/lib/coq/int/Power.v 2021-03-13 02:24:39.000000000 -0700
-+++ b/lib/coq/int/Power.v 2021-10-20 09:24:31.241953629 -0600
-@@ -15,6 +15,7 @@ Require Import BuiltIn.
- Require BuiltIn.
- Require int.Int.
-
-+Require Import Lia.
- Require Import Exponentiation.
-
- (* Why3 goal *)
-@@ -54,10 +55,11 @@ Qed.
- Lemma Power_s_alt :
- forall (x:Numbers.BinNums.Z) (n:Numbers.BinNums.Z), (0%Z < n)%Z ->
- ((power x n) = (x * (power x (n - 1%Z)%Z))%Z).
-+Proof.
- intros x n h1.
--rewrite <- Power_s.
--f_equal; auto with zarith.
--omega.
-+rewrite <- Power_s by lia.
-+apply f_equal.
-+ring.
- Qed.
-
- (* Why3 goal *)
-@@ -94,7 +96,7 @@ Lemma Power_comm1 :
- (((power x n) * y)%Z = (y * (power x n))%Z).
- Proof.
- intros x y h1 n h2.
--auto with zarith.
-+apply Zmult_comm.
- Qed.
-
- (* Why3 goal *)
-@@ -112,6 +114,7 @@ Qed.
- Lemma Power_non_neg :
- forall (x:Numbers.BinNums.Z) (y:Numbers.BinNums.Z),
- (0%Z <= x)%Z /\ (0%Z <= y)%Z -> (0%Z <= (power x y))%Z.
-+Proof.
- intros x y (h1,h2).
- now apply Z.pow_nonneg.
- Qed.
-@@ -131,6 +134,7 @@ Open Scope Z_scope.
- Lemma Power_monotonic :
- forall (x:Numbers.BinNums.Z) (n:Numbers.BinNums.Z) (m:Numbers.BinNums.Z),
- (0%Z < x)%Z /\ (0%Z <= n)%Z /\ (n <= m)%Z -> ((power x n) <= (power x m))%Z.
-+Proof.
- intros.
- apply Z.pow_le_mono_r; auto with zarith.
- Qed.
---- a/lib/coq/list/Length.v 2021-03-13 02:24:39.000000000 -0700
-+++ b/lib/coq/list/Length.v 2021-10-20 09:29:10.475152106 -0600
-@@ -16,6 +16,8 @@ Require BuiltIn.
- Require int.Int.
- Require list.List.
-
-+Require Import Lia.
-+
- (* Why3 assumption *)
- Fixpoint length {a:Type} {a_WT:WhyType a}
- (l:Init.Datatypes.list a) {struct l}: Numbers.BinNums.Z :=
-@@ -54,6 +56,6 @@ unfold length. fold length.
- intros H.
- exfalso.
- generalize (Length_nonnegative t).
--omega.
-+lia.
- Qed.
-
---- a/lib/coq/list/NthHdTl.v 2021-03-13 02:24:39.000000000 -0700
-+++ b/lib/coq/list/NthHdTl.v 2021-10-20 09:29:43.331175519 -0600
-@@ -19,6 +19,8 @@ Require list.Nth.
- Require option.Option.
- Require list.HdTl.
-
-+Require Import Lia.
-+
- (* Why3 goal *)
- Lemma Nth_tl {a:Type} {a_WT:WhyType a} :
- forall (l1:Init.Datatypes.list a) (l2:Init.Datatypes.list a),
-@@ -33,7 +35,7 @@ generalize (Zeq_bool_if (i + 1) 0).
- case Zeq_bool.
- intro H.
- exfalso.
--omega.
-+lia.
- intros _.
- simpl in h1.
- inversion h1.
---- a/lib/coq/list/NthLengthAppend.v 2021-03-13 02:24:39.000000000 -0700
-+++ b/lib/coq/list/NthLengthAppend.v 2021-10-20 09:30:59.842230039 -0600
-@@ -22,6 +22,8 @@ Require option.Option.
- Require list.NthLength.
- Require list.Append.
-
-+Require Import Lia.
-+
- (* Why3 goal *)
- Lemma nth_append_1 {a:Type} {a_WT:WhyType a} :
- forall (l1:Init.Datatypes.list a) (l2:Init.Datatypes.list a)
-@@ -41,7 +43,7 @@ easy.
- intros _.
- apply IHl1.
- assert (i < 1 + Length.length l1)%Z by exact Hi.
--omega.
-+lia.
- Qed.
-
- (* Why3 goal *)
-@@ -67,9 +69,9 @@ case Zeq_bool.
- intros Hi'.
- exfalso.
- generalize (Length.Length_nonnegative l1).
--omega.
-+lia.
- intros _.
- apply IHl1.
--omega.
-+lia.
- Qed.
-
---- a/lib/coq/list/NthLength.v 2021-03-13 02:24:39.000000000 -0700
-+++ b/lib/coq/list/NthLength.v 2021-10-20 09:30:29.027208081 -0600
-@@ -19,6 +19,8 @@ Require list.Length.
- Require list.Nth.
- Require option.Option.
-
-+Require Import Lia.
-+
- (* Why3 goal *)
- Lemma nth_none_1 {a:Type} {a_WT:WhyType a} :
- forall (l:Init.Datatypes.list a) (i:Numbers.BinNums.Z), (i < 0%Z)%Z ->
-@@ -35,7 +37,7 @@ intros H'.
- now rewrite H' in H.
- intros _.
- apply IHq.
--omega.
-+lia.
- Qed.
-
- (* Why3 goal *)
-@@ -57,10 +59,10 @@ intros H'.
- rewrite H' in H.
- exfalso.
- generalize (Length.Length_nonnegative q).
--omega.
-+lia.
- intros _.
- apply IHq.
--omega.
-+lia.
- Qed.
-
- (* Why3 goal *)
-@@ -73,7 +75,7 @@ intros l.
- induction l as [|h q].
- intros i _.
- simpl.
--omega.
-+lia.
- intros i.
- simpl (Nth.nth i (h :: q)).
- change (Length.length (h :: q)) with (1 + Length.length q)%Z.
-@@ -82,6 +84,6 @@ case Zeq_bool.
- easy.
- intros Hi H.
- specialize (IHq _ H).
--omega.
-+lia.
- Qed.
-
---- a/lib/coq/list/NumOcc.v 2021-03-13 02:24:39.000000000 -0700
-+++ b/lib/coq/list/NumOcc.v 2021-10-20 09:31:50.459266109 -0600
-@@ -20,6 +20,8 @@ Require list.Mem.
- Require list.Append.
- Require list.Reverse.
-
-+Require Import Lia.
-+
- (* Why3 goal *)
- Definition num_occ {a:Type} {a_WT:WhyType a} :
- a -> Init.Datatypes.list a -> Numbers.BinNums.Z.
-@@ -53,12 +55,13 @@ Qed.
- (* Why3 goal *)
- Lemma Num_Occ_NonNeg {a:Type} {a_WT:WhyType a} :
- forall (x:a) (l:Init.Datatypes.list a), (0%Z <= (num_occ x l))%Z.
-+Proof.
- intros x l.
- induction l as [|lh lt IHl].
- easy.
- simpl.
- case why_decidable_eq ; intros H.
--omega.
-+lia.
- easy.
- Qed.
-
-@@ -75,7 +78,7 @@ case why_decidable_eq ; intros H ; split
- intros _.
- clear.
- generalize (Num_Occ_NonNeg x lt).
--omega.
-+lia.
- now left.
- intros [H'|H'] ; try easy.
- now apply IHl.
---- a/lib/coq/list/Permut.v 2021-03-13 02:24:39.000000000 -0700
-+++ b/lib/coq/list/Permut.v 2021-10-20 09:32:21.163287990 -0600
-@@ -21,6 +21,8 @@ Require list.Append.
- Require list.Reverse.
- Require list.NumOcc.
-
-+Require Import Lia.
-+
- (* Why3 assumption *)
- Definition permut {a:Type} {a_WT:WhyType a} (l1:Init.Datatypes.list a)
- (l2:Init.Datatypes.list a) : Prop :=
-@@ -147,7 +149,7 @@ induction l1 as [|l1h l1t IHl1].
- simpl.
- case why_decidable_eq ; intros H.
- generalize (NumOcc.Num_Occ_NonNeg l2h l2t).
-- omega.
-+ lia.
- now elim H.
- - intros l2 H.
- assert (H': Mem.mem l1h l2).
-@@ -157,7 +159,7 @@ induction l1 as [|l1h l1t IHl1].
- destruct (why_decidable_eq l1h l1h) as [_|H'].
- 2: now elim H'.
- generalize (NumOcc.Num_Occ_NonNeg l1h l1t).
-- omega.
-+ lia.
- destruct (Append.mem_decomp _ _ H') as [l2a [l2b Hl2]].
- rewrite Hl2.
- rewrite Append.Append_length.
-@@ -175,6 +177,6 @@ induction l1 as [|l1h l1t IHl1].
- intros l H y.
- specialize (H y).
- simpl in H.
-- omega.
-+ lia.
- Qed.
-
---- a/lib/coq/map/MapInjection.v 2021-03-13 02:24:39.000000000 -0700
-+++ b/lib/coq/map/MapInjection.v 2021-10-20 09:33:53.595353868 -0600
-@@ -31,8 +31,7 @@ Definition surjection (n:nat) (f:nat ->
- forall i:nat, i < n ->
- exists j:nat, j < n /\ f j = i.
-
--Require Omega.
--Require Import Peano_dec.
-+Require Import Lia Peano_dec.
-
- Theorem injective_implies_surjective:
- forall n:nat,
-@@ -44,11 +43,11 @@ Proof.
- induction n.
- (* case n = 0 *)
- unfold surjection; intros.
--elimtype False; omega.
-+elimtype False; lia.
- (* case n > 0 *)
- intros f Hinto Hinj.
- pose (k := f n).
--assert (Hbound_k: k < S n) by (apply Hinto; omega).
-+assert (Hbound_k: k < S n) by (apply Hinto; lia).
- (* transposition n <-> k *)
- pose (trans i :=
- if eq_nat_dec i n then k else
-@@ -61,21 +60,21 @@ assert (Ginto: into n g).
- unfold into, g, trans; intros.
- destruct (eq_nat_dec (f i) n).
- (* f i = n *)
-- assert (h : k < n \/ k = n) by omega.
-+ assert (h : k < n \/ k = n) by lia.
- destruct h; auto.
- elimtype False.
- clear g trans; subst.
- assert (f i = i) by (apply Hinj; auto with * ).
-- omega.
-+ lia.
- (* f i <> n *)
- destruct (eq_nat_dec (f i) k).
- (* f i = k *)
- elimtype False.
- assert (i = n) by (apply Hinj; auto with * ).
-- omega.
-+ lia.
- (* f i <> k *)
-- assert (f i < S n) by (apply Hinto; omega).
-- omega.
-+ assert (f i < S n) by (apply Hinto; lia).
-+ lia.
-
- (* second step: trans is injective *)
-
-@@ -85,14 +84,14 @@ assert (trans_inj: injection (S n) trans
- (* i = n *)
- destruct (eq_nat_dec j n); auto with *.
- (* i = n and j <> n *)
-- destruct (eq_nat_dec j k); omega.
-+ destruct (eq_nat_dec j k); lia.
- (* i <> n *)
- destruct (eq_nat_dec i k); auto with *.
- destruct (eq_nat_dec j n); auto with *.
-- destruct (eq_nat_dec j k); omega.
-+ destruct (eq_nat_dec j k); lia.
- (* i <> n and i <> k *)
- destruct (eq_nat_dec j n); auto with *.
-- destruct (eq_nat_dec j k); omega.
-+ destruct (eq_nat_dec j k); lia.
-
- (* third step: g is injective on [0;n[ *)
- assert (Ginj: injection n g).
-@@ -118,12 +117,12 @@ assert (f_is_trans_o_g: forall i, f i =
-
- (* conclusion *)
- red; intros.
--assert (h: i = k \/ i <> k) by omega.
-+assert (h: i = k \/ i <> k) by lia.
- destruct h.
- (* case i = k: the preimage is n *)
- exists n; auto.
- (* case i <> k *)
--assert (h: i = n \/ i <> n) by omega.
-+assert (h: i = n \/ i <> n) by lia.
- destruct h.
- (* case i = n: the preimage is the preimage of k by g *)
- elim Gsurj with (i:=k).
-@@ -135,7 +134,7 @@ rewrite h2.
- unfold trans.
- destruct (eq_nat_dec k n); auto with *.
- destruct (eq_nat_dec k k); auto with *.
--omega.
-+lia.
- (* case i <> n and i <> k:
- the preimage is the preimage of i by g
- *)
-@@ -148,7 +147,7 @@ rewrite h2.
- unfold trans.
- destruct (eq_nat_dec i n); auto with *.
- destruct (eq_nat_dec i k); auto with *.
--omega.
-+lia.
- Qed.
-
-
-@@ -183,7 +182,7 @@ Proof.
- intros n f Hinto.
- elim (lifting n f Hinto).
- intros g Heq_g_f Hinj i Hi_inf_n.
--assert (n_pos: 0 <= n) by omega.
-+assert (n_pos: 0 <= n) by lia.
- elim (Z_of_nat_complete_inf n n_pos).
- intros m Heq_n_m.
-
-@@ -191,7 +190,7 @@ intros m Heq_n_m.
-
- assert (Hinto_g: into m g).
- red; intros i0 Hinter.
-- assert (0 <= f (Z_of_nat i0) < n) by (apply Hinto; omega).
-+ assert (0 <= f (Z_of_nat i0) < n) by (apply Hinto; lia).
- apply inj_lt_rev; auto with *.
- rewrite Heq_g_f; auto with *.
-
-@@ -206,14 +205,14 @@ assert (Hinj_g: injection m g).
- (* conclusion *)
- generalize (injective_implies_surjective m g Hinto_g Hinj_g).
- intro Hsurj_g.
--assert (i_pos: 0 <= i) by omega.
-+assert (i_pos: 0 <= i) by lia.
- elim (Z_of_nat_complete_inf i i_pos).
- intros j Heq_j_i.
- elim (Hsurj_g j); auto with *.
- intros x (inter_x, eq_x).
- exists (Z_of_nat x).
- split; auto with *.
--rewrite <- Heq_g_f; omega.
-+rewrite <- Heq_g_f; lia.
- Qed.
-
-
-@@ -248,7 +247,7 @@ intros a n h1 h2.
- intros.
- apply Zinjective_implies_surjective; auto.
- intros.
--assert (h: (i0 = j \/ i0 <> j)%Z) by omega.
-+assert (h: (i0 = j \/ i0 <> j)%Z) by lia.
- destruct h; auto.
- red in h1.
- elimtype False; apply h1 with i0 j; clear h1; auto.
-@@ -265,78 +264,78 @@ Proof.
- intros m n; split.
- (* -> *)
- intros inj v.
--assert (case: (occ v m 0 n <= 1 \/ occ v m 0 n >= 2)%Z) by omega. destruct case.
-+assert (case: (occ v m 0 n <= 1 \/ occ v m 0 n >= 2)%Z) by lia. destruct case.
- trivial.
--destruct (occ_exists v m 0 n) as (i,(hi1,hi2)). omega.
-+destruct (occ_exists v m 0 n) as (i,(hi1,hi2)). lia.
- assert (0 <= occ v m 0 i)%Z.
-- generalize (occ_bounds v m 0 i). omega.
--assert (case: (occ v m 0 i = 0 \/ occ v m 0 i > 0)%Z) by omega. destruct case.
-+ generalize (occ_bounds v m 0 i). lia.
-+assert (case: (occ v m 0 i = 0 \/ occ v m 0 i > 0)%Z) by lia. destruct case.
- assert (0 < occ v m (i+1) n)%Z.
- assert (occ v m 0 n = occ v m 0 i + occ v m i n)%Z.
-- apply occ_append; omega.
-+ apply occ_append; lia.
- assert (occ v m i n = occ v m i (i+1) + occ v m (i+1) n)%Z.
-- apply occ_append; omega.
-+ apply occ_append; lia.
- assert (occ v m i (i+1) = 1)%Z.
- rewrite occ_right_add.
-- replace (i+1-1)%Z with i by omega.
-- rewrite occ_empty; omega.
-- omega.
-- replace (i+1-1)%Z with i by omega. auto.
-- omega.
--destruct (occ_exists v m (i+1) n) as (j,(hj1,hj2)). omega.
--elim (inj i j); omega.
--destruct (occ_exists v m 0 i) as (j,(hj1,hj2)). omega.
--elim (inj i j); omega.
-+ replace (i+1-1)%Z with i by lia.
-+ rewrite occ_empty; lia.
-+ lia.
-+ replace (i+1-1)%Z with i by lia. auto.
-+ lia.
-+destruct (occ_exists v m (i+1) n) as (j,(hj1,hj2)). lia.
-+elim (inj i j); lia.
-+destruct (occ_exists v m 0 i) as (j,(hj1,hj2)). lia.
-+elim (inj i j); lia.
-
- (* <- *)
- intros Hocc i j hi hj neq eq.
- pose (v := m i).
- assert (occ v m 0 n >= 2)%Z.
- assert (occ v m 0 n = occ v m 0 i + occ v m i n)%Z.
-- apply occ_append; omega.
-+ apply occ_append; lia.
- assert (occ v m i n = occ v m i (i+1) + occ v m (i+1) n)%Z.
-- apply occ_append; omega.
-+ apply occ_append; lia.
- assert (occ v m i (i+1) = 1)%Z.
- rewrite occ_right_add.
-- replace (i+1-1)%Z with i by omega.
-- rewrite occ_empty; omega.
-- omega.
-- replace (i+1-1)%Z with i by omega. auto.
--assert (case: (j < i \/ i+1 <= j)%Z) by omega. destruct case.
-+ replace (i+1-1)%Z with i by lia.
-+ rewrite occ_empty; lia.
-+ lia.
-+ replace (i+1-1)%Z with i by lia. auto.
-+assert (case: (j < i \/ i+1 <= j)%Z) by lia. destruct case.
- assert (occ v m 0 i >= 1)%Z.
- assert (occ v m 0 i = occ v m 0 j + occ v m j i)%Z.
-- apply occ_append; omega.
-+ apply occ_append; lia.
- assert (occ v m j i = occ v m j (j+1) + occ v m (j+1) i)%Z.
-- apply occ_append; omega.
-+ apply occ_append; lia.
- assert (occ v m j (j+1) = 1)%Z.
- rewrite occ_right_add.
-- replace (j+1-1)%Z with j by omega.
-- rewrite occ_empty; omega.
-- omega.
-- replace (j+1-1)%Z with j by omega. auto.
-+ replace (j+1-1)%Z with j by lia.
-+ rewrite occ_empty; lia.
-+ lia.
-+ replace (j+1-1)%Z with j by lia. auto.
- generalize (occ_bounds v m (i+1) n).
- generalize (occ_bounds v m 0 j).
- generalize (occ_bounds v m (j+1) i).
-- omega.
-+ lia.
- generalize (occ_bounds v m (i+1) n).
--omega.
-+lia.
- assert (occ v m (i+1) n >= 1)%Z.
- assert (occ v m (i+1) n = occ v m (i+1) j + occ v m j n)%Z.
-- apply occ_append; omega.
-+ apply occ_append; lia.
- assert (occ v m j n = occ v m j (j+1) + occ v m (j+1) n)%Z.
-- apply occ_append; omega.
-+ apply occ_append; lia.
- assert (occ v m j (j+1) = 1)%Z.
- rewrite occ_right_add.
-- replace (j+1-1)%Z with j by omega.
-- rewrite occ_empty; omega.
-- omega.
-- replace (j+1-1)%Z with j by omega. auto.
-+ replace (j+1-1)%Z with j by lia.
-+ rewrite occ_empty; lia.
-+ lia.
-+ replace (j+1-1)%Z with j by lia. auto.
- generalize (occ_bounds v m (j+1) n).
- generalize (occ_bounds v m 0 i).
- generalize (occ_bounds v m (i+1) j).
-- omega.
-+ lia.
- generalize (occ_bounds v m 0 i).
-- omega.
--generalize (Hocc v); omega.
-+ lia.
-+generalize (Hocc v); lia.
- Qed.
-
---- a/lib/coq/map/Occ.v 2021-03-13 02:24:39.000000000 -0700
-+++ b/lib/coq/map/Occ.v 2021-10-20 09:35:21.683416654 -0600
-@@ -17,6 +17,8 @@ Require HighOrd.
- Require int.Int.
- Require map.Map.
-
-+Require Import Lia.
-+
- (* Why3 goal *)
- Definition occ {a:Type} {a_WT:WhyType a} :
- a -> (Numbers.BinNums.Z -> a) -> Numbers.BinNums.Z -> Numbers.BinNums.Z ->
-@@ -35,11 +37,11 @@ Lemma occ_equation :
- ((if why_decidable_eq (m (u - 1)%Z) v then 1 else 0) + occ v m l (u - 1))%Z.
- Proof.
- intros a a_WT v m l u Hlu.
--assert (0 < u - l)%Z as h1' by omega.
-+assert (0 < u - l)%Z as h1' by lia.
- unfold occ.
- replace (u - 1 - l)%Z with (u - l - 1)%Z by ring.
- replace (u - 1)%Z with (l + (u - l - 1))%Z by ring.
--rewrite <- (Z2Nat.id (u - l - 1)) by omega.
-+rewrite <- (Z2Nat.id (u - l - 1)) by lia.
- rewrite (Z2Nat.inj_sub _ 1) by easy.
- destruct (u - l)%Z ; try easy.
- simpl.
-@@ -70,15 +72,15 @@ rewrite <- Zplus_assoc.
- apply f_equal.
- rewrite Zplus_comm.
- apply H.
--clear -Hlu' ; unfold Zwf ; omega.
--clear -Hlu' ; omega.
-+clear -Hlu' ; unfold Zwf ; lia.
-+clear -Hlu' ; lia.
- replace u with (l + 1)%Z.
- unfold occ.
- rewrite Z.add_simpl_l.
- rewrite <- Zminus_diag_reverse.
- simpl.
- now rewrite (Zplus_0_r l).
--clear -Hlu Hlu' ; omega.
-+clear -Hlu Hlu' ; lia.
- Qed.
-
- (* Why3 goal *)
-@@ -88,7 +90,7 @@ Lemma occ_empty {a:Type} {a_WT:WhyType a
- (u <= l)%Z -> ((occ v m l u) = 0%Z).
- Proof.
- intros v m l u h1.
--assert (u - l <= 0)%Z as h1' by omega.
-+assert (u - l <= 0)%Z as h1' by lia.
- unfold occ.
- destruct (u - l)%Z ; try reflexivity.
- now elim h1'.
-@@ -148,28 +150,28 @@ Lemma occ_bounds {a:Type} {a_WT:WhyType
- (l <= u)%Z -> (0%Z <= (occ v m l u))%Z /\ ((occ v m l u) <= (u - l)%Z)%Z.
- Proof.
- intros v m l u h1.
--cut (0 <= u - l)%Z. 2: omega.
-+cut (0 <= u - l)%Z. 2: lia.
- replace (occ v m l u) with (occ v m l (l + (u - l)))%Z.
--pattern (u - l)%Z; apply Z_lt_induction. 2: omega.
-+pattern (u - l)%Z; apply Z_lt_induction. 2: lia.
- intros.
--assert (h: (x = 0 \/ x <> 0)%Z) by omega. destruct h.
--now rewrite occ_empty; omega.
-+assert (h: (x = 0 \/ x <> 0)%Z) by lia. destruct h.
-+now rewrite occ_empty; lia.
- destruct (why_decidable_eq (m (l + (x-1))%Z) v).
- rewrite occ_right_add.
- generalize (H (x-1)%Z); clear H; intros.
- assert (0 <= occ v m l (l + (x - 1)) <= x-1)%Z.
--apply H; omega.
-+apply H; lia.
- replace (l + x - 1)%Z with (l+(x-1))%Z by ring.
--omega.
--omega.
-+lia.
-+lia.
- replace (l + x - 1)%Z with (l+(x-1))%Z by ring.
- trivial.
- rewrite occ_right_no_add.
- assert (0 <= occ v m l (l + (x - 1)) <= x-1)%Z.
--apply H; omega.
-+apply H; lia.
- replace (l + x - 1)%Z with (l+(x-1))%Z by ring.
--omega.
--omega.
-+lia.
-+lia.
- replace (l + x - 1)%Z with (l+(x-1))%Z by ring.
- trivial.
- replace (l + (u-l))%Z with u by ring. trivial.
-@@ -183,38 +185,38 @@ Lemma occ_append {a:Type} {a_WT:WhyType
- ((occ v m l u) = ((occ v m l mid) + (occ v m mid u))%Z).
- Proof.
- intros v m l mid u (h1,h2).
--cut (0 <= u - mid)%Z. 2: omega.
-+cut (0 <= u - mid)%Z. 2: lia.
- replace (occ v m l u) with (occ v m l (mid + (u - mid)))%Z.
- replace (occ v m mid u) with (occ v m mid (mid + (u - mid)))%Z.
--pattern (u - mid)%Z; apply Z_lt_induction. 2: omega.
-+pattern (u - mid)%Z; apply Z_lt_induction. 2: lia.
- intros.
--assert (h: (x = 0 \/ x <> 0)%Z) by omega. destruct h.
-+assert (h: (x = 0 \/ x <> 0)%Z) by lia. destruct h.
- rewrite (occ_empty _ _ mid (mid+x)%Z).
- subst x. ring_simplify ((mid+0)%Z). ring.
--omega.
-+lia.
- destruct (why_decidable_eq (m (mid + (x-1))%Z) v).
- rewrite (occ_right_add _ _ l (mid+x))%Z.
- rewrite (occ_right_add _ _ mid (mid+x))%Z.
- generalize (H (x-1)%Z); clear H; intros.
- assert ((occ v m l (mid+(x-1)) = (occ v m l mid) + occ v m mid (mid + (x - 1)))%Z).
--apply H; omega.
-+apply H; lia.
- replace (mid + x - 1)%Z with (mid+(x-1))%Z by ring.
--omega. omega.
-+lia. lia.
- trivial.
- replace (mid + x - 1)%Z with (mid+(x-1))%Z by ring. trivial.
--omega.
-+lia.
- replace (mid + x - 1)%Z with (mid+(x-1))%Z by ring. trivial.
-
- rewrite (occ_right_no_add _ _ l (mid+x))%Z.
- rewrite (occ_right_no_add _ _ mid (mid+x))%Z.
- generalize (H (x-1)%Z); clear H; intros.
- assert ((occ v m l (mid+(x-1)) = (occ v m l mid) + occ v m mid (mid + (x - 1)))%Z).
--apply H; omega.
-+apply H; lia.
- replace (mid + x - 1)%Z with (mid+(x-1))%Z by ring.
--omega. omega.
-+lia. lia.
- trivial.
- replace (mid + x - 1)%Z with (mid+(x-1))%Z by ring. trivial.
--omega.
-+lia.
- replace (mid + x - 1)%Z with (mid+(x-1))%Z by ring. trivial.
-
- replace (mid + (u-mid))%Z with u by ring. trivial.
-@@ -229,23 +231,23 @@ Lemma occ_neq {a:Type} {a_WT:WhyType a}
- ((occ v m l u) = 0%Z).
- Proof.
- intros v m l u.
--assert (h: (u < l \/ 0 <= u - l)%Z) by omega. destruct h.
--rewrite occ_empty. trivial. omega.
-+assert (h: (u < l \/ 0 <= u - l)%Z) by lia. destruct h.
-+rewrite occ_empty. trivial. lia.
- replace u with (l + (u - l))%Z. 2:ring.
- generalize H.
--pattern (u - l)%Z; apply Z_lt_induction. 2: omega.
-+pattern (u - l)%Z; apply Z_lt_induction. 2: lia.
- clear H; intros.
--assert (h: (x = 0 \/ x <> 0)%Z) by omega. destruct h.
--now rewrite occ_empty; omega.
-+assert (h: (x = 0 \/ x <> 0)%Z) by lia. destruct h.
-+now rewrite occ_empty; lia.
- destruct (why_decidable_eq (m (l + (x-1))%Z) v).
- assert (m (l + (x - 1)) <> v)%Z.
-- apply H1; omega.
-+ apply H1; lia.
- intuition.
- rewrite occ_right_no_add.
- replace (l+x-1)%Z with (l+(x-1))%Z by ring.
- apply H; intuition.
--apply (H1 i). omega. assumption.
--omega.
-+apply (H1 i). lia. assumption.
-+lia.
- replace (l + x - 1)%Z with (l+(x-1))%Z by ring.
- trivial.
- Qed.
-@@ -258,23 +260,23 @@ Lemma occ_exists {a:Type} {a_WT:WhyType
- exists i:Numbers.BinNums.Z, ((l <= i)%Z /\ (i < u)%Z) /\ ((m i) = v).
- Proof.
- intros v m l u h1.
--assert (h: (u < l \/ 0 <= u - l)%Z) by omega. destruct h.
--rewrite occ_empty in h1. elimtype False; omega. omega.
-+assert (h: (u < l \/ 0 <= u - l)%Z) by lia. destruct h.
-+rewrite occ_empty in h1. elimtype False; lia. lia.
- generalize h1.
- replace u with (l + (u - l))%Z. 2:ring.
- generalize H.
--pattern (u - l)%Z; apply Z_lt_induction. 2: omega.
-+pattern (u - l)%Z; apply Z_lt_induction. 2: lia.
- clear H; intros.
--assert (h: (x = 0 \/ x <> 0)%Z) by omega. destruct h.
--rewrite occ_empty in h0. elimtype False; omega. omega.
-+assert (h: (x = 0 \/ x <> 0)%Z) by lia. destruct h.
-+rewrite occ_empty in h0. elimtype False; lia. lia.
- destruct (why_decidable_eq (m (l + (x-1))%Z) v).
--exists (l+(x-1))%Z. split. omega. now trivial.
--destruct (H (x-1))%Z as (i,(hi1,hi2)). omega. omega.
-+exists (l+(x-1))%Z. split. lia. now trivial.
-+destruct (H (x-1))%Z as (i,(hi1,hi2)). lia. lia.
- rewrite occ_right_no_add in h0.
- replace (l + (x - 1))%Z with (l+x-1)%Z by ring. trivial.
--omega.
-+lia.
- replace (l + x - 1)%Z with (l+(x-1))%Z by ring. trivial.
--exists i. split. omega. assumption.
-+exists i. split. lia. assumption.
- Qed.
-
- (* Why3 goal *)
-@@ -286,17 +288,17 @@ Proof.
- intros m l u i (h1,h2).
- pose (v := m i). fold v.
- assert (occ v m l u = occ v m l i + occ v m i u)%Z.
-- apply occ_append. omega.
-+ apply occ_append. lia.
- assert (occ v m i u = occ v m i (i+1) + occ v m (i+1) u)%Z.
-- apply occ_append. omega.
-+ apply occ_append. lia.
- assert (occ v m i (i + 1) = 1)%Z.
- rewrite occ_right_add.
-- ring_simplify (i+1-1)%Z. rewrite occ_empty. ring. omega. omega.
-+ ring_simplify (i+1-1)%Z. rewrite occ_empty. ring. lia. lia.
- ring_simplify (i+1-1)%Z. auto.
--assert (0 <= occ v m l i <= i -l)%Z. apply occ_bounds. omega.
--assert (0 <= occ v m i (i+1) <= (i+1)-i)%Z. apply occ_bounds. omega.
--assert (0 <= occ v m (i+1) u <= u - (i+1))%Z. apply occ_bounds. omega.
--omega.
-+assert (0 <= occ v m l i <= i -l)%Z. apply occ_bounds. lia.
-+assert (0 <= occ v m i (i+1) <= (i+1)-i)%Z. apply occ_bounds. lia.
-+assert (0 <= occ v m (i+1) u <= u - (i+1))%Z. apply occ_bounds. lia.
-+lia.
- Qed.
-
- (* Why3 goal *)
-@@ -308,33 +310,33 @@ Lemma occ_eq {a:Type} {a_WT:WhyType a} :
- ((occ v m1 l u) = (occ v m2 l u)).
- Proof.
- intros v m1 m2 l u h1.
--assert (h: (u < l \/ 0 <= u - l)%Z) by omega. destruct h.
-+assert (h: (u < l \/ 0 <= u - l)%Z) by lia. destruct h.
- rewrite occ_empty.
- rewrite occ_empty. trivial.
--omega. omega.
-+lia. lia.
- generalize h1.
- replace u with (l + (u - l))%Z. 2:ring.
- generalize H.
--pattern (u - l)%Z; apply Z_lt_induction. 2: omega.
-+pattern (u - l)%Z; apply Z_lt_induction. 2: lia.
- clear H; intros.
--assert (h: (x = 0 \/ x <> 0)%Z) by omega. destruct h.
--rewrite occ_empty. rewrite occ_empty. trivial. omega. omega.
-+assert (h: (x = 0 \/ x <> 0)%Z) by lia. destruct h.
-+rewrite occ_empty. rewrite occ_empty. trivial. lia. lia.
- destruct (why_decidable_eq (m1 (l + (x-1))%Z) v).
- rewrite occ_right_add.
- rewrite (occ_right_add v m2).
- apply f_equal.
- replace (l + x - 1)%Z with (l+(x-1))%Z by ring.
--apply H. omega. omega. intros. apply h0. omega. omega.
-+apply H. lia. lia. intros. apply h0. lia. lia.
- replace (l + x - 1)%Z with (l+(x-1))%Z by ring.
--rewrite <- h0. trivial. omega. omega.
-+rewrite <- h0. trivial. lia. lia.
- replace (l + x - 1)%Z with (l+(x-1))%Z by ring. assumption.
-
- rewrite occ_right_no_add.
- rewrite (occ_right_no_add v m2).
- replace (l + x - 1)%Z with (l+(x-1))%Z by ring.
--apply H. omega. omega. intros. apply h0. omega. omega.
-+apply H. lia. lia. intros. apply h0. lia. lia.
- replace (l + x - 1)%Z with (l+(x-1))%Z by ring.
--rewrite <- h0. trivial. omega. omega.
-+rewrite <- h0. trivial. lia. lia.
- replace (l + x - 1)%Z with (l+(x-1))%Z by ring. assumption.
- Qed.
-
-@@ -358,18 +360,18 @@ Lemma occ_set {a:Type} {a_WT:WhyType a}
- if why_decidable_eq (m i) y then 1 else 0)%Z.
- Proof.
- intros m l u i x y H.
--rewrite 2!(occ_append _ _ l i u) by omega.
--rewrite 2!(occ_append _ _ i (i + 1) u) by omega.
-+rewrite 2!(occ_append _ _ l i u) by lia.
-+rewrite 2!(occ_append _ _ i (i + 1) u) by lia.
- rewrite 2!occ_single.
- rewrite (proj1 (Map.set'def _ _ _ _) eq_refl).
- rewrite 2!(occ_eq _ (Map.set m i x) m).
- ring.
- intros j H1.
- apply Map.set'def.
--omega.
-+lia.
- intros j H1.
- apply Map.set'def.
--omega.
-+lia.
- Qed.
-
- (* Why3 goal *)
---- a/lib/coq/number/Prime.v 2021-03-13 02:24:39.000000000 -0700
-+++ b/lib/coq/number/Prime.v 2021-10-20 09:36:46.651469216 -0600
-@@ -20,7 +20,7 @@ Require int.ComputerDivision.
- Require number.Parity.
- Require number.Divisibility.
-
--Import Znumtheory.
-+Require Import Lia Znumtheory.
-
- (* Why3 assumption *)
- Definition prime (p:Numbers.BinNums.Z) : Prop :=
-@@ -39,6 +39,7 @@ Qed.
-
- (* Why3 goal *)
- Lemma not_prime_1 : ~ prime 1%Z.
-+Proof.
- intros (H1,_).
- now elim H1.
- Qed.
-@@ -84,26 +85,26 @@ elimtype False.
- (* *)
- assert (exists d, (2 <= d)%Z /\ (d * d <= p)%Z /\ prime d /\ Z.divide d p).
- clear H.
--assert (Hp' : (0 <= p)%Z) by omega.
-+assert (Hp' : (0 <= p)%Z) by lia.
- revert p Hp' Hp Pp.
- apply (Zlt_0_ind (fun p => 2 <= p -> ~ Znumtheory.prime p -> (exists d : Z, 2 <= d /\ d * d <= p /\ prime d /\ (d | p)))%Z).
- intros p IH _ Hp Pp.
- destruct (not_prime_divide p) as (x,(Hx1,Hx2)).
--clear -Hp ; omega.
-+clear -Hp ; lia.
- exact Pp.
- destruct (Zle_or_lt (x * x) p) as [Hx|Hx].
- destruct (prime_dec x) as [Px|Px].
- exists x.
- split.
--clear -Hx1 ; omega.
-+clear -Hx1 ; lia.
- split.
- exact Hx.
- split.
- now apply <- prime_is_Zprime.
- exact Hx2.
- destruct (IH x) as (y&Hy1&Hy2&Hy3&Hy4).
--clear -Hx1 ; omega.
--clear -Hx1 ; omega.
-+clear -Hx1 ; lia.
-+clear -Hx1 ; lia.
- exact Px.
- exists y.
- refine (conj Hy1 (conj _ (conj Hy3 _))).
-@@ -112,14 +113,14 @@ apply Z.le_trans with (2 := Hx).
- rewrite <- (Zmult_1_r x) at 1.
- apply Zmult_le_compat_l.
- now apply Zlt_le_weak.
--clear -Hx1 ; omega.
-+clear -Hx1 ; lia.
- now apply Z.divide_trans with x.
- case Hx2.
- intros q Hq1.
- assert (Hq2 : (2 <= q)%Z).
- apply (Zlt_le_succ 1).
- apply Zmult_lt_reg_r with x.
--clear -Hx1 ; omega.
-+clear -Hx1 ; lia.
- now rewrite Zmult_1_l, <- Hq1.
- destruct (prime_dec q) as [Pq|Pq].
- exists q.
-@@ -130,20 +131,20 @@ rewrite Hq1.
- apply Zmult_le_compat_l.
- apply Zlt_le_weak.
- apply Zmult_lt_reg_r with x.
--clear -Hx1 ; omega.
-+clear -Hx1 ; lia.
- now rewrite <- Hq1.
--clear -Hq2 ; omega.
-+clear -Hq2 ; lia.
- split.
- now apply <- prime_is_Zprime.
- exists x.
- now rewrite Zmult_comm.
- destruct (IH q) as (y&Hy1&Hy2&Hy3&Hy4).
- split.
--clear -Hq2 ; omega.
-+clear -Hq2 ; lia.
- rewrite <- (Zmult_1_r q), Hq1.
- apply Zmult_lt_compat_l.
--clear -Hq2 ; omega.
--clear -Hx1 ; omega.
-+clear -Hq2 ; lia.
-+clear -Hx1 ; lia.
- exact Hq2.
- exact Pq.
- exists y.
-@@ -151,8 +152,8 @@ refine (conj Hy1 (conj _ (conj Hy3 _))).
- apply Z.le_trans with (1 := Hy2).
- rewrite <- (Zmult_1_r q), Hq1.
- apply Zmult_le_compat_l.
--clear -Hx1 ; omega.
--clear -Hq2 ; omega.
-+clear -Hx1 ; lia.
-+clear -Hq2 ; lia.
- apply Z.divide_trans with (1 := Hy4).
- exists x.
- now rewrite Zmult_comm.
-@@ -175,13 +176,7 @@ assert (Z.divide q p).
- now exists 2%Z.
- intros.
- refine (_ (fun H1 => H0 H1 H) (proj1 Pp)).
--(* ??? omega fails to solve this goal ??? *)
--clear -Hq.
--intros H Hp.
--destruct (Zle_lt_or_eq 2 p Hp) as [Hp'|Hp'].
--elim H.
--omega.
--easy.
-+lia.
- Qed.
-
- (* Why3 goal *)
-@@ -193,6 +188,6 @@ intros p Pp Hp.
- apply <- Divisibility.odd_divides.
- apply proj2 in Pp.
- apply Pp.
--omega.
-+lia.
- Qed.
-
---- a/lib/coq/real/PowerInt.v 2021-03-13 02:24:39.000000000 -0700
-+++ b/lib/coq/real/PowerInt.v 2021-10-20 09:38:32.731532867 -0600
-@@ -18,6 +18,7 @@ Require int.Int.
- Require real.Real.
- Require real.RealInfix.
-
-+Require Import Lia.
- Require Import Exponentiation.
- Import Rfunctions.
-
-@@ -62,10 +63,12 @@ Lemma Power_s_alt :
- forall (x:Reals.Rdefinitions.R) (n:Numbers.BinNums.Z), (0%Z < n)%Z ->
- ((Reals.Rfunctions.powerRZ x n) =
- (x * (Reals.Rfunctions.powerRZ x (n - 1%Z)%Z))%R).
-+Proof.
- intros x n h1.
- rewrite <- Power_s.
--f_equal; omega.
--omega.
-+apply f_equal.
-+ring.
-+lia.
- Qed.
-
- (* Why3 goal *)
-@@ -105,6 +108,7 @@ Lemma Power_comm1 :
- ((x * y)%R = (y * x)%R) -> forall (n:Numbers.BinNums.Z), (0%Z <= n)%Z ->
- (((Reals.Rfunctions.powerRZ x n) * y)%R =
- (y * (Reals.Rfunctions.powerRZ x n))%R).
-+Proof.
- intros x y h1 n h2.
- apply Rmult_comm.
- Qed.
-@@ -125,17 +129,18 @@ Qed.
- Lemma Pow_ge_one :
- forall (x:Reals.Rdefinitions.R) (n:Numbers.BinNums.Z),
- (0%Z <= n)%Z /\ (1%R <= x)%R -> (1%R <= (Reals.Rfunctions.powerRZ x n))%R.
-+Proof.
- intros x n (h1,h2).
- generalize h1.
- pattern n; apply Z_lt_induction; auto.
- clear n h1; intros n Hind h1.
--assert (h: (n = 0 \/ 0 < n)%Z) by omega.
-+assert (h: (n = 0 \/ 0 < n)%Z) by lia.
- destruct h.
- subst n; rewrite Power_0; auto with *.
--replace n with ((n-1)+1)%Z by omega.
-+replace n with ((n-1)+1)%Z by ring.
- rewrite Power_s; auto with zarith.
- assert (h : (1 <= powerRZ x (n-1))%R).
--apply Hind; omega.
-+apply Hind; lia.
- replace 1%R with (1*1)%R by auto with real.
- apply Rmult_le_compat; auto with real.
- Qed.
---- a/lib/coq/set/Cardinal.v 2021-03-13 02:24:39.000000000 -0700
-+++ b/lib/coq/set/Cardinal.v 2021-10-20 09:39:23.827563515 -0600
-@@ -19,6 +19,8 @@ Require set.Set.
- Require map.Map.
- Require map.Const.
-
-+Require Import Lia.
-+
- (* Why3 goal *)
- Definition is_finite {a:Type} {a_WT:WhyType a} :
- (a -> Init.Datatypes.bool) -> Prop.
-@@ -304,7 +306,7 @@ Proof.
- intros s.
- unfold cardinal. destruct ClassicalEpsilon.excluded_middle_informative.
- destruct ClassicalEpsilon.classical_indefinite_description.
--omega.
-+lia.
- reflexivity.
- Qed.
-
-@@ -430,7 +432,7 @@ assert (List.length x <= List.length x0)
- intros e H1.
- eapply Heqx0. eapply Heqx in H1. unfold set.Set.subset, set.Set.mem in h2. eapply h2 in H1. assumption.
- }
--omega.
-+lia.
- Qed.
-
- (* Why3 goal *)
-@@ -465,10 +467,10 @@ unfold set.Set.subset in h2.
- rewrite <- Heq2, <- Heq1.
- assert (List.length l1 = List.length l2).
- {
-- omega.
-+ lia.
- }
- split. eauto.
--eapply List.NoDup_length_incl; eauto. omega.
-+eapply List.NoDup_length_incl; eauto. lia.
- Qed.
-
- (* Why3 goal *)
-@@ -487,7 +489,7 @@ destruct ClassicalEpsilon.excluded_middl
- + inversion h1.
- + destruct x0.
- - simpl in a0. eapply a0 in h2. eapply a0 in H0. intuition. subst. reflexivity.
-- - simpl in h1; contradict h1; zify; omega.
-+ - simpl in h1; contradict h1; lia.
- * inversion h1.
- Qed.
-
-@@ -520,7 +522,7 @@ induction lu; intros.
- subst. inversion H. intuition.
- }
- rewrite Hlieq. rewrite List.app_length. simpl length.
-- rewrite H4. rewrite List.app_length. omega.
-+ rewrite H4. rewrite List.app_length. lia.
- * assert (List.In a lui). { eapply H3. split. left. reflexivity. assumption. }
- destruct (List.in_split a lui H4) as [lui' [lui'' Hlui]].
- assert (length (List.app lui' lui'') = length lu - length li).
-@@ -545,7 +547,7 @@ induction lu; intros.
- intros e Hincl. specialize (H2 e Hincl). simpl in H2. intuition. subst.
- intuition.
- }
-- omega.
-+ lia.
- Qed.
-
- Lemma NoDup_app: forall {A} l l'
-@@ -657,7 +659,7 @@ assert (List.length (List.app l1_lint l2
- eapply List.NoDup_incl_length; intuition. intro. apply H6.
- assert (List.length (List.app l1_lint l2_lint) >= List.length lun_lint).
- eapply List.NoDup_incl_length; intuition. intro. apply H7.
-- omega.
-+ lia.
- }
-
- assert (length l1 >= length lint).
-@@ -675,7 +677,7 @@ assert (length lun >= length lint).
- eapply List.NoDup_incl_length; intuition. intros e Hincl. eapply Heq_int in Hincl.
- eapply Heq_un. eapply set.Set.inter'def in Hincl. eapply set.Set.union'def. intuition.
- }
--rewrite List.app_length in H5. omega.
-+rewrite List.app_length in H5. lia.
- Qed.
-
- (* Why3 goal *)
-@@ -729,7 +731,7 @@ eapply List.NoDup_incl_length; intuition
- intros e Hincl. eapply H4. eapply H6 in Hincl. rewrite set.Set.inter'def in Hincl.
- intuition.
- }
--omega.
-+lia.
- Qed.
-
- (* Why3 goal *)
-@@ -758,6 +760,6 @@ assert (List.length x <= List.length x0)
- eapply List.NoDup_incl_length; eauto.
- - rewrite List.map_length; eauto.
- }
--omega.
-+lia.
- Qed.
-
---- a/lib/coq/set/FsetInt.v 2021-03-13 02:24:39.000000000 -0700
-+++ b/lib/coq/set/FsetInt.v 2021-10-20 09:43:12.813700711 -0600
-@@ -17,6 +17,8 @@ Require HighOrd.
- Require int.Int.
- Require set.Fset.
-
-+Require Import Lia.
-+
- (* Why3 goal *)
- Definition min_elt : set.Fset.fset Numbers.BinNums.Z -> Numbers.BinNums.Z.
- Proof.
-@@ -49,18 +51,18 @@ induction l0; intros.
- { destruct H. }
- assert (forall l z, List.fold_left (fun x1 acc : int => if Z_le_dec x1 acc then x1 else acc) l z <= z)%Z.
- {
-- induction l1; intros; simpl; eauto. omega.
-- simpl. destruct Z_le_dec. eauto. eapply Z.le_trans with a0; eauto. omega.
-+ induction l1; intros; simpl; eauto. lia.
-+ simpl. destruct Z_le_dec. eauto. eapply Z.le_trans with a0; eauto. lia.
- }
- simpl. destruct Z_le_dec.
- destruct (Z_le_dec z0 x0).
- eapply Z.le_trans with z0. eapply H0. assumption.
--simpl in H. destruct H. subst. omega.
-+simpl in H. destruct H. subst. lia.
- eapply IHl0; eauto.
-
- destruct (Z_le_dec a x0).
- eapply Z.le_trans with a. eapply H0. assumption.
--simpl in H. destruct H. subst. omega.
-+simpl in H. destruct H. subst. lia.
- eapply IHl0; eauto.
- }
-
-@@ -79,7 +81,7 @@ rewrite <- Heql. simpl. specialize (H0 l
-
- intros. eapply Heql in H1. eapply (H (List.cons z l) z) in H1; eauto. simpl in H1.
- destruct Z_le_dec. assumption.
--omega.
-+lia.
- Qed.
-
- (* Why3 goal *)
-@@ -115,7 +117,7 @@ assert (min_elt (Fset.map (fun x => - x)
- {
- eapply H1; eauto. apply Fset.mem_map. assumption.
- }
--omega.
-+lia.
- Qed.
-
- Fixpoint seqZ l len : list Numbers.BinNums.Z :=
-@@ -133,16 +135,16 @@ Qed.
- Lemma seqZ_le2: forall len x l, List.In x (seqZ l len) -> (x < l + Z.of_nat len)%Z.
- Proof.
- induction len; simpl; intuition idtac.
--- subst. zify. omega.
--- eapply IHlen in H0. zify. omega.
-+- subst. lia.
-+- eapply IHlen in H0. lia.
- Qed.
-
- Lemma seqZ_rev: forall len x l, (l <= x < l + Z.of_nat len)%Z -> List.In x (seqZ l len).
- Proof.
- induction len; intros; simpl in *.
--+ omega.
-++ lia.
- + destruct (Z.eq_dec l x); eauto.
-- right. eapply IHlen; eauto. zify; omega.
-+ right. eapply IHlen; eauto. lia.
- Qed.
-
- Lemma seqZ_In_iff: forall l len x, List.In x (seqZ l len) <-> (l <= x < l + Z.of_nat len)%Z.
-@@ -157,7 +159,7 @@ Proof.
- induction len; intros.
- + constructor.
- + simpl. constructor; eauto.
-- intro Habs. eapply seqZ_le in Habs. omega.
-+ intro Habs. eapply seqZ_le in Habs. lia.
- Qed.
-
- Lemma seqZ_length: forall len l, List.length (seqZ l len) = len.
-@@ -179,7 +181,7 @@ destruct (Z_le_dec l r).
- - eapply seqZ_NoDup.
- - intros.
- rewrite seqZ_In_iff.
-- rewrite Z2Nat.id; [|omega].
-+ rewrite Z2Nat.id; [|lia].
- destruct Z_le_dec.
- * destruct Z_lt_dec. split; intros; [reflexivity|].
- intuition.
-@@ -190,7 +192,7 @@ destruct (Z_le_dec l r).
- - constructor.
- - intros.
- destruct Z_le_dec; try destruct Z_lt_dec; intuition.
-- omega.
-+ lia.
- inversion H.
- inversion H.
- Qed.
-@@ -228,7 +230,7 @@ destruct (Z_le_dec l r).
- + exists (seqZ l (Z.to_nat (r - l)%Z)).
- split. apply seqZ_NoDup.
- intros. rewrite seqZ_In_iff.
-- rewrite Z2Nat.id; [|omega].
-+ rewrite Z2Nat.id; [|lia].
- destruct Z_le_dec; try destruct Z_lt_dec; intuition; try inversion H.
- + exists nil. split. constructor.
- simpl. intros. destruct Z_le_dec; try destruct Z_lt_dec; intuition.
-@@ -255,15 +257,15 @@ split.
- eapply Nat.le_antisymm.
- + eapply List.NoDup_incl_length. eapply seqZ_NoDup. intro. rewrite H2.
- rewrite seqZ_In_iff. destruct Z_le_dec; try destruct Z_lt_dec; intuition idtac.
-- rewrite Z2Nat.id in H5; omega.
-+ rewrite Z2Nat.id in H5; lia.
- + eapply List.NoDup_incl_length. assumption. intro. rewrite H2.
- rewrite seqZ_In_iff. destruct Z_le_dec; try destruct Z_lt_dec; intuition (try discriminate).
-- rewrite Z2Nat.id; omega.
-+ rewrite Z2Nat.id; lia.
- }
-- rewrite <- H3. rewrite seqZ_length. rewrite Z2Nat.id; omega.
-+ rewrite <- H3. rewrite seqZ_length. rewrite Z2Nat.id; lia.
- + intros. destruct a.
- destruct x. reflexivity.
- specialize (H2 z). contradict H2. destruct Z_le_dec.
-- destruct Z_lt_dec. omega. intuition. intuition.
-+ destruct Z_lt_dec. lia. intuition. intuition.
- Qed.
-
---- a/lib/coq/set/FsetSum.v 2021-03-13 02:24:39.000000000 -0700
-+++ b/lib/coq/set/FsetSum.v 2021-10-20 09:43:38.628716168 -0600
-@@ -17,6 +17,8 @@ Require HighOrd.
- Require int.Int.
- Require set.Fset.
-
-+Require Import Lia.
-+
- (* Why3 goal *)
- Definition sum {a:Type} {a_WT:WhyType a} :
- set.Fset.fset a -> (a -> Numbers.BinNums.Z) -> Numbers.BinNums.Z.
-@@ -192,7 +194,7 @@ destruct a2 as (Hx1dup, Hx1eq).
- - intros. rewrite Hx1eq. rewrite Hdieq in H0. rewrite set.Set.diff'def in H0.
- intuition.
- }
--omega.
-+lia.
- Qed.
-
- Lemma sum_union_disj {a:Type} {a_WT:WhyType a} :
-@@ -255,7 +257,7 @@ assert (sum (Fset.union s1 s2) f - sum (
- + eapply Fset.subset_trans with s1. eapply Fset.subset_inter_1.
- eapply Fset.subset_union_1.
- }
--omega.
-+lia.
- Qed.
-
- (* Why3 goal *)
---- a/lib/coq/set/Fset.v 2021-03-13 02:24:39.000000000 -0700
-+++ b/lib/coq/set/Fset.v 2021-10-20 09:40:37.348607589 -0600
-@@ -16,7 +16,9 @@ Require BuiltIn.
- Require HighOrd.
- Require int.Int.
-
--Require Import ClassicalEpsilon.
-+Require Import ClassicalEpsilon Lia.
-+Require Logic.ProofIrrelevance.
-+Require set.Set set.Cardinal.
-
- (* Why3 goal *)
- Definition fset : forall (a:Type), Type.
-@@ -40,8 +42,6 @@ Qed.
- Definition mem {a:Type} {a_WT:WhyType a} : a -> fset a -> Prop.
- Proof.
- intros. destruct X0 as (f, P).
--(* TODO remove this *)
--Require set.Set.
- apply (set.Set.mem X f).
- Defined.
-
-@@ -62,7 +62,6 @@ eapply set.Set.extensionality. intro. ea
- subst.
- assert (e = e0).
- (* TODO maybe provable on such property ? *)
--Require Logic.ProofIrrelevance.
- apply Logic.ProofIrrelevance.proof_irrelevance.
- subst. reflexivity.
- Qed.
-@@ -96,8 +95,6 @@ Definition is_empty {a:Type} {a_WT:WhyTy
- Definition empty {a:Type} {a_WT:WhyType a} : fset a.
- Proof.
- exists (fun x => false).
--(* TODO remove this *)
--Require Cardinal.
- apply Cardinal.is_finite_empty. unfold set.Set.is_empty.
- unfold set.Set.mem. intuition.
- Defined.
-@@ -591,10 +588,10 @@ destruct ClassicalEpsilon.excluded_middl
- intro. intros. rewrite H2. rewrite H0 in H3. rewrite Bool.andb_true_iff in H3.
- apply H3.
- }
-- omega.
-+ lia.
- - destruct ClassicalEpsilon.classical_indefinite_description.
- destruct ClassicalEpsilon.excluded_middle_informative; [| intuition].
-- unfold Z.zero. omega.
-+ unfold Z.zero. lia.
- Qed.
-
- (* Why3 goal *)
---- a/share/provers-detection-data.conf 2021-03-13 02:24:39.000000000 -0700
-+++ b/share/provers-detection-data.conf 2021-10-20 09:45:16.028775089 -0600
-@@ -812,6 +812,8 @@ support_library = "%l/coq/version"
- exec = "coqtop"
- version_switch = "-v"
- version_regexp = "The Coq Proof Assistant, version \\([^ \n]+\\)"
-+version_ok = "^8\.15\.[0-9]+$"
-+version_ok = "^8\.14\.[0-9]+$"
- version_ok = "^8\.13\.[0-9]+$"
- version_ok = "^8\.12\.[0-9]+$"
- version_ok = "^8\.11\.[0-9]+$"
diff --git a/why3.spec b/why3.spec
index 7672e7f..15d88b7 100644
--- a/why3.spec
+++ b/why3.spec
@@ -10,24 +10,18 @@
%endif
Name: why3
-Version: 1.4.1
-Release: 3%{?dist}
+Version: 1.5.0
+Release: 1%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
License: LGPLv2 with exceptions
URL: http://why3.lri.fr/
Source0: https://why3.gitlabpages.inria.fr/releases/%{name}-%{version}.tar.gz
-# Man pages written by Jerry James using text found in the sources. Hence,
-# the copyright and license are the same as for the upstream sources.
-Source1: %{name}-man.tar.xz
# Desktop file written by Jerry James
-Source2: fr.lri.%{name}.desktop
+Source1: fr.lri.%{name}.desktop
# AppData file written by Jerry James
-Source3: fr.lri.%{name}.metainfo.xml
-# Add support for coq 8.14.0
-# https://gitlab.inria.fr/why3/why3/-/commit/a41e40f88987a26a7ac35f62e7637a2f6fcf1c07
-Patch0: %{name}-coq8.14.patch
+Source2: fr.lri.%{name}.metainfo.xml
BuildRequires: appstream
BuildRequires: coq
@@ -40,15 +34,13 @@ BuildRequires: ocaml-camlp5-devel
BuildRequires: ocaml-findlib
BuildRequires: ocaml-lablgtk3-sourceview3-devel
BuildRequires: ocaml-menhir
-# mlmpfr <= 4.0 is required, but we have 4.1
-# BuildRequires: ocaml-mlmpfr-devel
+BuildRequires: ocaml-mlmpfr-devel
BuildRequires: ocaml-num-devel
BuildRequires: ocaml-ocamldoc
BuildRequires: ocaml-ocamlgraph-devel
BuildRequires: ocaml-ppx-deriving-devel
BuildRequires: ocaml-ppx-sexp-conv-devel
BuildRequires: ocaml-re-devel
-BuildRequires: ocaml-seq-devel
BuildRequires: ocaml-sexplib-devel
BuildRequires: ocaml-zarith-devel
BuildRequires: ocaml-zip-devel
@@ -78,7 +70,7 @@ Recommends: flocq
Provides: bundled(jquery)
# The corresponding Provides is not generated, so filter this out
-%global __requires_exclude ocaml\\\(Why3\\\)
+%global __requires_exclude ocaml\\\((Driver_ast|Why3)\\\)
# This can be removed when F36 reaches EOL
Obsoletes: why < 2.41-12
@@ -144,7 +136,6 @@ Requires: ocaml-%{name}%{?_isa} = %{version}-%{release}
Requires: ocaml-menhir%{?_isa}
Requires: ocaml-num-devel%{?_isa}
Requires: ocaml-re-devel%{?_isa}
-Requires: ocaml-seq-devel%{?_isa}
Requires: ocaml-sexplib-devel%{?_isa}
Requires: ocaml-zip-devel%{?_isa}
@@ -163,7 +154,6 @@ This package provides a why3 plugin for ProofGeneral.
%prep
%autosetup -p1
-%setup -q -T -D -a 1
fixtimestamp() {
touch -r $1.orig $1
@@ -186,9 +176,16 @@ chmod a+x examples/*.sh
sed -i.orig 's,(MY_PATH_TO_WHY3)/share/whyitp,%{_emacs_sitelispdir},' share/whyitp/README
fixtimestamp share/whyitp/README
+# Look for the seq module in the right place
+sed -i 's/stdlib__seq\.cmi/seq.mli/g' configure
+
+# Adapt to breaking change in mlmpfr bugfix2
+sed -i 's/Mpfr/Mlmpfr/' src/util/mlmpfr_real.ml
+
%build
%configure --enable-verbose-make
-make #%%{?_smp_mflags}
+# FIXME: Parallel make sometimes fails
+make
make doc
rm -f doc/html/.buildinfo examples/use_api/.merlin.in
@@ -205,15 +202,6 @@ done
cd -
%endif
-# Install the man pages
-mkdir -p %{buildroot}%{_mandir}/man1
-cd man
-for f in *.1; do
- sed "s/@version@/%{version}/" $f > %{buildroot}%{_mandir}/man1/$f
- touch -r $f %{buildroot}%{_mandir}/man1/$f
-done
-cd ..
-
# Install the bash completion file
mkdir -p %{buildroot}%{_datadir}/bash-completion/completions
cp -p share/bash/%{name} %{buildroot}%{_datadir}/bash-completion/completions
@@ -233,7 +221,7 @@ mv %{buildroot}%{_datadir}/%{name}/lang \
# Install the desktop file
mkdir -p %{buildroot}%{_datadir}/applications
-desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE2}
+desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1}
# Install the icon
mkdir -p %{buildroot}%{_datadir}/icons/hicolor/scalable
@@ -242,7 +230,7 @@ cp -p share/images/src/logo-kim.svg \
# Install the AppStream metadata
mkdir -p %{buildroot}%{_metainfodir}
-cp -p %{SOURCE3} %{buildroot}%{_metainfodir}
+cp -p %{SOURCE2} %{buildroot}%{_metainfodir}
appstreamcli validate --no-net \
%{buildroot}%{_metainfodir}/fr.lri.%{name}.metainfo.xml
@@ -265,12 +253,13 @@ rm -fr %{buildroot}%{_datadir}/doc
chmod 0755 %{buildroot}%{_bindir}/* \
%{buildroot}%{_libdir}/%{name}/commands/* \
%{buildroot}%{_libdir}/%{name}/plugins/*.cmxs \
- %{buildroot}%{_libdir}/ocaml/%{name}/*.cmxs
+ %{buildroot}%{ocamldir}/%{name}/*.cmxs
%files
%doc AUTHORS CHANGES.md README.md doc/html doc/latex/manual.pdf
%license LICENSE
%{_bindir}/%{name}
+%{_bindir}/isabelle_client
%{_datadir}/%{name}/
%{_datadir}/applications/fr.lri.%{name}.desktop
%{_datadir}/bash-completion/completions/why3
@@ -283,26 +272,25 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%{_datadir}/zsh/
%{_texmf}/tex/latex/why3/
%{_libdir}/%{name}/
-%{_mandir}/man1/%{name}*
%{_metainfodir}/fr.lri.%{name}.metainfo.xml
%files -n ocaml-%{name}
-%dir %{_libdir}/ocaml/%{name}/
-%{_libdir}/ocaml/%{name}/META
-%{_libdir}/ocaml/%{name}/*.cmi
+%dir %{ocamldir}/%{name}/
+%{ocamldir}/%{name}/META
+%{ocamldir}/%{name}/*.cmi
%ifarch %{ocaml_native_compiler}
-%{_libdir}/ocaml/%{name}/*.cmxs
+%{ocamldir}/%{name}/*.cmxs
%endif
%files -n ocaml-%{name}-devel
%ifarch %{ocaml_native_compiler}
-%{_libdir}/ocaml/%{name}/*.a
-%{_libdir}/ocaml/%{name}/*.cmx
-%{_libdir}/ocaml/%{name}/*.cmxa
+%{ocamldir}/%{name}/*.a
+%{ocamldir}/%{name}/*.cmx
+%{ocamldir}/%{name}/*.cmxa
%else
-%{_libdir}/ocaml/%{name}/*.cma
+%{ocamldir}/%{name}/*.cma
%endif
-%{_libdir}/ocaml/%{name}/*.cmt
+%{ocamldir}/%{name}/*.cmt
%files examples
%doc examples
@@ -319,6 +307,12 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Thu Jul 7 2022 Jerry James - 1.5.0-1
+- Version 1.5.0
+- Add ocaml-mlmpfr support
+- Drop unmaintained man pages
+- Use new OCaml macros
+
* Sun Jun 19 2022 Richard W.M. Jones - 1.4.1-3
- OCaml 4.14.0 rebuild
From f14f97b40d99ad103150d2f8dfa4b081635d1751 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Tue, 19 Jul 2022 17:59:56 -0600
Subject: [PATCH 047/113] Remove i686 support.
---
why3.spec | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/why3.spec b/why3.spec
index 15d88b7..bd76f4c 100644
--- a/why3.spec
+++ b/why3.spec
@@ -23,6 +23,12 @@ Source1: fr.lri.%{name}.desktop
# AppData file written by Jerry James
Source2: fr.lri.%{name}.metainfo.xml
+# ANTLR is unavailable on i686, so coq is also unavailable. We could build
+# without coq support, but choose to forgo i686 support entirely.
+# See https://fedoraproject.org/wiki/Changes/Drop_i686_JDKs
+# See https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval
+ExclusiveArch: %{java_arches}
+
BuildRequires: appstream
BuildRequires: coq
BuildRequires: emacs-proofgeneral
@@ -307,6 +313,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Tue Jul 19 2022 Jerry James - 1.5.0-1
+- Remove i686 support
+
* Thu Jul 7 2022 Jerry James - 1.5.0-1
- Version 1.5.0
- Add ocaml-mlmpfr support
From ff1ebeb110873d70874a8958d16db83bfd91afde Mon Sep 17 00:00:00 2001
From: Fedora Release Engineering
Date: Sat, 23 Jul 2022 12:24:35 +0000
Subject: [PATCH 048/113] Rebuilt for
https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
Signed-off-by: Fedora Release Engineering
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index bd76f4c..6215707 100644
--- a/why3.spec
+++ b/why3.spec
@@ -11,7 +11,7 @@
Name: why3
Version: 1.5.0
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Software verification platform
# See LICENSE for the terms of the exception
@@ -313,6 +313,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Sat Jul 23 2022 Fedora Release Engineering - 1.5.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
+
* Tue Jul 19 2022 Jerry James - 1.5.0-1
- Remove i686 support
From 5a58b9a713490a1648234912f2da2b54b9b1c477 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Thu, 18 Aug 2022 14:30:48 -0600
Subject: [PATCH 049/113] Rebuild to fix coq dependency. Convert License tag
to SPDX.
---
why3.spec | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/why3.spec b/why3.spec
index 6215707..f16a380 100644
--- a/why3.spec
+++ b/why3.spec
@@ -11,11 +11,10 @@
Name: why3
Version: 1.5.0
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: Software verification platform
-# See LICENSE for the terms of the exception
-License: LGPLv2 with exceptions
+License: LGPL-2.1-only WITH OCaml-LGPL-linking-exception
URL: http://why3.lri.fr/
Source0: https://why3.gitlabpages.inria.fr/releases/%{name}-%{version}.tar.gz
# Desktop file written by Jerry James
@@ -313,6 +312,10 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Thu Aug 18 2022 Jerry James - 1.5.0-3
+- Rebuild to fix coq dependency
+- Convert License tag to SPDX
+
* Sat Jul 23 2022 Fedora Release Engineering - 1.5.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
From edda0bbb4458e4607c3c4c1770f8b8e1df798204 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Fri, 16 Sep 2022 15:00:13 -0600
Subject: [PATCH 050/113] Version 1.5.1.
---
sources | 2 +-
why3.spec | 12 ++++++------
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/sources b/sources
index 5fba922..84fa7c8 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (why3-1.5.0.tar.gz) = 3ae443733321f2e487d6e503c4dbfe37d0e24c7dbe88eb94a3907775a1e6e30530b58ff835e3b2fff3fac5cd16622d758602e4f2b59aea567c7073199d67888c
+SHA512 (why3-1.5.1.tar.gz) = 1452a21ea9191f57debcc082afe458aec503d6aa24f8bc83f734041cdd302c4f166c9c4fe5f9ec25369b6e83011bdd7b485d67b092efa71ff0c1b39447f4bdac
diff --git a/why3.spec b/why3.spec
index f16a380..0aac6b4 100644
--- a/why3.spec
+++ b/why3.spec
@@ -10,8 +10,8 @@
%endif
Name: why3
-Version: 1.5.0
-Release: 3%{?dist}
+Version: 1.5.1
+Release: 1%{?dist}
Summary: Software verification platform
License: LGPL-2.1-only WITH OCaml-LGPL-linking-exception
@@ -72,7 +72,7 @@ Requires: vim-filesystem
Recommends: bash-completion
Recommends: flocq
-Provides: bundled(jquery)
+Provides: bundled(js-jquery)
# The corresponding Provides is not generated, so filter this out
%global __requires_exclude ocaml\\\((Driver_ast|Why3)\\\)
@@ -184,9 +184,6 @@ fixtimestamp share/whyitp/README
# Look for the seq module in the right place
sed -i 's/stdlib__seq\.cmi/seq.mli/g' configure
-# Adapt to breaking change in mlmpfr bugfix2
-sed -i 's/Mpfr/Mlmpfr/' src/util/mlmpfr_real.ml
-
%build
%configure --enable-verbose-make
# FIXME: Parallel make sometimes fails
@@ -312,6 +309,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Fri Sep 16 2022 Jerry James - 1.5.1-1
+- Version 1.5.1
+
* Thu Aug 18 2022 Jerry James - 1.5.0-3
- Rebuild to fix coq dependency
- Convert License tag to SPDX
From a621c52b1102e614d79b4823170b640f10776630 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Tue, 1 Nov 2022 13:35:44 -0600
Subject: [PATCH 051/113] Rebuild for ocaml-ppxlib 0.28.0.
---
why3.spec | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/why3.spec b/why3.spec
index 0aac6b4..1b8d68e 100644
--- a/why3.spec
+++ b/why3.spec
@@ -11,11 +11,11 @@
Name: why3
Version: 1.5.1
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Software verification platform
License: LGPL-2.1-only WITH OCaml-LGPL-linking-exception
-URL: http://why3.lri.fr/
+URL: https://why3.lri.fr/
Source0: https://why3.gitlabpages.inria.fr/releases/%{name}-%{version}.tar.gz
# Desktop file written by Jerry James
Source1: fr.lri.%{name}.desktop
@@ -309,6 +309,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Tue Nov 1 2022 Jerry James - 1.5.1-2
+- Rebuild for ocaml-ppxlib 0.28.0
+
* Fri Sep 16 2022 Jerry James - 1.5.1-1
- Version 1.5.1
From 207ba180d9cf8e7c4874aad963e9ec0d0a91cf16 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Sat, 26 Nov 2022 18:45:19 -0700
Subject: [PATCH 052/113] Rebuild for coq 8.16.1.
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index 1b8d68e..ffffd83 100644
--- a/why3.spec
+++ b/why3.spec
@@ -11,7 +11,7 @@
Name: why3
Version: 1.5.1
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: Software verification platform
License: LGPL-2.1-only WITH OCaml-LGPL-linking-exception
@@ -309,6 +309,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Sat Nov 26 2022 Jerry James - 1.5.1-3
+- Rebuild for coq 8.16.1
+
* Tue Nov 1 2022 Jerry James - 1.5.1-2
- Rebuild for ocaml-ppxlib 0.28.0
From 1b9d0514ebbcd9db2ed4cf18d34db2b79e3fae99 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Fri, 6 Jan 2023 10:50:45 -0700
Subject: [PATCH 053/113] BR tex(tgtermes.sty) to fix FTBFS with TeXLive 2022.
---
why3.spec | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index ffffd83..1180974 100644
--- a/why3.spec
+++ b/why3.spec
@@ -11,7 +11,7 @@
Name: why3
Version: 1.5.1
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: Software verification platform
License: LGPL-2.1-only WITH OCaml-LGPL-linking-exception
@@ -58,6 +58,7 @@ BuildRequires: tex(framed.sty)
BuildRequires: tex(latex)
BuildRequires: tex(needspace.sty)
BuildRequires: tex(tabulary.sty)
+BuildRequires: tex(tgtermes.sty)
BuildRequires: tex(upquote.sty)
BuildRequires: tex(wrapfig.sty)
BuildRequires: tex-urlbst
@@ -309,6 +310,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Fri Jan 6 2023 Jerry James - 1.5.1-4
+- BR tex(tgtermes.sty) to fix FTBFS with TeXLive 2022
+
* Sat Nov 26 2022 Jerry James - 1.5.1-3
- Rebuild for coq 8.16.1
From a12b108b9554c8eb514c5a42344bba646e4451b2 Mon Sep 17 00:00:00 2001
From: Fedora Release Engineering
Date: Sat, 21 Jan 2023 06:48:42 +0000
Subject: [PATCH 054/113] Rebuilt for
https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
Signed-off-by: Fedora Release Engineering
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index 1180974..4118fe7 100644
--- a/why3.spec
+++ b/why3.spec
@@ -11,7 +11,7 @@
Name: why3
Version: 1.5.1
-Release: 4%{?dist}
+Release: 5%{?dist}
Summary: Software verification platform
License: LGPL-2.1-only WITH OCaml-LGPL-linking-exception
@@ -310,6 +310,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Sat Jan 21 2023 Fedora Release Engineering - 1.5.1-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
+
* Fri Jan 6 2023 Jerry James - 1.5.1-4
- BR tex(tgtermes.sty) to fix FTBFS with TeXLive 2022
From 4dfd264ff474e835becf28d485e62f384ccec5e7 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones"
Date: Tue, 24 Jan 2023 19:34:17 +0000
Subject: [PATCH 055/113] Rebuild OCaml packages for F38
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index 4118fe7..801ad47 100644
--- a/why3.spec
+++ b/why3.spec
@@ -11,7 +11,7 @@
Name: why3
Version: 1.5.1
-Release: 5%{?dist}
+Release: 6%{?dist}
Summary: Software verification platform
License: LGPL-2.1-only WITH OCaml-LGPL-linking-exception
@@ -310,6 +310,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Tue Jan 24 2023 Richard W.M. Jones - 1.5.1-6
+- Rebuild OCaml packages for F38
+
* Sat Jan 21 2023 Fedora Release Engineering - 1.5.1-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
From 77a922c5b99416cc4f70f640b3e0deed48d11aef Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Sat, 1 Apr 2023 11:31:09 -0600
Subject: [PATCH 056/113] Rebuild for coq 8.17.0
---
fr.lri.why3.metainfo.xml | 2 +-
why3.spec | 5 ++++-
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/fr.lri.why3.metainfo.xml b/fr.lri.why3.metainfo.xml
index 0c44545..a7161d6 100644
--- a/fr.lri.why3.metainfo.xml
+++ b/fr.lri.why3.metainfo.xml
@@ -41,7 +41,7 @@
loganjerry@gmail.com
http://why3.lri.fr/
https://gitlab.inria.fr/why3/why3/issues
-
+
why3
diff --git a/why3.spec b/why3.spec
index 801ad47..4c9a831 100644
--- a/why3.spec
+++ b/why3.spec
@@ -11,7 +11,7 @@
Name: why3
Version: 1.5.1
-Release: 6%{?dist}
+Release: 7%{?dist}
Summary: Software verification platform
License: LGPL-2.1-only WITH OCaml-LGPL-linking-exception
@@ -310,6 +310,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Sat Apr 1 2023 Jerry James - 1.5.1-7
+- Rebuild for coq 8.17.0
+
* Tue Jan 24 2023 Richard W.M. Jones - 1.5.1-6
- Rebuild OCaml packages for F38
From a3afebd1c09dd98597342a43476697e9c204e733 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Mon, 10 Jul 2023 22:53:10 -0600
Subject: [PATCH 057/113] Version 1.6.0
Other changes:
- Enable inference with BDDs
- Add patch for coq 8.17 support
---
sources | 2 +-
why3-coq-8.17.patch | 82 +++++++++++++++++++++++++++++++++++++++++++++
why3.spec | 32 +++++++++---------
3 files changed, 99 insertions(+), 17 deletions(-)
create mode 100644 why3-coq-8.17.patch
diff --git a/sources b/sources
index 84fa7c8..026cfc6 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (why3-1.5.1.tar.gz) = 1452a21ea9191f57debcc082afe458aec503d6aa24f8bc83f734041cdd302c4f166c9c4fe5f9ec25369b6e83011bdd7b485d67b092efa71ff0c1b39447f4bdac
+SHA512 (why3-1.6.0.tar.gz) = 60d61b8337ab9f2fd2e6c7174eb0bab063f122417738cd75990c5c53120dd535bcedccb670567f5753853d6bc9f8efebb563d079e4d368372a7687193f1346b1
diff --git a/why3-coq-8.17.patch b/why3-coq-8.17.patch
new file mode 100644
index 0000000..2503ce7
--- /dev/null
+++ b/why3-coq-8.17.patch
@@ -0,0 +1,82 @@
+--- why3-1.6.0/configure.in.orig 2023-03-07 02:15:31.000000000 -0700
++++ why3-1.6.0/configure.in 2023-06-26 14:21:56.361457115 -0600
+@@ -993,6 +993,10 @@ if test "$enable_coq_support" = yes; the
+ 8.16*)
+ coq_compat_version="COQ816"
+ ;;
++ 8.17*)
++ coq_compat_version="COQ817"
++ COQFLAGS="-w deprecated-instance-without-locality,deprecated-hint-without-locality"
++ ;;
+ *)
+ enable_coq_support=no
+ AC_MSG_WARN([You need Coq 8.7 or later; Coq discarded.])
+@@ -1242,6 +1246,7 @@ AC_SUBST(COQC)
+ AC_SUBST(COQDEP)
+ AC_SUBST(COQLIB)
+ AC_SUBST(COQVERSION)
++AC_SUBST(COQFLAGS)
+
+ AC_SUBST(enable_pvs_libs)
+ AC_SUBST(PVS)
+--- why3-1.6.0/configure.orig 2023-03-07 02:15:31.000000000 -0700
++++ why3-1.6.0/configure 2023-06-26 14:35:07.856280739 -0600
+@@ -696,6 +696,7 @@ PVSVERSION
+ enable_pvs_libs
+ COQVERSION
+ COQLIB
++COQFLAGS
+ coq_compat_version
+ enable_coq_fp_libs
+ enable_coq_libs
+@@ -5926,6 +5927,10 @@ printf "%s\n" "$COQVERSION" >&6; }
+ 8.16*)
+ coq_compat_version="COQ816"
+ ;;
++ 8.17*)
++ coq_compat_version="COQ817"
++ COQFLAGS="-w deprecated-instance-without-locality,deprecated-hint-without-locality"
++ ;;
+ *)
+ enable_coq_support=no
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: You need Coq 8.7 or later; Coq discarded." >&5
+--- why3-1.6.0/Makefile.in.orig 2023-03-07 02:15:31.000000000 -0700
++++ why3-1.6.0/Makefile.in 2023-06-26 14:21:12.426061732 -0600
+@@ -62,6 +62,7 @@ OCAMLBEST = @OCAMLBEST@
+ OCAMLVERSION = @OCAMLVERSION@
+ COQC = @COQC@
+ COQDEP = @COQDEP@
++COQFLAGS = @COQFLAGS@
+ FRAMAC_LIBDIR = $(DESTDIR)@FRAMAC_LIBDIR@
+ MENHIR = @MENHIR@
+
+@@ -1068,7 +1069,7 @@ COQLIBS_FILES = lib/coq/BuiltIn lib/coq/
+
+ %.vo: %.v
+ $(SHOW) 'Coqc $<'
+- $(HIDE)$(COQC) -R lib/coq Why3 $<
++ $(HIDE)$(COQC) $(COQFLAGS) -R lib/coq Why3 $<
+
+ %.vd: %.v
+ $(SHOW) 'Coqdep $<'
+--- why3-1.6.0/share/provers-detection-data.conf.orig 2023-03-07 02:15:31.000000000 -0700
++++ why3-1.6.0/share/provers-detection-data.conf 2023-06-26 14:22:52.768680868 -0600
+@@ -838,16 +838,8 @@ support_library = "%l/coq/version"
+ exec = "coqtop"
+ version_switch = "-v"
+ version_regexp = "The Coq Proof Assistant, version \\([^ \n]+\\)"
+-version_ok = "^8\.16\.[0-9]+$"
+-version_ok = "^8\.15\.[0-9]+$"
+-version_ok = "^8\.14\.[0-9]+$"
+-version_ok = "^8\.13\.[0-9]+$"
+-version_ok = "^8\.12\.[0-9]+$"
+-version_ok = "^8\.11\.[0-9]+$"
+-version_ok = "^8\.10\.[0-9]+$"
+-version_ok = "^8\.9\.[0-9]+$"
+-version_ok = "^8\.8\.[0-9]+$"
+-version_ok = "^8\.7\.[0-9]+$"
++version_ok = "^8\.1[0-7]\.[0-9]+$"
++version_ok = "^8\.[7-9]\.[0-9]+$"
+ version_old = "8.6.1"
+ version_old = "8.6"
+ version_old = "^8\.5pl[1-3]$"
diff --git a/why3.spec b/why3.spec
index 4c9a831..aa43617 100644
--- a/why3.spec
+++ b/why3.spec
@@ -3,15 +3,13 @@
# enabling it for now. We abide by their wishes. Revisit this decision each
# release.
-%undefine _package_note_flags
-
%ifnarch %{ocaml_native_compiler}
%global debug_package %{nil}
%endif
Name: why3
-Version: 1.5.1
-Release: 7%{?dist}
+Version: 1.6.0
+Release: 1%{?dist}
Summary: Software verification platform
License: LGPL-2.1-only WITH OCaml-LGPL-linking-exception
@@ -22,6 +20,10 @@ Source1: fr.lri.%{name}.desktop
# AppData file written by Jerry James
Source2: fr.lri.%{name}.metainfo.xml
+# Support coq 8.17. See
+# https://gitlab.inria.fr/why3/why3/-/commit/64facc03bdc2bc4ce0586ff2f458bcd87f646ba8
+Patch0: %{name}-coq-8.17.patch
+
# ANTLR is unavailable on i686, so coq is also unavailable. We could build
# without coq support, but choose to forgo i686 support entirely.
# See https://fedoraproject.org/wiki/Changes/Drop_i686_JDKs
@@ -30,12 +32,15 @@ ExclusiveArch: %{java_arches}
BuildRequires: appstream
BuildRequires: coq
+BuildRequires: emacs-nox
BuildRequires: emacs-proofgeneral
BuildRequires: flocq
+BuildRequires: graphviz
BuildRequires: latexmk
BuildRequires: make
BuildRequires: ocaml
-BuildRequires: ocaml-camlp5-devel
+BuildRequires: ocaml-apron-devel
+BuildRequires: ocaml-camlidl-devel
BuildRequires: ocaml-findlib
BuildRequires: ocaml-lablgtk3-sourceview3-devel
BuildRequires: ocaml-menhir
@@ -62,8 +67,6 @@ BuildRequires: tex(tgtermes.sty)
BuildRequires: tex(upquote.sty)
BuildRequires: tex(wrapfig.sty)
BuildRequires: tex-urlbst
-BuildRequires: emacs
-BuildRequires: graphviz
Requires: gtksourceview3%{?_isa}
Requires: hicolor-icon-theme
@@ -129,7 +132,6 @@ based on Why3, including various automated and interactive provers.
%package -n ocaml-%{name}
Summary: Software verification library for ocaml
-Requires: ocaml-num%{?_isa}
Requires: ocaml-zip-devel%{?_isa}
%description -n ocaml-%{name}
@@ -174,19 +176,12 @@ sed -e "s|-Wall|%{build_cflags}|;s/ -O -g//" \
-e "s|^OLINKFLAGS =.*|& -runtime-variant _pic -ccopt \"%{build_ldflags}\"|" \
-i Makefile.in
-# Remove spurious executable bits
-find -O3 examples -type f -perm /0111 -exec chmod a-x {} +
-chmod a+x examples/*.sh
-
# Update the ProofGeneral integration instructions
sed -i.orig 's,(MY_PATH_TO_WHY3)/share/whyitp,%{_emacs_sitelispdir},' share/whyitp/README
fixtimestamp share/whyitp/README
-# Look for the seq module in the right place
-sed -i 's/stdlib__seq\.cmi/seq.mli/g' configure
-
%build
-%configure --enable-verbose-make
+%configure --enable-verbose-make --enable-bddinfer
# FIXME: Parallel make sometimes fails
make
make doc
@@ -310,6 +305,11 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Mon Jul 10 2023 Jerry James - 1.6.0-1
+- Version 1.6.0
+- Enable inference with BDDs
+- Add patch for coq 8.17 support
+
* Sat Apr 1 2023 Jerry James - 1.5.1-7
- Rebuild for coq 8.17.0
From eb418d6e8bf008347796a03404007b88358ab343 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones"
Date: Tue, 11 Jul 2023 11:36:26 +0100
Subject: [PATCH 058/113] ExcludeArch i686
(https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/message/SPML7CUBSZNI36NLXGVHEG7DNHU3EWOJ/)
---
why3.spec | 3 +++
1 file changed, 3 insertions(+)
diff --git a/why3.spec b/why3.spec
index aa43617..7a3d156 100644
--- a/why3.spec
+++ b/why3.spec
@@ -1,3 +1,6 @@
+# OCaml packages not built on i686 since OCaml 5 / Fedora 39.
+ExcludeArch: %{ix86}
+
# NOTE: Upstream has said that the Frama-C support is still experimental, and
# less functional than the corresponding support in why2. They recommend not
# enabling it for now. We abide by their wishes. Revisit this decision each
From 097e9753110e85e9bf19b3bca4768eeed34beaf8 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones"
Date: Wed, 12 Jul 2023 17:10:06 +0100
Subject: [PATCH 059/113] Only build coq and friends on architectures with the
native compiler
---
why3.spec | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/why3.spec b/why3.spec
index 7a3d156..b4eec8f 100644
--- a/why3.spec
+++ b/why3.spec
@@ -1,5 +1,5 @@
-# OCaml packages not built on i686 since OCaml 5 / Fedora 39.
-ExcludeArch: %{ix86}
+# Coq's plugin architecture requires cmxs files, so:
+ExclusiveArch: %{ocaml_native_compiler}
# NOTE: Upstream has said that the Frama-C support is still experimental, and
# less functional than the corresponding support in why2. They recommend not
From 41d142576cda1aa8a113d894dc5f4a71219a33ce Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones"
Date: Wed, 12 Jul 2023 19:24:22 +0100
Subject: [PATCH 060/113] Comment out duplicate ExclusiveArch
---
why3.spec | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/why3.spec b/why3.spec
index b4eec8f..e767829 100644
--- a/why3.spec
+++ b/why3.spec
@@ -1,6 +1,12 @@
# Coq's plugin architecture requires cmxs files, so:
ExclusiveArch: %{ocaml_native_compiler}
+# ANTLR is unavailable on i686, so coq is also unavailable. We could build
+# without coq support, but choose to forgo i686 support entirely.
+# See https://fedoraproject.org/wiki/Changes/Drop_i686_JDKs
+# See https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval
+#ExclusiveArch: %%{java_arches}
+
# NOTE: Upstream has said that the Frama-C support is still experimental, and
# less functional than the corresponding support in why2. They recommend not
# enabling it for now. We abide by their wishes. Revisit this decision each
@@ -27,12 +33,6 @@ Source2: fr.lri.%{name}.metainfo.xml
# https://gitlab.inria.fr/why3/why3/-/commit/64facc03bdc2bc4ce0586ff2f458bcd87f646ba8
Patch0: %{name}-coq-8.17.patch
-# ANTLR is unavailable on i686, so coq is also unavailable. We could build
-# without coq support, but choose to forgo i686 support entirely.
-# See https://fedoraproject.org/wiki/Changes/Drop_i686_JDKs
-# See https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval
-ExclusiveArch: %{java_arches}
-
BuildRequires: appstream
BuildRequires: coq
BuildRequires: emacs-nox
From 30c6100bdd7ef2dd3489d4e0f99b35ea8ab94cc1 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Wed, 12 Jul 2023 20:44:11 -0600
Subject: [PATCH 061/113] Rebuild for mpfr 4.2.0
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index e767829..5d270f9 100644
--- a/why3.spec
+++ b/why3.spec
@@ -18,7 +18,7 @@ ExclusiveArch: %{ocaml_native_compiler}
Name: why3
Version: 1.6.0
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Software verification platform
License: LGPL-2.1-only WITH OCaml-LGPL-linking-exception
@@ -308,6 +308,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Thu Jul 13 2023 Jerry James - 1.6.0-2
+- Rebuild for mpfr 4.2.0
+
* Mon Jul 10 2023 Jerry James - 1.6.0-1
- Version 1.6.0
- Enable inference with BDDs
From a981f9ce39e3be9fd6d3510db0d15b58c4e70587 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Tue, 18 Jul 2023 13:20:04 -0600
Subject: [PATCH 062/113] Validate metadata with appstream-util
---
why3.spec | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/why3.spec b/why3.spec
index 5d270f9..d3e854e 100644
--- a/why3.spec
+++ b/why3.spec
@@ -33,13 +33,13 @@ Source2: fr.lri.%{name}.metainfo.xml
# https://gitlab.inria.fr/why3/why3/-/commit/64facc03bdc2bc4ce0586ff2f458bcd87f646ba8
Patch0: %{name}-coq-8.17.patch
-BuildRequires: appstream
BuildRequires: coq
BuildRequires: emacs-nox
BuildRequires: emacs-proofgeneral
BuildRequires: flocq
BuildRequires: graphviz
BuildRequires: latexmk
+BuildRequires: libappstream-glib
BuildRequires: make
BuildRequires: ocaml
BuildRequires: ocaml-apron-devel
@@ -232,7 +232,7 @@ cp -p share/images/src/logo-kim.svg \
# Install the AppStream metadata
mkdir -p %{buildroot}%{_metainfodir}
cp -p %{SOURCE2} %{buildroot}%{_metainfodir}
-appstreamcli validate --no-net \
+appstream-util validate-relax --nonet \
%{buildroot}%{_metainfodir}/fr.lri.%{name}.metainfo.xml
# Move the vim file to the right place
@@ -308,6 +308,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Tue Jul 18 2023 Jerry James - 1.6.0-2
+- Validate metadata with appstream-util
+
* Thu Jul 13 2023 Jerry James - 1.6.0-2
- Rebuild for mpfr 4.2.0
From 4fe98e6898d53be844ee800f0b421758019826cd Mon Sep 17 00:00:00 2001
From: Fedora Release Engineering
Date: Sat, 22 Jul 2023 18:11:57 +0000
Subject: [PATCH 063/113] Rebuilt for
https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
Signed-off-by: Fedora Release Engineering
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index d3e854e..1d8839b 100644
--- a/why3.spec
+++ b/why3.spec
@@ -18,7 +18,7 @@ ExclusiveArch: %{ocaml_native_compiler}
Name: why3
Version: 1.6.0
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: Software verification platform
License: LGPL-2.1-only WITH OCaml-LGPL-linking-exception
@@ -308,6 +308,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Sat Jul 22 2023 Fedora Release Engineering - 1.6.0-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
+
* Tue Jul 18 2023 Jerry James - 1.6.0-2
- Validate metadata with appstream-util
From dccd3f8ee9b0a6ae10f7b21e4d1d1f9c34e06ab1 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Thu, 27 Jul 2023 11:18:08 -0600
Subject: [PATCH 064/113] Rebuild for ocaml-zarith 1.13
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index 1d8839b..93cd5ef 100644
--- a/why3.spec
+++ b/why3.spec
@@ -18,7 +18,7 @@ ExclusiveArch: %{ocaml_native_compiler}
Name: why3
Version: 1.6.0
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: Software verification platform
License: LGPL-2.1-only WITH OCaml-LGPL-linking-exception
@@ -308,6 +308,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Thu Jul 27 2023 Jerry James - 1.6.0-4
+- Rebuild for ocaml-zarith 1.13
+
* Sat Jul 22 2023 Fedora Release Engineering - 1.6.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
From 7e59df64f5c2b13db30cb32e77970e4ee8830aa8 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Sat, 29 Jul 2023 16:18:01 -0600
Subject: [PATCH 065/113] Require cvc5 instead of cvc4
---
why3.spec | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/why3.spec b/why3.spec
index 93cd5ef..9812c69 100644
--- a/why3.spec
+++ b/why3.spec
@@ -18,7 +18,7 @@ ExclusiveArch: %{ocaml_native_compiler}
Name: why3
Version: 1.6.0
-Release: 4%{?dist}
+Release: 5%{?dist}
Summary: Software verification platform
License: LGPL-2.1-only WITH OCaml-LGPL-linking-exception
@@ -123,7 +123,7 @@ This package contains an Emacs support file for working with %{name} files.
%package all
Summary: Complete Why3 software verification platform suite
Requires: %{name}%{?_isa} = %{version}-%{release}
-Requires: alt-ergo coq cvc4 E gappa yices-tools z3 zenon
+Requires: alt-ergo coq cvc5 E gappa yices-tools z3 zenon
# This can be removed when F36 reaches EOL
Obsoletes: why-all < 2.41-12
@@ -308,6 +308,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Sat Jul 29 2023 Jerry James - 1.6.0-5
+- Require cvc5 instead of cvc4
+
* Thu Jul 27 2023 Jerry James - 1.6.0-4
- Rebuild for ocaml-zarith 1.13
From 2c8af3392464e7144e1710f4bd7c862009b83bb1 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Sun, 10 Sep 2023 08:54:03 -0600
Subject: [PATCH 066/113] Rebuild for ocaml-ocamlgraph 2.1.0
---
fr.lri.why3.metainfo.xml | 2 +-
why3.spec | 5 ++++-
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/fr.lri.why3.metainfo.xml b/fr.lri.why3.metainfo.xml
index a7161d6..5ec6c75 100644
--- a/fr.lri.why3.metainfo.xml
+++ b/fr.lri.why3.metainfo.xml
@@ -38,7 +38,7 @@
File reloaded after modifying goal G2
- loganjerry@gmail.com
+ why3-maintainers@fedoraproject.org
http://why3.lri.fr/
https://gitlab.inria.fr/why3/why3/issues
diff --git a/why3.spec b/why3.spec
index 9812c69..d9c2622 100644
--- a/why3.spec
+++ b/why3.spec
@@ -18,7 +18,7 @@ ExclusiveArch: %{ocaml_native_compiler}
Name: why3
Version: 1.6.0
-Release: 5%{?dist}
+Release: 6%{?dist}
Summary: Software verification platform
License: LGPL-2.1-only WITH OCaml-LGPL-linking-exception
@@ -308,6 +308,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Sat Sep 9 2023 Jerry James - 1.6.0-6
+- Rebuild for ocaml-ocamlgraph 2.1.0
+
* Sat Jul 29 2023 Jerry James - 1.6.0-5
- Require cvc5 instead of cvc4
From c96ac3b16a9ccc22c8e75027a7c63611e8d1f0b9 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Wed, 4 Oct 2023 23:18:14 -0600
Subject: [PATCH 067/113] Remove old obsoletes
---
why3.spec | 12 ------------
1 file changed, 12 deletions(-)
diff --git a/why3.spec b/why3.spec
index d9c2622..1472867 100644
--- a/why3.spec
+++ b/why3.spec
@@ -84,14 +84,6 @@ Provides: bundled(js-jquery)
# The corresponding Provides is not generated, so filter this out
%global __requires_exclude ocaml\\\((Driver_ast|Why3)\\\)
-# This can be removed when F36 reaches EOL
-Obsoletes: why < 2.41-12
-Provides: why = 2.41-12%{?dist}
-Obsoletes: why-jessie < 2.41-12
-Provides: why-jessie = 2.41-12%{?dist}
-Obsoletes: why-pvs-support < 2.41-12
-Provides: why-pvs-support = 2.41-12%{?dist}
-
# This can be removed when F39 reaches EOL
Obsoletes: %{name}-xemacs < 1.4.0-4
@@ -125,10 +117,6 @@ Summary: Complete Why3 software verification platform suite
Requires: %{name}%{?_isa} = %{version}-%{release}
Requires: alt-ergo coq cvc5 E gappa yices-tools z3 zenon
-# This can be removed when F36 reaches EOL
-Obsoletes: why-all < 2.41-12
-Provides: why-all = 2.41-12%{?dist}
-
%description all
This package provides a complete software verification platform suite
based on Why3, including various automated and interactive provers.
From b3fca63993ac0cbbcf9988bc44f7d01716b44c96 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones"
Date: Thu, 5 Oct 2023 21:46:07 +0100
Subject: [PATCH 068/113] OCaml 5.1 rebuild for Fedora 40
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index 1472867..89e634b 100644
--- a/why3.spec
+++ b/why3.spec
@@ -18,7 +18,7 @@ ExclusiveArch: %{ocaml_native_compiler}
Name: why3
Version: 1.6.0
-Release: 6%{?dist}
+Release: 7%{?dist}
Summary: Software verification platform
License: LGPL-2.1-only WITH OCaml-LGPL-linking-exception
@@ -296,6 +296,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Thu Oct 05 2023 Richard W.M. Jones - 1.6.0-7
+- OCaml 5.1 rebuild for Fedora 40
+
* Sat Sep 9 2023 Jerry James - 1.6.0-6
- Rebuild for ocaml-ocamlgraph 2.1.0
From 8b5401104dfcddbdba42b4459edadf8042ecfdca Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones"
Date: Tue, 12 Dec 2023 19:17:54 +0000
Subject: [PATCH 069/113] OCaml 5.1.1 rebuild for Fedora 40
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index 89e634b..04cab31 100644
--- a/why3.spec
+++ b/why3.spec
@@ -18,7 +18,7 @@ ExclusiveArch: %{ocaml_native_compiler}
Name: why3
Version: 1.6.0
-Release: 7%{?dist}
+Release: 8%{?dist}
Summary: Software verification platform
License: LGPL-2.1-only WITH OCaml-LGPL-linking-exception
@@ -296,6 +296,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Tue Dec 12 2023 Richard W.M. Jones - 1.6.0-8
+- OCaml 5.1.1 rebuild for Fedora 40
+
* Thu Oct 05 2023 Richard W.M. Jones - 1.6.0-7
- OCaml 5.1 rebuild for Fedora 40
From 8d82ad63f7db0e720f47f0c2c5d17d92b7a9eee5 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones"
Date: Mon, 18 Dec 2023 19:26:12 +0000
Subject: [PATCH 070/113] OCaml 5.1.1 + s390x code gen fix for Fedora 40
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index 04cab31..2c34db9 100644
--- a/why3.spec
+++ b/why3.spec
@@ -18,7 +18,7 @@ ExclusiveArch: %{ocaml_native_compiler}
Name: why3
Version: 1.6.0
-Release: 8%{?dist}
+Release: 9%{?dist}
Summary: Software verification platform
License: LGPL-2.1-only WITH OCaml-LGPL-linking-exception
@@ -296,6 +296,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Mon Dec 18 2023 Richard W.M. Jones - 1.6.0-9
+- OCaml 5.1.1 + s390x code gen fix for Fedora 40
+
* Tue Dec 12 2023 Richard W.M. Jones - 1.6.0-8
- OCaml 5.1.1 rebuild for Fedora 40
From e86bfd31127088031a55fdb7508ed8de3e54877a Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Tue, 2 Jan 2024 12:34:03 -0700
Subject: [PATCH 071/113] Version 1.7.0. Drop upstreamed coq patch.
---
sources | 2 +-
why3-coq-8.17.patch | 82 ---------------------------------------------
why3.spec | 14 ++++----
3 files changed, 8 insertions(+), 90 deletions(-)
delete mode 100644 why3-coq-8.17.patch
diff --git a/sources b/sources
index 026cfc6..2c57c42 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (why3-1.6.0.tar.gz) = 60d61b8337ab9f2fd2e6c7174eb0bab063f122417738cd75990c5c53120dd535bcedccb670567f5753853d6bc9f8efebb563d079e4d368372a7687193f1346b1
+SHA512 (why3-1.7.0.tar.gz) = 1fb458e58b75662e3cc4f3cdb42b0e2229d5c73e44a182370ce8beca3a2e18ac8b6c9a403ba94f9391d46cb9bd47cd37cfc9592c77cc2164a7f92124f6f557b6
diff --git a/why3-coq-8.17.patch b/why3-coq-8.17.patch
deleted file mode 100644
index 2503ce7..0000000
--- a/why3-coq-8.17.patch
+++ /dev/null
@@ -1,82 +0,0 @@
---- why3-1.6.0/configure.in.orig 2023-03-07 02:15:31.000000000 -0700
-+++ why3-1.6.0/configure.in 2023-06-26 14:21:56.361457115 -0600
-@@ -993,6 +993,10 @@ if test "$enable_coq_support" = yes; the
- 8.16*)
- coq_compat_version="COQ816"
- ;;
-+ 8.17*)
-+ coq_compat_version="COQ817"
-+ COQFLAGS="-w deprecated-instance-without-locality,deprecated-hint-without-locality"
-+ ;;
- *)
- enable_coq_support=no
- AC_MSG_WARN([You need Coq 8.7 or later; Coq discarded.])
-@@ -1242,6 +1246,7 @@ AC_SUBST(COQC)
- AC_SUBST(COQDEP)
- AC_SUBST(COQLIB)
- AC_SUBST(COQVERSION)
-+AC_SUBST(COQFLAGS)
-
- AC_SUBST(enable_pvs_libs)
- AC_SUBST(PVS)
---- why3-1.6.0/configure.orig 2023-03-07 02:15:31.000000000 -0700
-+++ why3-1.6.0/configure 2023-06-26 14:35:07.856280739 -0600
-@@ -696,6 +696,7 @@ PVSVERSION
- enable_pvs_libs
- COQVERSION
- COQLIB
-+COQFLAGS
- coq_compat_version
- enable_coq_fp_libs
- enable_coq_libs
-@@ -5926,6 +5927,10 @@ printf "%s\n" "$COQVERSION" >&6; }
- 8.16*)
- coq_compat_version="COQ816"
- ;;
-+ 8.17*)
-+ coq_compat_version="COQ817"
-+ COQFLAGS="-w deprecated-instance-without-locality,deprecated-hint-without-locality"
-+ ;;
- *)
- enable_coq_support=no
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: You need Coq 8.7 or later; Coq discarded." >&5
---- why3-1.6.0/Makefile.in.orig 2023-03-07 02:15:31.000000000 -0700
-+++ why3-1.6.0/Makefile.in 2023-06-26 14:21:12.426061732 -0600
-@@ -62,6 +62,7 @@ OCAMLBEST = @OCAMLBEST@
- OCAMLVERSION = @OCAMLVERSION@
- COQC = @COQC@
- COQDEP = @COQDEP@
-+COQFLAGS = @COQFLAGS@
- FRAMAC_LIBDIR = $(DESTDIR)@FRAMAC_LIBDIR@
- MENHIR = @MENHIR@
-
-@@ -1068,7 +1069,7 @@ COQLIBS_FILES = lib/coq/BuiltIn lib/coq/
-
- %.vo: %.v
- $(SHOW) 'Coqc $<'
-- $(HIDE)$(COQC) -R lib/coq Why3 $<
-+ $(HIDE)$(COQC) $(COQFLAGS) -R lib/coq Why3 $<
-
- %.vd: %.v
- $(SHOW) 'Coqdep $<'
---- why3-1.6.0/share/provers-detection-data.conf.orig 2023-03-07 02:15:31.000000000 -0700
-+++ why3-1.6.0/share/provers-detection-data.conf 2023-06-26 14:22:52.768680868 -0600
-@@ -838,16 +838,8 @@ support_library = "%l/coq/version"
- exec = "coqtop"
- version_switch = "-v"
- version_regexp = "The Coq Proof Assistant, version \\([^ \n]+\\)"
--version_ok = "^8\.16\.[0-9]+$"
--version_ok = "^8\.15\.[0-9]+$"
--version_ok = "^8\.14\.[0-9]+$"
--version_ok = "^8\.13\.[0-9]+$"
--version_ok = "^8\.12\.[0-9]+$"
--version_ok = "^8\.11\.[0-9]+$"
--version_ok = "^8\.10\.[0-9]+$"
--version_ok = "^8\.9\.[0-9]+$"
--version_ok = "^8\.8\.[0-9]+$"
--version_ok = "^8\.7\.[0-9]+$"
-+version_ok = "^8\.1[0-7]\.[0-9]+$"
-+version_ok = "^8\.[7-9]\.[0-9]+$"
- version_old = "8.6.1"
- version_old = "8.6"
- version_old = "^8\.5pl[1-3]$"
diff --git a/why3.spec b/why3.spec
index 2c34db9..2729d7b 100644
--- a/why3.spec
+++ b/why3.spec
@@ -17,8 +17,8 @@ ExclusiveArch: %{ocaml_native_compiler}
%endif
Name: why3
-Version: 1.6.0
-Release: 9%{?dist}
+Version: 1.7.0
+Release: 1%{?dist}
Summary: Software verification platform
License: LGPL-2.1-only WITH OCaml-LGPL-linking-exception
@@ -29,10 +29,6 @@ Source1: fr.lri.%{name}.desktop
# AppData file written by Jerry James
Source2: fr.lri.%{name}.metainfo.xml
-# Support coq 8.17. See
-# https://gitlab.inria.fr/why3/why3/-/commit/64facc03bdc2bc4ce0586ff2f458bcd87f646ba8
-Patch0: %{name}-coq-8.17.patch
-
BuildRequires: coq
BuildRequires: emacs-nox
BuildRequires: emacs-proofgeneral
@@ -258,7 +254,7 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%{_datadir}/icons/hicolor/scalable/%{name}.svg
%{_datadir}/vim/vimfiles/ftdetect/%{name}.vim
%{_datadir}/vim/vimfiles/syntax/%{name}.vim
-%{_datadir}/zsh/
+%{_datadir}/zsh/site-functions/_why3
%{_texmf}/tex/latex/why3/
%{_libdir}/%{name}/
%{_metainfodir}/fr.lri.%{name}.metainfo.xml
@@ -296,6 +292,10 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Tue Jan 2 2024 Jerry James - 1.7.0-1
+- Version 1.7.0
+- Drop upstreamed coq patch
+
* Mon Dec 18 2023 Richard W.M. Jones - 1.6.0-9
- OCaml 5.1.1 + s390x code gen fix for Fedora 40
From 12c78c7f05b31de36332863414128ebafd6dd47f Mon Sep 17 00:00:00 2001
From: Fedora Release Engineering
Date: Sat, 27 Jan 2024 08:45:59 +0000
Subject: [PATCH 072/113] Rebuilt for
https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index 2729d7b..efeb26f 100644
--- a/why3.spec
+++ b/why3.spec
@@ -18,7 +18,7 @@ ExclusiveArch: %{ocaml_native_compiler}
Name: why3
Version: 1.7.0
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Software verification platform
License: LGPL-2.1-only WITH OCaml-LGPL-linking-exception
@@ -292,6 +292,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Sat Jan 27 2024 Fedora Release Engineering - 1.7.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
+
* Tue Jan 2 2024 Jerry James - 1.7.0-1
- Version 1.7.0
- Drop upstreamed coq patch
From 8d5ff06bc5e290fc7ff4499417dd832aa80749e0 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Fri, 2 Feb 2024 16:41:48 -0700
Subject: [PATCH 073/113] Version 1.7.1
---
sources | 2 +-
why3.spec | 13 +++++--------
2 files changed, 6 insertions(+), 9 deletions(-)
diff --git a/sources b/sources
index 2c57c42..8b5ff60 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (why3-1.7.0.tar.gz) = 1fb458e58b75662e3cc4f3cdb42b0e2229d5c73e44a182370ce8beca3a2e18ac8b6c9a403ba94f9391d46cb9bd47cd37cfc9592c77cc2164a7f92124f6f557b6
+SHA512 (why3-1.7.1.tar.gz) = 3b1636e9459aced943a6b895aa7a6db3552adcf9878c2fa2b67913d6b555b67b00f6f1c9b28ffa80cbdf3fa01007aa7f8c9c4fa6c8c56dee579955cf5d57980b
diff --git a/why3.spec b/why3.spec
index efeb26f..00a128d 100644
--- a/why3.spec
+++ b/why3.spec
@@ -1,12 +1,6 @@
# Coq's plugin architecture requires cmxs files, so:
ExclusiveArch: %{ocaml_native_compiler}
-# ANTLR is unavailable on i686, so coq is also unavailable. We could build
-# without coq support, but choose to forgo i686 support entirely.
-# See https://fedoraproject.org/wiki/Changes/Drop_i686_JDKs
-# See https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval
-#ExclusiveArch: %%{java_arches}
-
# NOTE: Upstream has said that the Frama-C support is still experimental, and
# less functional than the corresponding support in why2. They recommend not
# enabling it for now. We abide by their wishes. Revisit this decision each
@@ -17,8 +11,8 @@ ExclusiveArch: %{ocaml_native_compiler}
%endif
Name: why3
-Version: 1.7.0
-Release: 2%{?dist}
+Version: 1.7.1
+Release: 1%{?dist}
Summary: Software verification platform
License: LGPL-2.1-only WITH OCaml-LGPL-linking-exception
@@ -292,6 +286,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Fri Feb 2 2024 Jerry James - 1.7.1-1
+- Version 1.7.1
+
* Sat Jan 27 2024 Fedora Release Engineering - 1.7.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
From 84cb61b8ea83632f544fbefc84545ec0c79557d1 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Fri, 2 Feb 2024 18:44:17 -0700
Subject: [PATCH 074/113] Build again because koji ran out of disk space
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index 00a128d..af6117c 100644
--- a/why3.spec
+++ b/why3.spec
@@ -12,7 +12,7 @@ ExclusiveArch: %{ocaml_native_compiler}
Name: why3
Version: 1.7.1
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Software verification platform
License: LGPL-2.1-only WITH OCaml-LGPL-linking-exception
@@ -286,6 +286,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Fri Feb 2 2024 Jerry James - 1.7.1-2
+- Build again because koji ran out of disk space
+
* Fri Feb 2 2024 Jerry James - 1.7.1-1
- Version 1.7.1
From 44636b45553fd57d03d62ea25cc84cca28214877 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones"
Date: Mon, 25 Mar 2024 11:19:18 +0000
Subject: [PATCH 075/113] Use %{bash_completions_dir} macro
---
why3.spec | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/why3.spec b/why3.spec
index af6117c..ef5a413 100644
--- a/why3.spec
+++ b/why3.spec
@@ -12,7 +12,7 @@ ExclusiveArch: %{ocaml_native_compiler}
Name: why3
Version: 1.7.1
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: Software verification platform
License: LGPL-2.1-only WITH OCaml-LGPL-linking-exception
@@ -182,8 +182,8 @@ cd -
%endif
# Install the bash completion file
-mkdir -p %{buildroot}%{_datadir}/bash-completion/completions
-cp -p share/bash/%{name} %{buildroot}%{_datadir}/bash-completion/completions
+mkdir -p %{buildroot}%{bash_completions_dir}
+cp -p share/bash/%{name} %{buildroot}%{bash_completions_dir}
# Install the zsh completion file
mkdir -p %{buildroot}%{_datadir}/zsh/site-functions
@@ -241,7 +241,7 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%{_bindir}/isabelle_client
%{_datadir}/%{name}/
%{_datadir}/applications/fr.lri.%{name}.desktop
-%{_datadir}/bash-completion/completions/why3
+%{bash_completions_dir}/why3
%{_datadir}/gtksourceview-3.0/language-specs/%{name}.lang
%{_datadir}/gtksourceview-3.0/language-specs/%{name}c.lang
%{_datadir}/gtksourceview-3.0/language-specs/%{name}py.lang
@@ -286,6 +286,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Mon Mar 25 2024 Richard W.M. Jones - 1.7.1-3
+- Use %%{bash_completions_dir} macro
+
* Fri Feb 2 2024 Jerry James - 1.7.1-2
- Build again because koji ran out of disk space
From 8000f2ad4af141f76026c5822c8ec889dba63864 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Thu, 18 Apr 2024 09:47:00 -0600
Subject: [PATCH 076/113] Version 1.7.2
---
sources | 2 +-
why3.spec | 22 +++++++++++-----------
2 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/sources b/sources
index 8b5ff60..a941d8e 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (why3-1.7.1.tar.gz) = 3b1636e9459aced943a6b895aa7a6db3552adcf9878c2fa2b67913d6b555b67b00f6f1c9b28ffa80cbdf3fa01007aa7f8c9c4fa6c8c56dee579955cf5d57980b
+SHA512 (why3-1.7.2.tar.gz) = 7e80671480ce0dc3c69514bea2836f5899c686b43a4e8607c27d28e63f78150150dc45fcac5760dbee9721d363e456b1dcaeb1501fc9f63f360722a1021f675f
diff --git a/why3.spec b/why3.spec
index ef5a413..33b01f7 100644
--- a/why3.spec
+++ b/why3.spec
@@ -6,17 +6,14 @@ ExclusiveArch: %{ocaml_native_compiler}
# enabling it for now. We abide by their wishes. Revisit this decision each
# release.
-%ifnarch %{ocaml_native_compiler}
-%global debug_package %{nil}
-%endif
-
Name: why3
-Version: 1.7.1
-Release: 3%{?dist}
+Version: 1.7.2
+Release: 1%{?dist}
Summary: Software verification platform
License: LGPL-2.1-only WITH OCaml-LGPL-linking-exception
URL: https://why3.lri.fr/
+VCS: https://gitlab.inria.fr/why3/why3
Source0: https://why3.gitlabpages.inria.fr/releases/%{name}-%{version}.tar.gz
# Desktop file written by Jerry James
Source1: fr.lri.%{name}.desktop
@@ -24,7 +21,7 @@ Source1: fr.lri.%{name}.desktop
Source2: fr.lri.%{name}.metainfo.xml
BuildRequires: coq
-BuildRequires: emacs-nox
+BuildRequires: emacs-nw
BuildRequires: emacs-proofgeneral
BuildRequires: flocq
BuildRequires: graphviz
@@ -186,8 +183,8 @@ mkdir -p %{buildroot}%{bash_completions_dir}
cp -p share/bash/%{name} %{buildroot}%{bash_completions_dir}
# Install the zsh completion file
-mkdir -p %{buildroot}%{_datadir}/zsh/site-functions
-cp -p share/zsh/_why3 %{buildroot}%{_datadir}/zsh/site-functions
+mkdir -p %{buildroot}%{zsh_completions_dir}
+cp -p share/zsh/_why3 %{buildroot}%{zsh_completions_dir}
# Install the LaTeX style
mkdir -p %{buildroot}%{_texmf}/tex/latex/why3
@@ -239,16 +236,16 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%license LICENSE
%{_bindir}/%{name}
%{_bindir}/isabelle_client
+%{bash_completions_dir}/why3
+%{zsh_completions_dir}/_why3
%{_datadir}/%{name}/
%{_datadir}/applications/fr.lri.%{name}.desktop
-%{bash_completions_dir}/why3
%{_datadir}/gtksourceview-3.0/language-specs/%{name}.lang
%{_datadir}/gtksourceview-3.0/language-specs/%{name}c.lang
%{_datadir}/gtksourceview-3.0/language-specs/%{name}py.lang
%{_datadir}/icons/hicolor/scalable/%{name}.svg
%{_datadir}/vim/vimfiles/ftdetect/%{name}.vim
%{_datadir}/vim/vimfiles/syntax/%{name}.vim
-%{_datadir}/zsh/site-functions/_why3
%{_texmf}/tex/latex/why3/
%{_libdir}/%{name}/
%{_metainfodir}/fr.lri.%{name}.metainfo.xml
@@ -286,6 +283,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Thu Apr 18 2024 Jerry James - 1.7.2-1
+- Version 1.7.2
+
* Mon Mar 25 2024 Richard W.M. Jones - 1.7.1-3
- Use %%{bash_completions_dir} macro
From 0aeedb81c597ea0247a15450b25c5d092a6db472 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones"
Date: Thu, 30 May 2024 10:30:35 +0100
Subject: [PATCH 077/113] OCaml 5.2.0 for Fedora 41
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index 33b01f7..b045f08 100644
--- a/why3.spec
+++ b/why3.spec
@@ -8,7 +8,7 @@ ExclusiveArch: %{ocaml_native_compiler}
Name: why3
Version: 1.7.2
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Software verification platform
License: LGPL-2.1-only WITH OCaml-LGPL-linking-exception
@@ -283,6 +283,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Thu May 30 2024 Richard W.M. Jones - 1.7.2-2
+- OCaml 5.2.0 for Fedora 41
+
* Thu Apr 18 2024 Jerry James - 1.7.2-1
- Version 1.7.2
From 356eda9812df2a090b2453d7483e90a1eaa10537 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Thu, 13 Jun 2024 14:38:24 -0600
Subject: [PATCH 078/113] Rebuild for apron 0.9.15
- New upstream URL
---
why3.spec | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/why3.spec b/why3.spec
index b045f08..81e3754 100644
--- a/why3.spec
+++ b/why3.spec
@@ -8,11 +8,11 @@ ExclusiveArch: %{ocaml_native_compiler}
Name: why3
Version: 1.7.2
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: Software verification platform
License: LGPL-2.1-only WITH OCaml-LGPL-linking-exception
-URL: https://why3.lri.fr/
+URL: https://www.why3.org/
VCS: https://gitlab.inria.fr/why3/why3
Source0: https://why3.gitlabpages.inria.fr/releases/%{name}-%{version}.tar.gz
# Desktop file written by Jerry James
@@ -283,6 +283,10 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Thu Jun 13 2024 Jerry James - 1.7.2-3
+- Rebuild for apron 0.9.15
+- New upstream URL
+
* Thu May 30 2024 Richard W.M. Jones - 1.7.2-2
- OCaml 5.2.0 for Fedora 41
From c6f768199271c3973f867e7ccab35f40f9ce90d5 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones"
Date: Wed, 19 Jun 2024 19:28:35 +0100
Subject: [PATCH 079/113] OCaml 5.2.0 ppc64le fix
OCaml 5.2.0 ppc64le fix
OCaml 5.2.0 ppc64le fix
OCaml 5.2.0 ppc64le fix
OCaml 5.2.0 ppc64le fix
OCaml 5.2.0 ppc64le fix
OCaml 5.2.0 ppc64le fix
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index 81e3754..10fb90f 100644
--- a/why3.spec
+++ b/why3.spec
@@ -8,7 +8,7 @@ ExclusiveArch: %{ocaml_native_compiler}
Name: why3
Version: 1.7.2
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: Software verification platform
License: LGPL-2.1-only WITH OCaml-LGPL-linking-exception
@@ -283,6 +283,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Wed Jun 19 2024 Richard W.M. Jones - 1.7.2-4
+- OCaml 5.2.0 ppc64le fix
+
* Thu Jun 13 2024 Jerry James - 1.7.2-3
- Rebuild for apron 0.9.15
- New upstream URL
From b4ad7f2eed50d6ee7f5e4d90e82f2f9b5854b921 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Wed, 3 Jul 2024 16:58:56 -0600
Subject: [PATCH 080/113] Rebuild for ocaml-ppx-sexp-conv 0.17.0
---
why3.spec | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/why3.spec b/why3.spec
index 10fb90f..0c7d2ac 100644
--- a/why3.spec
+++ b/why3.spec
@@ -8,12 +8,12 @@ ExclusiveArch: %{ocaml_native_compiler}
Name: why3
Version: 1.7.2
-Release: 4%{?dist}
+Release: 5%{?dist}
Summary: Software verification platform
License: LGPL-2.1-only WITH OCaml-LGPL-linking-exception
URL: https://www.why3.org/
-VCS: https://gitlab.inria.fr/why3/why3
+VCS: git:https://gitlab.inria.fr/why3/why3.git
Source0: https://why3.gitlabpages.inria.fr/releases/%{name}-%{version}.tar.gz
# Desktop file written by Jerry James
Source1: fr.lri.%{name}.desktop
@@ -283,6 +283,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Wed Jul 3 2024 Jerry James - 1.7.2-5
+- Rebuild for ocaml-ppx-sexp-conv 0.17.0
+
* Wed Jun 19 2024 Richard W.M. Jones - 1.7.2-4
- OCaml 5.2.0 ppc64le fix
From 664bbc3564880339a44c8299eb1f7fb4a0766b42 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Tue, 16 Jul 2024 11:13:09 -0600
Subject: [PATCH 081/113] Rebuild for ocaml-zarith 1.14
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index 0c7d2ac..180f048 100644
--- a/why3.spec
+++ b/why3.spec
@@ -8,7 +8,7 @@ ExclusiveArch: %{ocaml_native_compiler}
Name: why3
Version: 1.7.2
-Release: 5%{?dist}
+Release: 6%{?dist}
Summary: Software verification platform
License: LGPL-2.1-only WITH OCaml-LGPL-linking-exception
@@ -283,6 +283,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Tue Jul 16 2024 Jerry James - 1.7.2-6
+- Rebuild for ocaml-zarith 1.14
+
* Wed Jul 3 2024 Jerry James - 1.7.2-5
- Rebuild for ocaml-ppx-sexp-conv 0.17.0
From 2daac66f5789e4b479b3317757786f84197486d5 Mon Sep 17 00:00:00 2001
From: Fedora Release Engineering
Date: Sat, 20 Jul 2024 09:20:04 +0000
Subject: [PATCH 082/113] Rebuilt for
https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index 180f048..b01a89b 100644
--- a/why3.spec
+++ b/why3.spec
@@ -8,7 +8,7 @@ ExclusiveArch: %{ocaml_native_compiler}
Name: why3
Version: 1.7.2
-Release: 6%{?dist}
+Release: 7%{?dist}
Summary: Software verification platform
License: LGPL-2.1-only WITH OCaml-LGPL-linking-exception
@@ -283,6 +283,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Sat Jul 20 2024 Fedora Release Engineering - 1.7.2-7
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
+
* Tue Jul 16 2024 Jerry James - 1.7.2-6
- Rebuild for ocaml-zarith 1.14
From acda593bf2d76e32878cd05b0c91c7b15d265de9 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Mon, 5 Aug 2024 11:24:06 -0600
Subject: [PATCH 083/113] Rebuild for ocaml-menhir 20240715, ocaml-ppxlib
0.33.0, and ocaml-zip 1.1.2
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index b01a89b..1dcd287 100644
--- a/why3.spec
+++ b/why3.spec
@@ -8,7 +8,7 @@ ExclusiveArch: %{ocaml_native_compiler}
Name: why3
Version: 1.7.2
-Release: 7%{?dist}
+Release: 8%{?dist}
Summary: Software verification platform
License: LGPL-2.1-only WITH OCaml-LGPL-linking-exception
@@ -283,6 +283,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Mon Aug 5 2024 Jerry James - 1.7.2-8
+- Rebuild for ocaml-menhir 20240715, ocaml-ppxlib 0.33.0, and ocaml-zip 1.1.2
+
* Sat Jul 20 2024 Fedora Release Engineering - 1.7.2-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
From b798c9103b1b445b23a81a3693e0d0d540465666 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Sun, 6 Oct 2024 15:16:41 -0600
Subject: [PATCH 084/113] Rebuild for ocaml-re 1.13.3
---
why3.spec | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/why3.spec b/why3.spec
index 1dcd287..01f9e0b 100644
--- a/why3.spec
+++ b/why3.spec
@@ -8,7 +8,7 @@ ExclusiveArch: %{ocaml_native_compiler}
Name: why3
Version: 1.7.2
-Release: 8%{?dist}
+Release: 9%{?dist}
Summary: Software verification platform
License: LGPL-2.1-only WITH OCaml-LGPL-linking-exception
@@ -283,6 +283,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Sun Oct 6 2024 Jerry James - 1.7.2-9
+- Rebuild for ocaml-re 1.13.3
+
* Mon Aug 5 2024 Jerry James - 1.7.2-8
- Rebuild for ocaml-menhir 20240715, ocaml-ppxlib 0.33.0, and ocaml-zip 1.1.2
From 88b9f2e9c7492aad9a7ddc5fe33796ea023f4204 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Mon, 14 Oct 2024 15:14:21 -0600
Subject: [PATCH 085/113] Fix the location of the icon
---
why3.spec | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/why3.spec b/why3.spec
index 01f9e0b..9a05440 100644
--- a/why3.spec
+++ b/why3.spec
@@ -8,7 +8,7 @@ ExclusiveArch: %{ocaml_native_compiler}
Name: why3
Version: 1.7.2
-Release: 9%{?dist}
+Release: 10%{?dist}
Summary: Software verification platform
License: LGPL-2.1-only WITH OCaml-LGPL-linking-exception
@@ -200,9 +200,9 @@ mkdir -p %{buildroot}%{_datadir}/applications
desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1}
# Install the icon
-mkdir -p %{buildroot}%{_datadir}/icons/hicolor/scalable
+mkdir -p %{buildroot}%{_datadir}/icons/hicolor/scalable/apps
cp -p share/images/src/logo-kim.svg \
- %{buildroot}%{_datadir}/icons/hicolor/scalable/%{name}.svg
+ %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/%{name}.svg
# Install the AppStream metadata
mkdir -p %{buildroot}%{_metainfodir}
@@ -243,7 +243,7 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%{_datadir}/gtksourceview-3.0/language-specs/%{name}.lang
%{_datadir}/gtksourceview-3.0/language-specs/%{name}c.lang
%{_datadir}/gtksourceview-3.0/language-specs/%{name}py.lang
-%{_datadir}/icons/hicolor/scalable/%{name}.svg
+%{_datadir}/icons/hicolor/scalable/apps/%{name}.svg
%{_datadir}/vim/vimfiles/ftdetect/%{name}.vim
%{_datadir}/vim/vimfiles/syntax/%{name}.vim
%{_texmf}/tex/latex/why3/
@@ -283,6 +283,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \
%files all
%changelog
+* Mon Oct 14 2024 Jerry James - 1.7.2-10
+- Fix the location of the icon
+
* Sun Oct 6 2024 Jerry James - 1.7.2-9
- Rebuild for ocaml-re 1.13.3
From 98156958f8b58a70bc592b23e2f63161f5469056 Mon Sep 17 00:00:00 2001
From: Jerry James
Date: Fri, 10 Jan 2025 10:28:18 -0700
Subject: [PATCH 086/113] Convert to %autorelease and %autochangelog
[skip changelog]
---
changelog | 534 +++++++++++++++++++++++++++++++++++++++++++++++++++++
why3.spec | 537 +-----------------------------------------------------
2 files changed, 536 insertions(+), 535 deletions(-)
create mode 100644 changelog
diff --git a/changelog b/changelog
new file mode 100644
index 0000000..0856a59
--- /dev/null
+++ b/changelog
@@ -0,0 +1,534 @@
+* Mon Oct 14 2024 Jerry James - 1.7.2-10
+- Fix the location of the icon
+
+* Sun Oct 6 2024 Jerry James - 1.7.2-9
+- Rebuild for ocaml-re 1.13.3
+
+* Mon Aug 5 2024 Jerry James - 1.7.2-8
+- Rebuild for ocaml-menhir 20240715, ocaml-ppxlib 0.33.0, and ocaml-zip 1.1.2
+
+* Sat Jul 20 2024 Fedora Release Engineering - 1.7.2-7
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
+
+* Tue Jul 16 2024 Jerry James - 1.7.2-6
+- Rebuild for ocaml-zarith 1.14
+
+* Wed Jul 3 2024 Jerry James - 1.7.2-5
+- Rebuild for ocaml-ppx-sexp-conv 0.17.0
+
+* Wed Jun 19 2024 Richard W.M. Jones - 1.7.2-4
+- OCaml 5.2.0 ppc64le fix
+
+* Thu Jun 13 2024 Jerry James - 1.7.2-3
+- Rebuild for apron 0.9.15
+- New upstream URL
+
+* Thu May 30 2024 Richard W.M. Jones - 1.7.2-2
+- OCaml 5.2.0 for Fedora 41
+
+* Thu Apr 18 2024 Jerry James - 1.7.2-1
+- Version 1.7.2
+
+* Mon Mar 25 2024 Richard W.M. Jones - 1.7.1-3
+- Use %%{bash_completions_dir} macro
+
+* Fri Feb 2 2024 Jerry James - 1.7.1-2
+- Build again because koji ran out of disk space
+
+* Fri Feb 2 2024 Jerry James - 1.7.1-1
+- Version 1.7.1
+
+* Sat Jan 27 2024 Fedora Release Engineering - 1.7.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
+
+* Tue Jan 2 2024 Jerry James - 1.7.0-1
+- Version 1.7.0
+- Drop upstreamed coq patch
+
+* Mon Dec 18 2023 Richard W.M. Jones - 1.6.0-9
+- OCaml 5.1.1 + s390x code gen fix for Fedora 40
+
+* Tue Dec 12 2023 Richard W.M. Jones - 1.6.0-8
+- OCaml 5.1.1 rebuild for Fedora 40
+
+* Thu Oct 05 2023 Richard W.M. Jones - 1.6.0-7
+- OCaml 5.1 rebuild for Fedora 40
+
+* Sat Sep 9 2023 Jerry James - 1.6.0-6
+- Rebuild for ocaml-ocamlgraph 2.1.0
+
+* Sat Jul 29 2023 Jerry James - 1.6.0-5
+- Require cvc5 instead of cvc4
+
+* Thu Jul 27 2023 Jerry James - 1.6.0-4
+- Rebuild for ocaml-zarith 1.13
+
+* Sat Jul 22 2023 Fedora Release Engineering - 1.6.0-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
+
+* Tue Jul 18 2023 Jerry James - 1.6.0-2
+- Validate metadata with appstream-util
+
+* Thu Jul 13 2023 Jerry James - 1.6.0-2
+- Rebuild for mpfr 4.2.0
+
+* Mon Jul 10 2023 Jerry James - 1.6.0-1
+- Version 1.6.0
+- Enable inference with BDDs
+- Add patch for coq 8.17 support
+
+* Sat Apr 1 2023 Jerry James - 1.5.1-7
+- Rebuild for coq 8.17.0
+
+* Tue Jan 24 2023 Richard W.M. Jones - 1.5.1-6
+- Rebuild OCaml packages for F38
+
+* Sat Jan 21 2023 Fedora Release Engineering - 1.5.1-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
+
+* Fri Jan 6 2023 Jerry James - 1.5.1-4
+- BR tex(tgtermes.sty) to fix FTBFS with TeXLive 2022
+
+* Sat Nov 26 2022 Jerry James - 1.5.1-3
+- Rebuild for coq 8.16.1
+
+* Tue Nov 1 2022 Jerry James - 1.5.1-2
+- Rebuild for ocaml-ppxlib 0.28.0
+
+* Fri Sep 16 2022 Jerry James - 1.5.1-1
+- Version 1.5.1
+
+* Thu Aug 18 2022 Jerry James - 1.5.0-3
+- Rebuild to fix coq dependency
+- Convert License tag to SPDX
+
+* Sat Jul 23 2022 Fedora Release Engineering - 1.5.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
+
+* Tue Jul 19 2022 Jerry James - 1.5.0-1
+- Remove i686 support
+
+* Thu Jul 7 2022 Jerry James - 1.5.0-1
+- Version 1.5.0
+- Add ocaml-mlmpfr support
+- Drop unmaintained man pages
+- Use new OCaml macros
+
+* Sun Jun 19 2022 Richard W.M. Jones - 1.4.1-3
+- OCaml 4.14.0 rebuild
+
+* Fri Mar 25 2022 Jerry James - 1.4.1-2
+- Rebuild for coq 8.15.1
+
+* Mon Feb 28 2022 Jerry James - 1.4.1-1
+- Version 1.4.1
+
+* Fri Feb 04 2022 Richard W.M. Jones - 1.4.0-11
+- OCaml 4.13.1 rebuild to remove package notes
+
+* Sat Jan 22 2022 Fedora Release Engineering - 1.4.0-10
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
+
+* Mon Jan 17 2022 Jerry James - 1.4.0-9
+- Rebuild for menhir 20211230
+
+* Mon Dec 27 2021 Jerry James - 1.4.0-8
+- Rebuild for alt-ergo 2.3.0 and ocaml-zip 1.11
+
+* Tue Nov 30 2021 Jerry James - 1.4.0-7
+- Rebuild for coq 8.14.1, sexplib0 0.15.0 and menhir 20211128
+
+* Thu Oct 21 2021 Jerry James - 1.4.0-6
+- Rebuild for coq 8.14.0 and menhir 20211012
+- Add -coq8.14 patch
+- Drop XEmacs support
+
+* Tue Oct 05 2021 Richard W.M. Jones - 1.4.0-5
+- OCaml 4.13.1 build
+
+* Mon Oct 04 2021 Richard W.M. Jones - 1.4.0-4
+- Try to build on s390x with OCaml 4.13
+
+* Fri Jul 30 2021 Jerry James - 1.4.0-3
+- Rebuild for rebuilt coq
+
+* Fri Jul 23 2021 Fedora Release Engineering - 1.4.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
+
+* Wed Jul 14 2021 Jerry James - 1.4.0-1
+- Version 1.4.0
+- Drop all patches
+- Validate with appstreamcli instead of appstream-util
+
+* Tue Jun 8 2021 Jerry James - 1.3.3-9
+- Rebuild for ocaml-menhir 20210419
+
+* Wed Mar 3 2021 Jerry James - 1.3.3-8
+- Rebuild for coq 8.13.1 and ocaml-zarith 1.12
+
+* Tue Mar 2 11:18:12 GMT 2021 Richard W.M. Jones - 1.3.3-7
+- OCaml 4.12.0 build
+
+* Sat Feb 20 2021 Jerry James - 1.3.3-6
+- Rebuild for coq 8.13.0
+- Update metainfo and install in metainfodir
+
+* Wed Jan 27 2021 Fedora Release Engineering - 1.3.3-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
+
+* Sat Jan 2 2021 Jerry James - 1.3.3-4
+- Rebuild for flocq 3.4.0
+
+* Wed Dec 23 2020 Jerry James - 1.3.3-3
+- Rebuild for coq 8.12.2
+
+* Wed Dec 2 2020 Jerry James - 1.3.3-2
+- Rebuild for coq 8.12.1 and menhir 20201201
+
+* Fri Sep 25 2020 Jerry James - 1.3.3-1
+- Version 1.3.3
+
+* Wed Sep 02 2020 Richard W.M. Jones - 1.3.1-14
+- OCaml 4.11.1 rebuild
+
+* Tue Sep 1 2020 Jerry James - 1.3.1-13
+- Rebuild for coq 8.12.0
+
+* Mon Aug 24 2020 Richard W.M. Jones - 1.3.1-13
+- OCaml 4.11.0 rebuild
+
+* Thu Aug 6 2020 Jerry James - 1.3.1-12
+- Rebuild for ocaml-lablgtk3 3.1.1 and ocaml-menhir 20200624
+
+* Wed Jul 29 2020 Fedora Release Engineering - 1.3.1-11
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
+
+* Mon Jun 15 2020 Jerry James - 1.3.1-10
+- Rebuild for coq 8.11.2
+
+* Sat Jun 13 2020 Jerry James - 1.3.1-9
+- Rebuild for flocq 3.3.1
+- Build the coq files with the native compiler when possible
+
+* Wed May 20 2020 Jerry James - 1.3.1-8
+- Rebuild for coq 8.11.1
+
+* Tue May 05 2020 Richard W.M. Jones - 1.3.1-7
+- OCaml 4.11.0+dev2-2020-04-22 rebuild
+
+* Sun Apr 12 2020 Jerry James - 1.3.1-6
+- Make the dependencies on ocaml-num and ocaml-zip explicit (bz 1795083)
+
+* Wed Apr 8 2020 Jerry James - 1.3.1-5
+- Rebuild for flocq 3.2.1
+
+* Sun Apr 05 2020 Richard W.M. Jones - 1.3.1-4
+- Update all OCaml dependencies for RPM 4.16.
+
+* Wed Apr 1 2020 Jerry James - 1.3.1-3
+- Do not build with mlmpfr; symbols clash with mlgmpidl, causing frama-c to
+ fail to start
+- Obsolete the why2 packages
+
+* Sat Mar 28 2020 Jerry James - 1.3.1-2
+- Remove useless BRs and Rs (bz 1817878)
+
+* Wed Mar 25 2020 Jerry James - 1.3.1-1
+- Version 1.3.1
+
+* Fri Jan 31 2020 Fedora Release Engineering - 1.2.1-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
+
+* Wed Jan 22 2020 Jerry James - 1.2.1-3
+- OCaml 4.10.0+beta1 rebuild.
+
+* Fri Dec 06 2019 Richard W.M. Jones - 1.2.1-2
+- OCaml 4.09.0 (final) rebuild.
+
+* Tue Oct 29 2019 Jerry James - 1.2.1-1
+- New upstream release
+- Add -proofgeneral subpackage
+- Add desktop and AppData files
+
+* Fri Oct 11 2019 Jerry James - 1.2.0-6
+- Rebuild for ocaml-menhir 20190924
+
+* Fri Sep 6 2019 Jerry James - 1.2.0-5
+- Rebuild for ocaml-zarith 1.9
+
+* Thu Aug 1 2019 Jerry James - 1.2.0-4
+- Also install the library, for consumption by frama-c
+
+* Thu Aug 1 2019 Jerry James - 1.2.0-3
+- Rebuild for flocq 3.2.0
+
+* Sat Jul 27 2019 Fedora Release Engineering - 1.2.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
+
+* Wed Jun 5 2019 Jerry James - 1.2.0-1
+- New upstream release
+
+* Sun Feb 03 2019 Fedora Release Engineering - 1.1.1-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
+
+* Sat Jan 26 2019 Jerry James - 1.1.1-1
+- New upstream release
+
+* Sat Jul 14 2018 Fedora Release Engineering - 0.88.3-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
+
+* Thu Jul 12 2018 Richard W.M. Jones - 0.88.3-4
+- OCaml 4.07.0 (final) rebuild.
+
+* Wed Jun 20 2018 Richard W.M. Jones - 0.88.3-3
+- Bump release and rebuild.
+
+* Wed Jun 20 2018 Richard W.M. Jones - 0.88.3-2
+- OCaml 4.07.0-rc1 rebuild.
+
+* Mon Feb 12 2018 Jerry James - 0.88.3-1
+- New upstream release
+
+* Fri Feb 09 2018 Fedora Release Engineering - 0.88.2-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
+
+* Sat Dec 9 2017 Jerry James - 0.88.2-1
+- New upstream release
+
+* Fri Nov 17 2017 Richard W.M. Jones - 0.88.1-1
+- New upstream version 0.88.1.
+- OCaml 4.06.0 rebuild.
+
+* Sat Oct 7 2017 Jerry James