diff --git a/src/plugins/wp/LogicUsage.ml b/src/plugins/wp/LogicUsage.ml
index 1058d7ffa962fa3063fd853fc8039e5a8aa9450c..f3ea81418d8d4e96e37af30accd2da4064bfd0ea 100644
--- a/src/plugins/wp/LogicUsage.ml
+++ b/src/plugins/wp/LogicUsage.ml
@@ -501,6 +501,11 @@ let iter_lemmas f =
   let d = Database.get () in
   SMap.iter (fun _name (lem,_) -> f lem) d.lemmas
 
+let fold_lemmas f =
+  compute () ;
+  let d = Database.get () in
+  SMap.fold (fun _name (lem,_) -> f lem) d.lemmas
+
 let logic_lemma l = fst (get_lemma l)
 
 let section_of_lemma l = snd (get_lemma l)
diff --git a/src/plugins/wp/LogicUsage.mli b/src/plugins/wp/LogicUsage.mli
index b36713d5209e66a077ef0a5beb8e8778c7150bf3..ef9e2cb0360979e65cefe994813b4f13f38cd900 100644
--- a/src/plugins/wp/LogicUsage.mli
+++ b/src/plugins/wp/LogicUsage.mli
@@ -60,6 +60,7 @@ val compute : unit -> unit (** To force computation *)
 
 val ip_lemma : logic_lemma -> Property.t
 val iter_lemmas : (logic_lemma -> unit) -> unit
+val fold_lemmas : (logic_lemma -> 'a -> 'a) -> 'a -> 'a
 val logic_lemma : string -> logic_lemma
 val axiomatic : string -> axiomatic
 val section_of_lemma : string -> logic_section
diff --git a/src/plugins/wp/RefUsage.ml b/src/plugins/wp/RefUsage.ml
index d94275dc6b2bea36d302aa8cb4422fd4770869ad..df5426a001849e0295a5b148dd9bf4b25e12069a 100644
--- a/src/plugins/wp/RefUsage.ml
+++ b/src/plugins/wp/RefUsage.ml
@@ -79,7 +79,7 @@ sig
   val cup : t -> t -> t
   val cup_differ : t -> t -> t * bool
   (* val leq : t -> t -> bool *) (* unused for now *)
-  (* val lcup : t list -> t *) (* unused for now *)
+  val lcup : t list -> t
   val fcup : ('a -> t) -> 'a list -> t
   val get : varinfo -> t -> access
   val access : varinfo -> access -> t -> t
@@ -120,7 +120,7 @@ struct
   (* let leq = Xmap.subset (fun _ -> Access.leq) *)
 
   (* unused for now *)
-  (* let rec lcup = function [] -> bot |[x] -> x |x::xs -> cup x (lcup xs)*)
+  let rec lcup = function [] -> bot |[x] -> x |x::xs -> cup x (lcup xs)
   let rec fcup f = function
       [] -> bot | [x] -> f x | x::xs -> cup (f x) (fcup f xs)
 
@@ -731,6 +731,11 @@ let compute_usage () =
   Wp_parameters.feedback ~ontty:`Transient "Collecting variable usage" ;
   (* initial state from variable initializers *)
   let u_init = Globals.Vars.fold cvarinit E.bot in
+  (* Usage in lemmas *)
+  let u_lemmas =
+    LogicUsage.fold_lemmas
+      (fun l -> E.cup (pred (mk_ctx()) l.lem_property)) E.bot
+  in
   (* initial state by kf *)
   let usage = Globals.Functions.fold (fun kf env ->
       KFmap.insert (fun _ _u _old -> assert false) kf (cfun kf) env)
@@ -790,10 +795,12 @@ let compute_usage () =
       ignore (KFmap.interf (kf_fp state_fp) callers todo);
       fixpoint state_fp.todo
   in fixpoint todo ;
+  let u_init = E.cup u_init u_lemmas in
   (* TODO[LC]: prendre en compte la compilation des fonctions logiques et predicats ; Cf. add_lphi *)
   let usage =
     KFmap.map
-      (fun ctx -> E.cup (E.cup ctx.code ctx.spec_globals) ctx.spec_formals)
+      (fun ctx ->
+         E.lcup [ u_lemmas ; ctx.code ; ctx.spec_globals ; ctx.spec_formals])
       usage
   in u_init, usage
 
diff --git a/src/plugins/wp/tests/wp_usage/oracle/ref-usage-lemmas.res.oracle b/src/plugins/wp/tests/wp_usage/oracle/ref-usage-lemmas.res.oracle
new file mode 100644
index 0000000000000000000000000000000000000000..a22e16a5c310bb1d8147af73a86dcb698042c5d4
--- /dev/null
+++ b/src/plugins/wp/tests/wp_usage/oracle/ref-usage-lemmas.res.oracle
@@ -0,0 +1,19 @@
+# frama-c -wp [...]
+[kernel] Parsing tests/wp_usage/ref-usage-lemmas.i (no preprocessing)
+[wp] Running WP plugin...
+.................................................
+... Ref Usage
+.................................................
+Init: { &a b }
+Function foo: { &a b *x }
+Function main: { &a b __retres }
+.................................................
+[wp] Warning: Missing RTE guards
+------------------------------------------------------------
+  Function main
+------------------------------------------------------------
+
+Goal Pre-condition (file tests/wp_usage/ref-usage-lemmas.i, line 30) in 'main':
+Prove: true.
+
+------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_usage/ref-usage-lemmas.i b/src/plugins/wp/tests/wp_usage/ref-usage-lemmas.i
new file mode 100644
index 0000000000000000000000000000000000000000..77c4c5855222fecd05b80fbedddb39f2758757ed
--- /dev/null
+++ b/src/plugins/wp/tests/wp_usage/ref-usage-lemmas.i
@@ -0,0 +1,34 @@
+/* run.config
+  OPT: -wp-msg-key refusage
+*/
+/* run.config_qualif
+  DONTRUN:
+*/
+
+int a ;
+int b ;
+
+/*@ axiomatic A{
+    logic int* get reads \nothing ;
+    logic int* get_h = &a ;
+
+    axiom a: get_h == get ;
+    }
+
+*/
+
+/*@ axiomatic B{
+  logic integer value reads \nothing ;
+  axiom b: value == b ;
+  }
+*/
+
+void foo(int* x){
+  *x = a = b ;
+}
+
+/*@ requires a <= b ; */
+int main(void){
+  int e ;
+  foo(&e) ;
+}