diff --git a/src/kernel_services/analysis/filter/finite.ml b/src/kernel_services/analysis/filter/finite.ml
index 11af2a7281b5adf487308c437fb7d48574132323..e80796ae2451afb447d8ded1cfa6dae1640609eb 100644
--- a/src/kernel_services/analysis/filter/finite.ml
+++ b/src/kernel_services/analysis/filter/finite.ml
@@ -20,13 +20,9 @@
 (*                                                                        *)
 (**************************************************************************)
 
-open Nat.Types
+open Nat
 
-module Types = struct
-  type 'n finite = int
-end
-
-open Types
+type 'n finite = int
 
 let first : type n. n succ finite = 0
 let next : type n. n finite -> n succ finite = fun n -> n + 1
diff --git a/src/kernel_services/analysis/filter/finite.mli b/src/kernel_services/analysis/filter/finite.mli
index ed5e8b695cb71617119e9266170f54bed20b6626..007fe137694f5262a72d27a054c3b094c22cf690 100644
--- a/src/kernel_services/analysis/filter/finite.mli
+++ b/src/kernel_services/analysis/filter/finite.mli
@@ -20,10 +20,9 @@
 (*                                                                        *)
 (**************************************************************************)
 
-open Nat.Types
+open Nat
 
-module Types : sig type 'n finite end
-open Types
+type 'n finite
 
 val first : 'n succ finite
 val next : 'n finite -> 'n succ finite
diff --git a/src/kernel_services/analysis/filter/linear.ml b/src/kernel_services/analysis/filter/linear.ml
index b4a6430d512d7215da5ad8522901256990466f74..72df26f0c6e5a3e7ecce2ad97c492a00cfdab60a 100644
--- a/src/kernel_services/analysis/filter/linear.ml
+++ b/src/kernel_services/analysis/filter/linear.ml
@@ -20,8 +20,8 @@
 (*                                                                        *)
 (**************************************************************************)
 
-open Nat.Types
-open Finite.Types
+open Nat
+open Finite
 
 
 
@@ -87,13 +87,10 @@ module Space (Field : Field.S) = struct
       fun (M m) -> m.rows, m.cols
 
     let pretty (type n m) fmt (M m : (n, m) matrix) =
-      let open Format in
-      let not_first i = not Finite.(i == first) in
-      let newline fmt i = if not_first i then pp_print_newline fmt () in
-      let row fmt i = fprintf fmt "@[<h>%a@]" Vector.pretty (row i (M m)) in
-      let pp_line fmt i () = newline fmt i ; row fmt i in
-      let pp fmt () = Finite.for_each (pp_line fmt) m.rows () in
-      Format.fprintf fmt "@[<v>%a@]" pp ()
+      let cut i = if not Finite.(i == first) then Format.pp_print_cut fmt () in
+      let row i = Format.fprintf fmt "@[<h>%a@]" Vector.pretty (row i (M m)) in
+      let pretty () = Finite.for_each (fun i () -> cut i ; row i) m.rows () in
+      Format.pp_open_vbox fmt 0 ; pretty () ; Format.pp_close_box fmt ()
 
     let init n m init =
       let rows = Nat.to_int n and cols = Nat.to_int m in
diff --git a/src/kernel_services/analysis/filter/linear.mli b/src/kernel_services/analysis/filter/linear.mli
index 8437815b75ab4ae223d14f01eae8334d18272356..7c4ee980aadda61ec74e8fd096595dcebf9aaed8 100644
--- a/src/kernel_services/analysis/filter/linear.mli
+++ b/src/kernel_services/analysis/filter/linear.mli
@@ -20,8 +20,8 @@
 (*                                                                        *)
 (**************************************************************************)
 
-open Nat.Types
-open Finite.Types
+open Nat
+open Finite
 
 
 
diff --git a/src/kernel_services/analysis/filter/linear_filter.ml b/src/kernel_services/analysis/filter/linear_filter.ml
index 8bfad7c20c61d3dcbcafe3af9ebfeff4feb66314..4a32b30dd04ea46a516445dee74897462a3a6252 100644
--- a/src/kernel_services/analysis/filter/linear_filter.ml
+++ b/src/kernel_services/analysis/filter/linear_filter.ml
@@ -20,7 +20,7 @@
 (*                                                                        *)
 (**************************************************************************)
 
-open Nat.Types
+open Nat
 
 
 
diff --git a/src/kernel_services/analysis/filter/linear_filter.mli b/src/kernel_services/analysis/filter/linear_filter.mli
index 3170b118f2e22f94b6a6601725eeac3f3779a7f4..6a16b9b8f5bfa92eb8dae0f4a619a38cc14aab72 100644
--- a/src/kernel_services/analysis/filter/linear_filter.mli
+++ b/src/kernel_services/analysis/filter/linear_filter.mli
@@ -20,7 +20,7 @@
 (*                                                                        *)
 (**************************************************************************)
 
-open Nat.Types
+open Nat
 
 module Make (Field : Field.S) : sig
 
diff --git a/src/kernel_services/analysis/filter/nat.ml b/src/kernel_services/analysis/filter/nat.ml
index 3f9705c9aa325a9658870a01704da2e2cf12aae1..28e197482e85b7fad514d2dcec7c6f425506cee1 100644
--- a/src/kernel_services/analysis/filter/nat.ml
+++ b/src/kernel_services/analysis/filter/nat.ml
@@ -20,15 +20,11 @@
 (*                                                                        *)
 (**************************************************************************)
 
-module Types = struct
-  type zero = |
-  type 'n succ = |
-  type 'n nat = int
-  type positive_or_null = PositiveOrNull : 'n nat -> positive_or_null
-  type strictly_positive = StrictlyPositive : 'n succ nat -> strictly_positive
-end
-
-open Types
+type zero = |
+type 'n succ = |
+type 'n nat = int
+type positive_or_null = PositiveOrNull : 'n nat -> positive_or_null
+type strictly_positive = StrictlyPositive : 'n succ nat -> strictly_positive
 
 let zero : zero nat = 0
 let one  : zero succ nat = 1
diff --git a/src/kernel_services/analysis/filter/nat.mli b/src/kernel_services/analysis/filter/nat.mli
index d3d6cf83feac5f51a9dc5fd96bb3ea53055be0d4..a6d8894dd8c9d0fe200cb778062e9adb622c680f 100644
--- a/src/kernel_services/analysis/filter/nat.mli
+++ b/src/kernel_services/analysis/filter/nat.mli
@@ -20,15 +20,11 @@
 (*                                                                        *)
 (**************************************************************************)
 
-module Types : sig
-  type zero = |
-  type 'n succ = |
-  type 'n nat
-  type positive_or_null = PositiveOrNull : 'n nat -> positive_or_null
-  type strictly_positive = StrictlyPositive : 'n succ nat -> strictly_positive
-end
-
-open Types
+type zero = |
+type 'n succ = |
+type 'n nat
+type positive_or_null = PositiveOrNull : 'n nat -> positive_or_null
+type strictly_positive = StrictlyPositive : 'n succ nat -> strictly_positive
 
 val zero : zero nat
 val one  : zero succ nat