diff --git a/examples/proofs/spinlock/generated_code.v b/examples/proofs/spinlock/generated_code.v
index 5fb3862c65cc282075c973fe7cf86148981e8d9e..1056edaad80e3e89ddddb0d3ec2b427e75c4d0fb 100644
--- a/examples/proofs/spinlock/generated_code.v
+++ b/examples/proofs/spinlock/generated_code.v
@@ -12,35 +12,35 @@ Section code.
   Definition loc_4 : location_info := LocationInfo file_0 8 4 8 8.
   Definition loc_5 : location_info := LocationInfo file_0 8 4 8 8.
   Definition loc_6 : location_info := LocationInfo file_0 8 17 8 18.
-  Definition loc_9 : location_info := LocationInfo file_0 13 4 13 23.
-  Definition loc_10 : location_info := LocationInfo file_0 15 4 17 5.
-  Definition loc_11 : location_info := LocationInfo file_0 15 4 17 5.
-  Definition loc_12 : location_info := LocationInfo file_0 15 144 17 5.
-  Definition loc_13 : location_info := LocationInfo file_0 16 8 16 21.
-  Definition loc_14 : location_info := LocationInfo file_0 15 4 17 5.
-  Definition loc_15 : location_info := LocationInfo file_0 15 4 17 5.
-  Definition loc_16 : location_info := LocationInfo file_0 16 8 16 16.
-  Definition loc_17 : location_info := LocationInfo file_0 16 19 16 20.
-  Definition loc_18 : location_info := LocationInfo file_0 15 10 15 142.
-  Definition loc_19 : location_info := LocationInfo file_0 15 10 15 130.
-  Definition loc_20 : location_info := LocationInfo file_0 15 10 15 59.
-  Definition loc_21 : location_info := LocationInfo file_0 15 60 15 71.
-  Definition loc_22 : location_info := LocationInfo file_0 15 61 15 71.
-  Definition loc_23 : location_info := LocationInfo file_0 15 61 15 65.
-  Definition loc_24 : location_info := LocationInfo file_0 15 61 15 65.
-  Definition loc_25 : location_info := LocationInfo file_0 15 73 15 82.
-  Definition loc_26 : location_info := LocationInfo file_0 15 74 15 82.
-  Definition loc_27 : location_info := LocationInfo file_0 15 84 15 85.
-  Definition loc_28 : location_info := LocationInfo file_0 15 134 15 142.
-  Definition loc_29 : location_info := LocationInfo file_0 15 141 15 142.
-  Definition loc_30 : location_info := LocationInfo file_0 13 21 13 22.
-  Definition loc_35 : location_info := LocationInfo file_0 22 4 22 74.
-  Definition loc_36 : location_info := LocationInfo file_0 22 4 22 35.
-  Definition loc_37 : location_info := LocationInfo file_0 22 36 22 47.
-  Definition loc_38 : location_info := LocationInfo file_0 22 37 22 47.
-  Definition loc_39 : location_info := LocationInfo file_0 22 37 22 41.
-  Definition loc_40 : location_info := LocationInfo file_0 22 37 22 41.
-  Definition loc_41 : location_info := LocationInfo file_0 22 49 22 50.
+  Definition loc_9 : location_info := LocationInfo file_0 12 4 12 23.
+  Definition loc_10 : location_info := LocationInfo file_0 14 4 16 5.
+  Definition loc_11 : location_info := LocationInfo file_0 14 4 16 5.
+  Definition loc_12 : location_info := LocationInfo file_0 14 144 16 5.
+  Definition loc_13 : location_info := LocationInfo file_0 15 8 15 21.
+  Definition loc_14 : location_info := LocationInfo file_0 14 4 16 5.
+  Definition loc_15 : location_info := LocationInfo file_0 14 4 16 5.
+  Definition loc_16 : location_info := LocationInfo file_0 15 8 15 16.
+  Definition loc_17 : location_info := LocationInfo file_0 15 19 15 20.
+  Definition loc_18 : location_info := LocationInfo file_0 14 10 14 142.
+  Definition loc_19 : location_info := LocationInfo file_0 14 10 14 130.
+  Definition loc_20 : location_info := LocationInfo file_0 14 10 14 59.
+  Definition loc_21 : location_info := LocationInfo file_0 14 60 14 71.
+  Definition loc_22 : location_info := LocationInfo file_0 14 61 14 71.
+  Definition loc_23 : location_info := LocationInfo file_0 14 61 14 65.
+  Definition loc_24 : location_info := LocationInfo file_0 14 61 14 65.
+  Definition loc_25 : location_info := LocationInfo file_0 14 73 14 82.
+  Definition loc_26 : location_info := LocationInfo file_0 14 74 14 82.
+  Definition loc_27 : location_info := LocationInfo file_0 14 84 14 85.
+  Definition loc_28 : location_info := LocationInfo file_0 14 134 14 142.
+  Definition loc_29 : location_info := LocationInfo file_0 14 141 14 142.
+  Definition loc_30 : location_info := LocationInfo file_0 12 21 12 22.
+  Definition loc_35 : location_info := LocationInfo file_0 21 4 21 74.
+  Definition loc_36 : location_info := LocationInfo file_0 21 4 21 35.
+  Definition loc_37 : location_info := LocationInfo file_0 21 36 21 47.
+  Definition loc_38 : location_info := LocationInfo file_0 21 37 21 47.
+  Definition loc_39 : location_info := LocationInfo file_0 21 37 21 41.
+  Definition loc_40 : location_info := LocationInfo file_0 21 37 21 41.
+  Definition loc_41 : location_info := LocationInfo file_0 21 49 21 50.
 
   (* Definition of struct [atomic_flag]. *)
   Program Definition struct_atomic_flag := {|
diff --git a/examples/proofs/spinlock/generated_proof_sl_lock.v b/examples/proofs/spinlock/generated_proof_sl_lock.v
index f2aee1fdb79aca5844574acf6eb00df7df890a76..e05cfb1f8b07b88c5091647934768c8da75fe9c7 100644
--- a/examples/proofs/spinlock/generated_proof_sl_lock.v
+++ b/examples/proofs/spinlock/generated_proof_sl_lock.v
@@ -30,7 +30,6 @@ Section proof_sl_lock.
     - repeat liRStep; liShow.
       all: print_typesystem_goal "sl_lock" "#1".
     Unshelve. all: sidecond_hook; prepare_sideconditions; normalize_and_simpl_goal; try solve_goal; unsolved_sidecond_hook.
-    all: try by rewrite /bytes_per_int/=; have ->: bytes_per_addr = 8%nat; solve_goal.
     all: print_sidecondition_goal "sl_lock".
   Qed.
 End proof_sl_lock.
diff --git a/examples/spinlock.c b/examples/spinlock.c
index 1f50b025d1ff4ecb9adabfe11b814f594f16564b..fbde156e4497e46c48b0e8f0d8f1a8679c52fcb9 100644
--- a/examples/spinlock.c
+++ b/examples/spinlock.c
@@ -8,7 +8,6 @@ void sl_init(struct spinlock* lock) {
     lock->lock = 0;
 }
 
-[[rc::tactics("all: try by rewrite /bytes_per_int/=; have ->: bytes_per_addr = 8%nat; solve_goal.")]]
 void sl_lock(struct spinlock* lock) {
     bool expected = 0;
     [[rc::inv_vars("expected : false @ boolean<bool_it>")]]
diff --git a/theories/typing/automation/solvers.v b/theories/typing/automation/solvers.v
index 477582cda483b786bc69b3139ac5d47a4bb3b1f6..1bbedd93f9a683bdd39cbffc3e10a7ce07e50169 100644
--- a/theories/typing/automation/solvers.v
+++ b/theories/typing/automation/solvers.v
@@ -162,10 +162,22 @@ Lemma unfold_int_elem_of_it (z : Z) (it : int_type) :
   z ∈ it = (min_int it ≤ z ∧ z ≤ max_int it).
 Proof. done. Qed.
 
+Ltac unfold_common_defs :=
+  unfold
+  (* Layout *)
+    ly_size, ly_with_align, ly_align_log,
+  (* Integer bounds *)
+    max_int, min_int, int_half_modulus, int_modulus,
+    bits_per_int, bytes_per_int,
+  (* Address bounds *)
+    max_alloc_end, min_alloc_start, bytes_per_addr,
+  (* Other byte-level definitions *)
+    bits_per_byte in *.
+
 (** * [solve_goal] without cleaning of the context  *)
 Ltac unprepared_solve_goal :=
   try rewrite -> unfold_int_elem_of_it in *;
-  unfold ly_size, ly_align_log, max_int, min_int, int_half_modulus, int_modulus in *; simpl in *;
+  unfold_common_defs; simpl in *;
   normalize_and_simpl_goal;
   rewrite /ly_size/ly_align_log //=; enrich_context;
   repeat case_bool_decide => //; repeat case_decide => //; repeat case_match => //;