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

(documentation: /.=
  "Int(eger) equivalence."
  [(= reference sample)])

(documentation: /.<
  "Int(eger) less-than."
  [(< reference sample)])

(documentation: /.<=
  "Int(eger) less-than or equal."
  [(<= reference sample)])

(documentation: /.>
  "Int(eger) greater-than."
  [(> reference sample)])

(documentation: /.>=
  "Int(eger) greater-than or equal."
  [(>= reference sample)])

(template [<name> <doc>]
  [(documentation: <name>
     <doc>)]

  [/.min "Int(eger) minimum."]
  [/.max "Int(eger) maximum."]
  )

(template [<name> <doc>]
  [(documentation: <name>
     <doc>)]

  [/.+ "Int(eger) addition."]
  [/.- "Int(eger) substraction."]
  [/.* "Int(eger) multiplication."]
  [/./ "Int(eger) division."]
  [/.% "Int(eger) remainder."]
  [/./% "Int(eger) [division remainder]."]
  )

(documentation: /.opposite
  "A value of equal magnitude and opposite sign.")

(documentation: /.abs
  "A value of equal magnitude and positive sign.")

(documentation: /.signum
  "A value (either -1, 0 or +0) which represents the sign.")

(documentation: /.mod
  (format "Integer modulo."
          \n "Note: The modulo and the remainder are not the same.")
  [(mod divisor dividend)])

(documentation: /.gcd
  "Greatest Common Divisor.")

(documentation: /.extended_gcd
  "Extended euclidean algorithm.")

(documentation: /.lcm
  "Least Common Multiple.")

(documentation: /.right_shifted
  "Signed/arithmetic bitwise right-shift."
  [(right_shifted parameter subject)])

(.def: .public documentation
  (.List $.Module)
  ($.module /._
            ""
            [..=
             ..<
             ..<=
             ..>
             ..>=
             ..min
             ..max
             ..+
             ..-
             ..*
             ../
             ..%
             ../%
             ..opposite
             ..abs
             ..signum
             ..mod
             ..gcd
             ..extended_gcd
             ..lcm
             ..right_shifted
             ($.default /.positive?)
             ($.default /.negative?)
             ($.default /.zero?)
             ($.default /.even?)
             ($.default /.odd?)
             ($.default /.co_prime?)
             ($.default /.frac)
             ($.default /.equivalence)
             ($.default /.order)
             ($.default /.enum)
             ($.default /.interval)
             ($.default /.addition)
             ($.default /.multiplication)
             ($.default /.maximum)
             ($.default /.minimum)
             ($.default /.binary)
             ($.default /.octal)
             ($.default /.decimal)
             ($.default /.hex)
             ($.default /.hash)]
            []))
