From 67451a197d6747bf24e119f5c325fed298fa42b1 Mon Sep 17 00:00:00 2001
From: Patrick Baudin <patrick.baudin@cea.fr>
Date: Wed, 12 Jan 2022 12:03:34 +0100
Subject: [PATCH] [WP] extends rewrite_repeat

---
 src/plugins/wp/Vlist.ml | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/plugins/wp/Vlist.ml b/src/plugins/wp/Vlist.ml
index e50cc2936a8..398519e13df 100644
--- a/src/plugins/wp/Vlist.ml
+++ b/src/plugins/wp/Vlist.ml
@@ -174,9 +174,13 @@ let rewrite_nth s k =
   get_nth (match_natural k) s
 
 let rewrite_repeat s n =
-  if F.equal n e_zero then v_nil (F.typeof s) else  (* (s *^ n) == s *)
-  if F.equal n e_one then s else  (* (s *^ 1) == s *)
-  if is_nil s then s else (* ([] *^ n) == [] ; even if [n] is negative *)
+  if F.decide (F.e_leq n e_zero) then (* n <=0 ==> (s *^ n) == [] *)
+    v_nil (F.typeof s)
+  else if F.equal n e_one then (* (s *^ 1) == s *)
+    s
+  else if is_nil s then (* ([] *^ n) == [] ; even if [n] is negative *)
+    s
+  else
     match F.repr s with
     | L.Fun( repeat , [s0 ; n0] ) (* n0>=0 && n>=0 ==> ((s0 *^ n0) *^ n) == (s0 *^ (n0 * n)) *)
       when (repeat == f_repeat) &&
-- 
GitLab