code: def pde_1st_linear_constant_coeff_homogeneous(
      eq, func, order, match, solvefun
  ):
      r"""
      Solves a first order linear homogeneous
      partial differential equation with constant coefficients.
  
      The general form of this partial differential equation is
  
      .. math:: a \frac{\partial f(x,y)}{\partial x}
                + b \frac{\partial f(x,y)}{\partial y} + c f(x,y) = 0
  
      where `a`, `b` and `c` are constants.
  
      The general solution is of the form:
  
      .. math::
          f(x, y) = F(- a y + b x ) e^{- \frac{c (a x + b y)}{a^2 + b^2}}
  
      and can be found in SymPy with ``pdsolve``::
  
          >>> from sympy.solvers import pdsolve
          >>> from sympy.abc import x, y, a, b, c
          >>> from sympy import Function, pprint
          >>> f = Function('f')
          >>> u = f(x,y)
          >>> ux = u.diff(x)
          >>> uy = u.diff(y)
          >>> genform = a*ux + b*uy + c*u
          >>> pprint(genform)
            d               d
          a*--(f(x, y)) + b*--(f(x, y)) + c*f(x, y)
            dx              dy
  
          >>> pprint(pdsolve(genform))
                                   -c*(a*x + b*y)
                                   ---------------
                                        2    2
                                       a  + b
          f(x, y) = F(-a*y + b*x)*e
  
      Examples
      ========
  
      >>> from sympy import pdsolve
      >>> from sympy import Function, pprint
      >>> from sympy.abc import x,y
      >>> f = Function('f')
      >>> pdsolve(f(x,y) + f(x,y).diff(x) + f(x,y).diff(y))
      Eq(f(x, y), F(x - y)*exp(-x/2 - y/2))
      >>> pprint(pdsolve(f(x,y) + f(x,y).diff(x) + f(x,y).diff(y)))
                            x   y
                          - - - -
                            2   2
      f(x, y) = F(x - y)*e
  
      References
      ==========
  
      - Viktor Grigoryan, "Partial Differential Equations"
        Math 124A - Fall 2010, pp.7
  
      """
      # TODO : For now homogeneous first order linear PDE's having
      # two variables are implemented. Once there is support for
      # solving systems of ODE's, this can be extended to n variables.
  
      f = func.func
      x = func.args[0]
      y = func.args[1]
      b = match[match["b"]]
      c = match[match["c"]]
      d = match[match["d"]]
      return Eq(
          f(x, y),
          exp(-S(d) / (b**2 + c**2) * (b * x + c * y))
          * solvefun(c * x - b * y),
      )
  
imports: from functools import reduce
  from itertools import combinations_with_replacement
  from sympy.simplify import simplify
  from sympy.core import Add, S
  from sympy.core.function import Function, expand, AppliedUndef, Subs
  from sympy.core.relational import Equality, Eq
  from sympy.core.symbol import Symbol, Wild, symbols
  from sympy.functions import exp
  from sympy.integrals.integrals import Integral, integrate
  from sympy.utilities.iterables import has_dups, is_sequence
  from sympy.utilities.misc import filldedent
  from sympy.solvers.deutils import _preprocess, ode_order, _desolve
  from sympy.solvers.solvers import solve
  from sympy.simplify.radsimp import collect
  import operator
label_desc: Use image node_id 6 for calling a global function with example usage: pde_1st_linear_constant_coeff_homogeneous(eq, func, order, match, solvefun) and returns: Eq