Ë
    7^(h�;  ã                   óÔ   — d Z ddlmZ ddlmZ ddlmZmZ ddlm	Z	m
Z
mZ ddlmZ ddlmZ ddlmZmZ dd	lmZ dd
lmZmZ ddlmZ ddlmZ ddlmZ  G d„ d«      Z G d„ d«      Zy)a  
This module contains functions for two multivariate resultants. These
are:

- Dixon's resultant.
- Macaulay's resultant.

Multivariate resultants are used to identify whether a multivariate
system has common roots. That is when the resultant is equal to zero.
é    )Úprod)ÚMul)ÚMatrixÚdiag)ÚPolyÚdegree_listÚrem)Úsimplify)ÚIndexedBase)ÚitermonomialsÚmonomial_deg)Úmonomial_key)Úpoly_from_exprÚtotal_degree)Úbinomial)Úcombinations_with_replacement)Úsympy_deprecation_warningc                   óV   — e Zd ZdZd„ Zed„ «       Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zy)ÚDixonResultantaG  
    A class for retrieving the Dixon's resultant of a multivariate
    system.

    Examples
    ========

    >>> from sympy import symbols

    >>> from sympy.polys.multivariate_resultants import DixonResultant
    >>> x, y = symbols('x, y')

    >>> p = x + y
    >>> q = x ** 2 + y ** 3
    >>> h = x ** 2 + y

    >>> dixon = DixonResultant(variables=[x, y], polynomials=[p, q, h])
    >>> poly = dixon.get_dixon_polynomial()
    >>> matrix = dixon.get_dixon_matrix(polynomial=poly)
    >>> matrix
    Matrix([
    [ 0,  0, -1,  0, -1],
    [ 0, -1,  0, -1,  0],
    [-1,  0,  1,  0,  0],
    [ 0, -1,  0,  0,  1],
    [-1,  0,  0,  1,  0]])
    >>> matrix.det()
    0

    See Also
    ========

    Notebook in examples: sympy/example/notebooks.

    References
    ==========

    .. [1] [Kapur1994]_
    .. [2] [Palancz08]_

    c                 ó”  ‡— || _         || _        t        | j                  «      | _        t        | j                   «      | _        t        d«      }t        | j                  «      D �cg c]  }||   ‘Œ	 c}| _        t        | j                  «      D �‡cg c]   Št        ˆfd„| j                   D «       «      ‘Œ" c}| _	        yc c}w c c}w )aV  
        A class that takes two lists, a list of polynomials and list of
        variables. Returns the Dixon matrix of the multivariate system.

        Parameters
        ----------
        polynomials : list of polynomials
            A  list of m n-degree polynomials
        variables: list
            A list of all n variables
        Úalphac              3   ó:   •K  — | ]  }t        |«      ‰   –— Œ y ­w)N)r   )Ú.0ÚpolyÚis     €úa/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/polys/multivariate_resultants.pyú	<genexpr>z*DixonResultant.__init__.<locals>.<genexpr>[   s   øè ø€ Ò S¸$¤¨TÓ!2°1Õ!5Ñ Sùs   ƒN)
ÚpolynomialsÚ	variablesÚlenÚnÚmr   ÚrangeÚdummy_variablesÚmaxÚ_max_degrees)Úselfr   r   Úar   s       `r   Ú__init__zDixonResultant.__init__D   sŸ   ø€ ð 'ˆÔØ"ˆŒä�T—^‘^Ó$ˆŒÜ�T×%Ñ%Ó&ˆŒä˜Ó ˆä.3°D·F±F«mÖ<¨  !£Ò<ˆÔô ˜4Ÿ6™6“]÷$Øô !Ó SÀ$×BRÑBRÔ SÕSò $ˆÕùò  =ùò$s   Á&C Â%Cc                 ó6   — t        ddd¬«       | j                  S )NzS
            The max_degrees property of DixonResultant is deprecated.
            ú1.5ú$deprecated-dixonresultant-properties©Údeprecated_since_versionÚactive_deprecations_target)r   r&   ©r'   s    r   Úmax_degreeszDixonResultant.max_degrees^   s%   € ä!ðð &+Ø'Mõ	
ð × Ñ Ð ó    c           	      ó¶  — | j                   | j                  dz   k7  rt        d«      ‚| j                  g}t	        | j
                  «      }t        | j                  «      D ]k  }| j                  |   ||<   t        t        | j
                  |«      «      }|j                  | j                  D �cg c]  }|j                  |«      ‘Œ c}«       Œm t        |«      }t        | j
                  | j                  «      }t        |D ��	cg c]
  \  }}	||	z
  ‘Œ c}	}Ž }
|j                  «       |
z  j                  «       }t!        || j                  «      d   S c c}w c c}	}w )a²  
        Returns
        =======

        dixon_polynomial: polynomial
            Dixon's polynomial is calculated as:

            delta = Delta(A) / ((x_1 - a_1) ... (x_n - a_n)) where,

            A =  |p_1(x_1,... x_n), ..., p_n(x_1,... x_n)|
                 |p_1(a_1,... x_n), ..., p_n(a_1,... x_n)|
                 |...             , ...,              ...|
                 |p_1(a_1,... a_n), ..., p_n(a_1,... a_n)|
        é   z%Method invalid for given combination.r   )r"   r!   Ú
ValueErrorr   Úlistr   r#   r$   ÚdictÚzipÚappendÚsubsr   r   ÚdetÚfactorr   )r'   ÚrowsÚtempÚidxÚsubstitutionÚfÚAÚtermsr(   ÚbÚproduct_of_differencesÚdixon_polynomials               r   Úget_dixon_polynomialz#DixonResultant.get_dixon_polynomiali   s)  € ð �6‰6�d—f‘f˜q‘jÒ!ÜÐDÓEÐEð × Ñ Ð!ˆä�D—N‘NÓ#ˆä˜Ÿ™“=ò 	JˆCØ×,Ñ,¨SÑ1ˆD�‰IÜ¤ D§N¡N°DÓ 9Ó:ˆLØ�K‰K°t×7GÑ7GÖH°!˜Ÿ™ Õ-ÒHÕIð	Jô
 �4‹Lˆä�D—N‘N D×$8Ñ$8Ó9ˆÜ!$¸×&?±°°A q¨1£uÓ&?Ð!@ÐØŸE™E›GÐ&<Ñ<×DÑDÓFÐäÐ.°×0DÑ0DÓEÀaÑHÐHùò Iùó
 '@s   Â,E
ÄE
c                 óþ   — t        ddd¬«       t        | j                  «      D �cg c]!  }| j                  |   | j                  |   z  ‘Œ# }}t        |«      }t        |«      j                  «       }t        |Ž S c c}w )Nzƒ
            The get_upper_degree() method of DixonResultant is deprecated. Use
            get_max_degrees() instead.
            r+   r,   r-   )	r   r#   r!   r   r&   r   r   Úmonomsr   )r'   r   Úlist_of_productsÚproducts       r   Úget_upper_degreezDixonResultant.get_upper_degree�   s…   € Ü!ðð &+Ø'Mõ	
ô &+¨4¯6©6£]ö4Ø !ð !ŸN™N¨1Ñ-°×1BÑ1BÀ1Ñ1EÓEð 4Ðð 4äÐ'Ó(ˆÜ�w“-×&Ñ&Ó(ˆä˜WÐ%Ð%ùò4s   ¦&A:c           	      óÊ   — |j                  «       D �cg c]!  }t        t        || j                  «      «      ‘Œ# }}t	        |Ž D �cg c]  }t        |«      ‘Œ }}|S c c}w c c}w )zÎ
        Returns a list of the maximum degree of each variable appearing
        in the coefficients of the Dixon polynomial. The coefficients are
        viewed as polys in $x_1, x_2, \dots, x_n$.
        )Úcoeffsr   r   r   r8   r%   )r'   Ú
polynomialr   Ú	deg_listsÚdegsr1   s         r   Úget_max_degreeszDixonResultant.get_max_degrees�   sg   € ð ",×!2Ñ!2Ó!4ö6Øô !¤ d¨D¯N©NÓ!;Õ<ð 6ˆ	ð 6ô .1°)¨_Ö= T”s˜4•yÐ=ˆÐ=àÐùò6ùò >s   “&AÁA c                 ó8  — | j                  |«      }t        | j                  |«      }t        |dt	        d| j                  «      ¬«      }t        |j                  «       D ��cg c]5  }|D �cg c]'  }t        |g| j                  ¢­Ž j                  |«      ‘Œ) c}‘Œ7 c}}«      }|j                  d   |j                  d   k7  rGt        |j                  d   «      D �cg c]  }t        d„ |dd…|f   D «       «      r|‘Œ }}|dd…|f   }|S c c}w c c}}w c c}w )	z¥
        Construct the Dixon matrix from the coefficients of polynomial
        \alpha. Each coefficient is viewed as a polynomial of x_1, ...,
        x_n.
        TÚlex©ÚreverseÚkeyr   r4   éÿÿÿÿc              3   ó&   K  — | ]	  }|d k7  –— Œ y­w©r   N© )r   Úelements     r   r   z2DixonResultant.get_dixon_matrix.<locals>.<genexpr>¿   s   è ø€ ò 4¨G˜7 a�<ñ 4ùó   ‚N)rR   r   r   Úsortedr   r   rN   r   Úcoeff_monomialÚshaper#   Úany)	r'   rO   r1   Ú	monomialsÚcr"   Údixon_matrixÚcolumnÚkeeps	            r   Úget_dixon_matrixzDixonResultant.get_dixon_matrixª   s)  € ð ×*Ñ*¨:Ó6ˆô " $§.¡.°+Ó>ˆ	Ü˜9¨dÜ+¨E°4·>±>ÓBôDˆ	ô à)3×):Ñ):Ó)<÷>à$%ð *3ö 4Ø$%ô !% QÐ 8¨¯©Ò 8× GÑ GÈÕ Jô  4ó >ó ?ˆð
 ×Ñ˜aÑ  L×$6Ñ$6°qÑ$9Ò9Ü).¨|×/AÑ/AÀ"Ñ/EÓ)Fö 5˜vÜñ 4Ø'ª¨6¨	Ñ2ô4ô 4ò ð 5ˆDð 5ð (ª¨4¨Ñ0ˆLàÐùò 4ùó >ùò5s   Á"	D
Á+,DÂD
Ã"DÄD
c           	      óL  ‡‡— ‰j                   ry‰j                  \  }}t        ‰j                  «       d   «      Št	        |«      D �‡cg c]#  Št        ˆˆfd„t	        |«      D «       «      sŒ"‰‘Œ% }}‰|dd…f   Št        dg|dz
  z  dgz   g«      }‰ddd…f   |k(  ryyc c}w )a¯  
        Test for the validity of the Kapur-Saxena-Yang precondition.

        The precondition requires that the column corresponding to the
        monomial 1 = x_1 ^ 0 * x_2 ^ 0 * ... * x_n ^ 0 is not a linear
        combination of the remaining ones. In SymPy notation this is
        the last column. For the precondition to hold the last non-zero
        row of the rref matrix should be of the form [0, 0, ..., 1].
        Fr   c              3   ó2   •K  — | ]  }‰‰|f   d k7  –— Œ y­wrZ   r[   )r   Újr   Úmatrixs     €€r   r   z2DixonResultant.KSY_precondition.<locals>.<genexpr>×   s   øè ø€ Ò*OÀ¨6°!°Q°$©<¸1Õ+<Ñ*Oùs   ƒNr4   rX   T)Úis_zero_matrixr`   r
   Úrrefr#   ra   r   )r'   rk   r"   r!   r   r=   Ú	conditions    `  `  r   ÚKSY_preconditionzDixonResultant.KSY_preconditionÆ   s£   ù€ ð × Ò Øà�|‰|‰ˆˆ1ô ˜&Ÿ+™+›-¨Ñ*Ó+ˆÜ  ›8×P�a¤sÔ*OÄeÈAÃhÔ*OÕ'O’ÐPˆÐPØ˜šQ˜‘ˆä˜Q˜C  1¡™I¨¨™OÐ,Ó-ˆ	à�"’Q�$‰<˜9Ò$Øàùò Qs   Á	#B!Á-B!c                 ó  — t        |j                  «      D �cg c]   }|j                  |«      j                  rŒ|‘Œ" }}t        |j                  «      D �cg c]   }|j                  |«      j                  rŒ|‘Œ" }}|||f   S c c}w c c}w )z/Remove the zero rows and columns of the matrix.)r#   r=   Úrowrl   ÚcolsÚcol)r'   rk   r   r=   rj   rr   s         r   Údelete_zero_rows_and_columnsz+DixonResultant.delete_zero_rows_and_columnsá   s�   € ô ˜VŸ[™[Ó)öOØ°·±¸A³×1MÓ1MŠAðOˆð Oô ˜VŸ[™[Ó)öOØ°·±¸A³×1MÓ1MŠAðOˆð Oð �d˜D�jÑ!Ð!ùòOùòOs   ˜ B¹BÁ B	Á7B	c                 ó‚   — d}t        |j                  «      D ]$  }|j                  |«      D ]  }|dk7  sŒ	||z  } Œ$ Œ& |S )z;Calculate the product of the leading entries of the matrix.r4   r   )r#   r=   rq   )r'   rk   Úresrq   Úels        r   Úproduct_leading_entriesz&DixonResultant.product_leading_entriesê   sP   € àˆÜ˜Ÿ™Ó%ò 	ˆCØ—j‘j “oò �Ø˜“7Ø ™(�CÙñð	ð
 ˆ
r2   c                 ó¢   — | j                  |«      }|j                  «       \  }}}| j                  t        |«      «      }| j                  |«      S )z@Calculate the Kapur-Saxena-Yang approach to the Dixon Resultant.)rt   ÚLUdecompositionr
   rx   )r'   rk   Ú_ÚUs       r   Úget_KSY_Dixon_resultantz&DixonResultant.get_KSY_Dixon_resultantô   sK   € à×2Ñ2°6Ó:ˆØ×(Ñ(Ó*‰ˆˆ1ˆaØ×2Ñ2´8¸A³;Ó?ˆà×+Ñ+¨FÓ3Ð3r2   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r)   Úpropertyr1   rG   rL   rR   rg   ro   rt   rx   r}   r[   r2   r   r   r      sK   „ ñ(òT$ð4 ñ!ó ð!ò"IòH&ò òò8ò6"òó4r2   r   c                   ó@   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zy
)ÚMacaulayResultanta-  
    A class for calculating the Macaulay resultant. Note that the
    polynomials must be homogenized and their coefficients must be
    given as symbols.

    Examples
    ========

    >>> from sympy import symbols

    >>> from sympy.polys.multivariate_resultants import MacaulayResultant
    >>> x, y, z = symbols('x, y, z')

    >>> a_0, a_1, a_2 = symbols('a_0, a_1, a_2')
    >>> b_0, b_1, b_2 = symbols('b_0, b_1, b_2')
    >>> c_0, c_1, c_2,c_3, c_4 = symbols('c_0, c_1, c_2, c_3, c_4')

    >>> f = a_0 * y -  a_1 * x + a_2 * z
    >>> g = b_1 * x ** 2 + b_0 * y ** 2 - b_2 * z ** 2
    >>> h = c_0 * y * z ** 2 - c_1 * x ** 3 + c_2 * x ** 2 * z - c_3 * x * z ** 2 + c_4 * z ** 3

    >>> mac = MacaulayResultant(polynomials=[f, g, h], variables=[x, y, z])
    >>> mac.monomial_set
    [x**4, x**3*y, x**3*z, x**2*y**2, x**2*y*z, x**2*z**2, x*y**3,
    x*y**2*z, x*y*z**2, x*z**3, y**4, y**3*z, y**2*z**2, y*z**3, z**4]
    >>> matrix = mac.get_matrix()
    >>> submatrix = mac.get_submatrix(matrix)
    >>> submatrix
    Matrix([
    [-a_1,  a_0,  a_2,    0],
    [   0, -a_1,    0,    0],
    [   0,    0, -a_1,    0],
    [   0,    0,    0, -a_1]])

    See Also
    ========

    Notebook in examples: sympy/example/notebooks.

    References
    ==========

    .. [1] [Bruce97]_
    .. [2] [Stiller96]_

    c                 óD  — || _         || _        t        |«      | _        | j                   D �cg c]  }t	        |g| j                  ¢­Ž ‘Œ c}| _        | j                  «       | _        | j                  «       | _	        | j                  | j                  «      | _        yc c}w )zÌ
        Parameters
        ==========

        variables: list
            A list of all n variables
        polynomials : list of SymPy polynomials
            A  list of m n-degree polynomials
        N)r   r   r    r!   r   ÚdegreesÚ_get_degree_mÚdegree_mÚget_sizeÚmonomials_sizeÚget_monomials_of_certain_degreeÚmonomial_set)r'   r   r   r   s       r   r)   zMacaulayResultant.__init__+  sˆ   € ð 'ˆÔØ"ˆŒÜ�Y“ˆŒð  ×+Ñ+ö-Àœ TÐ;¨D¯N©NÔ;ò -ˆŒð ×*Ñ*Ó,ˆŒØ"Ÿm™m›oˆÔð !×@Ñ@ÀÇÁÓOˆÕùò-s   ­Bc                 ó@   — dt        d„ | j                  D «       «      z   S )z½
        Returns
        =======

        degree_m: int
            The degree_m is calculated as  1 + \sum_1 ^ n (d_i - 1),
            where d_i is the degree of the i polynomial
        r4   c              3   ó&   K  — | ]	  }|d z
  –— Œ y­w)r4   Nr[   )r   Úds     r   r   z2MacaulayResultant._get_degree_m.<locals>.<genexpr>L  s   è ø€ Ò3 �q˜1•uÑ3ùr]   )Úsumr†   r0   s    r   r‡   zMacaulayResultant._get_degree_mC  s   € ð ”3Ñ3 d§l¡lÔ3Ó3Ñ3Ð3r2   c                 óh   — t        | j                  | j                  z   dz
  | j                  dz
  «      S )zÒ
        Returns
        =======

        size: int
            The size of set T. Set T is the set of all possible
            monomials of the n variables for degree equal to the
            degree_m
        r4   )r   rˆ   r!   r0   s    r   r‰   zMacaulayResultant.get_sizeN  s+   € ô ˜Ÿ™¨¯©Ñ.°Ñ2°D·F±F¸Q±JÓ?Ð?r2   c                 ó¢   — t        | j                  |«      D �cg c]
  }t        |Ž ‘Œ }}t        |dt	        d| j                  «      ¬«      S c c}w )zw
        Returns
        =======

        monomials: list
            A list of monomials of a certain degree.
        TrT   rU   )r   r   r   r^   r   )r'   ÚdegreeÚmonomialrb   s       r   r‹   z1MacaulayResultant.get_monomials_of_certain_degreeZ  sU   € ô 6°d·n±nØ6<ó>ö?¨”S˜(’^ð ?ˆ	ð ?ô �i¨Ü& u¨d¯n©nÓ=ô?ð 	?ùò	?s   ™Ac                 ó  — g }g }t        | j                  «      D ]ê  }|dk(  r?| j                  | j                  |   z
  }| j	                  |«      }|j                  |«       ŒG|j                  | j                  |dz
     | j                  |dz
     z  «       | j                  | j                  |   z
  }| j	                  |«      }|D ]-  }|D ]&  }t        ||«      dk(  sŒ|D �	cg c]	  }	|	|k7  r|	‘Œ }}	Œ( Œ/ |j                  |«       Œì |S c c}	w )z
        Returns
        =======

        row_coefficients: list
            The row coefficients of Macaulay's matrix
        r   r4   )r#   r!   rˆ   r†   r‹   r9   r   r	   )
r'   Úrow_coefficientsÚ	divisibler   r“   r”   Ú	poss_rowsÚdivÚpÚitems
             r   Úget_row_coefficientsz&MacaulayResultant.get_row_coefficientsi  s%  € ð ÐØˆ	Ü�t—v‘v“ò 	3ˆAØ�AŠvØŸ™¨¯©°a©Ñ8�Ø×?Ñ?ÀÓG�Ø ×'Ñ'¨Õ1à× Ñ  §¡°°A±Ñ!6Ø!%§¡¨a°!©eÑ!4ñ"5ô 6àŸ™¨¯©°a©Ñ8�Ø ×@Ñ@ÀÓH�	Ø$ò 7�CØ&ò 7˜Ü˜q #›;¨!Ó+Ø:Cö )7°$Ø,0°AªIò *.ð )7˜Iñ )7ñ7ð7ð
 !×'Ñ'¨	Õ2ð	3ð   Ðùò)7s   Ã D	
c                 ó\  — g }| j                  «       }t        | j                  «      D ]v  }||   D ]l  }g }t        | j                  |   |z  g| j
                  ¢­Ž }| j                  D ]"  }|j                  |j                  |«      «       Œ$ |j                  |«       Œn Œx t        |«      }|S )zt
        Returns
        =======

        macaulay_matrix: Matrix
            The Macaulay numerator matrix
        )
rœ   r#   r!   r   r   r   rŒ   r9   r_   r   )	r'   r=   r–   r   Ú
multiplierÚcoefficientsr   ÚmonoÚmacaulay_matrixs	            r   Ú
get_matrixzMacaulayResultant.get_matrix…  s¿   € ð ˆØ×4Ñ4Ó6ÐÜ�t—v‘v“ò 	*ˆAØ.¨qÑ1ò *�
Ø!�Ü˜D×,Ñ,¨QÑ/°*Ñ<ð -Ø!Ÿ^™^ò-�ð !×-Ñ-ò C�DØ ×'Ñ'¨×(;Ñ(;¸DÓ(AÕBðCà—‘˜LÕ)ñ*ð	*ô ! ›,ˆØÐr2   c           
      óð  — g }| j                   D ]f  }g }t        | j                  «      D ]9  \  }}|j                  t	        t        ||«      | j                  |   k\  «      «       Œ; |j                  |«       Œh t        |«      D ��cg c]"  \  }}t        |«      | j                  dz
  k  r|‘Œ$ }}}t        |«      D ��cg c]"  \  }}t        |«      | j                  dz
  k\  r|‘Œ$ }}}||fS c c}}w c c}}w )aÓ  
        Returns
        =======

        reduced: list
            A list of the reduced monomials
        non_reduced: list
            A list of the monomials that are not reduced

        Definition
        ==========

        A polynomial is said to be reduced in x_i, if its degree (the
        maximum degree of its monomials) in x_i is less than d_i. A
        polynomial that is reduced in all variables but one is said
        simply to be reduced.
        r4   )	rŒ   Ú	enumerater   r9   Úboolr   r†   r�   r!   )	r'   r—   r"   r>   r   ÚvÚrÚreducedÚnon_reduceds	            r   Úget_reduced_nonreducedz(MacaulayResultant.get_reduced_nonreducedœ  sÿ   € ð$ ˆ	Ø×"Ñ"ò 	#ˆAØˆDÜ! $§.¡.Ó1ò I‘��1Ø—‘œD¤¨a°Ó!3°t·|±|ÀA±Ñ!FÓGÕHðIà×Ñ˜TÕ"ð		#ô
 "+¨9Ó!5÷ +™˜˜AÜ˜!“f˜tŸv™v¨™zÒ)ò ð +ˆñ +ä%.¨yÓ%9÷ /™T˜Q Ü˜a›& D§F¡F¨A¡IÒ-ò ð /ˆñ /ð ˜Ð#Ð#ùó+ùó/s   Â'C,Â>'C2c           	      ó  — | j                  «       \  }}|g k(  rt        dg«      S t        | j                  «      D ��cg c]  \  }}|| j                  |   z  ‘Œ }}}t        | j                  «      D �cg c]#  }| j                  |   j                  ||   «      ‘Œ% }}|dd…|f   }g }	t        |j                  «      D ]0  }
|D �cg c]  }|||
dd…f   v ‘Œ }}d|vsŒ |	j                  |
«       Œ2 ||	|f   S c c}}w c c}w c c}w )a  
        Returns
        =======

        macaulay_submatrix: Matrix
            The Macaulay denominator matrix. Columns that are non reduced are kept.
            The row which contains one of the a_{i}s is dropped. a_{i}s
            are the coefficients of x_i ^ {d_i}.
        r4   NT)rª   r   r¤   r   r†   r#   r!   r   Úcoeffr=   r9   )r'   rk   r¨   r©   r   r¦   Úreduction_setÚaisÚreduced_matrixrf   rq   ÚaiÚchecks                r   Úget_submatrixzMacaulayResultant.get_submatrix»  s)  € ð  $×:Ñ:Ó<Ñˆ�ð �bŠ=Ü˜˜“9Ðô & d§n¡nÓ5÷7±$°!°Q˜˜dŸl™l¨1™oÓ-ð 7ˆñ 7ô ˜dŸf™f›ö'Øð ×Ñ Ñ"×(Ñ(¨°qÑ)9Õ:ð 'ˆð 'ð  ¢ 7 
Ñ+ˆØˆÜ˜×,Ñ,Ó-ò 	!ˆCØ<?Ö@°b�R˜>¨#ªq¨&Ñ1Ò1Ð@ˆEÐ@Ø˜5Ò Ø—‘˜CÕ ð	!ð
 �d˜KÐ'Ñ(Ð(ùó7ùò'ùò As   ½C7Á3(C=ÃDN)r~   r   r€   r�   r)   r‡   r‰   r‹   rœ   r¢   rª   r²   r[   r2   r   r„   r„   ü   s2   „ ñ-ò\Pò0	4ò
@ò?ò ò8ò.$ó>)r2   r„   N)r�   Úmathr   Úsympy.core.mulr   Úsympy.matrices.denser   r   Úsympy.polys.polytoolsr   r   r	   Úsympy.simplify.simplifyr
   Úsympy.tensor.indexedr   Úsympy.polys.monomialsr   r   Úsympy.polys.orderingsr   r   r   Ú(sympy.functions.combinatorial.factorialsr   Ú	itertoolsr   Úsympy.utilities.exceptionsr   r   r„   r[   r2   r   ú<module>r¾      sL   ðñ	õ å ß /ß :Ñ :Ý ,Ý ,ß =Ý .ß >Ý =Ý 3Ý @÷a4ñ a4÷F])ò ])r2   