allDiff(S):-buildIDCoursesList(S,L),subtract(L,[-1],C),allUniqueExceptEmpty(C).%subtract remove empty course of the current solution to check redudancy of courses
% computeDecay([_, [M1,M2], [T1,T2]], UpperTF, SLevel):- nbCourseBySemester(N), CS1 is div(T1,N), CS2 is div(T2,N), Range is CS2 - CS1, decayFunction(Range,Y), SLevel is M-Y.
prerequisiteConstraintsSolver(CurrentSol,[CtoCheckID,_,Prereq,_]),%we keep this call. even with fuzzy+decay : faster than fuzzy if prereq does not exist !