+
    i]                     X    ^ RI Ht ^ RIHt ^ RIHt ^ RIHt ^ RIH	t	  ! R R]	4      t
R# )	    )Indexed)Tuple)Dummy)sympify)Integralc                   L   a a ] tR t^t oRtR tV 3R lt]R 4       tRt	Vt
V ;t# )IndexedIntegrala  
Experimental class to test integration by indexed variables.

Usage is analogue to ``Integral``, it simply adds awareness of
integration over indices.

Contraction of non-identical index symbols referring to the same
``IndexedBase`` is not yet supported.

Examples
========

>>> from sympy.sandbox.indexed_integrals import IndexedIntegral
>>> from sympy import IndexedBase, symbols
>>> A = IndexedBase('A')
>>> i, j = symbols('i j', integer=True)
>>> ii = IndexedIntegral(A[i], A[i])
>>> ii
Integral(_A[i], _A[i])
>>> ii.doit()
A[i]**2/2

If the indices are different, indexed objects are considered to be
different variables:

>>> i2 = IndexedIntegral(A[j], A[i])
>>> i2
Integral(A[j], _A[i])
>>> i2.doit()
A[i]*A[j]
c                
   \         P                  V4      w  rB\        V4      pVP                  V4      p\        P
                  ! W.VO5/ VB pWEn        VP                  4        UUu/ uF  w  rgWvbK	  	  uppVn        V# u uppi N)	r	   _indexed_process_limitsr   xreplacer   __new___indexed_replitems_indexed_reverse_repl)clsfunctionlimitsassumptionsreplobjkeyvals   &&*,    ]/var/www/html/photoedit/myenv/lib/python3.14/site-packages/sympy/sandbox/indexed_integrals.pyr   IndexedIntegral.__new__)   sz    &>>vF8$$$T*sEvEE >Bjjl$Kl(#SXl$K!
 %Ls   'A?c                V   < \         SV `  4       pVP                  V P                  4      # r   )superdoitr   r   )selfres	__class__s   & r   r   IndexedIntegral.doit2   s#    gln||D6677    c                R   / p. pV  F  p\        V\        \        \        34      '       d   V^ ,          pVR,          pMTpRp\        V\        4      '       d:   WA9  d   \        \        V4      4      pWaV&   VP                  X3V,           4       K  VP                  V4       K  	  W3# )r   :   NN )
isinstancetuplelistr   r   r   strappend)r   r   	newlimitsivvrestrs   &      r   r   'IndexedIntegral._indexed_process_limits6   s    	A!eT5122aD"!W%%=c!fAG  !e,  #  r#   r&   )__name__
__module____qualname____firstlineno____doc__r   r   staticmethodr   __static_attributes____classdictcell____classcell__)r!   __classdict__s   @@r   r	   r	      s.     @8   r#   r	   N)sympy.tensorr   sympy.core.containersr   sympy.core.symbolr   sympy.core.sympifyr   sympy.integrals.integralsr   r	   r&   r#   r   <module>rA      s"      ' # & .@h @r#   