aboutsummaryrefslogtreecommitdiffhomepage
path: root/plugins/groebner/ideal.mli
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/groebner/ideal.mli')
-rw-r--r--plugins/groebner/ideal.mli88
1 files changed, 43 insertions, 45 deletions
diff --git a/plugins/groebner/ideal.mli b/plugins/groebner/ideal.mli
index 48b81102e..9c8f43d7d 100644
--- a/plugins/groebner/ideal.mli
+++ b/plugins/groebner/ideal.mli
@@ -6,77 +6,75 @@
(* * GNU Lesser General Public License Version 2.1 *)
(************************************************************************)
-type coef = Polynom.poly
-val coef_of_int : int -> coef
-val eq_coef : coef -> coef -> bool
-val plus_coef : coef -> coef -> coef
-val mult_coef : coef -> coef -> coef
-val sub_coef : coef -> coef -> coef
-val opp_coef : coef -> coef
-val div_coef : coef -> coef -> coef
-val coef0 : coef
-val coef1 : coef
-val string_of_coef : coef -> string
-val pgcd : coef -> coef -> coef
+exception NotInIdeal
+val lexico : bool ref
+val use_hmon : bool ref
+module type S = sig
+
+(* Monomials *)
type mon = int array
-type poly = (coef * mon) list
-val eq_poly : poly -> poly -> bool
val mult_mon : int -> mon -> mon -> mon
val deg : mon -> int
val compare_mon : int -> mon -> mon -> int
val div_mon : int -> mon -> mon -> mon
-val div_pol_coef : poly -> coef -> poly
val div_mon_test : int -> mon -> mon -> bool
-val set_deg : int -> mon -> mon
val ppcm_mon : int -> mon -> mon -> mon
+(* Polynomials *)
+
+type deg = int
+type coef
+type poly
+val repr : poly -> (coef * mon) list
+val polconst : deg -> coef -> poly
+val zeroP : poly
+val gen : deg -> int -> poly
+
+val equal : poly -> poly -> bool
val name_var : string list ref
val getvar : string list -> int -> string
-val stringP : poly -> string
-val stringPcut : poly -> string
val lstringP : poly list -> string
val printP : poly -> unit
val lprintP : poly list -> unit
-val polconst : int -> coef -> poly
-val zeroP : poly
-val plusP : int -> poly -> poly -> poly
-val mult_t_pol : int -> coef -> mon -> poly -> poly
-val selectdiv : int -> mon -> poly list -> poly
-val gen : int -> int -> poly
+val div_pol_coef : poly -> coef -> poly
+val plusP : deg -> poly -> poly -> poly
+val mult_t_pol : deg -> coef -> mon -> poly -> poly
+val selectdiv : deg -> mon -> poly list -> poly
val oppP : poly -> poly
val emultP : coef -> poly -> poly
-val multP : int -> poly -> poly -> poly
-val puisP : int -> poly -> int -> poly
+val multP : deg -> poly -> poly -> poly
+val puisP : deg -> poly -> int -> poly
val contentP : poly -> coef
val contentPlist : poly list -> coef
val pgcdpos : coef -> coef -> coef
-val div_pol : int -> poly -> poly -> coef -> coef -> mon -> poly
-val reduce2 : int -> poly -> poly list -> coef * poly
+val div_pol : deg -> poly -> poly -> coef -> coef -> mon -> poly
+val reduce2 : deg -> poly -> poly list -> coef * poly
val poldepcontent : coef list ref
val coefpoldep_find : poly -> poly -> poly
val coefpoldep_set : poly -> poly -> poly -> unit
-val initcoefpoldep : int -> poly list -> unit
-val reduce2_trace :
- int -> poly -> poly list -> poly list -> poly list * poly
-val homogeneous : bool ref
-val spol : int -> poly -> poly -> poly
-val etrangers : int -> ('a * mon) list -> ('b * mon) list -> bool
-val div_ppcm : int -> poly -> poly -> poly -> bool
+val initcoefpoldep : deg -> poly list -> unit
+val reduce2_trace : deg -> poly -> poly list -> poly list -> poly list * poly
+val spol : deg -> poly -> poly -> poly
+val etrangers : deg -> poly -> poly -> bool
+val div_ppcm : deg -> poly -> poly -> poly -> bool
-type 'a cpRes = Keep of 'a list | DontKeep of 'a list
-val list_rec : 'a -> ('b -> 'b list -> 'a -> 'a) -> 'b list -> 'a
-val addRes : 'a -> 'a cpRes -> 'a cpRes
-val slice : int -> poly -> poly -> poly list -> poly cpRes
-val addS : 'a -> 'a list -> 'a list
-val genPcPf : int -> poly -> poly list -> poly list -> poly list
-val genOCPf : int -> poly list -> poly list
+val genPcPf : deg -> poly -> poly list -> poly list -> poly list
+val genOCPf : deg -> poly list -> poly list
val is_homogeneous : poly -> bool
-val in_ideal :
- int -> poly list -> poly ->
- coef * poly list * poly * poly list list * poly list
+type certificate =
+ { coef : coef; power : int;
+ gb_comb : poly list list; last_comb : poly list }
+val test_dans_ideal : deg -> poly -> poly list -> poly list ->
+ poly list * poly * certificate
+
+val in_ideal : deg -> poly list -> poly -> poly list * poly * certificate
+
+end
+
+module Make (P:Polynom.S) : S with type coef = P.t