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/115] 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/115] 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/115] 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/115] - 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/115] 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/115] 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/115] 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/115] 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/115] 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 eea8d2a813b5e8e882c76fd24230028aeffceed9 Mon Sep 17 00:00:00 2001 From: Jerry James Date: Fri, 10 Apr 2020 13:00:27 -0600 Subject: [PATCH 010/115] Rebuild without zip support; otherwise frama-c cannot start. --- why3.spec | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/why3.spec b/why3.spec index 4900984..78c27c0 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 @@ -40,7 +40,6 @@ BuildRequires: ocaml-menhir-devel BuildRequires: ocaml-num-devel BuildRequires: ocaml-sqlite-devel BuildRequires: ocaml-zarith-devel -BuildRequires: ocaml-zip-devel BuildRequires: pkgconfig(gtksourceview-2.0) BuildRequires: rubber BuildRequires: tex(comment.sty) @@ -112,7 +111,6 @@ Summary: Development files for using the ocaml-%{name} library Requires: ocaml-%{name}%{?_isa} = %{version}-%{release} Requires: ocaml-menhir-devel%{?_isa} Requires: ocaml-num-devel%{?_isa} -Requires: ocaml-zip-devel%{?_isa} %description -n ocaml-%{name}-devel This package contains development files needed to build applications @@ -289,6 +287,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \ %files all %changelog +* Fri Apr 10 2020 Jerry James - 1.2.1-2 +- Rebuild without zip support; otherwise frama-c cannot start + * Tue Oct 29 2019 Jerry James - 1.2.1-1 - New upstream release - Add -proofgeneral subpackage From 957d86beca9b1aa57fe94e8a5944d5e03a22f0e9 Mon Sep 17 00:00:00 2001 From: Jerry James Date: Sun, 12 Apr 2020 11:28:51 -0600 Subject: [PATCH 011/115] 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 bdc120e12724629aa47c6d818f89dcf10b8b407d Mon Sep 17 00:00:00 2001 From: Jerry James Date: Sun, 12 Apr 2020 13:30:17 -0600 Subject: [PATCH 012/115] Make the dependency on ocaml-num explicit (bz 1795083). --- why3.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/why3.spec b/why3.spec index 78c27c0..312c0a2 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 @@ -101,6 +101,7 @@ based on Why3, including various automated and interactive provers. %package -n ocaml-%{name} Summary: Software verification library for ocaml +Requires: ocaml-num%{?_isa} %description -n ocaml-%{name} This package contains an ocaml library that exposes the functionality @@ -287,6 +288,9 @@ chmod 0755 %{buildroot}%{_bindir}/* \ %files all %changelog +* Sun Apr 12 2020 Jerry James - 1.2.1-3 +- Make the dependency on ocaml-num explicit (bz 1795083) + * Fri Apr 10 2020 Jerry James - 1.2.1-2 - Rebuild without zip support; otherwise frama-c cannot start 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 013/115] 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 014/115] 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 015/115] 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 016/115] 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 017/115] - 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 018/115] 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 019/115] 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 020/115] +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 021/115] 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 022/115] 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 023/115] 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 024/115] 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 025/115] 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 026/115] 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 027/115] 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 028/115] 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 029/115] - 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 030/115] 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 031/115] 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 032/115] 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 033/115] 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 034/115] 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 035/115] - 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 036/115] 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 037/115] 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 038/115] 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 039/115] 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 040/115] 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 041/115] 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 042/115] 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 043/115] - 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 044/115] 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 045/115] 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 046/115] 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 047/115] 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 048/115] 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 049/115] 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 050/115] 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 051/115] 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 052/115] 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 053/115] 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 054/115] 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 055/115] 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 056/115] 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 057/115] 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 058/115] 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 059/115] 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 060/115] 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 061/115] 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 062/115] 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 063/115] 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 064/115] 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 065/115] 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 066/115] 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 067/115] 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 068/115] 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 069/115] 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 070/115] 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 071/115] 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 072/115] 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 073/115] 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 074/115] 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 075/115] 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 076/115] 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 077/115] 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 078/115] 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 079/115] 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 080/115] 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 081/115] 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 082/115] 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 083/115] 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 084/115] 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 085/115] 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 086/115] 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 087/115] 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 088/115] 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 - 0.88.0-1 +- New usptream release + +* Thu Oct 5 2017 Jerry James - 0.87.3-12 +- Rebuild for flocq 2.6.0 + +* Wed Sep 06 2017 Richard W.M. Jones - 0.87.3-11 +- OCaml 4.05.0 rebuild. + +* Thu Aug 03 2017 Fedora Release Engineering - 0.87.3-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 0.87.3-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Tue Jun 27 2017 Richard W.M. Jones - 0.87.3-8 +- Bump release and rebuild. + +* Tue Jun 27 2017 Richard W.M. Jones - 0.87.3-7 +- Bump release and rebuild. + +* Tue Jun 27 2017 Richard W.M. Jones - 0.87.3-6 +- Bump release and rebuild. + +* Tue Jun 27 2017 Richard W.M. Jones - 0.87.3-5 +- OCaml 4.04.2 rebuild. + +* Fri May 12 2017 Richard W.M. Jones - 0.87.3-4 +- OCaml 4.04.1 rebuild. + +* Fri Mar 24 2017 Jerry James - 0.87.3-3 +- Rebuild to fix coq consistency issue + +* Sat Feb 11 2017 Fedora Release Engineering - 0.87.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Thu Jan 12 2017 Jerry James - 0.87.3-1 +- New upstream release + +* Mon Nov 07 2016 Richard W.M. Jones - 0.87.2-4 +- Rebuild for OCaml 4.04.0. + +* Fri Oct 28 2016 Jerry James - 0.87.2-3 +- Rebuild for coq 8.5pl3 +- Remove obsolete scriptlets +- Fix install location of why3lang.sty + +* Thu Sep 29 2016 Jerry James - 0.87.2-2 +- Rebuild for flocq 2.5.2 and gappalib-coq 1.3.1 + +* Fri Sep 2 2016 Jerry James - 0.87.2-1 +- New upstream release + +* Wed Jul 13 2016 Jerry James - 0.87.1-2 +- Rebuild for coq 8.5pl2 + +* Wed Jun 1 2016 Jerry James - 0.87.1-1 +- New upstream release + +* Fri Apr 22 2016 Jerry James - 0.87.0-3 +- Rebuild for coq 8.5pl1 + +* Sat Apr 16 2016 Jerry James - 0.87.0-2 +- Rebuild for ocaml-ocamlgraph 1.8.7 + +* Fri Mar 18 2016 Jerry James - 0.87.0-1 +- New upstream release +- Drop boomy icon removal; upstream no longer ships them + +* Fri Feb 12 2016 Jerry James - 0.86.3-1 +- New upstream release +- Use camlp4 in preference to camlp5 + +* Fri Feb 05 2016 Fedora Release Engineering - 0.86.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Wed Nov 25 2015 Jerry James - 0.86.2-2 +- Rebuild for ocaml-zarith 1.4.1 and ocaml-menhir 20151112 + +* Wed Oct 14 2015 Jerry James - 0.86.2-1 +- New upstream release +- Do not ship the nonfree boomy icons + +* Wed Jun 24 2015 Richard W.M. Jones - 0.86.1-2 +- ocaml-4.02.2 final rebuild. + +* Mon Jun 22 2015 Jerry James - 0.86.1-1 +- New upstream release + +* Wed Jun 17 2015 Richard W.M. Jones - 0.86-2 +- ocaml-4.02.2 rebuild. + +* Sat May 16 2015 Jerry James - 0.86-1 +- New upstream release + +* Sat Apr 11 2015 Jerry James - 0.85-9 +- Rebuild for coq 8.4pl6 + +* Wed Mar 18 2015 Jerry James - 0.85-8 +- Rebuild for ocaml-ocamlgraph 1.8.6 + +* Sat Feb 21 2015 Jerry James - 0.85-7 +- Note bundled jquery +- Fix sed expression separators for new RPM_OPT_FLAGS and RPM_LD_FLAGS + +* Wed Feb 18 2015 Richard W.M. Jones - 0.85-6 +- ocaml-4.02.1 rebuild. + +* Thu Nov 6 2014 Jerry James - 0.85-5 +- Rebuild for ocaml-camlp5 6.12 + +* Thu Oct 30 2014 Jerry James - 0.85-4 +- Rebuild for coq 8.4pl5 + +* Tue Oct 14 2014 Jerry James - 0.85-3 +- Rebuild for ocaml-zarith 1.3 + +* Thu Sep 18 2014 Jerry James - 0.85-2 +- Bump and rebuild + +* Wed Sep 17 2014 Jerry James - 0.85-1 +- New upstream release +- New source URL + +* Tue Sep 2 2014 Jerry James - 0.84-1 +- New upstream release +- Fix license handling + +* Mon Aug 25 2014 Jerry James - 0.83-14 +- Rebuild for new gappalib-coq build + +* Sun Aug 24 2014 Richard W.M. Jones - 0.83-13 +- ocaml-4.02.0+rc1 rebuild. + +* Mon Aug 18 2014 Fedora Release Engineering - 0.83-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Mon Aug 4 2014 Jerry James - 0.83-11 +- Rebuild for new gappalib-coq build + +* Sat Aug 02 2014 Richard W.M. Jones - 0.83-10 +- ocaml-4.02.0-0.8.git10e45753.fc22 rebuild. + +* Fri Aug 01 2014 Richard W.M. Jones - 0.83-9 +- OCaml 4.02.0 beta rebuild. + +* Thu Jun 26 2014 Jerry James - 0.83-8 +- Linking with -z relro -z now breaks plugins; omit "-z now" + +* Sun Jun 08 2014 Fedora Release Engineering - 0.83-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Tue May 13 2014 Jerry James - 0.83-6 +- Rebuild for coq 8.4pl4 + +* Mon Apr 21 2014 Jerry James - 0.83-5 +- Rebuild for flocq 2.3.0 and ocamlgraph 1.8.5 +- Drop unnecessary sqlite-devel BR + +* Tue Apr 15 2014 Richard W.M. Jones - 0.83-4 +- Remove ocaml_arches macro (RHBZ#1087794). + +* Mon Mar 24 2014 Jerry James - 0.83-3 +- Apply upstream fix for building with ocaml-zarith +- Fix file encodings +- Fix permission bits + +* Tue Mar 18 2014 Jerry James - 0.83-2 +- Back out the post-release fix to the Coq printer, which breaks Frama-C + +* Fri Mar 14 2014 Jerry James - 0.83-1 +- New upstream release +- Use cvc4 instead of cvc3 + +* Wed Feb 26 2014 Jerry James - 0.82-2 +- Rebuild for ocamlgraph 1.8.4 +- BR ocaml-findlib instead of ocaml-findlib-devel + +* Fri Dec 13 2013 Jerry James - 0.82-1 +- New upstream release +- Drop upstreamed patches +- Add -examples subpackage +- Install LaTeX style +- Turn off frama-c support at upstream's request + +* Mon Sep 30 2013 Jerry James - 0.81-6 +- Apply upstream fix for change in the alt-ergo timelimit option + +* Tue Sep 17 2013 Jerry James - 0.81-5 +- Rebuild for OCaml 4.01.0 +- Enable debuginfo for the ocaml sources + +* Sun Aug 04 2013 Fedora Release Engineering - 0.81-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Fri Jun 21 2013 Jerry James - 0.81-3 +- Rebuild for frama-c Fluorine 20130601 + +* Thu May 23 2013 Jerry James - 0.81-2 +- Rebuild for frama-c Fluorine 20130501 + +* Fri May 10 2013 Jerry James - 0.81-1 +- New upstream release +- Disable PVS support for now; it requires the NASA libraries +- Fix the conflict between the why and why3 Emacs packages (bz 913522) +- Disable parallel builds due to intermittent build failures + +* Fri Feb 15 2013 Fedora Release Engineering - 0.73-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Mon Jan 7 2013 Jerry James - 0.73-4 +- Rebuild for coq 8.4pl1 + +* Fri Dec 14 2012 Richard W.M. Jones - 0.73-3 +- Rebuild for OCaml 4.00.1. + +* Thu Aug 23 2012 Jerry James - 0.73-2 +- Rebuild for coq 8.4 + +* Thu Aug 2 2012 Jerry James - 0.73-1 +- New upstream release + +* Sun Jul 22 2012 Fedora Release Engineering - 0.71-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Thu Apr 19 2012 Jerry James - 0.71-2 +- Add missing sqlite-devel BR +- Do not move the coq plugin +- Generate debuginfo for the sole C program +- Add man pages + +* Fri Dec 16 2011 Jerry James - 0.71-1 +- Initial RPM diff --git a/why3.spec b/why3.spec index 9a05440..c88a5be 100644 --- a/why3.spec +++ b/why3.spec @@ -8,7 +8,7 @@ ExclusiveArch: %{ocaml_native_compiler} Name: why3 Version: 1.7.2 -Release: 10%{?dist} +Release: %autorelease Summary: Software verification platform License: LGPL-2.1-only WITH OCaml-LGPL-linking-exception @@ -283,537 +283,4 @@ 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 - -* 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 - 0.88.0-1 -- New usptream release - -* Thu Oct 5 2017 Jerry James - 0.87.3-12 -- Rebuild for flocq 2.6.0 - -* Wed Sep 06 2017 Richard W.M. Jones - 0.87.3-11 -- OCaml 4.05.0 rebuild. - -* Thu Aug 03 2017 Fedora Release Engineering - 0.87.3-10 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild - -* Thu Jul 27 2017 Fedora Release Engineering - 0.87.3-9 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Tue Jun 27 2017 Richard W.M. Jones - 0.87.3-8 -- Bump release and rebuild. - -* Tue Jun 27 2017 Richard W.M. Jones - 0.87.3-7 -- Bump release and rebuild. - -* Tue Jun 27 2017 Richard W.M. Jones - 0.87.3-6 -- Bump release and rebuild. - -* Tue Jun 27 2017 Richard W.M. Jones - 0.87.3-5 -- OCaml 4.04.2 rebuild. - -* Fri May 12 2017 Richard W.M. Jones - 0.87.3-4 -- OCaml 4.04.1 rebuild. - -* Fri Mar 24 2017 Jerry James - 0.87.3-3 -- Rebuild to fix coq consistency issue - -* Sat Feb 11 2017 Fedora Release Engineering - 0.87.3-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild - -* Thu Jan 12 2017 Jerry James - 0.87.3-1 -- New upstream release - -* Mon Nov 07 2016 Richard W.M. Jones - 0.87.2-4 -- Rebuild for OCaml 4.04.0. - -* Fri Oct 28 2016 Jerry James - 0.87.2-3 -- Rebuild for coq 8.5pl3 -- Remove obsolete scriptlets -- Fix install location of why3lang.sty - -* Thu Sep 29 2016 Jerry James - 0.87.2-2 -- Rebuild for flocq 2.5.2 and gappalib-coq 1.3.1 - -* Fri Sep 2 2016 Jerry James - 0.87.2-1 -- New upstream release - -* Wed Jul 13 2016 Jerry James - 0.87.1-2 -- Rebuild for coq 8.5pl2 - -* Wed Jun 1 2016 Jerry James - 0.87.1-1 -- New upstream release - -* Fri Apr 22 2016 Jerry James - 0.87.0-3 -- Rebuild for coq 8.5pl1 - -* Sat Apr 16 2016 Jerry James - 0.87.0-2 -- Rebuild for ocaml-ocamlgraph 1.8.7 - -* Fri Mar 18 2016 Jerry James - 0.87.0-1 -- New upstream release -- Drop boomy icon removal; upstream no longer ships them - -* Fri Feb 12 2016 Jerry James - 0.86.3-1 -- New upstream release -- Use camlp4 in preference to camlp5 - -* Fri Feb 05 2016 Fedora Release Engineering - 0.86.2-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild - -* Wed Nov 25 2015 Jerry James - 0.86.2-2 -- Rebuild for ocaml-zarith 1.4.1 and ocaml-menhir 20151112 - -* Wed Oct 14 2015 Jerry James - 0.86.2-1 -- New upstream release -- Do not ship the nonfree boomy icons - -* Wed Jun 24 2015 Richard W.M. Jones - 0.86.1-2 -- ocaml-4.02.2 final rebuild. - -* Mon Jun 22 2015 Jerry James - 0.86.1-1 -- New upstream release - -* Wed Jun 17 2015 Richard W.M. Jones - 0.86-2 -- ocaml-4.02.2 rebuild. - -* Sat May 16 2015 Jerry James - 0.86-1 -- New upstream release - -* Sat Apr 11 2015 Jerry James - 0.85-9 -- Rebuild for coq 8.4pl6 - -* Wed Mar 18 2015 Jerry James - 0.85-8 -- Rebuild for ocaml-ocamlgraph 1.8.6 - -* Sat Feb 21 2015 Jerry James - 0.85-7 -- Note bundled jquery -- Fix sed expression separators for new RPM_OPT_FLAGS and RPM_LD_FLAGS - -* Wed Feb 18 2015 Richard W.M. Jones - 0.85-6 -- ocaml-4.02.1 rebuild. - -* Thu Nov 6 2014 Jerry James - 0.85-5 -- Rebuild for ocaml-camlp5 6.12 - -* Thu Oct 30 2014 Jerry James - 0.85-4 -- Rebuild for coq 8.4pl5 - -* Tue Oct 14 2014 Jerry James - 0.85-3 -- Rebuild for ocaml-zarith 1.3 - -* Thu Sep 18 2014 Jerry James - 0.85-2 -- Bump and rebuild - -* Wed Sep 17 2014 Jerry James - 0.85-1 -- New upstream release -- New source URL - -* Tue Sep 2 2014 Jerry James - 0.84-1 -- New upstream release -- Fix license handling - -* Mon Aug 25 2014 Jerry James - 0.83-14 -- Rebuild for new gappalib-coq build - -* Sun Aug 24 2014 Richard W.M. Jones - 0.83-13 -- ocaml-4.02.0+rc1 rebuild. - -* Mon Aug 18 2014 Fedora Release Engineering - 0.83-12 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild - -* Mon Aug 4 2014 Jerry James - 0.83-11 -- Rebuild for new gappalib-coq build - -* Sat Aug 02 2014 Richard W.M. Jones - 0.83-10 -- ocaml-4.02.0-0.8.git10e45753.fc22 rebuild. - -* Fri Aug 01 2014 Richard W.M. Jones - 0.83-9 -- OCaml 4.02.0 beta rebuild. - -* Thu Jun 26 2014 Jerry James - 0.83-8 -- Linking with -z relro -z now breaks plugins; omit "-z now" - -* Sun Jun 08 2014 Fedora Release Engineering - 0.83-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild - -* Tue May 13 2014 Jerry James - 0.83-6 -- Rebuild for coq 8.4pl4 - -* Mon Apr 21 2014 Jerry James - 0.83-5 -- Rebuild for flocq 2.3.0 and ocamlgraph 1.8.5 -- Drop unnecessary sqlite-devel BR - -* Tue Apr 15 2014 Richard W.M. Jones - 0.83-4 -- Remove ocaml_arches macro (RHBZ#1087794). - -* Mon Mar 24 2014 Jerry James - 0.83-3 -- Apply upstream fix for building with ocaml-zarith -- Fix file encodings -- Fix permission bits - -* Tue Mar 18 2014 Jerry James - 0.83-2 -- Back out the post-release fix to the Coq printer, which breaks Frama-C - -* Fri Mar 14 2014 Jerry James - 0.83-1 -- New upstream release -- Use cvc4 instead of cvc3 - -* Wed Feb 26 2014 Jerry James - 0.82-2 -- Rebuild for ocamlgraph 1.8.4 -- BR ocaml-findlib instead of ocaml-findlib-devel - -* Fri Dec 13 2013 Jerry James - 0.82-1 -- New upstream release -- Drop upstreamed patches -- Add -examples subpackage -- Install LaTeX style -- Turn off frama-c support at upstream's request - -* Mon Sep 30 2013 Jerry James - 0.81-6 -- Apply upstream fix for change in the alt-ergo timelimit option - -* Tue Sep 17 2013 Jerry James - 0.81-5 -- Rebuild for OCaml 4.01.0 -- Enable debuginfo for the ocaml sources - -* Sun Aug 04 2013 Fedora Release Engineering - 0.81-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild - -* Fri Jun 21 2013 Jerry James - 0.81-3 -- Rebuild for frama-c Fluorine 20130601 - -* Thu May 23 2013 Jerry James - 0.81-2 -- Rebuild for frama-c Fluorine 20130501 - -* Fri May 10 2013 Jerry James - 0.81-1 -- New upstream release -- Disable PVS support for now; it requires the NASA libraries -- Fix the conflict between the why and why3 Emacs packages (bz 913522) -- Disable parallel builds due to intermittent build failures - -* Fri Feb 15 2013 Fedora Release Engineering - 0.73-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild - -* Mon Jan 7 2013 Jerry James - 0.73-4 -- Rebuild for coq 8.4pl1 - -* Fri Dec 14 2012 Richard W.M. Jones - 0.73-3 -- Rebuild for OCaml 4.00.1. - -* Thu Aug 23 2012 Jerry James - 0.73-2 -- Rebuild for coq 8.4 - -* Thu Aug 2 2012 Jerry James - 0.73-1 -- New upstream release - -* Sun Jul 22 2012 Fedora Release Engineering - 0.71-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild - -* Thu Apr 19 2012 Jerry James - 0.71-2 -- Add missing sqlite-devel BR -- Do not move the coq plugin -- Generate debuginfo for the sole C program -- Add man pages - -* Fri Dec 16 2011 Jerry James - 0.71-1 -- Initial RPM +%autochangelog From d46d748db4f410b4117a3991120477b724062201 Mon Sep 17 00:00:00 2001 From: Jerry James Date: Fri, 10 Jan 2025 10:30:03 -0700 Subject: [PATCH 089/115] OCaml 5.3.0 rebuild for Fedora 42 - Version 1.8.0 - Disable documentation build due to bugs in 1.8.0 --- sources | 2 +- why3-link-order.patch | 20 ++++++++++++++++++++ why3.spec | 28 ++++++++++++++++++---------- 3 files changed, 39 insertions(+), 11 deletions(-) create mode 100644 why3-link-order.patch diff --git a/sources b/sources index a941d8e..99a1865 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (why3-1.7.2.tar.gz) = 7e80671480ce0dc3c69514bea2836f5899c686b43a4e8607c27d28e63f78150150dc45fcac5760dbee9721d363e456b1dcaeb1501fc9f63f360722a1021f675f +SHA512 (why3-1.8.0.tar.gz) = 8d30ac4a1280a7d7741ef862365e06aa3218a78fd01ca7f969f0d6515245c7259fcc81897bfe08c581c6b37639d1465ab4a96657f3baf4c747988df8201d4549 diff --git a/why3-link-order.patch b/why3-link-order.patch new file mode 100644 index 0000000..25cfeec --- /dev/null +++ b/why3-link-order.patch @@ -0,0 +1,20 @@ +Fixes this error: + +File "_none_", line 1: +Error: Forward reference to "Ptree_helpers" in file "src/bddinfer/why3infer.cmo" + +--- why3-1.8.0/Makefile.in.orig 2024-12-11 06:21:37.000000000 -0700 ++++ why3-1.8.0/Makefile.in 2024-12-16 10:27:14.100846332 -0700 +@@ -318,10 +318,10 @@ LIBMODULES = $(addprefix src/util/, $(L + $(addprefix src/core/, $(LIB_CORE)) \ + $(addprefix src/driver/, $(LIB_DRIVER)) \ + $(addprefix src/mlw/, $(LIB_MLW)) \ +- $(addprefix src/infer/, $(LIB_INFER)) \ +- $(addprefix src/bddinfer/, $(LIB_BDDINFER)) \ + $(addprefix src/extract/, $(LIB_EXTRACT)) \ + $(addprefix src/parser/, $(LIB_PARSER)) \ ++ $(addprefix src/infer/, $(LIB_INFER)) \ ++ $(addprefix src/bddinfer/, $(LIB_BDDINFER)) \ + $(addprefix src/transform/, $(LIB_TRANSFORM)) \ + $(addprefix src/printer/, $(LIB_PRINTER)) \ + $(addprefix src/session/, $(LIB_SESSION)) diff --git a/why3.spec b/why3.spec index c88a5be..df74310 100644 --- a/why3.spec +++ b/why3.spec @@ -7,7 +7,7 @@ ExclusiveArch: %{ocaml_native_compiler} # release. Name: why3 -Version: 1.7.2 +Version: 1.8.0 Release: %autorelease Summary: Software verification platform @@ -19,12 +19,15 @@ Source0: https://why3.gitlabpages.inria.fr/releases/%{name}-%{version}.ta Source1: fr.lri.%{name}.desktop # AppData file written by Jerry James Source2: fr.lri.%{name}.metainfo.xml +# Fix a link order issue +Patch: %{name}-link-order.patch BuildRequires: coq BuildRequires: emacs-nw BuildRequires: emacs-proofgeneral BuildRequires: flocq BuildRequires: graphviz +BuildRequires: java-devel BuildRequires: latexmk BuildRequires: libappstream-glib BuildRequires: make @@ -69,10 +72,7 @@ Recommends: flocq 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 F39 reaches EOL -Obsoletes: %{name}-xemacs < 1.4.0-4 +%global __requires_exclude ocaml\\\(Driver_ast\\\) %description Why3 is the next generation of the Why software verification platform. @@ -141,6 +141,7 @@ This package provides a why3 plugin for ProofGeneral. %prep %autosetup -p1 +%conf fixtimestamp() { touch -r $1.orig $1 rm $1.orig @@ -149,20 +150,26 @@ 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|%{build_cflags}|;s/ -O -g//" \ - -e "s/cp /cp -p /" \ - -e "s|^OLINKFLAGS =.*|& -runtime-variant _pic -ccopt \"%{build_ldflags}\"|" \ +sed -e 's|-Wall|%{build_cflags} %{build_ldflags}|;s/ -O -g//' \ + -e 's/cp /cp -p /' \ + -e 's|^OLINKFLAGS =.*|& -runtime-variant _pic -ccopt "%{build_ldflags}"|' \ -i Makefile.in # Update the ProofGeneral integration instructions sed -i.orig 's,(MY_PATH_TO_WHY3)/share/whyitp,%{_emacs_sitelispdir},' share/whyitp/README fixtimestamp share/whyitp/README +# Fix a configure script typo +sed -i 's/\$(OCAMLC/$(ocamlc/' configure + %build %configure --enable-verbose-make --enable-bddinfer +# Work around a Makefile bug in version 1.8.0 +ln -s why3.opt bin/why3 # FIXME: Parallel make sometimes fails make -make doc +# The documentation build is broken in the 1.8.0 release +# make doc rm -f doc/html/.buildinfo examples/use_api/.merlin.in %install @@ -232,7 +239,7 @@ chmod 0755 %{buildroot}%{_bindir}/* \ %{buildroot}%{ocamldir}/%{name}/*.cmxs %files -%doc AUTHORS CHANGES.md README.md doc/html doc/latex/manual.pdf +%doc AUTHORS CHANGES.md README.md %license LICENSE %{_bindir}/%{name} %{_bindir}/isabelle_client @@ -240,6 +247,7 @@ chmod 0755 %{buildroot}%{_bindir}/* \ %{zsh_completions_dir}/_why3 %{_datadir}/%{name}/ %{_datadir}/applications/fr.lri.%{name}.desktop +%{_datadir}/gtksourceview-3.0/language-specs/coma.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 From 3d1348dd5660beb4af7da040490f838e24bdd8ac Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sun, 19 Jan 2025 15:00:39 +0000 Subject: [PATCH 090/115] Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild From 7ab80d8d3e5d9831bf3b570fa686a87e281db5b0 Mon Sep 17 00:00:00 2001 From: Jerry James Date: Wed, 22 Jan 2025 16:01:25 -0700 Subject: [PATCH 091/115] Add patch for C23 compatibility --- why3-c23.patch | 25 +++++++++++++++++++++++++ why3.spec | 2 ++ 2 files changed, 27 insertions(+) create mode 100644 why3-c23.patch diff --git a/why3-c23.patch b/why3-c23.patch new file mode 100644 index 0000000..736756b --- /dev/null +++ b/why3-c23.patch @@ -0,0 +1,25 @@ +Fixes this error: + +src/server/cpulimit-unix.c: In function ‘main’: +src/server/cpulimit-unix.c:95:23: error: assignment to ‘__sighandler_t’ {aka ‘void (*)(int)’} from incompatible pointer type ‘void (*)(void)’ [-Wincompatible-pointer-types] + 95 | sa.sa_handler = &wallclock_timelimit_reached; + | ^ +src/server/cpulimit-unix.c:45:6: note: ‘wallclock_timelimit_reached’ declared here + 45 | void wallclock_timelimit_reached() { + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ +In file included from src/server/cpulimit-unix.c:22: +/usr/include/signal.h:72:16: note: ‘__sighandler_t’ declared here + 72 | typedef void (*__sighandler_t) (int); + | ^~~~~~~~~~~~~~ + +--- why3-1.8.0/src/server/cpulimit-unix.c.orig 2024-12-11 06:21:37.000000000 -0700 ++++ why3-1.8.0/src/server/cpulimit-unix.c 2025-01-22 14:48:28.808369208 -0700 +@@ -42,7 +42,7 @@ void show_time() { + } + } + +-void wallclock_timelimit_reached() { ++void wallclock_timelimit_reached([[maybe_unused]] int sig) { + fprintf(stderr, + "Why3cpulimit: wallclock timelimit %d reached, killing command\n", + wallclock_timelimit); diff --git a/why3.spec b/why3.spec index df74310..12b1211 100644 --- a/why3.spec +++ b/why3.spec @@ -21,6 +21,8 @@ Source1: fr.lri.%{name}.desktop Source2: fr.lri.%{name}.metainfo.xml # Fix a link order issue Patch: %{name}-link-order.patch +# Fix an incompatible pointer issue with C23 +Patch: %{name}-c23.patch BuildRequires: coq BuildRequires: emacs-nw From d9a95c61897bdaed6a1adb0b0f1fe6bbd5d9e942 Mon Sep 17 00:00:00 2001 From: Jerry James Date: Thu, 13 Feb 2025 14:41:57 -0700 Subject: [PATCH 092/115] Rebuild for flocq 4.2.1 From 525daf1052eea1914832f816692ff94ccd980c7b Mon Sep 17 00:00:00 2001 From: Jerry James Date: Tue, 15 Apr 2025 14:09:32 -0600 Subject: [PATCH 093/115] Rebuild for ocaml-ocamlgraph 2.2.0 From 9ec4d214c637445e124d5f5197dac87d39989de8 Mon Sep 17 00:00:00 2001 From: Jerry James Date: Sat, 7 Jun 2025 10:34:13 -0600 Subject: [PATCH 094/115] Rebuild for bumped ocaml-mlgmpidl From 92927d0b7d8189b623450fbb86fdb93ae7e7b8f1 Mon Sep 17 00:00:00 2001 From: Jerry James Date: Mon, 9 Jun 2025 15:05:43 -0600 Subject: [PATCH 095/115] Version 1.8.1 - All patches have been upstreamed --- sources | 2 +- why3-c23.patch | 25 ------------------------- why3-link-order.patch | 20 -------------------- why3.spec | 12 ++---------- 4 files changed, 3 insertions(+), 56 deletions(-) delete mode 100644 why3-c23.patch delete mode 100644 why3-link-order.patch diff --git a/sources b/sources index 99a1865..5946fe5 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (why3-1.8.0.tar.gz) = 8d30ac4a1280a7d7741ef862365e06aa3218a78fd01ca7f969f0d6515245c7259fcc81897bfe08c581c6b37639d1465ab4a96657f3baf4c747988df8201d4549 +SHA512 (why3-1.8.1.tar.gz) = b188b64cc8f116c2174e78d1ccb65dede0984265b8ed2fdf8160bf67e74bf9fb24cbb1d5b3c130f924424222b9241f89525cade66f5de7ef66d714eb2e6448b4 diff --git a/why3-c23.patch b/why3-c23.patch deleted file mode 100644 index 736756b..0000000 --- a/why3-c23.patch +++ /dev/null @@ -1,25 +0,0 @@ -Fixes this error: - -src/server/cpulimit-unix.c: In function ‘main’: -src/server/cpulimit-unix.c:95:23: error: assignment to ‘__sighandler_t’ {aka ‘void (*)(int)’} from incompatible pointer type ‘void (*)(void)’ [-Wincompatible-pointer-types] - 95 | sa.sa_handler = &wallclock_timelimit_reached; - | ^ -src/server/cpulimit-unix.c:45:6: note: ‘wallclock_timelimit_reached’ declared here - 45 | void wallclock_timelimit_reached() { - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ -In file included from src/server/cpulimit-unix.c:22: -/usr/include/signal.h:72:16: note: ‘__sighandler_t’ declared here - 72 | typedef void (*__sighandler_t) (int); - | ^~~~~~~~~~~~~~ - ---- why3-1.8.0/src/server/cpulimit-unix.c.orig 2024-12-11 06:21:37.000000000 -0700 -+++ why3-1.8.0/src/server/cpulimit-unix.c 2025-01-22 14:48:28.808369208 -0700 -@@ -42,7 +42,7 @@ void show_time() { - } - } - --void wallclock_timelimit_reached() { -+void wallclock_timelimit_reached([[maybe_unused]] int sig) { - fprintf(stderr, - "Why3cpulimit: wallclock timelimit %d reached, killing command\n", - wallclock_timelimit); diff --git a/why3-link-order.patch b/why3-link-order.patch deleted file mode 100644 index 25cfeec..0000000 --- a/why3-link-order.patch +++ /dev/null @@ -1,20 +0,0 @@ -Fixes this error: - -File "_none_", line 1: -Error: Forward reference to "Ptree_helpers" in file "src/bddinfer/why3infer.cmo" - ---- why3-1.8.0/Makefile.in.orig 2024-12-11 06:21:37.000000000 -0700 -+++ why3-1.8.0/Makefile.in 2024-12-16 10:27:14.100846332 -0700 -@@ -318,10 +318,10 @@ LIBMODULES = $(addprefix src/util/, $(L - $(addprefix src/core/, $(LIB_CORE)) \ - $(addprefix src/driver/, $(LIB_DRIVER)) \ - $(addprefix src/mlw/, $(LIB_MLW)) \ -- $(addprefix src/infer/, $(LIB_INFER)) \ -- $(addprefix src/bddinfer/, $(LIB_BDDINFER)) \ - $(addprefix src/extract/, $(LIB_EXTRACT)) \ - $(addprefix src/parser/, $(LIB_PARSER)) \ -+ $(addprefix src/infer/, $(LIB_INFER)) \ -+ $(addprefix src/bddinfer/, $(LIB_BDDINFER)) \ - $(addprefix src/transform/, $(LIB_TRANSFORM)) \ - $(addprefix src/printer/, $(LIB_PRINTER)) \ - $(addprefix src/session/, $(LIB_SESSION)) diff --git a/why3.spec b/why3.spec index 12b1211..b08043f 100644 --- a/why3.spec +++ b/why3.spec @@ -7,7 +7,7 @@ ExclusiveArch: %{ocaml_native_compiler} # release. Name: why3 -Version: 1.8.0 +Version: 1.8.1 Release: %autorelease Summary: Software verification platform @@ -19,10 +19,6 @@ Source0: https://why3.gitlabpages.inria.fr/releases/%{name}-%{version}.ta Source1: fr.lri.%{name}.desktop # AppData file written by Jerry James Source2: fr.lri.%{name}.metainfo.xml -# Fix a link order issue -Patch: %{name}-link-order.patch -# Fix an incompatible pointer issue with C23 -Patch: %{name}-c23.patch BuildRequires: coq BuildRequires: emacs-nw @@ -161,13 +157,9 @@ sed -e 's|-Wall|%{build_cflags} %{build_ldflags}|;s/ -O -g//' \ sed -i.orig 's,(MY_PATH_TO_WHY3)/share/whyitp,%{_emacs_sitelispdir},' share/whyitp/README fixtimestamp share/whyitp/README -# Fix a configure script typo -sed -i 's/\$(OCAMLC/$(ocamlc/' configure - %build %configure --enable-verbose-make --enable-bddinfer -# Work around a Makefile bug in version 1.8.0 -ln -s why3.opt bin/why3 + # FIXME: Parallel make sometimes fails make # The documentation build is broken in the 1.8.0 release From eef9515e6d3f9c7585829378f37d5abcbc4cc266 Mon Sep 17 00:00:00 2001 From: Jerry James Date: Sat, 12 Jul 2025 16:48:04 -0600 Subject: [PATCH 096/115] Rebuild to fix OCaml dependencies From ddf170d66aea5be37ff01884592f5c6f7ff84da6 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 25 Jul 2025 20:24:57 +0000 Subject: [PATCH 097/115] Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild From 25a38102cfc023541d69de0ba02609e6893a1f13 Mon Sep 17 00:00:00 2001 From: Jerry James Date: Sun, 10 Aug 2025 11:02:02 -0600 Subject: [PATCH 098/115] Bump and rebuild From 32bd519ce70092560444c001b8e8fc1becfcef12 Mon Sep 17 00:00:00 2001 From: Jerry James Date: Sun, 10 Aug 2025 11:23:17 -0600 Subject: [PATCH 099/115] Use %{vimfiles_root} --- why3.spec | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/why3.spec b/why3.spec index b08043f..331b1cc 100644 --- a/why3.spec +++ b/why3.spec @@ -212,10 +212,10 @@ appstream-util validate-relax --nonet \ %{buildroot}%{_metainfodir}/fr.lri.%{name}.metainfo.xml # Move the vim file to the right place -mkdir -p %{buildroot}%{_datadir}/vim/vimfiles +mkdir -p %{buildroot}%{vimfiles_root} mv %{buildroot}%{_datadir}/%{name}/vim/ftdetect \ %{buildroot}%{_datadir}/%{name}/vim/syntax \ - %{buildroot}%{_datadir}/vim/vimfiles + %{buildroot}%{vimfiles_root} # Byte compile the Emacs support files cp -p share/whyitp/whyitp.el %{buildroot}%{_emacs_sitelispdir} @@ -246,8 +246,8 @@ chmod 0755 %{buildroot}%{_bindir}/* \ %{_datadir}/gtksourceview-3.0/language-specs/%{name}c.lang %{_datadir}/gtksourceview-3.0/language-specs/%{name}py.lang %{_datadir}/icons/hicolor/scalable/apps/%{name}.svg -%{_datadir}/vim/vimfiles/ftdetect/%{name}.vim -%{_datadir}/vim/vimfiles/syntax/%{name}.vim +%{vimfiles_root}/ftdetect/%{name}.vim +%{vimfiles_root}/syntax/%{name}.vim %{_texmf}/tex/latex/why3/ %{_libdir}/%{name}/ %{_metainfodir}/fr.lri.%{name}.metainfo.xml From f24429dc72c9bfb48ed67ff3bc75193053d6a67e Mon Sep 17 00:00:00 2001 From: Jerry James Date: Sun, 10 Aug 2025 11:47:45 -0600 Subject: [PATCH 100/115] BR vim-filesystem for %{vimfiles_root} --- why3.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/why3.spec b/why3.spec index 331b1cc..75df845 100644 --- a/why3.spec +++ b/why3.spec @@ -58,6 +58,7 @@ BuildRequires: tex(tgtermes.sty) BuildRequires: tex(upquote.sty) BuildRequires: tex(wrapfig.sty) BuildRequires: tex-urlbst +BuildRequires: vim-filesystem Requires: gtksourceview3%{?_isa} Requires: hicolor-icon-theme From dfde276402c5a9086b1851e9e336766131057fb2 Mon Sep 17 00:00:00 2001 From: Jerry James Date: Fri, 22 Aug 2025 10:25:54 -0600 Subject: [PATCH 101/115] Rebuild for ocaml-unionfind 20250818 --- why3.spec | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/why3.spec b/why3.spec index 75df845..61a7d65 100644 --- a/why3.spec +++ b/why3.spec @@ -189,8 +189,8 @@ 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 -cp -p share/latex/why3lang.sty %{buildroot}%{_texmf}/tex/latex/why3 +mkdir -p %{buildroot}%{_texmf_main}/tex/latex/why3 +cp -p share/latex/why3lang.sty %{buildroot}%{_texmf_main}/tex/latex/why3 # Move the gtksourceview language file to the right place mkdir -p %{buildroot}%{_datadir}/gtksourceview-3.0 @@ -249,7 +249,7 @@ chmod 0755 %{buildroot}%{_bindir}/* \ %{_datadir}/icons/hicolor/scalable/apps/%{name}.svg %{vimfiles_root}/ftdetect/%{name}.vim %{vimfiles_root}/syntax/%{name}.vim -%{_texmf}/tex/latex/why3/ +%{_texmf_main}/tex/latex/why3/ %{_libdir}/%{name}/ %{_metainfodir}/fr.lri.%{name}.metainfo.xml From 5d0415f73c56af5a5b68b1322b6c07e69d706767 Mon Sep 17 00:00:00 2001 From: Jerry James Date: Fri, 5 Sep 2025 11:14:24 -0600 Subject: [PATCH 102/115] Rebuild for ocaml-menhir 20250903 From 10869d3c2e3e17871ea018f5e159a79b3cef5600 Mon Sep 17 00:00:00 2001 From: Jerry James Date: Tue, 16 Sep 2025 15:25:39 -0600 Subject: [PATCH 103/115] Version 1.8.2 --- sources | 2 +- why3.spec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sources b/sources index 5946fe5..f503a9e 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (why3-1.8.1.tar.gz) = b188b64cc8f116c2174e78d1ccb65dede0984265b8ed2fdf8160bf67e74bf9fb24cbb1d5b3c130f924424222b9241f89525cade66f5de7ef66d714eb2e6448b4 +SHA512 (why3-1.8.2.tar.gz) = a35e88fafe1aa29c36d2248c1a644eae85afa1bb7b3009193f4a5c28ba684d0882717d63733d8581a7c2cd5ec493e2d15c82baabef615b4d00323fa9309875f8 diff --git a/why3.spec b/why3.spec index 61a7d65..7174465 100644 --- a/why3.spec +++ b/why3.spec @@ -7,7 +7,7 @@ ExclusiveArch: %{ocaml_native_compiler} # release. Name: why3 -Version: 1.8.1 +Version: 1.8.2 Release: %autorelease Summary: Software verification platform From c7de9116b86ffb1506e5e56ad42d4cfdaa5fc4a1 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Tue, 14 Oct 2025 20:54:37 +0100 Subject: [PATCH 104/115] OCaml 5.4.0 rebuild From e51d1ba9fcf860fc0689885e3385774d47702fa9 Mon Sep 17 00:00:00 2001 From: Jerry James Date: Wed, 14 Jan 2026 08:53:03 -0700 Subject: [PATCH 105/115] Reflow the description text --- why3.spec | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/why3.spec b/why3.spec index 7174465..343cec9 100644 --- a/why3.spec +++ b/why3.spec @@ -74,12 +74,12 @@ Provides: bundled(js-jquery) %global __requires_exclude ocaml\\\(Driver_ast\\\) %description -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 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. %package examples Summary: Example inputs @@ -104,16 +104,16 @@ Requires: %{name}%{?_isa} = %{version}-%{release} Requires: alt-ergo coq cvc5 E gappa yices-tools z3 zenon %description all -This package provides a complete software verification platform suite -based on Why3, including various automated and interactive provers. +This package provides a complete software verification platform suite based on +Why3, including various automated and interactive provers. %package -n ocaml-%{name} Summary: Software verification library for ocaml Requires: ocaml-zip-devel%{?_isa} %description -n ocaml-%{name} -This package contains an ocaml library that exposes the functionality -of why3 to applications. +This package contains an ocaml library that exposes the functionality of why3 +to applications. %package -n ocaml-%{name}-devel Summary: Development files for using the ocaml-%{name} library @@ -125,8 +125,8 @@ Requires: ocaml-sexplib-devel%{?_isa} Requires: ocaml-zip-devel%{?_isa} %description -n ocaml-%{name}-devel -This package contains development files needed to build applications -that use the ocaml-%{name} library. +This package contains development files needed to build applications that use +the ocaml-%{name} library. %package proofgeneral Summary: Why3 integration with ProofGeneral From d3d801816f3931eb255e31ae6affe8b1f17533fd Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 17 Jan 2026 20:13:59 +0000 Subject: [PATCH 106/115] Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild From a4c3815695573390e5bec5846405432fcfe62bd3 Mon Sep 17 00:00:00 2001 From: Jerry James Date: Mon, 2 Feb 2026 16:26:22 -0700 Subject: [PATCH 107/115] Rebuild for ocaml-menhir 20260122 From e7d64b7f0f0b63d1490549dbc80b5c47a28a9195 Mon Sep 17 00:00:00 2001 From: Jerry James Date: Fri, 6 Feb 2026 17:00:40 -0700 Subject: [PATCH 108/115] Rebuild for ocaml-menhir 20260203 From 5a8173d697f7319ab0238dc45c4de2b942791eb5 Mon Sep 17 00:00:00 2001 From: Jerry James Date: Wed, 11 Feb 2026 20:03:06 -0700 Subject: [PATCH 109/115] Rebuild for ocaml-menhir-20260209 From 1889b3d497d0878b590075490921b32dc72abd8a Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Sat, 21 Feb 2026 00:12:57 +0000 Subject: [PATCH 110/115] OCaml 5.4.1 rebuild From f6d80e1a295c47c3582fab0e6bf2f1d5d943a8eb Mon Sep 17 00:00:00 2001 From: Jerry James Date: Thu, 19 Mar 2026 21:38:47 -0600 Subject: [PATCH 111/115] Rebuild for rocq 9.1.1 - Add patch to avoid Zmod, removed in rocq 9.1 --- why3-zmod.patch | 33 +++++++++++++++++++++++++++++++++ why3.spec | 5 ++++- 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 why3-zmod.patch diff --git a/why3-zmod.patch b/why3-zmod.patch new file mode 100644 index 0000000..48f3ae4 --- /dev/null +++ b/why3-zmod.patch @@ -0,0 +1,33 @@ +--- why3-1.8.2/lib/coq/bv/BV_Gen.v.orig 2025-09-16 09:37:32.000000000 -0600 ++++ why3-1.8.2/lib/coq/bv/BV_Gen.v 2026-03-03 17:07:31.885655859 -0700 +@@ -994,7 +994,7 @@ match p with + ((Vector.last prev) :: (Vector.shiftout prev)) + end. + +-Lemma mod1_is_mod : forall x y, y > 0 -> mod1 x y = Zmod x y. ++Lemma mod1_is_mod : forall x y, y > 0 -> mod1 x y = Z.modulo x y. + intros; unfold mod1, div. + case Z_le_dec; intro. + rewrite Z.mod_eq by lia; trivial. +--- why3-1.8.2/lib/coq/int/EuclideanDivision.v.orig 2025-09-16 09:37:32.000000000 -0600 ++++ why3-1.8.2/lib/coq/int/EuclideanDivision.v 2026-03-03 17:08:16.588687381 -0700 +@@ -21,7 +21,7 @@ Require Import Lia. + 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. ++case (Z_le_dec 0 (Z.modulo x y)) ; intros H. + exact (Z.div x y). + exact (Z.div x y + 1)%Z. + Defined. +--- why3-1.8.2/lib/coq/number/Divisibility.v.orig 2025-09-16 09:37:32.000000000 -0600 ++++ why3-1.8.2/lib/coq/number/Divisibility.v 2026-03-03 17:08:33.884500190 -0700 +@@ -203,7 +203,7 @@ Lemma divides_mod_euclidean : + divides b a -> ((int.EuclideanDivision.mod1 a b) = 0%Z). + Proof. + intros a b Zb H. +-assert (Zmod a b = Z0). ++assert (Z.modulo a b = Z0). + now apply Zdivide_mod. + unfold mod1, div. + rewrite H0. diff --git a/why3.spec b/why3.spec index 343cec9..2f0fe19 100644 --- a/why3.spec +++ b/why3.spec @@ -19,8 +19,10 @@ Source0: https://why3.gitlabpages.inria.fr/releases/%{name}-%{version}.ta Source1: fr.lri.%{name}.desktop # AppData file written by Jerry James Source2: fr.lri.%{name}.metainfo.xml +# The deprecated Zmod alias was removed in rocq-stdlib 9.1.0 +Patch: %{name}-zmod.patch -BuildRequires: coq +BuildRequires: coq-core-compat BuildRequires: emacs-nw BuildRequires: emacs-proofgeneral BuildRequires: flocq @@ -47,6 +49,7 @@ BuildRequires: ocaml-zarith-devel BuildRequires: ocaml-zip-devel BuildRequires: %{py3_dist sphinx} BuildRequires: %{py3_dist sphinxcontrib-bibtex} +BuildRequires: rocq BuildRequires: tex(capt-of.sty) BuildRequires: tex(comment.sty) BuildRequires: tex(fncychap.sty) From cfd29ec6fddef49171f54f8ee670c272e6764fbd Mon Sep 17 00:00:00 2001 From: Jerry James Date: Thu, 16 Apr 2026 12:23:41 -0600 Subject: [PATCH 112/115] Rebuild for rocq 9.2.0 --- why3-rocq-9.2.patch | 292 ++++++++++++++++++++++++++++++++++++++++++++ why3.spec | 2 + 2 files changed, 294 insertions(+) create mode 100644 why3-rocq-9.2.patch diff --git a/why3-rocq-9.2.patch b/why3-rocq-9.2.patch new file mode 100644 index 0000000..9b2042c --- /dev/null +++ b/why3-rocq-9.2.patch @@ -0,0 +1,292 @@ +--- why3-1.8.2/lib/coq/ieee_float/GenericFloat.v.orig 2025-09-16 09:37:32.000000000 -0600 ++++ why3-1.8.2/lib/coq/ieee_float/GenericFloat.v 2026-04-12 21:00:50.656964191 -0600 +@@ -476,7 +476,7 @@ Qed. + + Lemma is_nan_dec: forall x, {is_nan x} + {~ is_nan x}. + Proof. +- intro; destruct x; compute; intuition. ++ intro; destruct x; compute; intuition; auto with *. + Qed. + + Lemma eq_not_nan_refl: forall {x : t}, ~ is_nan x -> eq x x. +--- why3-1.8.2/lib/coq/map/Occ.v.orig 2025-09-16 09:37:32.000000000 -0600 ++++ why3-1.8.2/lib/coq/map/Occ.v 2026-04-12 20:11:22.595468204 -0600 +@@ -241,10 +241,10 @@ now rewrite occ_empty; lia. + destruct (why_decidable_eq (m (l + (x-1))%Z) v). + assert (m (l + (x - 1)) <> v)%Z. + apply H1; lia. +-intuition. ++intuition; auto with *. + rewrite occ_right_no_add. + replace (l+x-1)%Z with (l+(x-1))%Z by ring. +-apply H; intuition. ++apply H; intuition; auto with *. + apply (H1 i). lia. assumption. + lia. + replace (l + x - 1)%Z with (l+(x-1))%Z by ring. +--- why3-1.8.2/lib/coq/number/Prime.v.orig 2025-09-16 09:37:32.000000000 -0600 ++++ why3-1.8.2/lib/coq/number/Prime.v 2026-04-11 14:50:08.453344009 -0600 +@@ -34,6 +34,8 @@ intros p. + apply iff_trans with (2 := prime_alt p). + unfold prime, prime'. + intuition. ++lia. ++lia. + Qed. + + (* Why3 goal *) +--- why3-1.8.2/lib/coq/set/Cardinal.v.orig 2025-09-16 09:37:32.000000000 -0600 ++++ why3-1.8.2/lib/coq/set/Cardinal.v 2026-04-11 20:38:44.347517956 -0600 +@@ -165,9 +165,10 @@ destruct (Bool.bool_dec (s x) true) as [ + + exists (List.cons x l1). + split. + - constructor; auto. intro Habs. eapply h1 in Habs. unfold Map.set in Habs. +- destruct why_decidable_eq; intuition. ++ destruct why_decidable_eq; auto with *. + - unfold Map.set in h1. intros. specialize (h1 e). destruct why_decidable_eq; [| intuition]. subst. +- split; intuition. destruct H1; eauto. ++ split; auto with *. destruct H1; eauto. ++ auto with *. + + exists l1. + split; [auto|]. intros. specialize (h1 e). replace (Map.set s x false e) with (s e) in h1. + eauto. +@@ -184,12 +185,15 @@ induction l. + - destruct IHl. destruct H. + destruct (List.in_dec eq_dec a l). + + exists x. split; eauto. intros. rewrite H0. +- split; intuition. inversion H2; eauto. subst. assumption. ++ split; auto with *; intuition. apply List.in_cons. assumption. ++ inversion H2; eauto. subst. assumption. + + destruct (Pdec a). + ++ exists (List.cons a x). split. constructor; eauto. + rewrite H0. intro Habs. destruct Habs; eauto. + intros. simpl. rewrite H0. intuition. subst. assumption. +- ++ exists x. split; eauto. intros. rewrite H0. intuition. simpl in H2. destruct H2; try subst; intuition. ++ ++ exists x. split; eauto. intros. rewrite H0. auto with *; intuition. ++ apply List.in_cons. assumption. ++ simpl in H2. destruct H2; try subst; intuition. + Qed. + + (* Why3 goal *) +@@ -443,7 +447,7 @@ split; intros. + + eapply List.NoDup_incl_length; eauto. apply a0. intros e Hincl. eapply H2. assumption. + + eapply List.NoDup_incl_length; eauto. intros e Hincl. eapply H2. assumption. + } +- intuition. ++ intuition. auto with *. + } + rewrite Hnat. rewrite Nat2Z.inj_succ. ring. + Qed. +@@ -472,6 +476,7 @@ split. + assert (~ set.Set.mem x s'). + { unfold s'. unfold Map.set, set.Set.mem. + destruct why_decidable_eq; intuition. ++ discriminate H1. + } + eapply cardinal_add in H1. rewrite H1. ring. + unfold s'. eapply is_finite_remove. assumption. +--- why3-1.8.2/lib/coq/set/FsetInt.v.orig 2025-09-16 09:37:32.000000000 -0600 ++++ why3-1.8.2/lib/coq/set/FsetInt.v 2026-04-12 12:49:09.882660225 -0600 +@@ -127,8 +127,8 @@ Fixpoint seqZ l len : list Numbers.BinNu + + Lemma seqZ_le: forall len x l, List.In x (seqZ l len) -> (l <= x)%Z. + Proof. +-induction len; simpl; intuition. +-eapply IHlen in H0; intuition. ++induction len; simpl; intuition. auto with *. ++eapply IHlen in H0; intuition. auto with *. + Qed. + + Lemma seqZ_le2: forall len x l, List.In x (seqZ l len) -> (x < l + Z.of_nat len)%Z. +@@ -184,8 +184,9 @@ destruct (Z_le_dec l r). + destruct Z_le_dec. + * destruct Z_lt_dec. split; intros; [reflexivity|]. + intuition. +- intuition ; try inversion H. +- * intuition ; try inversion H. ++ intuition ; auto with *; try inversion H. ++ intuition ; auto with *; try inversion H. ++ * intuition ; auto with *; try inversion H. + + exists List.nil. + split. + - constructor. +@@ -230,9 +231,10 @@ destruct (Z_le_dec l r). + split. apply seqZ_NoDup. + intros. rewrite seqZ_In_iff. + rewrite Z2Nat.id; [|lia]. +- destruct Z_le_dec; try destruct Z_lt_dec; intuition; try inversion H. ++ destruct Z_le_dec; try destruct Z_lt_dec; intuition; auto with *; try inversion H. + + exists nil. split. constructor. + simpl. intros. destruct Z_le_dec; try destruct Z_lt_dec; intuition. ++ auto with *. auto with *. auto with *. + Qed. + + +@@ -265,6 +267,6 @@ split. + + intros. destruct a. + destruct x. reflexivity. + specialize (H2 z). contradict H2. destruct Z_le_dec. +- destruct Z_lt_dec. lia. intuition. intuition. ++ destruct Z_lt_dec. lia. intuition; auto with *. intuition; auto with *. + Qed. + +--- why3-1.8.2/lib/coq/set/FsetSum.v.orig 2025-09-16 09:37:32.000000000 -0600 ++++ why3-1.8.2/lib/coq/set/FsetSum.v 2026-04-12 13:20:34.237382880 -0600 +@@ -101,8 +101,8 @@ destruct ClassicalEpsilon.constructive_i + destruct a0 as (Hx0dup, Hx0eq). destruct a1 as (Hx1dup, Hx1eq). + split. intros. + + eapply fold_left_iff_symm; eauto. +- * intuition. +- * intuition. ++ * intuition; auto with *. ++ * intuition; auto with *. + * intros. rewrite Hx0eq. rewrite Hx1eq. unfold Map.set. + destruct why_decidable_eq; try subst; intuition. + + intros. +@@ -113,19 +113,19 @@ split. intros. + erewrite <- (fold_left_iff_symm (List.app x0' x0'')); eauto. + * rewrite List.fold_left_app. rewrite fold_left_symm. + ++ auto. +- ++ intuition. +- ++ intuition. +- * intuition. +- * intuition. ++ ++ intuition; auto with *. ++ ++ intuition; auto with *. ++ * intuition; auto with *. ++ * intuition; auto with *. + * intros. rewrite List.in_app_iff. rewrite Hx0 in Hx0eq. + specialize (Hx0eq e). rewrite List.in_app_iff in Hx0eq. simpl in Hx0eq. + unfold Map.set in *. split; intros. + ++ destruct H2. + ** apply Hx1eq. destruct why_decidable_eq. +- -- subst. eapply List.NoDup_remove_2 in Hx0dup. intuition. ++ -- subst. eapply List.NoDup_remove_2 in Hx0dup. intuition; auto with *. + -- intuition. + ** eapply Hx1eq. destruct why_decidable_eq. +- -- subst. eapply List.NoDup_remove_2 in Hx0dup. intuition. ++ -- subst. eapply List.NoDup_remove_2 in Hx0dup. intuition; auto with *. + -- intuition. + ++ eapply Hx1eq in H2. + destruct why_decidable_eq. +@@ -177,11 +177,11 @@ destruct ClassicalEpsilon.constructive_i + destruct a1 as (Hdidup, Hdieq). + destruct a0 as (Hx0dup, Hx0eq). + destruct a2 as (Hx1dup, Hx1eq). +- rewrite fold_left_symm; try now intuition. ++ rewrite fold_left_symm; try now intuition; auto with *. + rewrite Z.add_0_l. rewrite <- List.fold_left_app. + eapply fold_left_iff_symm; eauto. +- + intuition. +- + intuition. ++ + intuition; auto with *. ++ + intuition; auto with *. + + intros. rewrite List.in_app_iff. rewrite Hx1eq. rewrite Hx0eq. + rewrite Hdieq. rewrite set.Set.diff'def. unfold set.Set.mem. + split; intros. +@@ -210,11 +210,11 @@ destruct ClassicalEpsilon.constructive_i + destruct a0 as (Hundup, Huneq). + destruct a1 as (Hx0dup, Hx0eq). + destruct a2 as (Hx1dup, Hx1eq). +- rewrite fold_left_symm; try now intuition. ++ rewrite fold_left_symm; try now intuition; auto with *. + rewrite Z.add_0_l. rewrite <- List.fold_left_app. + eapply fold_left_iff_symm; eauto. +- + intuition. +- + intuition. ++ + intuition; auto with *. ++ + intuition; auto with *. + + intros. rewrite List.in_app_iff. rewrite Hx1eq. rewrite Hx0eq. rewrite Huneq. + rewrite set.Set.union'def. clear - e. intuition. + + eapply Cardinal.NoDup_app; eauto. +@@ -312,7 +312,7 @@ assert (Z.of_nat (length (a0 :: x)) = Z. + simpl. rewrite Zpos_P_of_succ_nat. ring. + rewrite H. + rewrite IHx. rewrite @fold_left_symm; eauto. +-intuition. +-intuition. ++intuition; auto with *. ++intuition; auto with *. + Qed. + +--- why3-1.8.2/lib/coq/set/Fset.v.orig 2025-09-16 09:37:32.000000000 -0600 ++++ why3-1.8.2/lib/coq/set/Fset.v 2026-04-11 21:14:24.563998083 -0600 +@@ -103,12 +103,14 @@ Proof. + exists (fun x => false). + apply Cardinal.is_finite_empty. unfold set.Set.is_empty. + unfold set.Set.mem. intuition. ++discriminate H. + Defined. + + (* Why3 goal *) + Lemma is_empty_empty {a:Type} {a_WT:WhyType a} : is_empty (empty : fset a). + Proof. + unfold empty, is_empty, mem, set.Set.mem. intuition. ++discriminate H. + Qed. + + (* Why3 goal *) +@@ -118,6 +120,7 @@ Proof. + intros s h1. + eapply extensionality. intro. unfold empty, is_empty, mem, set.Set.mem in *. + destruct s. intuition. destruct (h1 _ H). ++discriminate H. + Qed. + + (* Why3 goal *) +@@ -163,6 +166,7 @@ Proof. + intros x s y. + unfold mem, remove, set.Set.mem, Map.set. destruct s. + destruct why_decidable_eq; intuition. ++discriminate H. discriminate H. + Qed. + + (* Why3 goal *) +--- why3-1.8.2/lib/coq/set/SetImpInt.v.orig 2025-09-16 09:37:32.000000000 -0600 ++++ why3-1.8.2/lib/coq/set/SetImpInt.v 2026-04-12 13:35:37.131334141 -0600 +@@ -48,6 +48,6 @@ Lemma choose'spec : + Proof. + intros s h1. + destruct h1. unfold to_fset, Fset.is_empty, Fset.mem, set.Set.mem. +-intuition. ++intuition. inversion H. + Qed. + +--- why3-1.8.2/lib/coq/set/SetImp.v.orig 2025-09-16 09:37:32.000000000 -0600 ++++ why3-1.8.2/lib/coq/set/SetImp.v 2026-04-12 13:28:53.584021692 -0600 +@@ -53,6 +53,6 @@ Lemma choose'spec : + Proof. + intros s h1. + destruct h1. unfold to_fset, Fset.is_empty, Fset.mem, set.Set.mem. +-intuition. ++intuition. inversion H. + Qed. + +--- why3-1.8.2/lib/coq/set/Set.v.orig 2025-09-16 09:37:32.000000000 -0600 ++++ why3-1.8.2/lib/coq/set/Set.v 2026-04-11 15:34:29.297022916 -0600 +@@ -139,6 +139,7 @@ Proof. + intros x s y. + unfold mem, Map.set. + destruct (why_decidable_eq x y) as [->|H] ; intuition. ++discriminate H. + Qed. + + (* Why3 goal *) +@@ -332,7 +333,7 @@ intuition. + destruct (s1 x); destruct (s2 x); intuition. + - rewrite <- H. + rewrite Bool.andb_true_iff. +- destruct (s2 x); intuition. ++ destruct (s2 x); auto with *. + Qed. + + (* Why3 goal *) +@@ -345,7 +346,7 @@ unfold disjoint, diff. + unfold mem. + intros x. + rewrite Bool.andb_true_iff. +-destruct (s2 x); intuition. ++destruct (s2 x); auto with *. + Qed. + + (* Why3 goal *) diff --git a/why3.spec b/why3.spec index 2f0fe19..e54851c 100644 --- a/why3.spec +++ b/why3.spec @@ -21,6 +21,8 @@ Source1: fr.lri.%{name}.desktop Source2: fr.lri.%{name}.metainfo.xml # The deprecated Zmod alias was removed in rocq-stdlib 9.1.0 Patch: %{name}-zmod.patch +# Adapt to changes in rocq 9.2.0 +Patch: %{name}-rocq-9.2.patch BuildRequires: coq-core-compat BuildRequires: emacs-nw From f8b7cae4a6e0252db85541e6bc3aae7d4429d9e1 Mon Sep 17 00:00:00 2001 From: Jerry James Date: Thu, 9 Jul 2026 20:52:51 -0600 Subject: [PATCH 113/115] OCaml 5.5.0 rebuild --- why3.spec | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/why3.spec b/why3.spec index e54851c..3d69c11 100644 --- a/why3.spec +++ b/why3.spec @@ -1,6 +1,3 @@ -# 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 # enabling it for now. We abide by their wishes. Revisit this decision each @@ -24,11 +21,13 @@ Patch: %{name}-zmod.patch # Adapt to changes in rocq 9.2.0 Patch: %{name}-rocq-9.2.patch +# Coq's plugin architecture requires cmxs files, so: +ExclusiveArch: %{ocaml_native_compiler} + BuildRequires: coq-core-compat BuildRequires: emacs-nw BuildRequires: emacs-proofgeneral BuildRequires: flocq -BuildRequires: graphviz BuildRequires: java-devel BuildRequires: latexmk BuildRequires: libappstream-glib @@ -41,7 +40,6 @@ 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 @@ -52,17 +50,7 @@ BuildRequires: ocaml-zip-devel BuildRequires: %{py3_dist sphinx} BuildRequires: %{py3_dist sphinxcontrib-bibtex} BuildRequires: rocq -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(tgtermes.sty) -BuildRequires: tex(upquote.sty) -BuildRequires: tex(wrapfig.sty) -BuildRequires: tex-urlbst +BuildRequires: texlive-latex BuildRequires: vim-filesystem Requires: gtksourceview3%{?_isa} From 679e804de11e5f6845d679cc01841201c48b38ad Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 17 Jul 2026 08:48:20 +0000 Subject: [PATCH 114/115] Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild From cb0c5c7d69a0df1697f6f6ca2369f3b6feeca61b Mon Sep 17 00:00:00 2001 From: Jerry James Date: Wed, 29 Jul 2026 12:32:20 -0600 Subject: [PATCH 115/115] Rebuild for ocaml-ppx-deriving 6.1.3 --- why3.spec | 2 -- 1 file changed, 2 deletions(-) diff --git a/why3.spec b/why3.spec index 3d69c11..3fc4249 100644 --- a/why3.spec +++ b/why3.spec @@ -47,8 +47,6 @@ BuildRequires: ocaml-re-devel BuildRequires: ocaml-sexplib-devel BuildRequires: ocaml-zarith-devel BuildRequires: ocaml-zip-devel -BuildRequires: %{py3_dist sphinx} -BuildRequires: %{py3_dist sphinxcontrib-bibtex} BuildRequires: rocq BuildRequires: texlive-latex BuildRequires: vim-filesystem