(.using
  [library
   [lux {"-" private}
    ["$" documentation {"+" documentation:}]
    [data
     ["[0]" text {"+" \n}
      ["%" format {"+" format}]]]
    [macro
     ["[0]" template]]]]
  [\\library
   ["[0]" /]])

(documentation: (/.Fuzzy it)
  "A fuzzy set.")

(documentation: /.membership
  ""
  [(membership set elem)])

(documentation: /.difference
  ""
  [(difference sub base)])

(documentation: /.of_predicate
  ""
  [(of_predicate predicate)])

(documentation: /.predicate
  ""
  [(predicate treshold set)])

(documentation: /.gradient
  ""
  [(gradient from to)])

(documentation: /.triangle
  ""
  [(triangle bottom middle top)])

(documentation: /.trapezoid
  ""
  [(trapezoid bottom middle_bottom middle_top top)])

(documentation: /.cut
  ""
  [(cut treshold set)])

(.def: .public documentation
  (.List $.Module)
  ($.module /._
            "Fuzzy logic, implemented on top of the Rev type."
            [..Fuzzy
             ..membership
             ..difference
             ..of_predicate
             ..predicate
             ..gradient
             ..triangle
             ..trapezoid
             ..cut
             ($.default /.functor)
             ($.default /.empty)
             ($.default /.full)
             ($.default /.union)
             ($.default /.intersection)
             ($.default /.complement)
             ($.default /.of_set)]
            []))
