(* élimination de la première variable à partir d'une liste d'inéquations:
opération qu'on itère dans l'algorithme de Fourier.
*)
-let deduce1 s =
+let deduce1 s i=
match (partitionne s) with
[lneg;lnul;lpos] ->
- let lnew = deduce_add lneg lpos in
- (List.map ie_tl lnul)@lnew
- |_->assert false
+ let lnew = deduce_add lneg lpos in
+ (match lneg with [] -> print_string("non posso ridurre "^string_of_int i^"\n")|_->();
+ match lpos with [] -> print_string("non posso ridurre "^string_of_int i^"\n")|_->());
+ (List.map ie_tl lnul)@lnew
+ |_->assert false
;;
(* algorithme de Fourier: on élimine successivement toutes les variables.
*)
let n = List.length (fst (List.hd lie)) in
let lie=ref (add_hist lie) in
for i=1 to n-1 do
- lie:= deduce1 !lie;
+ lie:= deduce1 !lie i;
done;
!lie
;;