diff --git a/Src/COLIBRI/arith.pl b/Src/COLIBRI/arith.pl
index 38780ee6de286021499d8e3bf0fd0ce4de9eaafd..aa24e3316c53e7fcb072466133dfc415ae739c3d 100755
--- a/Src/COLIBRI/arith.pl
+++ b/Src/COLIBRI/arith.pl
@@ -4558,128 +4558,135 @@ power_int_body(A,TA,N,Mod2,B,TB,Continue) :-
 %% plus vite !
 check_delta_power(A,N,Mod2,B,TA,TB) :-
     (exists_delta_Rel(A,B,Rel,_,_) ->
-		mfd:dvar_domain(A,DomA),
-		mfd:dvar_domain(B,DomB),
-		(Mod2 == 0 ->
-			Rel \== '>',
-			(Rel == '>=' ->
-				%% Donc A = B et A :: [0,1]
-				mfd:quiet_set_intervals(A,[0,1]),
-				protected_unify(A = B)
-			;	(Rel == '=<' ->
-					true
-				;	%% A <> B
-					mfd:dom_difference(DomA,dom([0,1]),NDomA),
-					mfd:dvar_set(A,NDomA),
-					mfd:dvar_remove_element(B,0)))
-		;	%% A et B de meme signe
-			(Rel == '<' ->
-				%% A > 1
-				mfd:dvar_remove_smaller(A,2),
-				MinB is pow_int(2,N),
-				mfd:dvar_remove_smaller(B,MinB)
-			;	(Rel == '=<' ->
-					%% A >= -1
-					mfd:dvar_remove_smaller(A,-1),
-					mfd:dvar_remove_smaller(B,-1)
-				;	(Rel == '>' ->
-						%% A < -1
-						mfd:dvar_remove_greater(A,-2),
-						MaxB is pow_int(-2,N),
-						mfd:dvar_remove_greater(B,MaxB)
-					;	(Rel == '>=' ->
-							%% A =< 1
-							mfd:dvar_remove_greater(A,1),
-							mfd:dvar_remove_greater(B,1)
-					;	%% Rel = '#'
-						mfd:dom_difference(DomA,dom([-1..1]),NDomA),
-						mfd:dom_difference(DomB,dom([-1..1]),NDomB),
-						mfd:dvar_set(A,NDomA),
-						mfd:dvar_set(B,NDomB)))))),
-		mfd:dvar_domain(A,NewDomA),
-		mfd:dvar_domain(B,NewDomB),
-		(NewDomA == DomA ->
-			true
-		;	TA = 1),
-		(NewDomB == DomB ->
-			true
-		;	TB = 1)
-	;	true).
+        mfd:dvar_domain(A,DomA),
+        mfd:dvar_domain(B,DomB),
+        (Mod2 == 0 ->
+            Rel \== '>',
+            (Rel == '>=' ->
+                % Donc A = B et A :: [0,1]
+                mfd:quiet_set_intervals(A,[0,1]),
+                protected_unify(A = B)
+            ;   (Rel == '=<' ->
+                    true
+                ;   % A <> B
+                    mfd:dom_difference(DomA,dom([0,1]),NDomA),
+                    mfd:dvar_set(A,NDomA),
+                    mfd:dvar_remove_element(B,0)))
+        ;   % A et B de meme signe
+            (Rel == '<' ->
+                % A > 1
+                mfd:dvar_remove_smaller(A,2),
+                MinB is pow_int(2,N),
+                mfd:dvar_remove_smaller(B,MinB)
+            ;   (Rel == '=<' ->
+                    % A >= -1
+                    mfd:dvar_remove_smaller(A,-1),
+                    mfd:dvar_remove_smaller(B,-1)
+                ;   (Rel == '>' ->
+                        % A < -1
+                        mfd:dvar_remove_greater(A,-2),
+                        MaxB is pow_int(-2,N),
+                        mfd:dvar_remove_greater(B,MaxB)
+                    ;   (Rel == '>=' ->
+                            % A =< 1
+                            mfd:dvar_remove_greater(A,1),
+                            mfd:dvar_remove_greater(B,1)
+                        ;   % Rel = '#'
+                            mfd:dom_difference(DomA,dom([-1..1]),NDomA),
+                            mfd:dom_difference(DomB,dom([-1..1]),NDomB),
+                            mfd:dvar_set(A,NDomA),
+                            mfd:dvar_set(B,NDomB)))))),
+        mfd:dvar_domain(A,NewDomA),
+        mfd:dvar_domain(B,NewDomB),
+        (NewDomA == DomA ->
+            true
+        ;   TA = 1),
+        (NewDomB == DomB ->
+            true
+        ;   TB = 1)
+    ;   true).
 
 launch_delta_power(A,Mod2,B) :-
     var(A),
-    var(B),
+    var(B), % donc N > 0
+    A \== B, % donc N > 1
     !,
     mfd:dvar_range(A,LA,HA),
     mfd:dvar_range(B,LB,HB),
     (Mod2 == 0 ->
-        (LA < 0 ->
-            (abs(LA) =< abs(HA) ->
-                % LA -> LB, HA -> HB
-                MinD is LB - LA,
-                MaxD is HB - HA
-            ;   MinD is HB - HA,
-                MaxD is LB - LA)
-        ;   MinD is LB - LA,
-            MaxD is HB - HA)
+        (HA =< 0 ->
+            % A neg, B pos: HA -> LB, LA -> HB
+            D1 is LB - HA,
+            D2 is HB - LA
+        ;   (LA < 0 ->
+                % A non signé
+                (not_unify(A,0) ->
+                    D1 = 1
+                ;   D1 = 0),
+                % HA > 0,
+                D2 is max(HB-LA,HB-HA)
+            ;   % A pos, B pos: LA -> LB, HA -> HB
+                D1 is LB - LA,
+                D2 is HB - HA))
     ;   % meme signe pour A et B
-        % LA -> LB, HA -> HB
-        MinD is LB - LA,
-        MaxD is HB - HA),
+        % si A et B neg: on recule LA -> LB, HA -> HB
+        % si A et B pos: on avance LA -> LB, HA -> HB
+        % si A et B non signés: on recule sur LA -> LB,
+        % on avance sur HA -> HB
+        D1 is LB - LA,
+        D2 is HB - HA),
+    sort(0,=<,[D1,D2],[MinD,MaxD]),
     launch_delta(A,B,+,MinD..MaxD).
 launch_delta_power(A,Mod2,B).
 
 power_inst(A,N,Mod2,B,Continue) :-
-	(integer(A) ->
-		B0 is pow_int(A,N),
+    (integer(A) ->
+        B0 is pow_int(A,N),
         protected_unify(B,B0)
-	;	(integer(B) ->
-			abs(B,AbsB),
-			int_nroot(AbsB,N,Root),
-			(B >= 0 ->
-				(Mod2 == 0 ->
-					%% A neg ou pos
-					OpRoot is -Root,
-					mfd:(A::[OpRoot, Root])
-				;	%% A et B du meme signe
-					A = Root)
-			;	%% A et B negatifs
-				Mod2 == 1,
-				A0 is -Root,
+    ;   (integer(B) ->
+            abs(B,AbsB),
+            int_nroot(AbsB,N,Root),
+            (B >= 0 ->
+                (Mod2 == 0 ->
+                    % A neg ou pos
+                    OpRoot is -Root,
+                    mfd:(A::[OpRoot, Root])
+                ;   % A et B du meme signe
+                    A = Root)
+            ;   % A et B negatifs
+                Mod2 == 1,
+                A0 is -Root,
                 protected_unify(A,A0))
-		;	(A == B ->
-				mfd:(B :: [-1,0,1])
-			;	mfd:dvar_range(A,MinA,MaxA),
-				((MinA >= -1,
-				  MaxA =< 1)
-				->
-					%% A : -1..1
-					(Mod2 == 1 ->
-						protected_unify(A = B)
-					;	abs_val_int_bis(A,B))
-				;	Continue = 1)))).
-
-
-
+        ;   (A == B ->
+                mfd:(B :: [-1,0,1])
+            ;   mfd:dvar_range(A,MinA,MaxA),
+                ((MinA >= -1,
+                  MaxA =< 1)
+                ->
+                    % A : -1..1
+                    (Mod2 == 1 ->
+                        protected_unify(A = B)
+                    ;   abs_val_int_bis(A,B))
+                ;   Continue = 1)))).
 
 
 power_int_rec(A,TA,N,Mod2,B,TB,Continue) :-
-	power_int_ter(A,TA,N,Mod2,B,TB),
-	mfd:get_intervals(A,IA),
-	mfd:get_intervals(B,IB),
-	saturate_power_inequalities(A,B,N,Mod2),
-	power_inst(A,N,Mod2,B,Continue1),
-	(var(Continue1) ->
-		true
-	;	mfd:get_intervals(A,NIA),
-		mfd:get_intervals(B,NIB),
-		check_reduced(IA,NIA,NTA),
-		check_reduced(IB,NIB,NTB),
-		((var(NTA),
-		  var(NTB))
-		->
-			Continue = 1
-		;	power_int_rec(A,NTA,N,Mod2,B,NTB,Continue))).
+    power_int_ter(A,TA,N,Mod2,B,TB),
+    mfd:get_intervals(A,IA),
+    mfd:get_intervals(B,IB),
+    saturate_power_inequalities(A,B,N,Mod2),
+    power_inst(A,N,Mod2,B,Continue1),
+    (var(Continue1) ->
+        true
+    ;   mfd:get_intervals(A,NIA),
+        mfd:get_intervals(B,NIB),
+        check_reduced(IA,NIA,NTA),
+        check_reduced(IB,NIB,NTB),
+        ((var(NTA),
+          var(NTB))
+        ->
+            Continue = 1
+        ;   power_int_rec(A,NTA,N,Mod2,B,NTB,Continue))).
 
 power_int_ter(A,TA,N,Mod2,B,TB) :-
     (nonvar(A);
diff --git a/Src/COLIBRI/col_solve.pl b/Src/COLIBRI/col_solve.pl
index 1d4b80cfd0734aaea6a9547caac89fba589052a2..26e243b8a276b5f31fec1ad4d0a84ede72f3fda3 100644
--- a/Src/COLIBRI/col_solve.pl
+++ b/Src/COLIBRI/col_solve.pl
@@ -735,7 +735,7 @@ smt_test :-
 smt_test(TO,Size) :-
     %StrDir = "./colibri-master-tests/tests/",
     %StrDir = "./colibri-master-tests/tests/sat/", %0 (sans real/float-> int!)
-    %StrDir = "./colibri-master-tests/tests/unsat/", %0
+    StrDir = "./colibri-master-tests/tests/unsat/", %0
     %StrDir = "./colibri-master-tests/tests/unknown/",
 
     %StrDir = "./smt/",
@@ -841,7 +841,7 @@ smt_test(TO,Size) :-
 
     %StrDir = "./QF_ABVFP/20170428-Liew-KLEE/aachen_real_gmp_gmp_klee_mul.x86_64/", % 3 (bitwuzla  0)
     %StrDir = "QF_ABVFP/20170428-Liew-KLEE/aachen_real_numerical_recipes_qrdcmp.x86_64/",
-    %StrDir = "./QF_ABVFP/20170428-Liew-KLEE/", % 100 (177 unsupported) (cvc4 55)
+    %StrDir = "./QF_ABVFP/20170428-Liew-KLEE/", % 106 (177 unsupported) (cvc4 55)
     %StrDir = "./QF_ABVFP/20170501-Heizmann-UltimateAutomizer/", % 0 min_solve (cvc4 0) OK
 %----------------------------------------------------------------------
     %StrDir = "./QF_ABVFPLRA/20190429-UltimateAutomizerSvcomp2019/",% 0 (cvc4 1|2)!
@@ -851,7 +851,7 @@ smt_test(TO,Size) :-
     %StrDir = "./QF_BVFP/20170428-Liew-KLEE/imperial_synthetic_sqrt_klee.x86_64/", % 3 (bitwuzla 3)
     
     %StrDir = "./QF_BVFP/20170428-Liew-KLEE/aachen_syn_halve_longdouble-flow.x86_64/",% 4u
-    %StrDir = "./QF_BVFP/20170428-Liew-KLEE/", % 16 (cvc4 50)(bitwuzla
+    %StrDir = "./QF_BVFP/20170428-Liew-KLEE/", % 17 (cvc4 50)(bitwuzla
     % 15)(89 u)(11 20mn)
     %StrDir = "./QF_BVFP/20170501-Heizmann-UltimateAutomizer/", % 0 (bitwuzla 0)
     %StrDir = "./QF_BVFP/ramalho/", % 0 TO (bitwuzla 0)
@@ -871,7 +871,7 @@ smt_test(TO,Size) :-
     %StrDir = "./QF_FP/20170501-Heizmann-UltimateAutomizer/", % 0
     %StrDir = "./QF_FP/20190429-UltimateAutomizerSvcomp2019/",% 0 (bitwuzla 0)
     %StrDir = "./QF_FP/ramalho/", % 0! (cvc4 19)(bitwuzla 17)
-    StrDir = "./QF_FP/griggio/", % 50 (min_solve, sans lin_solve ni ls_reduce..)(39)
+    %StrDir = "./QF_FP/griggio/", % 50 (min_solve, sans lin_solve ni ls_reduce..)(39)
     %(cvc4 89)(bitwuzla 74) LES DD DEMARRENT TROP VITE ?
     %StrDir = "./QF_FP/schanda/spark/", % 6 (min_solve avec X =< (X+Y)/2 =< Y) (ncvc4 8)(bitwuzla 3)
     %StrDir = "./QF_FP/wintersteiger/", % tout OK
diff --git a/Src/COLIBRI/realarith.pl b/Src/COLIBRI/realarith.pl
index 76217f8eecfe2361174db0226e7a9aa66f6cc1c7..7017dd67d8b8b15f7394b84562d9e2889547cabe 100755
--- a/Src/COLIBRI/realarith.pl
+++ b/Src/COLIBRI/realarith.pl
@@ -4471,8 +4471,10 @@ real_inter_dom_if_eq(_,_,DomA,DomB,DomC,DomA,DomB,DomC).
 
 
 
-% BUG
-reduce_dom_add_args_from_res(_,Type,FIA,FIB,FIC,RelCA,RelCB,DomA,DomB,DomC,DomA,DomB) :- !.
+reduce_dom_add_args_from_res(_,Type,FIA,FIB,FIC,RelCA,RelCB,DomA,DomB,DomC,DomA,DomB) :-
+    % BUG
+    mreal:dom_interval(DomC,[-0.0 .. 0.0]),
+    !.
 reduce_dom_add_args_from_res(0,Type,FIA,FIB,FIC,RelCA,RelCB,DomA,DomB,DomC,DomA,DomB) :- !.
 reduce_dom_add_args_from_res(1,Type,FIA,FIB,FIC,RelCA,RelCB,DomA0,DomB0,DomC,DomA,DomB) :-
 	mreal:dom_interval(DomA0,IA0),
@@ -9383,8 +9385,10 @@ minus_float_rec(Cpt,RS,Type,A,B,C) :-
             minus_float_rec(NCpt,RS,Type,A,B,C))
     ;   true).
 
-% BUG
-reduce_dom_minus_args_from_res(_,_,FIA,FIB,FIC,RelAC,DomA,DomB,DomC,DomA,DomB) :- !.
+reduce_dom_minus_args_from_res(_,_,FIA,FIB,FIC,RelAC,DomA,DomB,DomC,DomA,DomB) :- 
+    % BUG
+    mreal:dom_interval(DomC,[-0.0 .. 0.0]),
+    !.
 reduce_dom_minus_args_from_res(0,_,FIA,FIB,FIC,RelAC,DomA,DomB,DomC,DomA,DomB) :- !.
 reduce_dom_minus_args_from_res(1,Type,FIA,FIB,FIC,RelAC,DomA0,DomB0,DomC,DomA,DomB) :-
     mreal:dom_interval(DomA0,IA0),
@@ -15578,8 +15582,8 @@ max_inv2_div_float_nearest0(_,A,C,B) :-
 
 %% ESSAI VARIANTE SIMPLISTE DE power_real AVEC N ENTIER INSTANCIE >= 0
 power_real(A,N,B) :-
-	getval(float_eval,Type)@eclipse,
-	power_real_type(Type,A,N,B).
+    getval(float_eval,Type)@eclipse,
+    power_real_type(Type,A,N,B).
 
 power_real_type(real,A,N,B) ?- !,
     power_real(real,A,N,B).