23:- module( fuzzyutils, [tnorms/3, tnorm/3, tnorm/4, 24 is_fuzzy_degree/1, 25 less_fuzzy/2, equally_fuzzy/2, 26 check_less_fuzzy/2, 27 check_equally_fuzzy/2, 28 check_clause_degree/2, 29 get_max/2, sup_degree/2, inf_degree/2]). 30 31:- user:use_algebra(Algebra), consult(Algebra). 32 33tnorms( _, [], Deg) :- equally_fuzzy(Deg, 0.0). 34tnorms( _, [Deg], Deg). 35tnorms( Norm, [Deg1, Deg2], DegRes) :- tnorm( Norm, Deg1, Deg2, DegRes). 36tnorms( Norm, [Deg, Deg2, Deg3 | RestDegrees], DegRes) :- 37 tnorm( Norm, Deg, Deg2, DegRes1), 38 tnorms( Norm, [DegRes1, Deg3 | RestDegrees], DegRes). 39 40sup_degree([], Deg) :- equally_fuzzy(Deg, 0.0). 41sup_degree([Deg], Deg) :- !. 42sup_degree([Deg1 |DegRest], DegMax) :- 43 sup_degree(DegRest, Deg2), 44 (check_less_fuzzy(Deg2, Deg1) -> DegMax = Deg2; DegMax = Deg1). 45 46inf_degree([], Deg) :- equally_fuzzy(Deg, 0.0). 47inf_degree([Deg], Deg) :- !. 48inf_degree([Deg1 |DegRest], DegMin) :- 49 inf_degree(DegRest, Deg2), 50 (check_less_fuzzy(Deg1, Deg2) -> DegMin = Deg2; DegMin = Deg1)