From a30301abbf136396a7d40880313a1b507aded4ab Mon Sep 17 00:00:00 2001 From: Jedidiah Barber Date: Tue, 6 Jan 2026 23:42:58 +1300 Subject: Slight efficiency improvements to comparison subprograms --- src/kompsos-math.adb | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/kompsos-math.adb b/src/kompsos-math.adb index e74ff60..e4022cf 100644 --- a/src/kompsos-math.adb +++ b/src/kompsos-math.adb @@ -191,7 +191,6 @@ package body Kompsos.Math is One, Two, Three : Goal := This; X_Var : constant Term := Three.Fresh; - Y_Var : constant Term := Three.Fresh; begin One.Unify (N_Term, Zero_Term); GT_Zero (One, M_Term); @@ -201,9 +200,13 @@ package body Kompsos.Math is Three.Unify (N_Term, T (Three.Fresh, X_Var)); GT_Zero (Three, X_Var); - Three.Unify (M_Term, T (Three.Fresh, Y_Var)); - GT_Zero (Three, Y_Var); - Three.Conjunct (LT_Length_Access, X_Var & Y_Var); + declare + Y_Var : constant Term := Three.Fresh; + begin + Three.Unify (M_Term, T (Three.Fresh, Y_Var)); + GT_Zero (Three, Y_Var); + Three.Conjunct (LT_Length_Access, X_Var & Y_Var); + end; return Disjunct (One & Two & Three); end LT_Length; @@ -253,7 +256,6 @@ package body Kompsos.Math is One, Two, Three : Goal := This; X_Var : constant Term := Three.Fresh; - Y_Var : constant Term := Three.Fresh; begin One.Unify (N_Term, Zero_Term); One.Unify (M_Term, Zero_Term); @@ -263,9 +265,13 @@ package body Kompsos.Math is Three.Unify (N_Term, T (Three.Fresh, X_Var)); GT_Zero (Three, X_Var); - Three.Unify (M_Term, T (Three.Fresh, Y_Var)); - GT_Zero (Three, Y_Var); - Three.Conjunct (EQ_Length_Access, X_Var & Y_Var); + declare + Y_Var : constant Term := Three.Fresh; + begin + Three.Unify (M_Term, T (Three.Fresh, Y_Var)); + GT_Zero (Three, Y_Var); + Three.Conjunct (EQ_Length_Access, X_Var & Y_Var); + end; return Disjunct (One & Two & Three); end EQ_Length; @@ -331,14 +337,16 @@ package body Kompsos.Math is M_Term : Term renames Inputs (2); One, Two : Goal := This; - - X_Var : constant Term := Two.Fresh; begin LT_Length (One, Inputs); EQ_Length (Two, Inputs); - GT_Zero (Two, X_Var); - Add (Two, N_Term & X_Var & M_Term); + declare + X_Var : constant Term := Two.Fresh; + begin + GT_Zero (Two, X_Var); + Add (Two, N_Term & X_Var & M_Term); + end; return Disjunct (One, Two); end LT; -- cgit