§
    OŠtjbC  ã                   ó~  — d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
 ddl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 g d¢Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Zd„ Zd„ Z dS ) zPauli operators and statesé    )ÚAdd)ÚMul©ÚI)ÚPow)ÚS)Úexp)ÚOperatorÚKetÚBra©ÚComplexSpace)ÚMatrix)ÚKroneckerDelta)ÚSigmaXÚSigmaYÚSigmaZÚ
SigmaMinusÚ	SigmaPlusÚ	SigmaZKetÚ	SigmaZBraÚqsimplify_paulic                   ó`   — e Zd ZdZed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zd„ Z	d„ Z
dS )ÚSigmaOpBasez Pauli sigma operator, base classc                 ó   — | j         d         S ©Nr   )Úargs©Úselfs    úY/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/physics/quantum/pauli.pyÚnamezSigmaOpBase.name   s   € àŒy˜Œ|Ðó    c                 ó:   — t          | j        d         ¦  «        duS )Nr   F)Úboolr   r   s    r    Úuse_namezSigmaOpBase.use_name   s   € å�D”I˜a”LÑ!Ô!¨Ð.Ð.r"   c                 ó   — dS )N)F© r   s    r    Údefault_argszSigmaOpBase.default_args   s   € àˆxr"   c                 ó,   — t          j        | g|¢R i |¤ŽS ©N)r
   Ú__new__©Úclsr   Úhintss      r    r+   zSigmaOpBase.__new__#   s#   € ÝÔ Ð4 dÐ4Ð4Ð4¨eÐ4Ð4Ð4r"   c                 ó   — t           j        S r*   ©r   ÚZero©r   Úotherr.   s      r    Ú_eval_commutator_BosonOpz$SigmaOpBase._eval_commutator_BosonOp&   ó	   € ÝŒvˆr"   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úpropertyr!   r%   Úclassmethodr(   r+   r4   r'   r"   r    r   r      s‡   € € € € € Ø*Ð*àðð ñ „Xðð ð/ð /ñ „Xð/ð ðð ñ „[ðð5ð 5ð 5ðð ð ð ð r"   r   c                   óT   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ ZdS )r   a¦  Pauli sigma x operator

    Parameters
    ==========

    name : str
        An optional string that labels the operator. Pauli operators with
        different names commute.

    Examples
    ========

    >>> from sympy.physics.quantum import represent
    >>> from sympy.physics.quantum.pauli import SigmaX
    >>> sx = SigmaX()
    >>> sx
    SigmaX()
    >>> represent(sx)
    Matrix([
    [0, 1],
    [1, 0]])
    c                 ó,   — t          j        | g|¢R i |¤ŽS r*   ©r   r+   r,   s      r    r+   zSigmaX.__new__B   s#   € ÝÔ" 3Ð7¨Ð7Ð7Ð7°Ð7Ð7Ð7r"   c                 óx   — | j         |j         k    rt          j        S dt          z  t	          | j         ¦  «        z  S ©Né   ©r!   r   r1   r   r   r2   s      r    Ú_eval_commutator_SigmaYzSigmaX._eval_commutator_SigmaYE   ó1   € ØŒ9˜œ
Ò"Ð"Ý”6ˆMà•q‘5�6 $¤)Ñ,Ô,Ñ,Ð,r"   c                 óx   — | j         |j         k    rt          j        S dt          z  t	          | j         ¦  «        z  S ©Néþÿÿÿ©r!   r   r1   r   r   r2   s      r    Ú_eval_commutator_SigmaZzSigmaX._eval_commutator_SigmaZK   ó1   € ØŒ9˜œ
Ò"Ð"Ý”6ˆMà�‘7�V D¤IÑ.Ô.Ñ.Ð.r"   c                 ó   — t           j        S r*   r0   r2   s      r    r4   zSigmaX._eval_commutator_BosonOpQ   r5   r"   c                 ó   — t           j        S r*   r0   r2   s      r    Ú_eval_anticommutator_SigmaYz"SigmaX._eval_anticommutator_SigmaYT   r5   r"   c                 ó   — t           j        S r*   r0   r2   s      r    Ú_eval_anticommutator_SigmaZz"SigmaX._eval_anticommutator_SigmaZW   r5   r"   c                 ó   — | S r*   r'   r   s    r    Ú_eval_adjointzSigmaX._eval_adjointZ   ó   € Øˆr"   c                 óB   — | j         rdt          | j        ¦  «        z  S dS )Nz{\sigma_x^{(%s)}}z
{\sigma_x}©r%   Ústrr!   ©r   Úprinterr   s      r    Ú_print_contents_latexzSigmaX._print_contents_latex]   ó$   € ØŒ=ð 	!Ø'­#¨d¬i©.¬.Ñ8Ð8à �=r"   c                 ó   — dS )NzSigmaX()r'   rV   s      r    Ú_print_contentszSigmaX._print_contentsc   ó   € Øˆzr"   c                 ó”   — |j         r>|j        r9t          | j        ¦  «                             t          |¦  «        dz  ¦  «        S d S d S r@   )Ú
is_IntegerÚis_positiver   r!   Ú__pow__Úint©r   Úes     r    Ú_eval_powerzSigmaX._eval_powerf   óQ   € ØŒ<ð 	9˜AœMð 	9Ý˜$œ)Ñ$Ô$×,Ò,­S°©V¬V°a©ZÑ8Ô8Ð8ð	9ð 	9ð 	9ð 	9r"   c                 óŽ   — |                      dd¦  «        }|dk    rt          ddgddgg¦  «        S t          d|z   dz   ¦  «        ‚©NÚformatÚsympyr   é   úRepresentation in format ú not implemented.©Úgetr   ÚNotImplementedError©r   Úoptionsrh   s      r    Ú_represent_default_basiszSigmaX._represent_default_basisj   ód   € Ø—’˜X wÑ/Ô/ˆØ�WÒÐÝ˜A˜q˜6 A q 6Ð*Ñ+Ô+Ð+å%Ð&AØ&,ñ'-Ø/Bñ'Cñ Dô Dð Dr"   N)r6   r7   r8   r9   r+   rC   rI   r4   rM   rO   rQ   rX   r[   rd   rr   r'   r"   r    r   r   *   sÈ   € € € € € ðð ð.8ð 8ð 8ð-ð -ð -ð/ð /ð /ðð ð ðð ð ðð ð ðð ð ð!ð !ð !ðð ð ð9ð 9ð 9ðDð Dð Dð Dð Dr"   r   c                   óN   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ ZdS )r   a¨  Pauli sigma y operator

    Parameters
    ==========

    name : str
        An optional string that labels the operator. Pauli operators with
        different names commute.

    Examples
    ========

    >>> from sympy.physics.quantum import represent
    >>> from sympy.physics.quantum.pauli import SigmaY
    >>> sy = SigmaY()
    >>> sy
    SigmaY()
    >>> represent(sy)
    Matrix([
    [0, -I],
    [I,  0]])
    c                 ó&   — t          j        | g|¢R Ž S r*   r>   r,   s      r    r+   zSigmaY.__new__‹   ó   € ÝÔ" 3Ð.¨Ð.Ð.Ð.Ð.r"   c                 óx   — | j         |j         k    rt          j        S dt          z  t	          | j         ¦  «        z  S r@   ©r!   r   r1   r   r   r2   s      r    rI   zSigmaY._eval_commutator_SigmaZŽ   rD   r"   c                 óx   — | j         |j         k    rt          j        S dt          z  t	          | j         ¦  «        z  S rF   rB   r2   s      r    Ú_eval_commutator_SigmaXzSigmaY._eval_commutator_SigmaX”   rJ   r"   c                 ó   — t           j        S r*   r0   r2   s      r    Ú_eval_anticommutator_SigmaXz"SigmaY._eval_anticommutator_SigmaXš   r5   r"   c                 ó   — t           j        S r*   r0   r2   s      r    rO   z"SigmaY._eval_anticommutator_SigmaZ�   r5   r"   c                 ó   — | S r*   r'   r   s    r    rQ   zSigmaY._eval_adjoint    rR   r"   c                 óB   — | j         rdt          | j        ¦  «        z  S dS )Nz{\sigma_y^{(%s)}}z
{\sigma_y}rT   rV   s      r    rX   zSigmaY._print_contents_latex£   rY   r"   c                 ó   — dS )NzSigmaY()r'   rV   s      r    r[   zSigmaY._print_contents©   r\   r"   c                 ó”   — |j         r>|j        r9t          | j        ¦  «                             t          |¦  «        dz  ¦  «        S d S d S r@   )r^   r_   r   r!   r`   ra   rb   s     r    rd   zSigmaY._eval_power¬   re   r"   c                 ó¤   — |                      dd¦  «        }|dk    r t          dt           gt          dgg¦  «        S t          d|z   dz   ¦  «        ‚)Nrh   ri   r   rk   rl   )rn   r   r   ro   rp   s      r    rr   zSigmaY._represent_default_basis°   sf   € Ø—’˜X wÑ/Ô/ˆØ�WÒÐÝ˜A¥˜r˜7¥Q¨ FÐ+Ñ,Ô,Ð,å%Ð&AØ&,ñ'-Ø/Bñ'Cñ Dô Dð Dr"   N)r6   r7   r8   r9   r+   rI   rz   r|   rO   rQ   rX   r[   rd   rr   r'   r"   r    r   r   s   ó¹   € € € € € ðð ð./ð /ð /ð-ð -ð -ð/ð /ð /ðð ð ðð ð ðð ð ð!ð !ð !ðð ð ð9ð 9ð 9ðDð Dð Dð Dð Dr"   r   c                   óN   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ ZdS )r   a­  Pauli sigma z operator

    Parameters
    ==========

    name : str
        An optional string that labels the operator. Pauli operators with
        different names commute.

    Examples
    ========

    >>> from sympy.physics.quantum import represent
    >>> from sympy.physics.quantum.pauli import SigmaZ
    >>> sz = SigmaZ()
    >>> sz ** 3
    SigmaZ()
    >>> represent(sz)
    Matrix([
    [1,  0],
    [0, -1]])
    c                 ó&   — t          j        | g|¢R Ž S r*   r>   r,   s      r    r+   zSigmaZ.__new__Ñ   rv   r"   c                 óx   — | j         |j         k    rt          j        S dt          z  t	          | j         ¦  «        z  S r@   rH   r2   s      r    rz   zSigmaZ._eval_commutator_SigmaXÔ   rD   r"   c                 óx   — | j         |j         k    rt          j        S dt          z  t	          | j         ¦  «        z  S rF   rx   r2   s      r    rC   zSigmaZ._eval_commutator_SigmaYÚ   rJ   r"   c                 ó   — t           j        S r*   r0   r2   s      r    r|   z"SigmaZ._eval_anticommutator_SigmaXà   r5   r"   c                 ó   — t           j        S r*   r0   r2   s      r    rM   z"SigmaZ._eval_anticommutator_SigmaYã   r5   r"   c                 ó   — | S r*   r'   r   s    r    rQ   zSigmaZ._eval_adjointæ   rR   r"   c                 óB   — | j         rdt          | j        ¦  «        z  S dS )Nz{\sigma_z^{(%s)}}z
{\sigma_z}rT   rV   s      r    rX   zSigmaZ._print_contents_latexé   rY   r"   c                 ó   — dS )NzSigmaZ()r'   rV   s      r    r[   zSigmaZ._print_contentsï   r\   r"   c                 ó”   — |j         r>|j        r9t          | j        ¦  «                             t          |¦  «        dz  ¦  «        S d S d S r@   )r^   r_   r   r!   r`   ra   rb   s     r    rd   zSigmaZ._eval_powerò   re   r"   c                 óŽ   — |                      dd¦  «        }|dk    rt          ddgddgg¦  «        S t          d|z   dz   ¦  «        ‚)Nrh   ri   rj   r   éÿÿÿÿrk   rl   rm   rp   s      r    rr   zSigmaZ._represent_default_basisö   sd   € Ø—’˜X wÑ/Ô/ˆØ�WÒÐÝ˜A˜q˜6 A r 7Ð+Ñ,Ô,Ð,å%Ð&AØ&,ñ'-Ø/Bñ'Cñ Dô Dð Dr"   N)r6   r7   r8   r9   r+   rz   rC   r|   rM   rQ   rX   r[   rd   rr   r'   r"   r    r   r   ¹   rƒ   r"   r   c                   óf   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )r   aá  Pauli sigma minus operator

    Parameters
    ==========

    name : str
        An optional string that labels the operator. Pauli operators with
        different names commute.

    Examples
    ========

    >>> from sympy.physics.quantum import represent, Dagger
    >>> from sympy.physics.quantum.pauli import SigmaMinus
    >>> sm = SigmaMinus()
    >>> sm
    SigmaMinus()
    >>> Dagger(sm)
    SigmaPlus()
    >>> represent(sm)
    Matrix([
    [0, 0],
    [1, 0]])
    c                 ó&   — t          j        | g|¢R Ž S r*   r>   r,   s      r    r+   zSigmaMinus.__new__  rv   r"   c                 ód   — | j         |j         k    rt          j        S t          | j         ¦  «         S r*   ©r!   r   r1   r   r2   s      r    rz   z"SigmaMinus._eval_commutator_SigmaX  s+   € ØŒ9˜œ
Ò"Ð"Ý”6ˆMå˜4œ9Ñ%Ô%Ð%Ð%r"   c                 ór   — | j         |j         k    rt          j        S t          t	          | j         ¦  «        z  S r*   rB   r2   s      r    rC   z"SigmaMinus._eval_commutator_SigmaY"  ó-   € ØŒ9˜œ
Ò"Ð"Ý”6ˆMå•v˜dœiÑ(Ô(Ñ(Ð(r"   c                 ó   — d| z  S r@   r'   r2   s      r    rI   z"SigmaMinus._eval_commutator_SigmaZ(  s   € Ø�4‰xˆr"   c                 ó*   — t          | j        ¦  «        S r*   ©r   r!   r2   s      r    Ú_eval_commutator_SigmaMinusz&SigmaMinus._eval_commutator_SigmaMinus+  ó   € Ý�d”iÑ Ô Ð r"   c                 ó   — t           j        S r*   r0   r2   s      r    rO   z&SigmaMinus._eval_anticommutator_SigmaZ.  r5   r"   c                 ó   — t           j        S r*   ©r   ÚOner2   s      r    r|   z&SigmaMinus._eval_anticommutator_SigmaX1  ó	   € ÝŒuˆr"   c                 ó*   — t           t          j        z  S r*   )r   r   ÚNegativeOner2   s      r    rM   z&SigmaMinus._eval_anticommutator_SigmaY4  s   € Ý•1”=Ñ Ð r"   c                 ó   — t           j        S r*   r�   r2   s      r    Ú_eval_anticommutator_SigmaPlusz)SigmaMinus._eval_anticommutator_SigmaPlus7  rŸ   r"   c                 ó*   — t          | j        ¦  «        S r*   )r   r!   r   s    r    rQ   zSigmaMinus._eval_adjoint:  s   € Ý˜œÑ#Ô#Ð#r"   c                 ó>   — |j         r|j        rt          j        S d S d S r*   ©r^   r_   r   r1   rb   s     r    rd   zSigmaMinus._eval_power=  ó0   € ØŒ<ð 	˜AœMð 	Ý”6ˆMð	ð 	ð 	ð 	r"   c                 óB   — | j         rdt          | j        ¦  «        z  S dS )Nz{\sigma_-^{(%s)}}z
{\sigma_-}rT   rV   s      r    rX   z SigmaMinus._print_contents_latexA  rY   r"   c                 ó   — dS )NzSigmaMinus()r'   rV   s      r    r[   zSigmaMinus._print_contentsG  s   € Øˆ~r"   c                 óŽ   — |                      dd¦  «        }|dk    rt          ddgddgg¦  «        S t          d|z   dz   ¦  «        ‚rg   rm   rp   s      r    rr   z#SigmaMinus._represent_default_basisJ  rs   r"   N)r6   r7   r8   r9   r+   rz   rC   rI   r™   rO   r|   rM   r£   rQ   rd   rX   r[   rr   r'   r"   r    r   r   ÿ   sõ   € € € € € ðð ð2/ð /ð /ð&ð &ð &ð)ð )ð )ðð ð ð!ð !ð !ðð ð ðð ð ð!ð !ð !ðð ð ð$ð $ð $ðð ð ð!ð !ð !ðð ð ðDð Dð Dð Dð Dr"   r   c                   ól   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )r   aÞ  Pauli sigma plus operator

    Parameters
    ==========

    name : str
        An optional string that labels the operator. Pauli operators with
        different names commute.

    Examples
    ========

    >>> from sympy.physics.quantum import represent, Dagger
    >>> from sympy.physics.quantum.pauli import SigmaPlus
    >>> sp = SigmaPlus()
    >>> sp
    SigmaPlus()
    >>> Dagger(sp)
    SigmaMinus()
    >>> represent(sp)
    Matrix([
    [0, 1],
    [0, 0]])
    c                 ó&   — t          j        | g|¢R Ž S r*   r>   r,   s      r    r+   zSigmaPlus.__new__m  rv   r"   c                 ób   — | j         |j         k    rt          j        S t          | j         ¦  «        S r*   r“   r2   s      r    rz   z!SigmaPlus._eval_commutator_SigmaXp  s(   € ØŒ9˜œ
Ò"Ð"Ý”6ˆMå˜$œ)Ñ$Ô$Ð$r"   c                 ór   — | j         |j         k    rt          j        S t          t	          | j         ¦  «        z  S r*   rB   r2   s      r    rC   z!SigmaPlus._eval_commutator_SigmaYv  r•   r"   c                 óD   — | j         |j         k    rt          j        S d| z  S rF   )r!   r   r1   r2   s      r    rI   z!SigmaPlus._eval_commutator_SigmaZ|  s"   € ØŒ9˜œ
Ò"Ð"Ý”6ˆMà˜‘9Ðr"   c                 ó*   — t          | j        ¦  «        S r*   r˜   r2   s      r    r™   z%SigmaPlus._eval_commutator_SigmaMinus‚  rš   r"   c                 ó   — t           j        S r*   r0   r2   s      r    rO   z%SigmaPlus._eval_anticommutator_SigmaZ…  r5   r"   c                 ó   — t           j        S r*   r�   r2   s      r    r|   z%SigmaPlus._eval_anticommutator_SigmaXˆ  rŸ   r"   c                 ó   — t           S r*   r   r2   s      r    rM   z%SigmaPlus._eval_anticommutator_SigmaY‹  s   € Ýˆr"   c                 ó   — t           j        S r*   r�   r2   s      r    Ú_eval_anticommutator_SigmaMinusz)SigmaPlus._eval_anticommutator_SigmaMinusŽ  rŸ   r"   c                 ó*   — t          | j        ¦  «        S r*   )r   r!   r   s    r    rQ   zSigmaPlus._eval_adjoint‘  s   € Ý˜$œ)Ñ$Ô$Ð$r"   c                 ó   — | |z  S r*   r'   )r   r3   s     r    Ú	_eval_mulzSigmaPlus._eval_mul”  s   € Ø�e‰|Ðr"   c                 ó>   — |j         r|j        rt          j        S d S d S r*   r¦   rb   s     r    rd   zSigmaPlus._eval_power—  r§   r"   c                 óB   — | j         rdt          | j        ¦  «        z  S dS )Nz{\sigma_+^{(%s)}}z
{\sigma_+}rT   rV   s      r    rX   zSigmaPlus._print_contents_latex›  rY   r"   c                 ó   — dS )NzSigmaPlus()r'   rV   s      r    r[   zSigmaPlus._print_contents¡  s   € Øˆ}r"   c                 óŽ   — |                      dd¦  «        }|dk    rt          ddgddgg¦  «        S t          d|z   dz   ¦  «        ‚rg   rm   rp   s      r    rr   z"SigmaPlus._represent_default_basis¤  rs   r"   N)r6   r7   r8   r9   r+   rz   rC   rI   r™   rO   r|   rM   rµ   rQ   r¸   rd   rX   r[   rr   r'   r"   r    r   r   S  s  € € € € € ðð ð2/ð /ð /ð%ð %ð %ð)ð )ð )ðð ð ð!ð !ð !ðð ð ðð ð ðð ð ðð ð ð%ð %ð %ðð ð ðð ð ð!ð !ð !ðð ð ðDð Dð Dð Dð Dr"   r   c                   ó„   — e Zd ZdZd„ Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Z	d„ Z
d„ Zd„ Zd	„ Zd
„ Zd„ Zd„ ZdS )r   z‚Ket for a two-level system quantum system.

    Parameters
    ==========

    n : Number
        The state number (0 or 1).

    c                 óR   — |dvrt          d¦  «        ‚t          j        | |¦  «        S ©N)r   rj   zn must be 0 or 1)Ú
ValueErrorr   r+   ©r-   Úns     r    r+   zSigmaZKet.__new__¸  ó,   € Ø�Fˆ?ˆ?ÝÐ/Ñ0Ô0Ð0ÝŒ{˜3 Ñ"Ô"Ð"r"   c                 ó   — | j         d         S r   ©Úlabelr   s    r    rÂ   zSigmaZKet.n½  ó   € àŒz˜!Œ}Ðr"   c                 ó   — t           S r*   )r   r   s    r    Ú
dual_classzSigmaZKet.dual_classÁ  ó   € åÐr"   c                 ó    — t          d¦  «        S r@   r   )r-   rÆ   s     r    Ú_eval_hilbert_spacezSigmaZKet._eval_hilbert_spaceÅ  s   € å˜A‰ŒÐr"   c                 ó6   — t          | j        |j        ¦  «        S r*   )r   rÂ   )r   Úbrar.   s      r    Ú_eval_innerproduct_SigmaZBraz&SigmaZKet._eval_innerproduct_SigmaZBraÉ  s   € Ý˜dœf c¤eÑ,Ô,Ð,r"   c                 ó:   — | j         dk    r| S t          j        | z  S r   )rÂ   r   r¡   ©r   Úoprq   s      r    Ú_apply_from_right_to_SigmaZz%SigmaZKet._apply_from_right_to_SigmaZÌ  s   € ØŒ6�QŠ;ˆ;ØˆKå”= 4Ñ'Ð'r"   c                 óT   — | j         dk    rt          d¦  «        nt          d¦  «        S ©Nr   rj   )rÂ   r   rÑ   s      r    Ú_apply_from_right_to_SigmaXz%SigmaZKet._apply_from_right_to_SigmaXÒ  s"   € Ø#œv¨š{˜{�y˜‰|Œ|ˆ|µ	¸!±´Ð<r"   c                 óv   — | j         dk    rt          t          d¦  «        z  nt           t          d¦  «        z  S rÕ   )rÂ   r   r   rÑ   s      r    Ú_apply_from_right_to_SigmaYz%SigmaZKet._apply_from_right_to_SigmaYÕ  s/   € Ø#'¤6¨Q¢; ;�q•9˜Q‘<”<ÑÐµa°R½9ÀQ¹<¼<Ñ4GÐGr"   c                 óN   — | j         dk    rt          d¦  «        S t          j        S rÕ   )rÂ   r   r   r1   rÑ   s      r    Ú_apply_from_right_to_SigmaMinusz)SigmaZKet._apply_from_right_to_SigmaMinusØ  s    € ØŒ6�QŠ;ˆ;Ý˜Q‘<”<Ðå”6ˆMr"   c                 óN   — | j         dk    rt          j        S t          d¦  «        S r   )rÂ   r   r1   r   rÑ   s      r    Ú_apply_from_right_to_SigmaPlusz(SigmaZKet._apply_from_right_to_SigmaPlusÞ  s    € ØŒ6�QŠ;ˆ;Ý”6ˆMå˜Q‘<”<Ðr"   c                 óÆ   — |                      dd¦  «        }|dk    r1| j        dk    rt          dgdgg¦  «        nt          dgdgg¦  «        S t          d|z   dz   ¦  «        ‚rg   )rn   rÂ   r   ro   rp   s      r    rr   z"SigmaZKet._represent_default_basisä  s~   € Ø—’˜X wÑ/Ô/ˆØ�WÒÐØ)-¬°1ª¨•6˜A˜3  ˜*Ñ%Ô%Ð%½&À1À#ÈÀsÀÑ:LÔ:LÐLå%Ð&AØ&,ñ'-Ø/Bñ'Cñ Dô Dð Dr"   N)r6   r7   r8   r9   r+   r:   rÂ   r;   rÉ   rÌ   rÏ   rÓ   rÖ   rØ   rÚ   rÜ   rr   r'   r"   r    r   r   ­  sï   € € € € € ðð ð#ð #ð #ð
 ðð ñ „Xðð ðð ñ „[ðð ðð ñ „[ðð-ð -ð -ð(ð (ð (ð=ð =ð =ðHð Hð Hðð ð ð ð  ð  ðDð Dð Dð Dð Dr"   r   c                   óD   — e Zd ZdZd„ Zed„ ¦   «         Zed„ ¦   «         ZdS )r   z{Bra for a two-level quantum system.

    Parameters
    ==========

    n : Number
        The state number (0 or 1).

    c                 óR   — |dvrt          d¦  «        ‚t          j        | |¦  «        S r¿   )rÀ   r   r+   rÁ   s     r    r+   zSigmaZBra.__new__ø  rÃ   r"   c                 ó   — | j         d         S r   rÅ   r   s    r    rÂ   zSigmaZBra.ný  rÇ   r"   c                 ó   — t           S r*   )r   r   s    r    rÉ   zSigmaZBra.dual_class  rÊ   r"   N)	r6   r7   r8   r9   r+   r:   rÂ   r;   rÉ   r'   r"   r    r   r   í  sc   € € € € € ðð ð#ð #ð #ð
 ðð ñ „Xðð ðð ñ „[ðð ð r"   r   c                 óŒ  — t          | t          ¦  «        rt          |t          ¦  «        st          | |¦  «        S | j        |j        k    r0| j        |j        k     rt          | |¦  «        S t          || ¦  «        S t          | t          ¦  «        røt          |t          ¦  «        rt
          j        S t          |t          ¦  «        rt          t          | j        ¦  «        z  S t          |t          ¦  «        rt           t          | j        ¦  «        z  S t          |t          ¦  «        r$t
          j        t          | j        ¦  «        dz  z   S t          |t          ¦  «        r$t
          j        t          | j        ¦  «        dz  z
  S dS t          | t          ¦  «        �r	t          |t          ¦  «        rt           t          | j        ¦  «        z  S t          |t          ¦  «        rt
          j        S t          |t          ¦  «        rt          t	          | j        ¦  «        z  S t          |t          ¦  «        r-t           t
          j        t          | j        ¦  «        z   z  dz  S t          |t          ¦  «        r,t          t
          j        t          | j        ¦  «        z
  z  dz  S dS t          | t          ¦  «        rÙt          |t          ¦  «        rt          t          | j        ¦  «        z  S t          |t          ¦  «        rt           t	          | j        ¦  «        z  S t          |t          ¦  «        rt
          j        S t          |t          ¦  «        rt          | j        ¦  «         S t          |t          ¦  «        rt          | j        ¦  «        S dS t          | t          ¦  «        �r t          |t          ¦  «        r$t
          j        t          | j        ¦  «        z
  dz  S t          |t          ¦  «        r-t           t
          j        t          | j        ¦  «        z
  z  dz  S t          |t          ¦  «        rt          |j        ¦  «        S t          |t          ¦  «        rt
          j        S t          |t          ¦  «        r$t
          j        t          | j        ¦  «        dz  z
  S dS t          | t          ¦  «        �r t          |t          ¦  «        r$t
          j        t          | j        ¦  «        z   dz  S t          |t          ¦  «        r,t          t
          j        t          | j        ¦  «        z   z  dz  S t          |t          ¦  «        rt          | j        ¦  «         S t          |t          ¦  «        r$t
          j        t          | j        ¦  «        z   dz  S t          |t          ¦  «        rt
          j        S dS | |z  S )zO
    Internal helper function for simplifying products of Pauli operators.
    rA   N)Ú
isinstancer   r   r!   r   r   rž   r   r   r   r   ÚHalfr   r1   )ÚaÚbs     r    Ú_qsimplify_pauli_productrç     sÍ  € õ �q�+Ñ&Ô&ð ­:°a½Ñ+EÔ+Eð Ý�1�a‰yŒyÐà„v�”ÒÐàŒ6�A”FŠ?ˆ?Ý�q˜!‘9”9Ðå�q˜!‘9”9Ðå	�A•vÑ	Ô	ð Xå�a�Ñ Ô ð 	Ý”5ˆLå�a�Ñ Ô ð 	&Ý•v˜aœf‘~”~Ñ%Ð%å�a�Ñ Ô ð 	(Ý�3� ¤™œÑ'Ð'å�a�Ñ$Ô$ð 	/Ý”F�V A¤F™^œ^¨AÑ-Ñ-Ð.å�a�Ñ#Ô#ð 	/Ý”F�V A¤F™^œ^¨AÑ-Ñ-Ð.ð	/ð 	/õ 
�A•vÑ	Ô	ñ Gå�a�Ñ Ô ð 	(Ý�3� ¤™œÑ'Ð'å�a�Ñ Ô ð 	Ý”5ˆLå�a�Ñ Ô ð 	&Ý•v˜aœf‘~”~Ñ%Ð%å�a�Ñ$Ô$ð 	3Ý�2�œ¥¨¬¡¤Ñ/Ñ0°Ñ2Ð2å�a�Ñ#Ô#ð 	2Ý�œ¥ q¤v¡¤Ñ.Ñ/°Ñ1Ð1ð	2ð 	2õ 
�A•vÑ	Ô	ð 6å�a�Ñ Ô ð 	&Ý•v˜aœf‘~”~Ñ%Ð%å�a�Ñ Ô ð 	(Ý�3� ¤™œÑ'Ð'å�a�Ñ Ô ð 	Ý”5ˆLå�a�Ñ$Ô$ð 	(Ý ¤Ñ'Ô'Ð'Ð'å�a�Ñ#Ô#ð 	%Ý˜QœVÑ$Ô$Ð$ð	%ð 	%õ 
�A•zÑ	"Ô	"ñ %å�a�Ñ Ô ð 	.Ý”E�F 1¤6™NœNÑ*¨AÑ-Ð-å�a�Ñ Ô ð 	4Ý�3�!œ%¥&¨¬¡.¤.Ñ0Ñ1°!Ñ3Ð3å�a�Ñ Ô ð 	&å˜aœfÑ%Ô%Ð%å�a�Ñ$Ô$ð 	Ý”6ˆMå�a�Ñ#Ô#ð 	-Ý”6�F 1¤6™NœN¨1Ñ,Ñ,Ð,ð	-ð 	-õ 
�A•yÑ	!Ô	!ñ å�a�Ñ Ô ð 	.Ý”E�F 1¤6™NœNÑ*¨AÑ-Ð-å�a�Ñ Ô ð 	2Ý�œ¥ q¤v¡¤Ñ.Ñ/°Ñ1Ð1å�a�Ñ Ô ð 	&å˜aœfÑ%Ô%Ð%Ð%å�a�Ñ$Ô$ð 	.Ý”E�F 1¤6™NœNÑ*¨AÑ-Ð-å�a�Ñ#Ô#ð 	Ý”6ˆMð	ð 	ð �1‰uˆr"   c                 óŠ  — t          | t          ¦  «        r| S t          | t          t          t          f¦  «        r#t          | ¦  «        } |d„ | j        D ¦   «         Ž S t          | t          ¦  «        �rP|                      ¦   «         \  }}g }|�r!| 	                    d¦  «        }t          |¦  «        råt          |t          ¦  «        rÐt          |d         t          ¦  «        rµ|j        |d         j        k    rŸ| 	                    d¦  «        }t          ||¦  «        }|                     ¦   «         \  }}	t          |	Ž }||z   }t          |¦  «        rFt          |t          ¦  «        r1t          |d         t          ¦  «        r|j        |d         j        k    °Ÿ|                     |¦  «         |�°!t          |Ž t          |Ž z  S | S )aõ  
    Simplify an expression that includes products of pauli operators.

    Parameters
    ==========

    e : expression
        An expression that contains products of Pauli operators that is
        to be simplified.

    Examples
    ========

    >>> from sympy.physics.quantum.pauli import SigmaX, SigmaY
    >>> from sympy.physics.quantum.pauli import qsimplify_pauli
    >>> sx, sy = SigmaX(), SigmaY()
    >>> sx * sy
    SigmaX()*SigmaY()
    >>> qsimplify_pauli(sx * sy)
    I*SigmaZ()
    c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r*   )r   )Ú.0Úargs     r    ú	<genexpr>z"qsimplify_pauli.<locals>.<genexpr>Š  s*   è è € Ð:Ð:¨C•? 3Ñ'Ô'Ð:Ð:Ð:Ð:Ð:Ð:r"   r   )rã   r
   r   r   r	   Útyper   r   Úargs_cncÚpopÚlenr   r!   rç   Úappend)
rc   ÚtÚcÚncÚnc_sÚcurrÚxÚyÚc1Únc1s
             r    r   r   o  s¬  € õ, �!•XÑÔð Øˆå�!•c�3¥�_Ñ%Ô%ð <Ý�‰GŒGˆØˆqÐ:Ð:°1´6Ð:Ñ:Ô:Ð;Ð;å�!•SÑÔñ $à—
’
‘”‰ˆˆ2àˆØñ 	Ø—6’6˜!‘9”9ˆDå�r‘7”7ð 	Ý˜d¥KÑ0Ô0ð	å˜b œe¥[Ñ1Ô1ð	ð ”9  1¤¤
Ò*Ð*à—F’F˜1‘I”I�Ý,¨T°1Ñ5Ô5�ØŸ*š*™,œ,‘��CÝ˜C�y�Ø˜‘F�õ �r‘7”7ð 	Ý˜d¥KÑ0Ô0ð	å˜b œe¥[Ñ1Ô1ð	ð ”9  1¤¤
Ò*Ð*ð �KŠK˜ÑÔÐð ñ 	õ  �Aˆw�˜d˜Ñ#Ð#à€Hr"   N)!r9   Úsympy.core.addr   Úsympy.core.mulr   Úsympy.core.numbersr   Úsympy.core.powerr   Úsympy.core.singletonr   Ú&sympy.functions.elementary.exponentialr	   Úsympy.physics.quantumr
   r   r   r   Úsympy.matricesr   Ú(sympy.functions.special.tensor_functionsr   Ú__all__r   r   r   r   r   r   r   r   rç   r   r'   r"   r    ú<module>r     s¶  ðØ  Ð  à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø  Ð  Ð  Ð  Ð  Ð  Ø "Ð "Ð "Ð "Ð "Ð "Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø .Ð .Ð .Ð .Ð .Ð .Ø !Ð !Ð !Ð !Ð !Ð !Ø CÐ CÐ CÐ CÐ CÐ Cðð ð €ðð ð ð ð �(ñ ô ð ð,FDð FDð FDð FDð FDˆ[ñ FDô FDð FDðRCDð CDð CDð CDð CDˆ[ñ CDô CDð CDðLCDð CDð CDð CDð CDˆ[ñ CDô CDð CDðLQDð QDð QDð QDð QD�ñ QDô QDð QDðhWDð WDð WDð WDð WD�ñ WDô WDð WDðt=Dð =Dð =Dð =Dð =D�ñ =Dô =Dð =Dð@ð ð ð ð �ñ ô ð ð2fð fð fðR4ð 4ð 4ð 4ð 4r"   