class_docstr: Return, if possible, the maximum value of the list.
  
  When number of arguments is equal one, then
  return this argument.
  
  When number of arguments is equal two, then
  return, if possible, the value from (a, b) that is $\ge$ the other.
  
  In common case, when the length of list greater than 2, the task
  is more complicated. Return only the arguments, which are greater
  than others, if it is possible to determine directional relation.
  
  If is not possible to determine such a relation, return a partially
  evaluated result.
  
  Assumptions are used to make the decision too.
  
  Also, only comparable arguments are permitted.
  
  It is named ``Max`` and not ``max`` to avoid conflicts
  with the built-in function ``max``.
  
  
  Examples
  ========
  
  >>> from sympy import Max, Symbol, oo
  >>> from sympy.abc import x, y, z
  >>> p = Symbol('p', positive=True)
  >>> n = Symbol('n', negative=True)
  
  >>> Max(x, -2)
  Max(-2, x)
  >>> Max(x, -2).subs(x, 3)
  3
  >>> Max(p, -2)
  p
  >>> Max(x, y)
  Max(x, y)
  >>> Max(x, y) == Max(y, x)
  True
  >>> Max(x, Max(y, z))
  Max(x, y, z)
  >>> Max(n, 8, p, 7, -oo)
  Max(8, p)
  >>> Max (1, x, oo)
  oo
  
  * Algorithm
  
  The task can be considered as searching of supremums in the
  directed complete partial orders [1]_.
  
  The source values are sequentially allocated by the isolated subsets
  in which supremums are searched and result as Max arguments.
  
  If the resulted supremum is single, then it is returned.
  
  The isolated subsets are the sets of values which are only the comparable
  with each other in the current set. E.g. natural numbers are comparable with
  each other, but not comparable with the `x` symbol. Another example: the
  symbol `x` with negative assumption is comparable with a natural number.
  
  Also there are "least" elements, which are comparable with all others,
  and have a zero property (maximum or minimum for all elements).
  For example, in case of $\infty$, the allocation operation is terminated
  and only this value is returned.
  
  Assumption:
     - if $A > B > C$ then $A > C$
     - if $A = B$ then $B$ can be removed
  
  References
  ==========
  
  .. [1] https://en.wikipedia.org/wiki/Directed_complete_partial_order
  .. [2] https://en.wikipedia.org/wiki/Lattice_%28order%29
  
  See Also
  ========
  
  Min : find minimum values
class_docstr_tok: ["Return",",","if","possible",",","the","maximum","value","of","the","list",".","When","number","of","arguments","is","equal","one",",","then","return","this","argument",".","When","number","of","arguments","is","equal","two",",","then","return",",","if","possible",",","the","value","from","(","a",",","b",")","that","is","$","\\ge","$","the","other",".","In","common","case",",","when","the","length","of","list","greater","than","2",",","the","task","is","more","complicated",".","Return","only","the","arguments",",","which","are","greater","than","others",",","if","it","is","possible","to","determine","directional","relation",".","If","is","not","possible","to","determine","such","a","relation",",","return","a","partially","evaluated","result",".","Assumptions","are","used","to","make","the","decision","too",".","Also",",","only","comparable","arguments","are","permitted",".","It","is","named","``","Max","``","and","not","``","max","``","to","avoid","conflicts","with","the","built-in","function","``","max","``",".","Examples","========",">",">",">","from","sympy","import","Max",",","Symbol",",","oo",">",">",">","from","sympy.abc","import","x",",","y",",","z",">",">",">","p","=","Symbol","(","'","p","'",",","positive=True",")",">",">",">","n","=","Symbol","(","'n","'",",","negative=True",")",">",">",">","Max","(","x",",","-2",")","Max","(","-2",",","x",")",">",">",">","Max","(","x",",","-2",")",".subs","(","x",",","3",")","3",">",">",">","Max","(","p",",","-2",")","p",">",">",">","Max","(","x",",","y",")","Max","(","x",",","y",")",">",">",">","Max","(","x",",","y",")","==","Max","(","y",",","x",")","True",">",">",">","Max","(","x",",","Max","(","y",",","z",")",")","Max","(","x",",","y",",","z",")",">",">",">","Max","(","n",",","8",",","p",",","7",",","-oo",")","Max","(","8",",","p",")",">",">",">","Max","(","1",",","x",",","oo",")","oo","*","Algorithm","The","task","can","be","considered","as","searching","of","supremums","in","the","directed","complete","partial","orders","[","1","]","_",".","The","source","values","are","sequentially","allocated","by","the","isolated","subsets","in","which","supremums","are","searched","and","result","as","Max","arguments",".","If","the","resulted","supremum","is","single",",","then","it","is","returned",".","The","isolated","subsets","are","the","sets","of","values","which","are","only","the","comparable","with","each","other","in","the","current","set",".","E.g",".","natural","numbers","are","comparable","with","each","other",",","but","not","comparable","with","the","`","x","`","symbol",".","Another","example",":","the","symbol","`","x","`","with","negative","assumption","is","comparable","with","a","natural","number",".","Also","there","are","``","least","''","elements",",","which","are","comparable","with","all","others",",","and","have","a","zero","property","(","maximum","or","minimum","for","all","elements",")",".","For","example",",","in","case","of","$","\\infty","$",",","the","allocation","operation","is","terminated","and","only","this","value","is","returned",".","Assumption",":","-","if","$","A",">","B",">","C","$","then","$","A",">","C","$","-","if","$","A","=","B","$","then","$","B","$","can","be","removed","References","==========","..","[","1","]","https",":","\/\/en.wikipedia.org\/wiki\/Directed_complete_partial_order","..","[","2","]","https",":","\/\/en.wikipedia.org\/wiki\/Lattice_","%","28order","%","29","See","Also","========","Min",":","find","minimum","values"]
code: def _eval_rewrite_as_Heaviside(self, *args, **kwargs):
      from sympy.functions.special.delta_functions import Heaviside
  
      return Add(
          *[
              j * Mul(*[Heaviside(j - i) for i in args if i != j])
              for j in args
          ]
      )
  
imports: from sympy.core import Function, S, sympify, NumberKind
  from sympy.utilities.iterables import sift
  from sympy.core.add import Add
  from sympy.core.containers import Tuple
  from sympy.core.operations import LatticeOp, ShortCircuit
  from sympy.core.function import Application, Lambda, ArgumentIndexError
  from sympy.core.expr import Expr
  from sympy.core.exprtools import factor_terms
  from sympy.core.mod import Mod
  from sympy.core.mul import Mul
  from sympy.core.numbers import Rational
  from sympy.core.power import Pow
  from sympy.core.relational import Eq, Relational
  from sympy.core.singleton import Singleton
  from sympy.core.sorting import ordered
  from sympy.core.symbol import Dummy
  from sympy.core.rules import Transform
  from sympy.core.logic import fuzzy_and, fuzzy_or, _torf
  from sympy.core.traversal import walk
  from sympy.core.numbers import Integer
  from sympy.logic.boolalg import And, Or
label_desc: Use image node_id 2 for calling the Max obj's underlying member method code with example usage: obj._eval_rewrite_as_Heaviside() and returns: Add