
    \h=]                     :   S SK Jr  S SKJrJrJr  S SKJ	r	J
r
JrJr  S SKJrJrJr  S SKJr  S SKJr  \" SSSS	9u  rrrrr\" S
SS9u  rrS rS rS rS r S r!S r"S r#S r$S r%S r&S r'S r(S r)S r*S r+S r,S r-S r.S r/S  r0S! r1S" r2S# r3S$ r4S% r5S& r6S' r7g())    )Sum)deltaproductdeltasummation_extract_delta)EqSsymbolsoo)KroneckerDelta	Piecewisepiecewise_fold)And)raisesz	i j k l mT)integerfinitezx yF)commutativec                     [        [        [        SS45      S:X  d   e[        [        [        SS45      [        S-  :X  d   e[        [        [        -   [        SS45      [        [        -   S-  :X  d   e[        [        [        -  [        SS45      [        [        -  S-  :X  d   e[        [	        [
        [        5      [        SS45      [	        [
        [        5      :X  d   e[        [        [	        [
        [        5      -  [        SS45      [        S-  [	        [
        [        5      -  :X  d   e[        [        [        -  [	        [
        [        5      -  [        SS45      [        [        -  S-  [	        [
        [        5      -  :X  d   eg N   r      )dpxjyKDik     W/var/www/auris/envauris/lib/python3.13/site-packages/sympy/concrete/tests/test_delta.pytest_deltaproduct_trivialr!      s    a!Qq   a!Qq!t###a!eaAYAEA:---acAq!9!A#)))bAhAq	"bAh...a1aj1a)$1R1X555ac"Q(lQ1I&1Q3(2a8*;;;;r   c                     [        [        [        [        5      [        SS45      S:X  d   e[        [        [        [        5      [        SS45      [        [        S5      :X  d   e[        [        [        [        5      [        SS45      [        [        S5      :X  d   e[        [        [        [        5      [        SS45      [        [        S5      :X  d   e[        [        [        [        5      [        S[        45      [        [        S5      [        [        S5      -  [        [        S5      -   :X  d   e[        [        [        [        5      [        [        S45      [        [        S5      [        [        S5      -  [        [        S5      -   :X  d   e[        [        [        [        5      [        [        [
        45      [        [        [
        5      [        [        [
        5      -  [        [        [
        S-   5      -   :X  d   eg Nr   r   r         )r   r   r   r   r   lr   r   r    test_deltaproduct_basicr'      sS   bAhAq	"a'''bAhAq	"bAh...bAhAq	"bAh...bAhAq	"bAh...bAhAq	"bAhr!Qx&7"Q(&BBBBbAhAq	"bAhr!Qx&7"Q(&BBBBbAhAq	"bAhr!Qx&7"QA,&FFFFr   c                     [        [        [        [        [        5      -  [        SS45      S:X  d   e[        [        [        [        [        5      -  [        SS45      [        [        [        S5      -  :X  d   e[        [        [        [        [        5      -  [        SS45      [        [        [        S5      -  :X  d   e[        [        [        [        [        5      -  [        SS45      [        [        [        S5      -  :X  d   e[        [        [        [        [        5      -  [        S[
        45      [        [        [        S5      -  [        [
        S5      -  [        [
        S5      -   :X  d   e[        [        [        [        [        5      -  [        [
        S45      [        [        [        S5      -  [        [
        S5      -  [        [
        S5      -   :X  d   e[        [        [        [        [        5      -  [        [
        [        45      [        [        [        [        5      -  [        [
        [        5      -  [        [
        [        S-   5      -   :X  d   eg r#   )r   r   r   r   r   r   r&   r   r   r    test_deltaproduct_mul_x_kdr)       s   a1aj1a)$)))a1aj1a)$"Q(
222a1aj1a)$"Q(
222a1aj1a)$"Q(
222a1aj1a)$"Q(
2a8(;bAh(FFFFa1aj1a)$"Q(
2a8(;bAh(FFFFa1aj1a)$"Q(
2a8(;bAEl(JJJJr   c                  |   [        [        [        -   [        [        [
        5      -  [
        SS45      S:X  d   e[        [        [        -   [        [        [
        5      -  [
        SS45      [        [        -   [        [        S5      -  :X  d   e[        [        [        -   [        [        [
        5      -  [
        SS45      [        [        -   [        [        S5      -  :X  d   e[        [        [        -   [        [        [
        5      -  [
        SS45      [        [        -   [        [        S5      -  :X  d   e[        [        [        -   [        [        [
        5      -  [
        S[        45      [        [        -   [        [        S5      -  [        [        S5      -  [        [        S5      -   :X  d   e[        [        [        -   [        [        [
        5      -  [
        [        S45      [        [        -   [        [        S5      -  [        [        S5      -  [        [        S5      -   :X  d   e[        [        [        -   [        [        [
        5      -  [
        [        [        45      [        [        -   [        [        [        5      -  [        [        [        5      -  [        [        [        S-   5      -   :X  d   eg r#   )r   r   r   r   r   r   r   r&   r   r   r     test_deltaproduct_mul_add_x_y_kdr+   *   s   q1ubAhAq	*a///q1ubAhAq	*q1ubAh.>>>>q1ubAhAq	*q1ubAh.>>>>q1ubAhAq	*q1ubAh.>>>>q1ubAhAq	*	
Q1aAq!Bq!H,- - -q1ubAhAq	*	
Q1aAq!Bq!H,- - -q1ubAhAq	*	
Q1aAq!Bq!a%L01 1 1r   c                  $	   [        [        [        [        5      [        [        [        5      -   [        SS45      S:X  d   e[        [        [        [        5      [        [        [        5      -   [        SS45      [        [        S5      [        [        S5      -   :X  d   e[        [        [        [        5      [        [        [        5      -   [        SS45      [        [        S5      [        [        S5      -   :X  d   e[        [        [        [        5      [        [        [        5      -   [        SS45      [        [        S5      [        [        S5      -   :X  d   e[        [        [        [        5      [        [        [        5      -   [        S[
        45      [        [
        S5      [        [        S5      [        [
        S5      -  -   [        [        S5      [        [
        S5      -  -   [        [        S5      [        [        S5      -  [        [
        S5      -  -   [        [        S5      [        [        S5      -  [        [
        S5      -  -   :X  d   e[        [        [        [        5      [        [        [        5      -   [        [
        S45      [        [
        S5      [        [        S5      [        [
        S5      -  -   [        [        S5      [        [
        S5      -  -   [        [        S5      [        [        S5      -  [        [
        S5      -  -   [        [        S5      [        [        S5      -  [        [
        S5      -  -   :X  d   e[        [        [        [        5      [        [        [        5      -   [        [
        [        45      [        [
        [        S-   5      [        [        [        5      [        [
        [        5      -  -   [        [        [        5      [        [
        [        5      -  -   [        [        [        5      [        [        [        S-
  5      -  [        [
        [        S-
  5      -  -   [        [        [        S-
  5      [        [        [        5      -  [        [
        [        S-
  5      -  -   :X  d   eg r#   )r   r   r   r   r   r&   mr   r   r    test_deltaproduct_add_kd_kdr.   7   s   bAhAq!Aq!9-222bAhAq!Aq!9-AqBq!H1DDDDbAhAq!Aq!9-AqBq!H1DDDDbAhAq!Aq!9-AqBq!H1DDDDbAhAq!Aq!9-Aq
1aAq2q!HR1X-2.
1aAq"Q("2#%'1XbAh%6r!Qx%?2@ @ @ @ bAhAq!Aq!9-Aq
1aAq2q!HR1X-2.
1aAq"Q("2#%'1XbAh%6r!Qx%?2@ @ @ @ bAhAq!Aq!9-Aq1u
1aAq2q!HR1X-2.
1aAq1ubAEl*2+-/1q5\"Q(-B2aQ<-O2P P P Pr   c                  |
   [        [        [        [        [        5      [        [
        [        5      -   -  [        SS45      S:X  d   e[        [        [        [        [        5      [        [
        [        5      -   -  [        SS45      [        [        [        S5      [        [
        S5      -   -  :X  d   e[        [        [        [        [        5      [        [
        [        5      -   -  [        SS45      [        [        [        S5      [        [
        S5      -   -  :X  d   e[        [        [        [        [        5      [        [
        [        5      -   -  [        SS45      [        [        [        S5      [        [
        S5      -   -  :X  d   e[        [        [        [        [        5      [        [
        [        5      -   -  [        S[        45      [        [        S5      [        [        [        S5      -  [        [        S5      -  -   [        [        [
        S5      -  [        [        S5      -  -   [        S-  [        [        S5      -  [        [
        S5      -  [        [        S5      -  -   [        S-  [        [
        S5      -  [        [        S5      -  [        [        S5      -  -   :X  d   e[        [        [        [        [        5      [        [
        [        5      -   -  [        [        S45      [        [        S5      [        [        [        S5      -  [        [        S5      -  -   [        [        [
        S5      -  [        [        S5      -  -   [        S-  [        [        S5      -  [        [
        S5      -  [        [        S5      -  -   [        S-  [        [        S5      -  [        [
        S5      -  [        [        S5      -  -   :X  d   e[        [        [        [        [        5      [        [
        [        5      -   -  [        [        [        45      [        [        [        S-   5      [        [        [        [        5      -  [        [        [        5      -  -   [        [        [
        [        5      -  [        [        [        5      -  -   [        S-  [        [        [        S-
  5      -  [        [
        [        5      -  [        [        [        S-
  5      -  -   [        S-  [        [        [        5      -  [        [
        [        S-
  5      -  [        [        [        S-
  5      -  -   :X  d   eg r#   )r   r   r   r   r   r   r&   r-   r   r   r    !test_deltaproduct_mul_x_add_kd_kdr0   G   s   aAqBq!H$%1ay1Q666aAqBq!H$%1ay1Q1a2a88K5LLLLaAqBq!H$%1ay1Q1a2a88K5LLLLaAqBq!H$%1ay1Q1a2a88K5LLLLaAqBq!H$%1ay1R1X	"Q(
2a861ajAq162	1R1XbAhr!Qx'6(*+Q$r!Qx-1a*@Aq*I6J J J J aAqBq!H$%1ay1R1X	"Q(
2a861ajAq162	1R1XbAhr!Qx'6(*+Q$r!Qx-1a*@Aq*I6J J J J aAqBq!H$%1ay1R1q5\	"Q(
2a861ajAq162	1R1q5\"Q("2aQ</60 	
1R1XbAEl"2aQ</60 0 0 0r   c                     [        [        [        -   [        [        [
        5      [        [        [
        5      -   -  [
        SS45      S:X  d   e[        [        [        -   [        [        [
        5      [        [        [
        5      -   -  [
        SS45      [        [        -   [        [        S5      [        [        S5      -   -  :X  d   e[        [        [        -   [        [        [
        5      [        [        [
        5      -   -  [
        SS45      [        [        -   [        [        S5      [        [        S5      -   -  :X  d   e[        [        [        -   [        [        [
        5      [        [        [
        5      -   -  [
        SS45      [        [        -   [        [        S5      [        [        S5      -   -  :X  d   e[        [        [        -   [        [        [
        5      [        [        [
        5      -   -  [
        S[        45      [        [        S5      [        [        -   [        [        S5      -  [        [        S5      -  -   [        [        -   [        [        S5      -  [        [        S5      -  -   [        [        -   S-  [        [        S5      -  [        [        S5      -  [        [        S5      -  -   [        [        -   S-  [        [        S5      -  [        [        S5      -  [        [        S5      -  -   :X  d   e[        [        [        -   [        [        [
        5      [        [        [
        5      -   -  [
        [        S45      [        [        S5      [        [        -   [        [        S5      -  [        [        S5      -  -   [        [        -   [        [        S5      -  [        [        S5      -  -   [        [        -   S-  [        [        S5      -  [        [        S5      -  [        [        S5      -  -   [        [        -   S-  [        [        S5      -  [        [        S5      -  [        [        S5      -  -   :X  d   e[        [        [        -   [        [        [
        5      [        [        [
        5      -   -  [
        [        [        45      [        [        [        S-   5      [        [        -   [        [        [        5      -  [        [        [        5      -  -   [        [        -   [        [        [        5      -  [        [        [        5      -  -   [        [        -   S-  [        [        [        S-
  5      -  [        [        [        5      -  [        [        [        S-
  5      -  -   [        [        -   S-  [        [        [        5      -  [        [        [        S-
  5      -  [        [        [        S-
  5      -  -   :X  d   eg r#   )	r   r   r   r   r   r   r   r&   r-   r   r   r    'test_deltaproduct_mul_add_x_y_add_kd_kdr2   X   s   q1ur!Qx"Q(*+aAY71<<<q1ur!Qx"Q(*+aAY7	
QAqBq!H$%& & &q1ur!Qx"Q(*+aAY7	
QAqBq!H$%& & &q1ur!Qx"Q(*+aAY7	
QAqBq!H$%& & &q1ur!Qx"Q(*+aAY72a8	
Q1aAq!<"%&UBq!H$4R1X$=<>	
Q
2a8Bq!H$R1X-<. 
Q
2a8Bq!H$R1X-<. . . . q1ur!Qx"Q(*+aAY72a8	
Q1aAq!<"%&UBq!H$4R1X$=<>	
Q
2a8Bq!H$R1X-<. 
Q
2a8Bq!H$R1X-<. . . . q1ur!Qx"Q(*+aAY72aQ<	
Q1aAq!<"%&UBq!H$4R1X$=<>	
Q
2aQ<1a(Aq1u5<6 
Q
2a8Bq!a%L(Aq1u5<6 6 6 6r   c            
         [        [        [        -  [        [        [        [
        5      -  -   [
        SS45      [        [        -  S-  [        [        [        -  S-  -  [        [        S5      -  -   [        [        -  [        -  [        [        -  -  [        [        S5      -  -   [        [        -  S-  [        -  [        [        S5      -  -   :X  d   e[        [        [        -  [        [        [        [
        5      -  -   [
        SS45      [        [        -  [        [        [        S5      -  -   :X  d   e[        [        [        -  [        [        [        [
        5      -  -   [
        SS45      [        [        -  [        [        [        S5      -  -   :X  d   e[        [        [        -  [        [        [        [
        5      -  -   [
        SS45      [        [        -  [        [        [        S5      -  -   :X  d   e[        [        [        -  [        [        [        [
        5      -  -   [
        S[        45      [        [        -  [        -  [        [        [        -  [        S-
  -  [        -  [        [        -  [        [        -
  -  -  [        S[        :*  [        [        :*  5      4S5      -   :X  d   e[        [        [        -  [        [        [        [
        5      -  -   [
        [        S45      [        [        -  [        * S-   -  [        [        [        -  [        [        -
  -  [        -  [        [        -  S[        -
  -  -  [        [        [        :*  [        S:*  5      4S5      -   :X  d   e[        [        [        -  [        [        [        [
        5      -  -   [
        [        [        45      [        [        -  [        * [        -   S-   -  [        [        [        -  [        [        -
  -  [        -  [        [        -  [        [        -
  -  -  [        [        [        :*  [        [        :*  5      4S5      -   :X  d   eg Nr   r   r$   r   Tr%   )
r   r   r   r   r   r   r   r   r   r&   r   r   r    &test_deltaproduct_add_mul_x_y_mul_x_kdr6   n   s
   acAbAhJAq	*qsQh	1Q3(
2a8/ sAgqsmBq!H4/589!axz"Q(7J/K K K KacAbAhJAq	*acAbAhJ.>>>>acAbAhJAq	*acAbAhJ.>>>>acAbAhJAq	*acAbAhJ.>>>>acAbAhJAq	*	
1q9cQU^Aqsa!en,c!q&!q&.AB
 	

 
 

 acAbAhJAq	*	
1Q)cQU^Aqsa!en,c!q&!q&.AB
 	

 
 

 acAbAhJAq	*	
1Q
icQU^Aqsa!en,c!q&!q&.AB
 	

 
 
r   c            
      R   [        [        [        [        [        [
        5      -   -  [
        SS45      [        [        -  S-  [        [        [        -  S-  -  [        [        S5      -  -   [        [        -  [        -  [        [        -  -  [        [        S5      -  -   [        [        -  S-  [        -  [        [        S5      -  -   :X  d   e[        [        [        [        [        [
        5      -   -  [
        SS45      [        [        [        [        S5      -   -  :X  d   e[        [        [        [        [        [
        5      -   -  [
        SS45      [        [        [        [        S5      -   -  :X  d   e[        [        [        [        [        [
        5      -   -  [
        SS45      [        [        [        [        S5      -   -  :X  d   e[        [        [        [        [        [
        5      -   -  [
        S[        45      [        [        -  [        -  [        [        [        -  [        S-
  -  [        -  [        [        -  [        [        -
  -  -  [        S[        :*  [        [        :*  5      4S5      R                  5       -   :X  d   e[        [        [        [        [        [
        5      -   -  [
        [        S45      [        [        -  [        * S-   -  [        [        [        -  [        [        -
  -  [        -  [        [        -  S[        -
  -  -  [        [        [        :*  [        S:*  5      4S5      -   R                  5       :X  d   e[        [        [        [        [        [
        5      -   -  [
        [        [        45      [        [        -  [        * [        -   S-   -  [        [        [        -  [        [        -
  -  [        -  [        [        -  [        [        -
  -  -  [        [        [        :*  [        [        :*  5      4S5      -   R                  5       :X  d   eg r4   r   r   r   r   r   r   r   r   r   expandr&   r   r   r     test_deltaproduct_mul_x_add_y_kdr:      s   aR1XAq	*qsQh	1Q3(
2a8/ sAgqsmBq!H4/589!axz"Q(7J/K K K KaR1XAq	*aR1X.>>>>aR1XAq	*aR1X.>>>>aR1XAq	*aR1X.>>>>aR1XAq	*	
1q9cQU^Aqsa!en,c!q&!q&.AB
 &(	  
 aR1XAq	*
A#!a9cQU^Aqsa!en,c!q&!q&.AB
 

 68	  
 aR1XAq	*
A#!a!	ycQU^Aqsa!en,c!q&!q&.AB 
 

 68	  r   c            
         [        [        [        S[        [        [
        5      -  -   -  [
        SS45      [        [        -  S-  S[        -  [        [        -  S-  -  [        [        S5      -  -   S[        -  [        -  [        -  [        -  [        -  [        [        S5      -  -   S[        [        -  S-  -  [        -  [        [        S5      -  -   :X  d   e[        [        [        S[        [        [
        5      -  -   -  [
        SS45      [        [        S[        [        S5      -  -   -  :X  d   e[        [        [        S[        [        [
        5      -  -   -  [
        SS45      [        [        S[        [        S5      -  -   -  :X  d   e[        [        [        S[        [        [
        5      -  -   -  [
        SS45      [        [        S[        [        S5      -  -   -  :X  d   e[        [        [        S[        [        [
        5      -  -   -  [
        S[        45      [        [        -  [        -  [        S[        [        -  [        S-
  -  -  [        -  [        [        -  [        [        -
  -  -  [        S[        :*  [        [        :*  5      4S5      R                  5       -   :X  d   e[        [        [        S[        [        [
        5      -  -   -  [
        [        S45      [        [        -  [        * S-   -  [        S[        [        -  [        [        -
  -  -  [        -  [        [        -  S[        -
  -  -  [        [        [        :*  [        S:*  5      4S5      -   R                  5       :X  d   e[        [        [        S[        [        [
        5      -  -   -  [
        [        [        45      [        [        -  [        * [        -   S-   -  [        S[        [        -  [        [        -
  -  -  [        -  [        [        -  [        [        -
  -  -  [        [        [        :*  [        [        :*  5      4S5      -   R                  5       :X  d   eg )Nr$   r   r   r5   r%   r8   r   r   r    #test_deltaproduct_mul_x_add_y_twokdr<      s@   aQr!QxZ 1a),1q	!QqS1HR1X1 !!Aa	!Bq!H 41578!A#z!|Bq!H7L1M M M MaQr!QxZ 1a),1qAqz>0BBBBaQr!QxZ 1a),1qAqz>0BBBBaQr!QxZ 1a),1qAqz>0BBBBaQr!QxZ 1a),	
1q9!q1u~a1A.AFAF0CD
 &(	  
 aQr!QxZ 1a),
A#!a9!q1u~a1A.AFAF0CD
 

 68	  
 aQr!QxZ 1a),
A#!a!	y!q1u~a1A.AFAF0CD 
 

 68	  r   c                  
   [        [        [        -   [        [        [        [
        5      -   -  [
        SS45      [        [        -   [        -  S-  [        [        -   [        [        -   [        -  S-  -  [        [        S5      -  -   [        [        -   [        -  [        [        -   S-  -  [        -  [        [        S5      -  -   [        [        -   [        -  S-  [        [        -   -  [        [        S5      -  -   :X  d   e[        [        [        -   [        [        [        [
        5      -   -  [
        SS45      [        [        -   [        [        [        S5      -   -  :X  d   e[        [        [        -   [        [        [        [
        5      -   -  [
        SS45      [        [        -   [        [        [        S5      -   -  :X  d   e[        [        [        -   [        [        [        [
        5      -   -  [
        SS45      [        [        -   [        [        [        S5      -   -  :X  d   e[        [        [        -   [        [        [        [
        5      -   -  [
        S[        45      [        [        -   [        -  [        -  [        [        [        -   [        -  S-  [        [        -   [        -  [        -  -  [        [        -   -  [        [        -   [        -  [        -  -  [        [        -   [        -  [        * -  -  [        S:  [        [        :*  -  4S5      -   :X  d   e[        [        [        -   [        [        [        [
        5      -   -  [
        [        S45      [        [        -   [        -  S-  [        [        -   [        -  [        * -  -  [        [        [        -   [        -  [        -  [        [        -   [        -  [        * -  -  [        [        -   -  [        [        -   [        -  S-  -  [        [        -   [        -  [        * -  -  [        [        :  [        S:*  -  4S5      -   :X  d   e[        [        [        -   [        [        [        [
        5      -   -  [
        [        [        45      [        [        -   [        -  [        [        -   [        -  [        -  -  [        [        -   [        -  [        * -  -  [        [        [        -   [        -  [        -  [        [        -   [        -  [        * -  -  [        [        -   -  [        [        -   [        -  [        -  -  [        [        -   [        -  [        * -  -  [        [        :  [        [        :*  -  4S5      -   :X  d   eg Nr   r   r$   r5   r%   )	r   r   r   r   r   r   r   r   r&   r   r   r    &test_deltaproduct_mul_add_x_y_add_y_kdr@      s   q1uq2a8|$q!Qi0a!eQYN	
Q!a%Qr!Qx'5(	
Q	1q51*Qr!Qx'5( a%QAr!Qx'5( ( ( ( q1uq2a8|$q!Qi0QUQAq\4JJJJq1uq2a8|$q!Qi0QUQAq\4JJJJq1uq2a8|$q!Qi0QUQAq\4JJJJq1uq2a8|$q!Qi0
a%Q1uai2Q	A~-q1u5Aqy7 q5!)r"#%&!VQ$79:CE 	EE E E q1uq2a8|$q!Qi0	
Q	A5AqyQB'5(*3q1uai!^	
Q	aRE 6a%6!#$q5!)a6023a%qb0A6B	
aAF5'+)5) ) ) ) q1uq2a8|$q!Qi0	
Q	AE19q. 1q5!)r!22Yq5!)a!a%qb)	)1q5	1AE193 
1uaiA2
!"aAF 3	56?6A 	AA A Ar   c            	         [        [        [        [        [        5      -   [
        [        [        [        5      -   -  [        SS45      [        [        S5      [        [        [        5      [        -   -  [        [        [        5      [        -   [
        -  S-  -  [        [        S5      [        [        [        5      [        -   -  [
        -  [        [        [        5      [        -   S-  -  [
        -  -   [        [        S5      [        [        [        5      [        -   [
        -  S-  -  [        [        [        5      [        -   -  -   [        [        [        5      [        -   [
        -  S-  -   :X  d   e[        [        [        [        [        5      -   [
        [        [        [        5      -   -  [        SS45      [        [        [        [        5      -   [
        [        [        S5      -   -  :X  d   e[        [        [        [        [        5      -   [
        [        [        [        5      -   -  [        SS45      [        [        [        [        5      -   [
        [        [        S5      -   -  :X  d   e[        [        [        [        [        5      -   [
        [        [        [        5      -   -  [        SS45      [        [        [        [        5      -   [
        [        [        S5      -   -  :X  d   e[        [        [        [        [        5      -   [
        [        [        [        5      -   -  [        S[        45      [        [        [        5      [        -   [
        -  [        -  [        [        [        [        5      [        -   [
        -  S-  [        [        [        5      [        -   [
        -  [        -  -  [        [        [        5      [        -   -  [        [        [        5      [        -   [
        -  [        -  -  [        [        [        5      [        -   [
        -  [        * -  -  [        S:  [        [        :*  -  4S5      -   :X  d   e[        [        [        [        [        5      -   [
        [        [        [        5      -   -  [        [        S45      [        [        [        5      [        -   [
        -  S-  [        [        [        5      [        -   [
        -  [        * -  -  [        [        [        [        5      [        -   [
        -  [        -  [        [        [        5      [        -   [
        -  [        * -  -  [        [        [        5      [        -   -  [        [        [        5      [        -   [
        -  S-  -  [        [        [        5      [        -   [
        -  [        * -  -  [        [        :  [        S:*  -  4S5      -   :X  d   e[        [        [        [        [        5      -   [
        [        [        [        5      -   -  [        [        [        45      [        [        [        5      [        -   [
        -  [        [        [        5      [        -   [
        -  [        -  -  [        [        [        5      [        -   [
        -  [        * -  -  [        [        [        [        5      [        -   [
        -  [        -  [        [        [        5      [        -   [
        -  [        * -  -  [        [        [        5      [        -   -  [        [        [        5      [        -   [
        -  [        -  -  [        [        [        5      [        -   [
        -  [        * -  -  [        [        :  [        [        :*  -  4S5      -   :X  d   eg r>   )	r   r   r   r   r   r   r   r   r&   r   r   r    'test_deltaproduct_mul_add_x_kd_add_y_kdrB      s;   q2a8|a"Q(l+aAY7
1a"Q(Q,"Q(Q,!1A 55
1a"Q(Q,!2a8a<!"33A5	6
1a2a8a<"Q&&1a15	6 Q(Q,	A	  
 q2a8|a"Q(l+aAY7	
R1XBq!H%& & &q2a8|a"Q(l+aAY7	
R1XBq!H%& & &q2a8|a"Q(l+aAY7	
R1XBq!H%& & &q2a8|a"Q(l+aAY7
Q(Q,	A	a8a<
b	!Bq!HqL!#3a"7	7AqA 

q!HqL!a

 "$Q(Q,!1aR 8
9;<6!V;	 !" 	"" " "
 q2a8|a"Q(l+aAY7	AqAq1<!!Qx!|Q.1"5<68Aa8a<
Q	AqAq 0QB7	7Aq
: 
!Qx!|Q"
#%'1X\1$4#;
<	
aAF	'9)<) ) ) )
 q2a8|a"Q(l+aAY7
1a1a<Q(Q,)A-<.021a1a/?B/<r!Qx!|Q.2R1X\
5r4 q!HqL"$&q!HqL!#3a"78:<Q(Q,
:r9!VQ')*35<5 5 5 5r   c                  "   [        [        [        SS45      S:X  d   e[        [        [        SS45      S[        -  :X  d   e[        [        [        -   [        SS45      S[        [        -   -  :X  d   e[        [        [        -  [        SS45      S[        -  [        -  :X  d   e[        [	        [
        [        5      [        SS45      S[	        [
        [        5      -  :X  d   e[        [        [	        [
        [        5      -  [        SS45      S[        -  [	        [
        [        5      -  :X  d   e[        [        [        -  [	        [
        [        5      -  [        SS45      S[        -  [        -  [	        [
        [        5      -  :X  d   eg r   )dsr   r   r   r   r   r   r   r   r    test_deltasummation_trivialrE      s#   a!Qq   a!Qqs"""a!eaAY1a!e9,,,acAq!91Q&&&bAhAq	"a1aj000a1aj1a)$!Bq!H444ac"Q(lQ1I&!A#a%1a.888r   c            	         [        SSSS9n [        [        U S5      U SS45      S:X  d   e[        [        [        S-  [        S-  5      [        [
        * [
        45      [        [        [        S-  [        S-  5      [        [
        * [
        45      :X  d   e[        [        [        [        5      [        S[        :*  [        S:*  5      4S5      [        [        [        [        5      [        [        [        5      -  [        SS45      s=:X  a?  [        [        [        [        5      [        [        [        5      -  [        SS45      :X  d   e   e[        [        [        [        5      [        [
        * [
        45      S:X  d   e[        [        [        [        5      [        S[
        45      [        S[        R                  [        :*  4S5      :X  d   e[        [        [        [        5      [        SS45      [        S[        S[        :*  [        S:*  5      4S5      :X  d   e[        [        [        [        [        5      -  [        [        [        5      -  [        [
        * [
        45      [        [        [        [        5      -  :X  d   e[        [        [        [        [        5      -  [        [
        * [
        45      [        :X  d   e[        [        [        [        [        5      -  [        [
        * [
        45      [        :X  d   e[        [        [        SS45      S[        -  :X  d   e[        [        [        -   [        [        [        5      -  [        [
        * [
        45      S[        -  :X  d   eg )	NnT)r   nonzeror   r   r   r$   r5   )r	   rD   r   r   r   r
   r   r   r   r   r   Zeror   )rG   s    r    #test_deltasummation_basic_numericalrJ      s~   T40AbAhAq	"a''' bAq!tnq2#rl+Bq!tQTNQRL)* * * bAhAFAF 34i@
2a8Bq!Hq!Qi()
2a8Bq!Hq!Qi() ) ) ) ) bAhRC%***bAhAr
#y!QVVq[1A9'MMMMbAhAq	"1c!q&!q&)*I67 7 7a1ajAq!AsB<0AbAhJ>>>a1aj1rc2,'1,,,a1aj1rc2,'1,,,a!Qqs"""q1ubAhRC-1444r   c            	      Z   [        [        [        [        5      [        SS45      [	        S[        S[        :*  [        S:*  5      4S5      :X  d   e[        [        [        [        5      [        SS45      [	        S[        [        S5      4S5      :X  d   e[        [        [        [        5      [        SS45      [	        S[        [        S5      4S5      :X  d   e[        [        [        [        5      [        SS45      [	        S[        [        S5      4S5      :X  d   e[        [        [        [        5      [        S[        45      [	        S[        S[        :*  [        [        :*  5      4S5      :X  d   e[        [        [        [        5      [        [        S45      [	        S[        [        [        :*  [        S:*  5      4S5      :X  d   e[        [        [        [        5      [        [        [        45      [	        S[        [        [        :*  [        [        :*  5      4S5      :X  d   eg Nr   r   r5   r$   )	rD   r   r   r   r   r   r   r   r&   r   r   r    "test_deltasummation_basic_symbolicrM     s   bAhAq	"1c!q&!q&)*I67 7 7bAhAq	"iBq!Hy&IIIIbAhAq	"iBq!Hy&IIIIbAhAq	"iBq!Hy&IIIIbAhAq	"1c!q&!q&)*I67 7 7bAhAq	"1c!q&!q&)*I67 7 7bAhAq	"1c!q&!q&)*I67 7 7r   c            	         [        [        [        [        [        5      -  [        SS45      [        [        [        S[        :*  [        S:*  5      4S5      :X  d   e[        [        [        [        [        5      -  [        SS45      [        [        [        [        S5      4S5      :X  d   e[        [        [        [        [        5      -  [        SS45      [        [        [        [        S5      4S5      :X  d   e[        [        [        [        [        5      -  [        SS45      [        [        [        [        S5      4S5      :X  d   e[        [        [        [        [        5      -  [        S[        45      [        [        [        S[        :*  [        [        :*  5      4S5      :X  d   e[        [        [        [        [        5      -  [        [        S45      [        [        [        [        [        :*  [        S:*  5      4S5      :X  d   e[        [        [        [        [        5      -  [        [        [        45      [        [        [        [        [        :*  [        [        :*  5      4S5      :X  d   eg rL   )
rD   r   r   r   r   r   r   r   r   r&   r   r   r    test_deltasummation_mul_x_kdrO     s   a1aj1a)$1c!q&!q&)*I67 7 7a1aj1a)$	1bAh-(KKKKa1aj1a)$	1bAh-(KKKKa1aj1a)$	1bAh-(KKKKa1aj1a)$1c!q&!q&)*I67 7 7a1aj1a)$1c!q&!q&)*I67 7 7a1aj1a)$1c!q&!q&)*I67 7 7r   c            	         [        [        [        -   [        [        [
        5      -  [
        SS45      [        [        [        -   [        S[        :*  [        S:*  5      4S5      :X  d   e[        [        [        -   [        [        [
        5      -  [
        SS45      [        [        [        -   [        [        S5      4S5      :X  d   e[        [        [        -   [        [        [
        5      -  [
        SS45      [        [        [        -   [        [        S5      4S5      :X  d   e[        [        [        -   [        [        [
        5      -  [
        SS45      [        [        [        -   [        [        S5      4S5      :X  d   e[        [        [        -   [        [        [
        5      -  [
        S[        45      [        [        [        -   [        S[        :*  [        [        :*  5      4S5      :X  d   e[        [        [        -   [        [        [
        5      -  [
        [        S45      [        [        [        -   [        [        [        :*  [        S:*  5      4S5      :X  d   e[        [        [        -   [        [        [
        5      -  [
        [        [        45      [        [        [        -   [        [        [        :*  [        [        :*  5      4S5      :X  d   eg rL   rD   r   r   r   r   r   r   r   r   r   r&   r   r   r    "test_deltasummation_mul_add_x_y_kdrR   #  s   q1ubAhAq	*1q5#a1fa1f-.	:; ; ;q1ubAhAq	*1q5"Q(#Y/0 0 0q1ubAhAq	*1q5"Q(#Y/0 0 0q1ubAhAq	*1q5"Q(#Y/0 0 0q1ubAhAq	*1q5#a1fa1f-.	:; ; ;q1ubAhAq	*1q5#a1fa1f-.	:; ; ;q1ubAhAq	*1q5#a1fa1f-.	:; ; ;r   c                     [        [        [        [        5      [        [        [        5      -   [        SS45      [        [        S[        S[        :*  [        S:*  5      4S5      [        S[        S[        :*  [        S:*  5      4S5      -   5      :X  d   e[        [        [        [        5      [        [        [        5      -   [        SS45      [        [        S[        [        S5      4S5      [        S[        [        S5      4S5      -   5      :X  d   e[        [        [        [        5      [        [        [        5      -   [        SS45      [        [        S[        [        S5      4S5      [        S[        [        S5      4S5      -   5      :X  d   e[        [        [        [        5      [        [        [        5      -   [        SS45      [        [        S[        [        S5      4S5      [        S[        [        S5      4S5      -   5      :X  d   e[        [        [        [        5      [        [        [        5      -   [        S[        45      [        [        S[        S[        :*  [        [        :*  5      4S5      [        S[        S[        :*  [        [        :*  5      4S5      -   5      :X  d   e[        [        [        [        5      [        [        [        5      -   [        [        S45      [        [        S[        [        [        :*  [        S:*  5      4S5      [        S[        [        [        :*  [        S:*  5      4S5      -   5      :X  d   e[        [        [        [        5      [        [        [        5      -   [        [        [        45      [        [        S[        [        [        :*  [        [        :*  5      4S5      [        S[        [        [        :*  [        [        :*  5      4S5      -   5      :X  d   eg rL   )rD   r   r   r   r   r   r   r   r   r&   r-   r   r   r    test_deltasummation_add_kd_kdrT   4  s   bAhAq!Aq!9-1c!q&!q&)*I61c!q&!q&)*I6	728 8 8 8 bAhAq!Aq!9-1bAh-+1bAh-+	,2- - - - bAhAq!Aq!9-1bAh-+1bAh-+	,2- - - - bAhAq!Aq!9-1bAh-+1bAh-+	,2- - - - bAhAq!Aq!9-1c!q&!q&)*I61c!q&!q&)*I6	728 8 8 8 bAhAq!Aq!9-1c!q&!q&)*I61c!q&!q&)*I6	728 8 8 8 bAhAq!Aq!9-1c!q&!q&)*I61c!q&!q&)*I6	728 8 8 8r   c                     [        [        [        [        [        5      -  [        [
        [        5      -   [        SS45      [        [        [        [        S[        :*  [        S:*  5      4S5      [        S[        S[
        :*  [
        S:*  5      4S5      -   5      :X  d   e[        [        [        [        [        5      -  [        [
        [        5      -   [        SS45      [        [        [        [        [        S5      4S5      [        S[        [
        S5      4S5      -   5      :X  d   e[        [        [        [        [        5      -  [        [
        [        5      -   [        SS45      [        [        [        [        [        S5      4S5      [        S[        [
        S5      4S5      -   5      :X  d   e[        [        [        [        [        5      -  [        [
        [        5      -   [        SS45      [        [        [        [        [        S5      4S5      [        S[        [
        S5      4S5      -   5      :X  d   e[        [        [        [        [        5      -  [        [
        [        5      -   [        S[        45      [        [        [        [        S[        :*  [        [        :*  5      4S5      [        S[        S[
        :*  [
        [        :*  5      4S5      -   5      :X  d   e[        [        [        [        [        5      -  [        [
        [        5      -   [        [        S45      [        [        [        [        [        [        :*  [        S:*  5      4S5      [        S[        [        [
        :*  [
        S:*  5      4S5      -   5      :X  d   e[        [        [        [        [        5      -  [        [
        [        5      -   [        [        [        45      [        [        [        [        [        [        :*  [        [        :*  5      4S5      [        S[        [        [
        :*  [
        [        :*  5      4S5      -   5      :X  d   eg rL   rD   r   r   r   r   r   r   r   r   r   r&   r-   r   r   r    #test_deltasummation_add_mul_x_kd_kdrW   L  s6   a1aj2a8#aAY/>1c!q&!q&)*I61c!q&!q&)*I6	748 8 8 8 a1aj2a8#aAY/>1bAh-+1bAh-+	,4- - - - a1aj2a8#aAY/>1bAh-+1bAh-+	,4- - - - a1aj2a8#aAY/>1bAh-+1bAh-+	,4- - - - a1aj2a8#aAY/>1c!q&!q&)*I61c!q&!q&)*I6	748 8 8 8 a1aj2a8#aAY/>1c!q&!q&)*I61c!q&!q&)*I6	748 8 8 8 a1aj2a8#aAY/>1c!q&!q&)*I61c!q&!q&)*I6	748 8 8 8r   c                     [        [        [        [        [        5      [        [
        [        5      -   -  [        SS45      [        [        [        [        S[        :*  [        S:*  5      4S5      [        [        [        S[
        :*  [
        S:*  5      4S5      -   5      :X  d   e[        [        [        [        [        5      [        [
        [        5      -   -  [        SS45      [        [        [        [        [        S5      4S5      [        [        [        [
        S5      4S5      -   5      :X  d   e[        [        [        [        [        5      [        [
        [        5      -   -  [        SS45      [        [        [        [        [        S5      4S5      [        [        [        [
        S5      4S5      -   5      :X  d   e[        [        [        [        [        5      [        [
        [        5      -   -  [        SS45      [        [        [        [        [        S5      4S5      [        [        [        [
        S5      4S5      -   5      :X  d   e[        [        [        [        [        5      [        [
        [        5      -   -  [        S[        45      [        [        [        [        S[        :*  [        [        :*  5      4S5      [        [        [        S[
        :*  [
        [        :*  5      4S5      -   5      :X  d   e[        [        [        [        [        5      [        [
        [        5      -   -  [        [        S45      [        [        [        [        [        [        :*  [        S:*  5      4S5      [        [        [        [        [
        :*  [
        S:*  5      4S5      -   5      :X  d   e[        [        [        [        [        5      [        [
        [        5      -   -  [        [        [        45      [        [        [        [        [        [        :*  [        [        :*  5      4S5      [        [        [        [        [
        :*  [
        [        :*  5      4S5      -   5      :X  d   eg rL   rV   r   r   r    #test_deltasummation_mul_x_add_kd_kdrY   d  s=   aAqBq!H$%1ay1^1c!q&!q&)*I61c!q&!q&)*I6	768 8 8 8 aAqBq!H$%1ay1^1bAh-+1bAh-+	,6- - - - aAqBq!H$%1ay1^1bAh-+1bAh-+	,6- - - - aAqBq!H$%1ay1^1bAh-+1bAh-+	,6- - - - aAqBq!H$%1ay1^1c!q&!q&)*I61c!q&!q&)*I6	768 8 8 8 aAqBq!H$%1ay1^1c!q&!q&)*I61c!q&!q&)*I6	768 8 8 8 aAqBq!H$%1ay1^1c!q&!q&)*I61c!q&!q&)*I6	768 8 8 8r   c                  	   [        [        [        -   [        [        [
        5      [        [        [
        5      -   -  [
        SS45      [        [        [        [        -   [        S[        :*  [        S:*  5      4S5      [        [        [        -   [        S[        :*  [        S:*  5      4S5      -   5      :X  d   e[        [        [        -   [        [        [
        5      [        [        [
        5      -   -  [
        SS45      [        [        [        [        -   [        [        S5      4S5      [        [        [        -   [        [        S5      4S5      -   5      :X  d   e[        [        [        -   [        [        [
        5      [        [        [
        5      -   -  [
        SS45      [        [        [        [        -   [        [        S5      4S5      [        [        [        -   [        [        S5      4S5      -   5      :X  d   e[        [        [        -   [        [        [
        5      [        [        [
        5      -   -  [
        SS45      [        [        [        [        -   [        [        S5      4S5      [        [        [        -   [        [        S5      4S5      -   5      :X  d   e[        [        [        -   [        [        [
        5      [        [        [
        5      -   -  [
        S[        45      [        [        [        [        -   [        S[        :*  [        [        :*  5      4S5      [        [        [        -   [        S[        :*  [        [        :*  5      4S5      -   5      :X  d   e[        [        [        -   [        [        [
        5      [        [        [
        5      -   -  [
        [        S45      [        [        [        [        -   [        [        [        :*  [        S:*  5      4S5      [        [        [        -   [        [        [        :*  [        S:*  5      4S5      -   5      :X  d   e[        [        [        -   [        [        [
        5      [        [        [
        5      -   -  [
        [        [        45      [        [        [        [        -   [        [        [        :*  [        [        :*  5      4S5      [        [        [        -   [        [        [        :*  [        [        :*  5      4S5      -   5      :X  d   eg rL   )rD   r   r   r   r   r   r   r   r   r   r   r&   r-   r   r   r    )test_deltasummation_mul_add_x_y_add_kd_kdr[   |  s   q1ur!Qx"Q(*+aAY7>1q5#a1fa1f-.	:1q5#a1fa1f-.	:	;<< < < < q1ur!Qx"Q(*+aAY7>1q5"Q(#Y/1q5"Q(#Y/	0<1 1 1 1 q1ur!Qx"Q(*+aAY7>1q5"Q(#Y/1q5"Q(#Y/	0<1 1 1 1 q1ur!Qx"Q(*+aAY7>1q5"Q(#Y/1q5"Q(#Y/	0<1 1 1 1 q1ur!Qx"Q(*+aAY7>1q5#a1fa1f-.	:1q5#a1fa1f-.	:	;<< < < < q1ur!Qx"Q(*+aAY7>1q5#a1fa1f-.	:1q5#a1fa1f-.	:	;<< < < < q1ur!Qx"Q(*+aAY7>1q5#a1fa1f-.	:1q5#a1fa1f-.	:	;<< < < <r   c            	         [        [        [        -  [        [        [        [
        5      -  -   [
        SS45      [        S[        -  [        -  [        -   [        S[        :*  [        S:*  5      4S[        -  [        -  S45      :X  d   e[        [        [        -  [        [        [        [
        5      -  -   [
        SS45      [        [        [        -  [        -   [        [        S5      4[        [        -  S45      :X  d   e[        [        [        -  [        [        [        [
        5      -  -   [
        SS45      [        [        [        -  [        -   [        [        S5      4[        [        -  S45      :X  d   e[        [        [        -  [        [        [        [
        5      -  -   [
        SS45      [        [        [        -  [        -   [        [        S5      4[        [        -  S45      :X  d   e[        [        [        -  [        [        [        [
        5      -  -   [
        S[        45      [        [        [        -  [        -  [        -   [        S[        :*  [        [        :*  5      4[        [        -  [        -  S45      :X  d   e[        [        [        -  [        [        [        [
        5      -  -   [
        [        S45      [        S[        -
  [        -  [        -  [        -   [        [        [        :*  [        S:*  5      4S[        -
  [        -  [        -  S45      :X  d   e[        [        [        -  [        [        [        [
        5      -  -   [
        [        [        45      [        [        [        -
  S-   [        -  [        -  [        -   [        [        [        :*  [        [        :*  5      4[        [        -
  S-   [        -  [        -  S45      :X  d   eg Nr   r   Tr$   r%   rQ   r   r   r    (test_deltasummation_add_mul_x_y_mul_x_kdr^     s   acAbAhJAq	*1Q3q519c!q&!q&12QqSUDMBC C CacAbAhJAq	*1Q37Bq!H%!T{34 4 4acAbAhJAq	*1Q37Bq!H%!T{34 4 4acAbAhJAq	*1Q37Bq!H%!T{34 4 4acAbAhJAq	*1Q3q519c!q&!q&12QqSUDMBC C CacAbAhJAq	*AE19Q;?CQQ$78AE19Q;:MNO O OacAbAhJAq	*i
a%!)Qq1	c!q&!q&12a!eai]1_d4K/M M M Mr   c            	      d   [        [        [        [        [        [
        5      -   -  [
        SS45      [        S[        -  [        -  [        -   [        S[        :*  [        S:*  5      4S[        -  [        -  S45      :X  d   e[        [        [        [        [        [
        5      -   -  [
        SS45      [        [        [        -  [        -   [        [        S5      4[        [        -  S45      :X  d   e[        [        [        [        [        [
        5      -   -  [
        SS45      [        [        [        -  [        -   [        [        S5      4[        [        -  S45      :X  d   e[        [        [        [        [        [
        5      -   -  [
        SS45      [        [        [        -  [        -   [        [        S5      4[        [        -  S45      :X  d   e[        [        [        [        [        [
        5      -   -  [
        S[        45      [        [        [        -  [        -  [        -   [        S[        :*  [        [        :*  5      4[        [        -  [        -  S45      :X  d   e[        [        [        [        [        [
        5      -   -  [
        [        S45      [        S[        -
  [        -  [        -  [        -   [        [        [        :*  [        S:*  5      4S[        -
  [        -  [        -  S45      :X  d   e[        [        [        [        [        [
        5      -   -  [
        [        [        45      [        [        [        -
  S-   [        -  [        -  [        -   [        [        [        :*  [        [        :*  5      4[        [        -
  S-   [        -  [        -  S45      :X  d   eg r]   rQ   r   r   r    "test_deltasummation_mul_x_add_y_kdr`     s   aR1XAq	*1Q3q519c!q&!q&12QqSUDMBC C CaR1XAq	*1Q37Bq!H%!T{34 4 4aR1XAq	*1Q37Bq!H%!T{34 4 4aR1XAq	*1Q37Bq!H%!T{34 4 4aR1XAq	*1Q3q519c!q&!q&12QqSUDMBC C CaR1XAq	*AE19Q;?CQQ$78AE19Q;:MNO O OaR1XAq	*i
a%!)Qq1	c!q&!q&12a!eai]1_d4K/M M M Mr   c            	         [        [        [        S[        [        [
        5      -  -   -  [
        SS45      [        S[        -  [        -  S[        -  -   [        S[        :*  [        S:*  5      4S[        -  [        -  S45      :X  d   e[        [        [        S[        [        [
        5      -  -   -  [
        SS45      [        [        [        -  S[        -  -   [        [        S5      4[        [        -  S45      :X  d   e[        [        [        S[        [        [
        5      -  -   -  [
        SS45      [        [        [        -  S[        -  -   [        [        S5      4[        [        -  S45      :X  d   e[        [        [        S[        [        [
        5      -  -   -  [
        SS45      [        [        [        -  S[        -  -   [        [        S5      4[        [        -  S45      :X  d   e[        [        [        S[        [        [
        5      -  -   -  [
        S[        45      [        [        [        -  [        -  S[        -  -   [        S[        :*  [        [        :*  5      4[        [        -  [        -  S45      :X  d   e[        [        [        S[        [        [
        5      -  -   -  [
        [        S45      [        S[        -
  [        -  [        -  S[        -  -   [        [        [        :*  [        S:*  5      4S[        -
  [        -  [        -  S45      :X  d   e[        [        [        S[        [        [
        5      -  -   -  [
        [        [        45      [        [        [        -
  S-   [        -  [        -  S[        -  -   [        [        [        :*  [        [        :*  5      4[        [        -
  S-   [        -  [        -  S45      :X  d   eg )Nr$   r   r   Tr%   rQ   r   r   r    %test_deltasummation_mul_x_add_y_twokdrb     s   aQr!QxZ 1a),1Q3q51Q3;AFAF 34qs1udmDE E EaQr!QxZ 1a),1Q319bAh'!A#t56 6 6aQr!QxZ 1a),1Q319bAh'!A#t56 6 6aQr!QxZ 1a),1Q319bAh'!A#t56 6 6aQr!QxZ 1a),1Q3q51Q3;AFAF 34qs1udmDE E EaQr!QxZ 1a),	
a%1qs	CQQ/0AE19Q;2E1G G G GaQr!QxZ 1a),	
a%!)Qq1Q3	AFAF 34A	1}Q6M1O O O Or   c            	         [        [        [        -   [        [        [        [
        5      -   -  [
        SS45      [        S[        [        -   -  [        -  [        -   [        -   [        S[        :*  [        S:*  5      4S[        [        -   -  [        -  S45      :X  d   e[        [        [        -   [        [        [        [
        5      -   -  [
        SS45      [        [        [        -   [        -  [        -   [        -   [        [        S5      4[        [        -   [        -  S45      :X  d   e[        [        [        -   [        [        [        [
        5      -   -  [
        SS45      [        [        [        -   [        -  [        -   [        -   [        [        S5      4[        [        -   [        -  S45      :X  d   e[        [        [        -   [        [        [        [
        5      -   -  [
        SS45      [        [        [        -   [        -  [        -   [        -   [        [        S5      4[        [        -   [        -  S45      :X  d   e[        [        [        -   [        [        [        [
        5      -   -  [
        S[        45      [        [        [        [        -   -  [        -  [        -   [        -   [        S[        :*  [        [        :*  5      4[        [        [        -   -  [        -  S45      :X  d   e[        [        [        -   [        [        [        [
        5      -   -  [
        [        S45      [        S[        -
  [        [        -   -  [        -  [        -   [        -   [        [        [        :*  [        S:*  5      4S[        -
  [        [        -   -  [        -  S45      :X  d   e[        [        [        -   [        [        [        [
        5      -   -  [
        [        [        45      [        [        [        -
  S-   [        [        -   -  [        -  [        -   [        -   [        [        [        :*  [        [        :*  5      4[        [        -
  S-   [        [        -   -  [        -  S45      :X  d   eg r]   rQ   r   r   r    (test_deltasummation_mul_add_x_y_add_y_kdrd     sF   q1uq2a8|$q!Qi0I	
AE1q1	c!q&!q&12QAYq[$4G5I I I Iq1uq2a8|$q!Qi0AE19q=1$bAh/1q5!)T1BCD D Dq1uq2a8|$q!Qi0AE19q=1$bAh/1q5!)T1BCD D Dq1uq2a8|$q!Qi0AE19q=1$bAh/1q5!)T1BCD D Dq1uq2a8|$q!Qi0I	
AE1q1	c!q&!q&12QAYq[$4G5I I I Iq1uq2a8|$q!Qi0I
a%!a%	Q		"CQQ$78
a%!a%	D!5# # # # q1uq2a8|$q!Qi0I
a%!)a!e	Q		"Q	&AFAF(;<
a%!)a!e	Q	%5' ' ' 'r   c                  T
   [        [        [        [        [        5      -   [
        [        [        [        5      -   -  [        SS45      [        [        [        [        [        5      [        -   [        S[        :*  [        S:*  5      4S5      S[        [        [        5      [        -   -  [
        -  -   5      :X  d   e[        [        [        [        [        5      -   [
        [        [        [        5      -   -  [        SS45      [        [        [        [        [        5      [        -   [        [        S5      4S5      [        [        [        5      [        -   [
        -  -   5      :X  d   e[        [        [        [        [        5      -   [
        [        [        [        5      -   -  [        SS45      [        [        [        [        [        5      [        -   [        [        S5      4S5      [        [        [        5      [        -   [
        -  -   5      :X  d   e[        [        [        [        [        5      -   [
        [        [        [        5      -   -  [        SS45      [        [        [        [        [        5      [        -   [        [        S5      4S5      [        [        [        5      [        -   [
        -  -   5      :X  d   e[        [        [        [        [        5      -   [
        [        [        [        5      -   -  [        S[        45      [        [        [        [        [        5      [        -   [        S[        :*  [        [        :*  5      4S5      [        [        [        [        5      [        -   -  [
        -  -   5      :X  d   e[        [        [        [        [        5      -   [
        [        [        [        5      -   -  [        [        S45      [        [        [        [        [        5      [        -   [        [        [        :*  [        S:*  5      4S5      S[        -
  [        [        [        5      [        -   -  [
        -  -   5      :X  d   e[        [        [        [        [        5      -   [
        [        [        [        5      -   -  [        [        [        45      [        [        [        [        [        5      [        -   [        [        [        :*  [        [        :*  5      4S5      [        [        -
  S-   [        [        [        5      [        -   -  [
        -  -   5      :X  d   eg )Nr   r   r5   r$   r%   )rD   r   r   r   r   r   r   r   r   r   r   r&   r   r   r    )test_deltasummation_mul_add_x_kd_add_y_kdrf     s   q2a8|a"Q(l+aAY7>2a8a<Q!VQ!V!45yA	2a8a<	<    q2a8|a"Q(l+aAY7>2a8a<Aq*I6	AqAq	<    q2a8|a"Q(l+aAY7>2a8a<Aq*I6	AqAq	<    q2a8|a"Q(l+aAY7>2a8a<Aq*I6	AqAq	<    q2a8|a"Q(l+aAY7>2a8a<Q!VQ!V!45yA	2a8a<	<    q2a8|a"Q(l+aAY7>2a8a<Q!VQ!V!45yA	
QAqAq 	!<" " " " q2a8|a"Q(l+aAY7>2a8a<Q!VQ!V!45yA	
QR1X\"1$	%<& & & &r   c                  &    [        [        S 5        g )Nc                  p    [        [        [        [        5      [        [        [
        5      -   [        5      $ )N)r   r   r   r   r   r&   r   r   r    <lambda>$test_extract_delta.<locals>.<lambda>  s    ~bAhAq.A1Er   )r   
ValueErrorr   r   r    test_extract_deltarl     s    
:EFr   N)8sympy.concreter   sympy.concrete.deltar   r   r   rD   r   
sympy.corer   r   r	   r
   sympy.functionsr   r   r   r   sympy.logicr   sympy.testing.pytestr   r   r   r   r&   r-   r   r   r!   r'   r)   r+   r.   r0   r2   r6   r:   r<   r@   rB   rE   rJ   rM   rO   rR   rT   rW   rY   r[   r^   r`   rb   rd   rf   rl   r   r   r    <module>rs      s     Y Y ) ) K K  'T$?1aAu%(1<GK
1P 0"6,
...A,5:95.77;"808080<0M"M"O"'&&0Gr   