§
    OŠtjw  ã                   óª   — d 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 g d¢Z G d„ d	e¦  «        Z G d
„ de¦  «        Z G d„ de	¦  «        ZdS )zFermionic quantum operators.é    )ÚInteger©ÚS)ÚOperator)ÚHilbertSpaceÚKetÚBra)ÚKroneckerDelta)Ú	FermionOpÚFermionFockKetÚFermionFockBrac                   ó�   — e 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„ Zd„ Zd„ ZdS )r   a"  A fermionic operator that satisfies {c, Dagger(c)} == 1.

    Parameters
    ==========

    name : str
        A string that labels the fermionic mode.

    annihilation : bool
        A bool that indicates if the fermionic operator is an annihilation
        (True, default value) or creation operator (False)

    Examples
    ========

    >>> from sympy.physics.quantum import Dagger, AntiCommutator
    >>> from sympy.physics.quantum.fermion import FermionOp
    >>> c = FermionOp("c")
    >>> AntiCommutator(c, Dagger(c)).doit()
    1
    c                 ó   — | j         d         S ©Nr   )Úargs©Úselfs    ú[/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/physics/quantum/fermion.pyÚnamezFermionOp.name'   s   € àŒy˜Œ|Ðó    c                 ó6   — t          | j        d         ¦  «        S )Né   )Úboolr   r   s    r   Úis_annihilationzFermionOp.is_annihilation+   s   € å�D”I˜a”LÑ!Ô!Ð!r   c                 ó   — dS )N)ÚcT© r   s    r   Údefault_argszFermionOp.default_args/   s   € àˆ{r   c                 ó  — t          |¦  «        dvrt          d|z  ¦  «        ‚t          |¦  «        dk    r|d         t          j        f}t          |¦  «        dk    r|d         t	          |d         ¦  «        f}t          j        | g|¢R Ž S )N)r   é   z"1 or 2 parameters expected, got %sr   r   r    )ÚlenÚ
ValueErrorr   ÚOner   r   Ú__new__)Úclsr   Úhintss      r   r$   zFermionOp.__new__3   sˆ   € Ý�4‰yŒy˜FÐ"Ð"ÝÐAÀDÑHÑIÔIÐIåˆt‰9Œ9˜Š>ˆ>Ø˜”G�QœUÐ#ˆDåˆt‰9Œ9˜Š>ˆ>Ø˜”G�W T¨!¤WÑ-Ô-Ð.ˆDåÔ Ð+ dÐ+Ð+Ð+Ð+r   c                 ó6   — d|v r|d         rt           j        S d S )NÚindependent©r   ÚZero©r   Úotherr&   s      r   Ú_eval_commutator_FermionOpz$FermionOp._eval_commutator_FermionOp?   s#   € Ø˜EÐ!Ð! e¨MÔ&:Ð!å”6ˆMàˆtr   c                 ó„   — | j         |j         k    r| j        s|j        rt          j        S nd|v r|d         rd| z  |z  S d S )Nr(   r    )r   r   r   r#   r+   s      r   Ú_eval_anticommutator_FermionOpz(FermionOp._eval_anticommutator_FermionOpF   sW   € ØŒ9˜œ
Ò"Ð"àÔ'ð ¨EÔ,Að Ý”u�øà˜eÐ#Ð#¨¨mÔ(<Ð#à�t‘8˜eÑ#Ð#àˆtr   c                 ó   — d| z  |z  S )Nr    r   r+   s      r   Ú_eval_anticommutator_BosonOpz&FermionOp._eval_anticommutator_BosonOpR   s   € à�4‰x˜%ÑÐr   c                 ó   — t           j        S ©Nr)   r+   s      r   Ú_eval_commutator_BosonOpz"FermionOp._eval_commutator_BosonOpV   s	   € ÝŒvˆr   c                 óR   — t          t          | j        ¦  «        | j         ¦  «        S r3   )r   Ústrr   r   r   s    r   Ú_eval_adjointzFermionOp._eval_adjointY   s    € Ý�˜TœY™œ¨TÔ-AÐ)AÑBÔBÐBr   c                 ól   — | j         rdt          | j        ¦  «        z  S dt          | j        ¦  «        z  S )Nz{%s}z{{%s}^\dagger}©r   r6   r   ©r   Úprinterr   s      r   Ú_print_contents_latexzFermionOp._print_contents_latex\   s3   € ØÔð 	6Ø�S ¤™^œ^Ñ+Ð+à$¥s¨4¬9¡~¤~Ñ5Ð5r   c                 ól   — | j         rdt          | j        ¦  «        z  S dt          | j        ¦  «        z  S )Nz%sz
Dagger(%s)r9   r:   s      r   Ú_print_contentszFermionOp._print_contentsb   s3   € ØÔð 	2Ø�3˜tœy™>œ>Ñ)Ð)à ¥3 t¤y¡>¤>Ñ1Ð1r   c                 ón   — ddl m}  |j        | j        d         g|¢R Ž }| j        r|S | |d¦  «        z  S )Nr   )Ú
prettyFormu   â€ )Ú sympy.printing.pretty.stringpictr@   Ú_printr   r   )r   r;   r   r@   Úpforms        r   Ú_print_contents_prettyz FermionOp._print_contents_prettyh   sX   € Ø?Ð?Ð?Ð?Ð?Ð?Ø�”˜tœy¨œ|Ð3¨dÐ3Ð3Ð3ˆØÔð 	3ØˆLà˜*˜* \Ñ2Ô2Ñ2Ð2r   c                 óâ   — ddl m} |dk    r|j        S |dk    r| S |dk    dk    r|j        dk    r|j        S |dk     dk    s|j        dk    rt          d¦  «        ‚t          j        | |¦  «        S )Nr   r   r   TFzBFermionic operators can only be raised to a positive integer power)Úsympy.core.singletonr   r#   Ú
is_integerr*   r"   r   Ú_eval_power)r   Úexpr   s      r   rH   zFermionOp._eval_powerp   s™   € Ø*Ð*Ð*Ð*Ð*Ð*Ø�!Š8ˆ8Ø”5ˆLØ�AŠXˆXØˆKØ�AŠg˜$ÒÐ 3¤>°TÒ#9Ð#9Ø”6ˆMØ�AŠg˜$ÒÐ #¤.°EÒ"9Ð"9Ýð *ñ +ô +ð +åÔ# D¨#Ñ.Ô.Ð.r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úpropertyr   r   Úclassmethodr   r$   r-   r/   r1   r4   r7   r<   r>   rD   rH   r   r   r   r   r      s  € € € € € ðð ð* ðð ñ „Xðð ð"ð "ñ „Xð"ð ðð ñ „[ðð
,ð 
,ð 
,ðð ð ð
ð 
ð 
ð ð  ð  ðð ð ðCð Cð Cð6ð 6ð 6ð2ð 2ð 2ð3ð 3ð 3ð/ð /ð /ð /ð /r   r   c                   óf   — e Zd ZdZd„ Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Z	d„ Z
d„ ZdS )	r   zxFock state ket for a fermionic mode.

    Parameters
    ==========

    n : Number
        The Fock state number.

    c                 óR   — |dvrt          d¦  «        ‚t          j        | |¦  «        S ©N)r   r   zn must be 0 or 1)r"   r   r$   ©r%   Úns     r   r$   zFermionFockKet.__new__ˆ   ó,   € Ø�Fˆ?ˆ?ÝÐ/Ñ0Ô0Ð0ÝŒ{˜3 Ñ"Ô"Ð"r   c                 ó   — | j         d         S r   ©Úlabelr   s    r   rT   zFermionFockKet.n�   ó   € àŒz˜!Œ}Ðr   c                 ó   — t           S r3   )r   r   s    r   Ú
dual_classzFermionFockKet.dual_class‘   ó   € åÐr   c                 ó   — t          ¦   «         S r3   )r   )r%   rX   s     r   Ú_eval_hilbert_spacez"FermionFockKet._eval_hilbert_space•   s   € å‰~Œ~Ðr   c                 ó6   — t          | j        |j        ¦  «        S r3   )r
   rT   )r   Úbrar&   s      r   Ú!_eval_innerproduct_FermionFockBraz0FermionFockKet._eval_innerproduct_FermionFockBra™   s   € Ý˜dœf c¤eÑ,Ô,Ð,r   c                 ó¨   — |j         r&| j        dk    rt          d¦  «        S t          j        S | j        dk    rt          d¦  «        S t          j        S )Nr   r   )r   rT   r   r   r*   )r   ÚopÚoptionss      r   Ú_apply_from_right_to_FermionOpz-FermionFockKet._apply_from_right_to_FermionOpœ   sM   € ØÔð 		ØŒv˜Š{ˆ{Ý% aÑ(Ô(Ð(å”v�àŒv˜Š{ˆ{Ý% aÑ(Ô(Ð(å”v�r   N)rJ   rK   rL   rM   r$   rN   rT   rO   r[   r^   ra   re   r   r   r   r   r   }   sœ   € € € € € ðð ð#ð #ð #ð
 ðð ñ „Xðð ðð ñ „[ðð ðð ñ „[ðð-ð -ð -ð
ð 
ð 
ð 
ð 
r   r   c                   óD   — e Zd ZdZd„ Zed„ ¦   «         Zed„ ¦   «         ZdS )r   zxFock state bra for a fermionic mode.

    Parameters
    ==========

    n : Number
        The Fock state number.

    c                 óR   — |dvrt          d¦  «        ‚t          j        | |¦  «        S rR   )r"   r	   r$   rS   s     r   r$   zFermionFockBra.__new__´   rU   r   c                 ó   — | j         d         S r   rW   r   s    r   rT   zFermionFockBra.n¹   rY   r   c                 ó   — t           S r3   )r   r   s    r   r[   zFermionFockBra.dual_class½   r\   r   N)	rJ   rK   rL   rM   r$   rN   rT   rO   r[   r   r   r   r   r   ©   sc   € € € € € ðð ð#ð #ð #ð
 ðð ñ „Xðð ðð ñ „[ðð ð r   r   N)rM   Úsympy.core.numbersr   rF   r   Úsympy.physics.quantumr   r   r   r	   Ú(sympy.functions.special.tensor_functionsr
   Ú__all__r   r   r   r   r   r   ú<module>rn      s  ðØ "Ð "à &Ð &Ð &Ð &Ð &Ð &Ø "Ð "Ð "Ð "Ð "Ð "Ø *Ð *Ð *Ð *Ð *Ð *Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø CÐ CÐ CÐ CÐ CÐ Cðð ð €ðj/ð j/ð j/ð j/ð j/�ñ j/ô j/ð j/ðX)ð )ð )ð )ð )�Sñ )ô )ð )ðXð ð ð ð �Sñ ô ð ð ð r   