LISTING 1

fuzzy_member( Candidate, Set, Alpha ):-
  member( [Candidate, Alpha], Set ).
fuzzy_member( _, _, 0 ).


LISTING 2

young_ages( [ [16,.9], [17,.9], ..., [39,.1], [40,.1] ] ).

  is_young( Age, 1 ):-
    young_ages( [ [X,_] | _ ] ),
    Age < X.
  is_young( Age, Alpha ):-
    fuzzy_member( Age, young_ages, Alpha ).


LISTING 3

very( Alpha, Tau ):- Tau is Alpha * Alpha.
fuzzy_not( Alpha, Tau ):- Tau is 1 - Alpha.
more_or_less( Alpha, Tau ):- sqrt( Alpha, Tau ).


LISTING 4

very( Predicate( Candidate, Alpha ), Tau ):-
  call( Predicate( Candidate, Alpha ) ),  /* Find Alpha.  */
  Tau is Alpha * Alpha.                   /* Modify it.   */

fuzzy_not( Predicate( Candidate, Alpha ), Tau ):-
  call( Predicate( Candidate, Alpha ) ),
  Tau is 1 - Alpha.

more_or_less( Predicate( Candidate, Alpha ), Tau ):-
  call( Predicate( Candidate, Alpha ) ),
  sqrt( Alpha, Tau ).


