From b8b74087046dfff57c8fdb83a6feded3041f8b70 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20B=C3=BChler?= <david.buhler@cea.fr>
Date: Tue, 30 Jan 2024 15:33:13 +0100
Subject: [PATCH] [Kernel] Linear filter: removes modules Types.

---
 src/kernel_services/analysis/filter/field.ml  |  5 ++--
 src/kernel_services/analysis/filter/linear.ml | 12 ++++------
 .../analysis/filter/linear.mli                | 11 +++------
 .../analysis/filter/linear_filter.ml          | 24 +++++++------------
 .../analysis/filter/linear_filter.mli         | 13 ++++------
 5 files changed, 22 insertions(+), 43 deletions(-)

diff --git a/src/kernel_services/analysis/filter/field.ml b/src/kernel_services/analysis/filter/field.ml
index fd00c817945..df737174179 100644
--- a/src/kernel_services/analysis/filter/field.ml
+++ b/src/kernel_services/analysis/filter/field.ml
@@ -22,9 +22,8 @@
 
 module type S = sig
 
-  module Types : sig type scalar end
-  include Datatype.S_with_collections with type t = Types.scalar
-  open Types
+  type scalar
+  include Datatype.S_with_collections with type t = scalar
 
   val zero     : scalar
   val one      : scalar
diff --git a/src/kernel_services/analysis/filter/linear.ml b/src/kernel_services/analysis/filter/linear.ml
index 96010938400..b3c1d6537cf 100644
--- a/src/kernel_services/analysis/filter/linear.ml
+++ b/src/kernel_services/analysis/filter/linear.ml
@@ -27,15 +27,11 @@ open Finite.Types
 
 module Space (Field : Field.S) = struct
 
-  open Field.Types
+  type scalar = Field.scalar
 
-  module Types = struct
-    type ('n, 'm) m = { data : scalar Parray.t ; rows : 'n nat ; cols : 'm nat }
-    type ('n, 'm) matrix = M : ('n succ, 'm succ) m -> ('n succ, 'm succ) matrix
-    type 'n vector = ('n, zero succ) matrix
-  end
-
-  open Types
+  type ('n, 'm) m = { data : scalar Parray.t ; rows : 'n nat ; cols : 'm nat }
+  type ('n, 'm) matrix = M : ('n succ, 'm succ) m -> ('n succ, 'm succ) matrix
+  type 'n vector = ('n, zero succ) matrix
 
 
 
diff --git a/src/kernel_services/analysis/filter/linear.mli b/src/kernel_services/analysis/filter/linear.mli
index e2d69ed4ff9..8437815b75a 100644
--- a/src/kernel_services/analysis/filter/linear.mli
+++ b/src/kernel_services/analysis/filter/linear.mli
@@ -27,14 +27,9 @@ open Finite.Types
 
 module Space (Field : Field.S) : sig
 
-  open Field.Types
-
-  module Types : sig
-    type ('n, 'm) matrix
-    type 'n vector = ('n, zero succ) matrix
-  end
-
-  open Types
+  type scalar = Field.scalar
+  type ('n, 'm) matrix
+  type 'n vector = ('n, zero succ) matrix
 
   module Vector : sig
     val pretty : Format.formatter -> 'n vector -> unit
diff --git a/src/kernel_services/analysis/filter/linear_filter.ml b/src/kernel_services/analysis/filter/linear_filter.ml
index 977c7043350..da1722d5d25 100644
--- a/src/kernel_services/analysis/filter/linear_filter.ml
+++ b/src/kernel_services/analysis/filter/linear_filter.ml
@@ -27,8 +27,6 @@ open Nat.Types
 module Make (Field : Field.S) = struct
 
   module Linear = Linear.Space (Field)
-  open Linear.Types
-  open Field.Types
   open Linear
 
 
@@ -58,20 +56,14 @@ module Make (Field : Field.S) = struct
 
 
 
-  module Types = struct
+  type ('n, 'm) filter =
+    | Filter : ('n succ, 'm succ) data -> ('n succ, 'm succ) filter
 
-    type ('n, 'm) filter =
-      | Filter : ('n succ, 'm succ) data -> ('n succ, 'm succ) filter
-
-    and ('n, 'm) data =
-      { state : ('n, 'n) matrix
-      ; input : ('n, 'm) matrix
-      ; measure : 'm vector
-      }
-
-  end
-
-  open Types
+  and ('n, 'm) data =
+    { state : ('n, 'n) matrix
+    ; input : ('n, 'm) matrix
+    ; measure : 'm vector
+    }
 
 
 
@@ -88,7 +80,7 @@ module Make (Field : Field.S) = struct
     let rec aux (m, r) i = if i >= 0 then aux (p m, r + m) (i - 1) else r in
     aux (Matrix.id order, Field.zero) (stop - 1)
 
-  type ('n, 'm) invariant = ('n, 'm) filter -> int -> scalar option
+  type ('n, 'm) invariant = ('n, 'm) filter -> int -> Field.scalar option
   let invariant : type n m. (n, m) invariant = fun (Filter f) max ->
     let open Option.Operators in
     let order, _ = Matrix.dimensions f.input in
diff --git a/src/kernel_services/analysis/filter/linear_filter.mli b/src/kernel_services/analysis/filter/linear_filter.mli
index c7e2b8f25b9..3170b118f2e 100644
--- a/src/kernel_services/analysis/filter/linear_filter.mli
+++ b/src/kernel_services/analysis/filter/linear_filter.mli
@@ -25,18 +25,15 @@ open Nat.Types
 module Make (Field : Field.S) : sig
 
   module Linear : module type of Linear.Space (Field)
-  open Linear.Types
-  open Field.Types
 
   (* A value of type [(n, m) filter] describes a linear filter of order n (i.e
      with n state variables) and with m inputs. *)
-  module Types : sig type ('n, 'm) filter end
-  open Types
+  type ('n, 'm) filter
 
   val create :
-    ('n succ, 'n succ) matrix ->
-    ('n succ, 'm succ) matrix ->
-    'm succ vector -> ('n succ, 'm succ) filter
+    ('n succ, 'n succ) Linear.matrix ->
+    ('n succ, 'm succ) Linear.matrix ->
+    'm succ Linear.vector -> ('n succ, 'm succ) filter
 
   val pretty : Format.formatter -> ('n, 'm) filter -> unit
 
@@ -52,6 +49,6 @@ module Make (Field : Field.S) : sig
      filters, a depth of 200 will gives an exact upper bound up to at least ten
      digits, which is more than enough. Moreover, for those simple filters, the
      computation is immediate, even when using rational numbers. *)
-  val invariant : ('n, 'm) filter -> int -> scalar option
+  val invariant : ('n, 'm) filter -> int -> Field.scalar option
 
 end
-- 
GitLab