§
    OŠtjÊ  ã                   ó
  — 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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dS )zBosonic quantum operators.é    )ÚInteger)ÚS)Ú	conjugate)Úexp)Úsqrt)ÚOperator)ÚHilbertSpaceÚ	FockSpaceÚKetÚBra)ÚKroneckerDelta)ÚBosonOpÚBosonFockKetÚBosonFockBraÚBosonCoherentKetÚBosonCoherentBrac                   ó„   — 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S )r   a  A bosonic operator that satisfies [a, Dagger(a)] == 1.

    Parameters
    ==========

    name : str
        A string that labels the bosonic mode.

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

    Examples
    ========

    >>> from sympy.physics.quantum import Dagger, Commutator
    >>> from sympy.physics.quantum.boson import BosonOp
    >>> a = BosonOp("a")
    >>> Commutator(a, Dagger(a)).doit()
    1
    c                 ó   — | j         d         S ©Nr   )Úargs©Úselfs    úY/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/physics/quantum/boson.pyÚnamezBosonOp.name-   s   € àŒy˜Œ|Ðó    c                 ó6   — t          | j        d         ¦  «        S ©Né   )Úboolr   r   s    r   Úis_annihilationzBosonOp.is_annihilation1   s   € å�D”I˜a”LÑ!Ô!Ð!r   c                 ó   — dS )N)ÚaT© r   s    r   Údefault_argszBosonOp.default_args5   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BosonOp.__new__9   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                 óŒ   — | j         |j         k    r| j        s|j        rt          j        S nd|v r|d         rt          j        S d S )NÚindependent)r   r    r   ÚNegativeOneÚZero©r   Úotherr,   s      r   Ú_eval_commutator_BosonOpz BosonOp._eval_commutator_BosonOpE   sP   € ØŒ9˜œ
Ò"Ð"àÔ'ð %¨EÔ,Að %Ý”}Ð$øà˜eÐ#Ð#¨¨mÔ(<Ð#å”6ˆMàˆtr   c                 ó   — t           j        S ©N)r   r0   r1   s      r   Ú_eval_commutator_FermionOpz"BosonOp._eval_commutator_FermionOpQ   s	   € ÝŒvˆr   c                 ó.   — d|v r|d         rd| z  |z  S d S )Nr.   r&   r#   r1   s      r   Ú_eval_anticommutator_BosonOpz$BosonOp._eval_anticommutator_BosonOpT   s+   € Ø˜EÐ!Ð! e¨MÔ&:Ð!à�t‘8˜eÑ#Ð#àˆtr   c                 óR   — t          t          | j        ¦  «        | j         ¦  «        S r5   )r   Ústrr   r    r   s    r   Ú_eval_adjointzBosonOp._eval_adjoint[   s    € Ý•s˜4œ9‘~”~¨4Ô+?Ð'?Ñ@Ô@Ð@r   c                 ól   — | j         rdt          | j        ¦  «        z  S dt          | j        ¦  «        z  S )Nz{%s}z{{%s}^\dagger}©r    r:   r   ©r   Úprinterr   s      r   Ú_print_contents_latexzBosonOp._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)r=   r>   s      r   Ú_print_contentszBosonOp._print_contentsd   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.stringpictrD   Ú_printr   r    )r   r?   r   rD   Úpforms        r   Ú_print_contents_prettyzBosonOp._print_contents_prettyj   sX   € Ø?Ð?Ð?Ð?Ð?Ð?Ø�”˜tœy¨œ|Ð3¨dÐ3Ð3Ð3ˆØÔð 	3ØˆLà˜*˜* \Ñ2Ô2Ñ2Ð2r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úpropertyr   r    Úclassmethodr$   r*   r3   r6   r8   r;   r@   rB   rH   r#   r   r   r   r      sê   € € € € € ðð ð, ðð ñ „Xðð ð"ð "ñ „Xð"ð ðð ñ „[ðð
,ð 
,ð 
,ð
ð 
ð 
ðð ð ðð ð ðAð Að Að6ð 6ð 6ð2ð 2ð 2ð3ð 3ð 3ð 3ð 3r   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   zvFock state ket for a bosonic mode.

    Parameters
    ==========

    n : Number
        The Fock state number.

    c                 ó,   — t          j        | |¦  «        S r5   ©r   r*   ©r+   Úns     r   r*   zBosonFockKet.__new__~   ó   € ÝŒ{˜3 Ñ"Ô"Ð"r   c                 ó   — | j         d         S r   ©Úlabelr   s    r   rS   zBosonFockKet.n�   ó   € àŒz˜!Œ}Ðr   c                 ó   — t           S r5   )r   r   s    r   Ú
dual_classzBosonFockKet.dual_class…   ó   € åÐr   c                 ó   — t          ¦   «         S r5   ©r
   ©r+   rW   s     r   Ú_eval_hilbert_spacez BosonFockKet._eval_hilbert_space‰   ó   € å‰{Œ{Ðr   c                 ó6   — t          | j        |j        ¦  «        S r5   )r   rS   ©r   Úbrar,   s      r   Ú_eval_innerproduct_BosonFockBraz,BosonFockKet._eval_innerproduct_BosonFockBra�   s   € Ý˜dœf c¤eÑ,Ô,Ð,r   c                 óÆ   — |j         r,t          | j        ¦  «        t          | j        dz
  ¦  «        z  S t          | j        dz   ¦  «        t          | j        dz   ¦  «        z  S r   )r    r   rS   r   ©r   ÚopÚoptionss      r   Ú_apply_from_right_to_BosonOpz)BosonFockKet._apply_from_right_to_BosonOp�   sU   € ØÔð 	?Ý˜œ‘<”<¥,¨t¬v¸©zÑ":Ô":Ñ:Ð:å˜œ ™
Ñ#Ô#¥l°4´6¸A±:Ñ&>Ô&>Ñ>Ð>r   N)rI   rJ   rK   rL   r*   rM   rS   rN   rZ   r_   rd   ri   r#   r   r   r   r   s   sœ   € € € € € ðð ð#ð #ð #ð ðð ñ „Xðð ðð ñ „[ðð ðð ñ „[ðð-ð -ð -ð?ð ?ð ?ð ?ð ?r   r   c                   óZ   — e Zd ZdZd„ Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Z	dS )r   zvFock state bra for a bosonic mode.

    Parameters
    ==========

    n : Number
        The Fock state number.

    c                 ó,   — t          j        | |¦  «        S r5   ©r   r*   rR   s     r   r*   zBosonFockBra.__new__¢   rT   r   c                 ó   — | j         d         S r   rV   r   s    r   rS   zBosonFockBra.n¥   rX   r   c                 ó   — t           S r5   )r   r   s    r   rZ   zBosonFockBra.dual_class©   r[   r   c                 ó   — t          ¦   «         S r5   r]   r^   s     r   r_   z BosonFockBra._eval_hilbert_space­   r`   r   N)
rI   rJ   rK   rL   r*   rM   rS   rN   rZ   r_   r#   r   r   r   r   —   s~   € € € € € ðð ð#ð #ð #ð ðð ñ „Xðð ðð ñ „[ðð ðð ñ „[ðð ð 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   zœCoherent state ket for a bosonic mode.

    Parameters
    ==========

    alpha : Number, Symbol
        The complex amplitude of the coherent state.

    c                 ó,   — t          j        | |¦  «        S r5   rQ   ©r+   Úalphas     r   r*   zBosonCoherentKet.__new__½   ó   € ÝŒ{˜3 Ñ&Ô&Ð&r   c                 ó   — | j         d         S r   rV   r   s    r   rs   zBosonCoherentKet.alphaÀ   rX   r   c                 ó   — t           S r5   )r   r   s    r   rZ   zBosonCoherentKet.dual_classÄ   ó   € åÐr   c                 ó   — t          ¦   «         S r5   )r	   r^   s     r   r_   z$BosonCoherentKet._eval_hilbert_spaceÈ   s   € å‰~Œ~Ðr   c                 óú   — | j         |j         k    rt          j        S t          t	          | j         ¦  «        dz  t	          |j         ¦  «        dz  z   dt          |j         ¦  «        z  | j         z  z
   dz  ¦  «        S )Nr&   )rs   r   r)   r   Úabsr   rb   s      r   Ú#_eval_innerproduct_BosonCoherentBraz4BosonCoherentKet._eval_innerproduct_BosonCoherentBraÌ   sm   € ØŒ:˜œÒ"Ð"Ý”5ˆLå�˜TœZ™œ¨!Ñ+­c°#´)©n¬n¸aÑ.?Ñ?À!ÅiÐPSÔPYÑFZÔFZÑBZÐ]aÔ]gÑBgÑgÐhÐijÑjÑkÔkÐkr   c                 ó(   — |j         r
| j        | z  S d S r5   ©r    rs   rf   s      r   ri   z-BosonCoherentKet._apply_from_right_to_BosonOpÒ   s   € ØÔð 	Ø”: Ñ$Ð$à�4r   N)rI   rJ   rK   rL   r*   rM   rs   rN   rZ   r_   r{   ri   r#   r   r   r   r   ²   sŸ   € € € € € ðð ð'ð 'ð 'ð ðð ñ „Xðð ð ð  ñ „[ð ð ðð ñ „[ððlð lð lðð ð ð ð r   r   c                   óJ   — e Zd ZdZd„ Zed„ ¦   «         Zed„ ¦   «         Zd„ Z	dS )r   zœCoherent state bra for a bosonic mode.

    Parameters
    ==========

    alpha : Number, Symbol
        The complex amplitude of the coherent state.

    c                 ó,   — t          j        | |¦  «        S r5   rl   rr   s     r   r*   zBosonCoherentBra.__new__ä   rt   r   c                 ó   — | j         d         S r   rV   r   s    r   rs   zBosonCoherentBra.alphaç   rX   r   c                 ó   — t           S r5   )r   r   s    r   rZ   zBosonCoherentBra.dual_classë   rw   r   c                 ó(   — |j         s
| j        | z  S d S r5   r}   rf   s      r   Ú_apply_operator_BosonOpz(BosonCoherentBra._apply_operator_BosonOpï   s   € ØÔ!ð 	Ø”: Ñ$Ð$à�4r   N)
rI   rJ   rK   rL   r*   rM   rs   rN   rZ   rƒ   r#   r   r   r   r   Ù   sr   € € € € € ðð ð'ð 'ð 'ð ðð ñ „Xðð ð ð  ñ „[ð ðð ð ð ð r   r   N)rL   Úsympy.core.numbersr   Úsympy.core.singletonr   Ú$sympy.functions.elementary.complexesr   Ú&sympy.functions.elementary.exponentialr   Ú(sympy.functions.elementary.miscellaneousr   Úsympy.physics.quantumr   r	   r
   r   r   Ú(sympy.functions.special.tensor_functionsr   Ú__all__r   r   r   r   r   r#   r   r   ú<module>rŒ      s¥  ðØ  Ð  à &Ð &Ð &Ð &Ð &Ð &Ø "Ð "Ð "Ð "Ð "Ð "Ø :Ð :Ð :Ð :Ð :Ð :Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø *Ð *Ð *Ð *Ð *Ð *Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ CÐ CÐ CÐ CÐ CÐ Cðð ð €ðZ3ð Z3ð Z3ð Z3ð Z3ˆhñ Z3ô Z3ð Z3ðz!?ð !?ð !?ð !?ð !?�3ñ !?ô !?ð !?ðHð ð ð ð �3ñ ô ð ð6$ð $ð $ð $ð $�sñ $ô $ð $ðNð ð ð ð �sñ ô ð ð ð r   