Compare commits

..

23 commits

Author SHA1 Message Date
Jerry James
cb0c5c7d69 Rebuild for ocaml-ppx-deriving 6.1.3 2026-07-29 12:32:20 -06:00
Fedora Release Engineering
679e804de1 Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild 2026-07-17 08:48:20 +00:00
Jerry James
f8b7cae4a6 OCaml 5.5.0 rebuild 2026-07-09 20:52:51 -06:00
Jerry James
cfd29ec6fd Rebuild for rocq 9.2.0 2026-04-16 12:23:41 -06:00
Jerry James
f6d80e1a29 Rebuild for rocq 9.1.1
- Add patch to avoid Zmod, removed in rocq 9.1
2026-03-19 21:38:47 -06:00
Richard W.M. Jones
1889b3d497 OCaml 5.4.1 rebuild 2026-02-21 00:12:57 +00:00
Jerry James
5a8173d697 Rebuild for ocaml-menhir-20260209 2026-02-11 20:03:06 -07:00
Jerry James
e7d64b7f0f Rebuild for ocaml-menhir 20260203 2026-02-06 17:00:40 -07:00
Jerry James
a4c3815695 Rebuild for ocaml-menhir 20260122 2026-02-02 16:26:22 -07:00
Fedora Release Engineering
d3d801816f Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild 2026-01-17 20:13:59 +00:00
Jerry James
e51d1ba9fc Reflow the description text 2026-01-14 08:53:03 -07:00
Richard W.M. Jones
c7de9116b8 OCaml 5.4.0 rebuild 2025-10-14 20:54:37 +01:00
Jerry James
10869d3c2e Version 1.8.2 2025-09-16 15:25:39 -06:00
Jerry James
5d0415f73c Rebuild for ocaml-menhir 20250903 2025-09-05 11:14:24 -06:00
Jerry James
dfde276402 Rebuild for ocaml-unionfind 20250818 2025-08-22 10:25:54 -06:00
Jerry James
f24429dc72 BR vim-filesystem for %{vimfiles_root} 2025-08-10 11:47:45 -06:00
Jerry James
32bd519ce7 Use %{vimfiles_root} 2025-08-10 11:23:17 -06:00
Jerry James
25a38102cf Bump and rebuild 2025-08-10 11:02:02 -06:00
Fedora Release Engineering
ddf170d66a Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild 2025-07-25 20:24:57 +00:00
Jerry James
eef9515e6d Rebuild to fix OCaml dependencies 2025-07-12 16:48:04 -06:00
Jerry James
92927d0b7d Version 1.8.1
- All patches have been upstreamed
2025-06-09 15:05:43 -06:00
Jerry James
9ec4d214c6 Rebuild for bumped ocaml-mlgmpidl 2025-06-07 10:34:13 -06:00
Jerry James
525daf1052 Rebuild for ocaml-ocamlgraph 2.2.0 2025-04-15 14:09:32 -06:00
3 changed files with 350 additions and 34 deletions

292
why3-rocq-9.2.patch Normal file
View file

@ -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 *)

33
why3-zmod.patch Normal file
View file

@ -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.

View file

@ -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
@ -19,12 +16,18 @@ 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
# Adapt to changes in rocq 9.2.0
Patch: %{name}-rocq-9.2.patch
BuildRequires: coq
# 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
@ -37,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
@ -45,19 +47,8 @@ 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: 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: rocq
BuildRequires: texlive-latex
BuildRequires: vim-filesystem
Requires: gtksourceview3%{?_isa}
@ -74,12 +65,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 +95,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 +116,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
@ -189,8 +180,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 +240,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