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)