
    g=]                     F   d dl mZ d dlmZmZmZ d dlm	Z	m
Z
mZmZ d dlmZmZmZ d dlmZ d dlmZ  eddd	      \  ZZZZZ ed
d      \  Z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 Z.d Z/d  Z0d! Z1d" Z2d# Z3d$ Z4d% Z5d& Z6d' Z7y())    )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                     t        t        t        ddf      dk(  sJ t        t        t        ddf      t        dz  k(  sJ t        t        t        z   t        ddf      t        t        z   dz  k(  sJ t        t        t        z  t        ddf      t        t        z  dz  k(  sJ t        t	        t
        t              t        ddf      t	        t
        t              k(  sJ t        t        t	        t
        t              z  t        ddf      t        dz  t	        t
        t              z  k(  sJ t        t        t        z  t	        t
        t              z  t        ddf      t        t        z  dz  t	        t
        t              z  k(  sJ y N   r      )dpxjyKDik     T/var/www/openai/venv/lib/python3.12/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                     t        t        t        t              t        ddf      dk(  sJ t        t        t        t              t        ddf      t        t        d      k(  sJ t        t        t        t              t        ddf      t        t        d      k(  sJ t        t        t        t              t        ddf      t        t        d      k(  sJ t        t        t        t              t        dt        f      t        t        d      t        t        d      z  t        t        d      z   k(  sJ t        t        t        t              t        t        df      t        t        d      t        t        d      z  t        t        d      z   k(  sJ t        t        t        t              t        t        t
        f      t        t        t
              t        t        t
              z  t        t        t
        dz         z   k(  sJ y 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                     t        t        t        t        t              z  t        ddf      dk(  sJ t        t        t        t        t              z  t        ddf      t        t        t        d      z  k(  sJ t        t        t        t        t              z  t        ddf      t        t        t        d      z  k(  sJ t        t        t        t        t              z  t        ddf      t        t        t        d      z  k(  sJ t        t        t        t        t              z  t        dt
        f      t        t        t        d      z  t        t
        d      z  t        t
        d      z   k(  sJ t        t        t        t        t              z  t        t
        df      t        t        t        d      z  t        t
        d      z  t        t
        d      z   k(  sJ t        t        t        t        t              z  t        t
        t        f      t        t        t        t              z  t        t
        t              z  t        t
        t        dz         z   k(  sJ y 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                  n   t        t        t        z   t        t        t
              z  t
        ddf      dk(  sJ t        t        t        z   t        t        t
              z  t
        ddf      t        t        z   t        t        d      z  k(  sJ t        t        t        z   t        t        t
              z  t
        ddf      t        t        z   t        t        d      z  k(  sJ t        t        t        z   t        t        t
              z  t
        ddf      t        t        z   t        t        d      z  k(  sJ t        t        t        z   t        t        t
              z  t
        dt        f      t        t        z   t        t        d      z  t        t        d      z  t        t        d      z   k(  sJ t        t        t        z   t        t        t
              z  t
        t        df      t        t        z   t        t        d      z  t        t        d      z  t        t        d      z   k(  sJ t        t        t        z   t        t        t
              z  t
        t        t        f      t        t        z   t        t        t              z  t        t        t              z  t        t        t        dz         z   k(  sJ y 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                  	   t        t        t        t              t        t        t              z   t        ddf      dk(  sJ t        t        t        t              t        t        t              z   t        ddf      t        t        d      t        t        d      z   k(  sJ t        t        t        t              t        t        t              z   t        ddf      t        t        d      t        t        d      z   k(  sJ t        t        t        t              t        t        t              z   t        ddf      t        t        d      t        t        d      z   k(  sJ t        t        t        t              t        t        t              z   t        dt
        f      t        t
        d      t        t        d      t        t
        d      z  z   t        t        d      t        t
        d      z  z   t        t        d      t        t        d      z  t        t
        d      z  z   t        t        d      t        t        d      z  t        t
        d      z  z   k(  sJ t        t        t        t              t        t        t              z   t        t
        df      t        t
        d      t        t        d      t        t
        d      z  z   t        t        d      t        t
        d      z  z   t        t        d      t        t        d      z  t        t
        d      z  z   t        t        d      t        t        d      z  t        t
        d      z  z   k(  sJ t        t        t        t              t        t        t              z   t        t
        t        f      t        t
        t        dz         t        t        t              t        t
        t              z  z   t        t        t              t        t
        t              z  z   t        t        t              t        t        t        dz
        z  t        t
        t        dz
        z  z   t        t        t        dz
        t        t        t              z  t        t
        t        dz
        z  z   k(  sJ y 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                  n
   t        t        t        t        t              t        t
        t              z   z  t        ddf      dk(  sJ t        t        t        t        t              t        t
        t              z   z  t        ddf      t        t        t        d      t        t
        d      z   z  k(  sJ t        t        t        t        t              t        t
        t              z   z  t        ddf      t        t        t        d      t        t
        d      z   z  k(  sJ t        t        t        t        t              t        t
        t              z   z  t        ddf      t        t        t        d      t        t
        d      z   z  k(  sJ t        t        t        t        t              t        t
        t              z   z  t        dt        f      t        t        d      t        t        t        d      z  t        t        d      z  z   t        t        t
        d      z  t        t        d      z  z   t        dz  t        t        d      z  t        t
        d      z  t        t        d      z  z   t        dz  t        t
        d      z  t        t        d      z  t        t        d      z  z   k(  sJ t        t        t        t        t              t        t
        t              z   z  t        t        df      t        t        d      t        t        t        d      z  t        t        d      z  z   t        t        t
        d      z  t        t        d      z  z   t        dz  t        t        d      z  t        t
        d      z  t        t        d      z  z   t        dz  t        t        d      z  t        t
        d      z  t        t        d      z  z   k(  sJ t        t        t        t        t              t        t
        t              z   z  t        t        t        f      t        t        t        dz         t        t        t        t              z  t        t        t              z  z   t        t        t
        t              z  t        t        t              z  z   t        dz  t        t        t        dz
        z  t        t
        t              z  t        t        t        dz
        z  z   t        dz  t        t        t              z  t        t
        t        dz
        z  t        t        t        dz
        z  z   k(  sJ y 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                     t        t        t        z   t        t        t
              t        t        t
              z   z  t
        ddf      dk(  sJ t        t        t        z   t        t        t
              t        t        t
              z   z  t
        ddf      t        t        z   t        t        d      t        t        d      z   z  k(  sJ t        t        t        z   t        t        t
              t        t        t
              z   z  t
        ddf      t        t        z   t        t        d      t        t        d      z   z  k(  sJ t        t        t        z   t        t        t
              t        t        t
              z   z  t
        ddf      t        t        z   t        t        d      t        t        d      z   z  k(  sJ t        t        t        z   t        t        t
              t        t        t
              z   z  t
        dt        f      t        t        d      t        t        z   t        t        d      z  t        t        d      z  z   t        t        z   t        t        d      z  t        t        d      z  z   t        t        z   dz  t        t        d      z  t        t        d      z  t        t        d      z  z   t        t        z   dz  t        t        d      z  t        t        d      z  t        t        d      z  z   k(  sJ t        t        t        z   t        t        t
              t        t        t
              z   z  t
        t        df      t        t        d      t        t        z   t        t        d      z  t        t        d      z  z   t        t        z   t        t        d      z  t        t        d      z  z   t        t        z   dz  t        t        d      z  t        t        d      z  t        t        d      z  z   t        t        z   dz  t        t        d      z  t        t        d      z  t        t        d      z  z   k(  sJ t        t        t        z   t        t        t
              t        t        t
              z   z  t
        t        t        f      t        t        t        dz         t        t        z   t        t        t              z  t        t        t              z  z   t        t        z   t        t        t              z  t        t        t              z  z   t        t        z   dz  t        t        t        dz
        z  t        t        t              z  t        t        t        dz
        z  z   t        t        z   dz  t        t        t              z  t        t        t        dz
        z  t        t        t        dz
        z  z   k(  sJ y 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            
      |   t        t        t        z  t        t        t        t
              z  z   t
        ddf      t        t        z  dz  t        t        t        z  dz  z  t        t        d      z  z   t        t        z  t        z  t        t        z  z  t        t        d      z  z   t        t        z  dz  t        z  t        t        d      z  z   k(  sJ t        t        t        z  t        t        t        t
              z  z   t
        ddf      t        t        z  t        t        t        d      z  z   k(  sJ t        t        t        z  t        t        t        t
              z  z   t
        ddf      t        t        z  t        t        t        d      z  z   k(  sJ t        t        t        z  t        t        t        t
              z  z   t
        ddf      t        t        z  t        t        t        d      z  z   k(  sJ t        t        t        z  t        t        t        t
              z  z   t
        dt        f      t        t        z  t        z  t        t        t        z  t        dz
  z  t        z  t        t        z  t        t        z
  z  z  t        dt        k  t        t        k        fd      z   k(  sJ t        t        t        z  t        t        t        t
              z  z   t
        t        df      t        t        z  t         dz   z  t        t        t        z  t        t        z
  z  t        z  t        t        z  dt        z
  z  z  t        t        t        k  t        dk        fd      z   k(  sJ t        t        t        z  t        t        t        t
              z  z   t
        t        t        f      t        t        z  t         t        z   dz   z  t        t        t        z  t        t        z
  z  t        z  t        t        z  t        t        z
  z  z  t        t        t        k  t        t        k        fd      z   k(  sJ y 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            
      D   t        t        t        t        t        t
              z   z  t
        ddf      t        t        z  dz  t        t        t        z  dz  z  t        t        d      z  z   t        t        z  t        z  t        t        z  z  t        t        d      z  z   t        t        z  dz  t        z  t        t        d      z  z   k(  sJ t        t        t        t        t        t
              z   z  t
        ddf      t        t        t        t        d      z   z  k(  sJ t        t        t        t        t        t
              z   z  t
        ddf      t        t        t        t        d      z   z  k(  sJ t        t        t        t        t        t
              z   z  t
        ddf      t        t        t        t        d      z   z  k(  sJ t        t        t        t        t        t
              z   z  t
        dt        f      t        t        z  t        z  t        t        t        z  t        dz
  z  t        z  t        t        z  t        t        z
  z  z  t        dt        k  t        t        k        fd      j                         z   k(  sJ t        t        t        t        t        t
              z   z  t
        t        df      t        t        z  t         dz   z  t        t        t        z  t        t        z
  z  t        z  t        t        z  dt        z
  z  z  t        t        t        k  t        dk        fd      z   j                         k(  sJ t        t        t        t        t        t
              z   z  t
        t        t        f      t        t        z  t         t        z   dz   z  t        t        t        z  t        t        z
  z  t        z  t        t        z  t        t        z
  z  z  t        t        t        k  t        t        k        fd      z   j                         k(  sJ y 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            
         t        t        t        dt        t        t
              z  z   z  t
        ddf      t        t        z  dz  dt        z  t        t        z  dz  z  t        t        d      z  z   dt        z  t        z  t        z  t        z  t        z  t        t        d      z  z   dt        t        z  dz  z  t        z  t        t        d      z  z   k(  sJ t        t        t        dt        t        t
              z  z   z  t
        ddf      t        t        dt        t        d      z  z   z  k(  sJ t        t        t        dt        t        t
              z  z   z  t
        ddf      t        t        dt        t        d      z  z   z  k(  sJ t        t        t        dt        t        t
              z  z   z  t
        ddf      t        t        dt        t        d      z  z   z  k(  sJ t        t        t        dt        t        t
              z  z   z  t
        dt        f      t        t        z  t        z  t        dt        t        z  t        dz
  z  z  t        z  t        t        z  t        t        z
  z  z  t        dt        k  t        t        k        fd      j                         z   k(  sJ t        t        t        dt        t        t
              z  z   z  t
        t        df      t        t        z  t         dz   z  t        dt        t        z  t        t        z
  z  z  t        z  t        t        z  dt        z
  z  z  t        t        t        k  t        dk        fd      z   j                         k(  sJ t        t        t        dt        t        t
              z  z   z  t
        t        t        f      t        t        z  t         t        z   dz   z  t        dt        t        z  t        t        z
  z  z  t        z  t        t        z  t        t        z
  z  z  t        t        t        k  t        t        k        fd      z   j                         k(  sJ y )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                  
   t        t        t        z   t        t        t        t
              z   z  t
        ddf      t        t        z   t        z  dz  t        t        z   t        t        z   t        z  dz  z  t        t        d      z  z   t        t        z   t        z  t        t        z   dz  z  t        z  t        t        d      z  z   t        t        z   t        z  dz  t        t        z   z  t        t        d      z  z   k(  sJ t        t        t        z   t        t        t        t
              z   z  t
        ddf      t        t        z   t        t        t        d      z   z  k(  sJ t        t        t        z   t        t        t        t
              z   z  t
        ddf      t        t        z   t        t        t        d      z   z  k(  sJ t        t        t        z   t        t        t        t
              z   z  t
        ddf      t        t        z   t        t        t        d      z   z  k(  sJ t        t        t        z   t        t        t        t
              z   z  t
        dt        f      t        t        z   t        z  t        z  t        t        t        z   t        z  dz  t        t        z   t        z  t        z  z  t        t        z   z  t        t        z   t        z  t        z  z  t        t        z   t        z  t         z  z  t        dk\  t        t        k  z  fd      z   k(  sJ t        t        t        z   t        t        t        t
              z   z  t
        t        df      t        t        z   t        z  dz  t        t        z   t        z  t         z  z  t        t        t        z   t        z  t        z  t        t        z   t        z  t         z  z  t        t        z   z  t        t        z   t        z  dz  z  t        t        z   t        z  t         z  z  t        t        k\  t        dk  z  fd      z   k(  sJ t        t        t        z   t        t        t        t
              z   z  t
        t        t        f      t        t        z   t        z  t        t        z   t        z  t        z  z  t        t        z   t        z  t         z  z  t        t        t        z   t        z  t        z  t        t        z   t        z  t         z  z  t        t        z   z  t        t        z   t        z  t        z  z  t        t        z   t        z  t         z  z  t        t        k\  t        t        k  z  fd      z   k(  sJ y 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            	         t        t        t        t        t              z   t
        t        t        t              z   z  t        ddf      t        t        d      t        t        t              t        z   z  t        t        t              t        z   t
        z  dz  z  t        t        d      t        t        t              t        z   z  t
        z  t        t        t              t        z   dz  z  t
        z  z   t        t        d      t        t        t              t        z   t
        z  dz  z  t        t        t              t        z   z  z   t        t        t              t        z   t
        z  dz  z   k(  sJ t        t        t        t        t              z   t
        t        t        t              z   z  t        ddf      t        t        t        t              z   t
        t        t        d      z   z  k(  sJ t        t        t        t        t              z   t
        t        t        t              z   z  t        ddf      t        t        t        t              z   t
        t        t        d      z   z  k(  sJ t        t        t        t        t              z   t
        t        t        t              z   z  t        ddf      t        t        t        t              z   t
        t        t        d      z   z  k(  sJ t        t        t        t        t              z   t
        t        t        t              z   z  t        dt        f      t        t        t              t        z   t
        z  t        z  t        t        t        t              t        z   t
        z  dz  t        t        t              t        z   t
        z  t        z  z  t        t        t              t        z   z  t        t        t              t        z   t
        z  t        z  z  t        t        t              t        z   t
        z  t         z  z  t        dk\  t        t        k  z  fd      z   k(  sJ t        t        t        t        t              z   t
        t        t        t              z   z  t        t        df      t        t        t              t        z   t
        z  dz  t        t        t              t        z   t
        z  t         z  z  t        t        t        t              t        z   t
        z  t        z  t        t        t              t        z   t
        z  t         z  z  t        t        t              t        z   z  t        t        t              t        z   t
        z  dz  z  t        t        t              t        z   t
        z  t         z  z  t        t        k\  t        dk  z  fd      z   k(  sJ t        t        t        t        t              z   t
        t        t        t              z   z  t        t        t        f      t        t        t              t        z   t
        z  t        t        t              t        z   t
        z  t        z  z  t        t        t              t        z   t
        z  t         z  z  t        t        t        t              t        z   t
        z  t        z  t        t        t              t        z   t
        z  t         z  z  t        t        t              t        z   z  t        t        t              t        z   t
        z  t        z  z  t        t        t              t        z   t
        z  t         z  z  t        t        k\  t        t        k  z  fd      z   k(  sJ y 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                     t        t        t        ddf      dk(  sJ t        t        t        ddf      dt        z  k(  sJ t        t        t        z   t        ddf      dt        t        z   z  k(  sJ t        t        t        z  t        ddf      dt        z  t        z  k(  sJ t        t	        t
        t              t        ddf      dt	        t
        t              z  k(  sJ t        t        t	        t
        t              z  t        ddf      dt        z  t	        t
        t              z  k(  sJ t        t        t        z  t	        t
        t              z  t        ddf      dt        z  t        z  t	        t
        t              z  k(  sJ y 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            	         t        ddd      } t        t        | d      | ddf      dk(  sJ t        t        t        dz  t        dz        t        t
         t
        f      t        t        t        dz  t        dz        t        t
         t
        f      k(  sJ t        t        t        t              t        dt        k  t        dk        fd      t        t        t        t              t        t        t              z  t        ddf      cxk(  r>t        t        t        t              t        t        t              z  t        ddf      k(  sJ  J t        t        t        t              t        t
         t
        f      dk(  sJ t        t        t        t              t        dt
        f      t        dt        j                  t        k  fd      k(  sJ t        t        t        t              t        ddf      t        dt        dt        k  t        dk        fd      k(  sJ t        t        t        t        t              z  t        t        t              z  t        t
         t
        f      t        t        t        t              z  k(  sJ t        t        t        t        t              z  t        t
         t
        f      t        k(  sJ t        t        t        t        t              z  t        t
         t
        f      t        k(  sJ t        t        t        ddf      dt        z  k(  sJ t        t        t        z   t        t        t              z  t        t
         t
        f      dt        z  k(  sJ y )	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            	      L   t        t        t        t              t        ddf      t	        dt        dt        k  t        dk        fd      k(  sJ t        t        t        t              t        ddf      t	        dt        t        d      fd      k(  sJ t        t        t        t              t        ddf      t	        dt        t        d      fd      k(  sJ t        t        t        t              t        ddf      t	        dt        t        d      fd      k(  sJ t        t        t        t              t        dt        f      t	        dt        dt        k  t        t        k        fd      k(  sJ t        t        t        t              t        t        df      t	        dt        t        t        k  t        dk        fd      k(  sJ t        t        t        t              t        t        t        f      t	        dt        t        t        k  t        t        k        fd      k(  sJ y 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            	         t        t        t        t        t              z  t        ddf      t        t        t        dt        k  t        dk        fd      k(  sJ t        t        t        t        t              z  t        ddf      t        t        t        t        d      fd      k(  sJ t        t        t        t        t              z  t        ddf      t        t        t        t        d      fd      k(  sJ t        t        t        t        t              z  t        ddf      t        t        t        t        d      fd      k(  sJ t        t        t        t        t              z  t        dt        f      t        t        t        dt        k  t        t        k        fd      k(  sJ t        t        t        t        t              z  t        t        df      t        t        t        t        t        k  t        dk        fd      k(  sJ t        t        t        t        t              z  t        t        t        f      t        t        t        t        t        k  t        t        k        fd      k(  sJ y 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            	         t        t        t        z   t        t        t
              z  t
        ddf      t        t        t        z   t        dt        k  t        dk        fd      k(  sJ t        t        t        z   t        t        t
              z  t
        ddf      t        t        t        z   t        t        d      fd      k(  sJ t        t        t        z   t        t        t
              z  t
        ddf      t        t        t        z   t        t        d      fd      k(  sJ t        t        t        z   t        t        t
              z  t
        ddf      t        t        t        z   t        t        d      fd      k(  sJ t        t        t        z   t        t        t
              z  t
        dt        f      t        t        t        z   t        dt        k  t        t        k        fd      k(  sJ t        t        t        z   t        t        t
              z  t
        t        df      t        t        t        z   t        t        t        k  t        dk        fd      k(  sJ t        t        t        z   t        t        t
              z  t
        t        t        f      t        t        t        z   t        t        t        k  t        t        k        fd      k(  sJ y 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                     t        t        t        t              t        t        t              z   t        ddf      t        t        dt        dt        k  t        dk        fd      t        dt        dt        k  t        dk        fd      z         k(  sJ t        t        t        t              t        t        t              z   t        ddf      t        t        dt        t        d      fd      t        dt        t        d      fd      z         k(  sJ t        t        t        t              t        t        t              z   t        ddf      t        t        dt        t        d      fd      t        dt        t        d      fd      z         k(  sJ t        t        t        t              t        t        t              z   t        ddf      t        t        dt        t        d      fd      t        dt        t        d      fd      z         k(  sJ t        t        t        t              t        t        t              z   t        dt        f      t        t        dt        dt        k  t        t        k        fd      t        dt        dt        k  t        t        k        fd      z         k(  sJ t        t        t        t              t        t        t              z   t        t        df      t        t        dt        t        t        k  t        dk        fd      t        dt        t        t        k  t        dk        fd      z         k(  sJ t        t        t        t              t        t        t              z   t        t        t        f      t        t        dt        t        t        k  t        t        k        fd      t        dt        t        t        k  t        t        k        fd      z         k(  sJ y 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                     t        t        t        t        t              z  t        t
        t              z   t        ddf      t        t        t        t        dt        k  t        dk        fd      t        dt        dt
        k  t
        dk        fd      z         k(  sJ t        t        t        t        t              z  t        t
        t              z   t        ddf      t        t        t        t        t        d      fd      t        dt        t
        d      fd      z         k(  sJ t        t        t        t        t              z  t        t
        t              z   t        ddf      t        t        t        t        t        d      fd      t        dt        t
        d      fd      z         k(  sJ t        t        t        t        t              z  t        t
        t              z   t        ddf      t        t        t        t        t        d      fd      t        dt        t
        d      fd      z         k(  sJ t        t        t        t        t              z  t        t
        t              z   t        dt        f      t        t        t        t        dt        k  t        t        k        fd      t        dt        dt
        k  t
        t        k        fd      z         k(  sJ t        t        t        t        t              z  t        t
        t              z   t        t        df      t        t        t        t        t        t        k  t        dk        fd      t        dt        t        t
        k  t
        dk        fd      z         k(  sJ t        t        t        t        t              z  t        t
        t              z   t        t        t        f      t        t        t        t        t        t        k  t        t        k        fd      t        dt        t        t
        k  t
        t        k        fd      z         k(  sJ y 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                     t        t        t        t        t              t        t
        t              z   z  t        ddf      t        t        t        t        dt        k  t        dk        fd      t        t        t        dt
        k  t
        dk        fd      z         k(  sJ t        t        t        t        t              t        t
        t              z   z  t        ddf      t        t        t        t        t        d      fd      t        t        t        t
        d      fd      z         k(  sJ t        t        t        t        t              t        t
        t              z   z  t        ddf      t        t        t        t        t        d      fd      t        t        t        t
        d      fd      z         k(  sJ t        t        t        t        t              t        t
        t              z   z  t        ddf      t        t        t        t        t        d      fd      t        t        t        t
        d      fd      z         k(  sJ t        t        t        t        t              t        t
        t              z   z  t        dt        f      t        t        t        t        dt        k  t        t        k        fd      t        t        t        dt
        k  t
        t        k        fd      z         k(  sJ t        t        t        t        t              t        t
        t              z   z  t        t        df      t        t        t        t        t        t        k  t        dk        fd      t        t        t        t        t
        k  t
        dk        fd      z         k(  sJ t        t        t        t        t              t        t
        t              z   z  t        t        t        f      t        t        t        t        t        t        k  t        t        k        fd      t        t        t        t        t
        k  t
        t        k        fd      z         k(  sJ y 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                  	   t        t        t        z   t        t        t
              t        t        t
              z   z  t
        ddf      t        t        t        t        z   t        dt        k  t        dk        fd      t        t        t        z   t        dt        k  t        dk        fd      z         k(  sJ t        t        t        z   t        t        t
              t        t        t
              z   z  t
        ddf      t        t        t        t        z   t        t        d      fd      t        t        t        z   t        t        d      fd      z         k(  sJ t        t        t        z   t        t        t
              t        t        t
              z   z  t
        ddf      t        t        t        t        z   t        t        d      fd      t        t        t        z   t        t        d      fd      z         k(  sJ t        t        t        z   t        t        t
              t        t        t
              z   z  t
        ddf      t        t        t        t        z   t        t        d      fd      t        t        t        z   t        t        d      fd      z         k(  sJ t        t        t        z   t        t        t
              t        t        t
              z   z  t
        dt        f      t        t        t        t        z   t        dt        k  t        t        k        fd      t        t        t        z   t        dt        k  t        t        k        fd      z         k(  sJ t        t        t        z   t        t        t
              t        t        t
              z   z  t
        t        df      t        t        t        t        z   t        t        t        k  t        dk        fd      t        t        t        z   t        t        t        k  t        dk        fd      z         k(  sJ t        t        t        z   t        t        t
              t        t        t
              z   z  t
        t        t        f      t        t        t        t        z   t        t        t        k  t        t        k        fd      t        t        t        z   t        t        t        k  t        t        k        fd      z         k(  sJ y 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            	         t        t        t        z  t        t        t        t
              z  z   t
        ddf      t        dt        z  t        z  t        z   t        dt        k  t        dk        fdt        z  t        z  df      k(  sJ t        t        t        z  t        t        t        t
              z  z   t
        ddf      t        t        t        z  t        z   t        t        d      ft        t        z  df      k(  sJ t        t        t        z  t        t        t        t
              z  z   t
        ddf      t        t        t        z  t        z   t        t        d      ft        t        z  df      k(  sJ t        t        t        z  t        t        t        t
              z  z   t
        ddf      t        t        t        z  t        z   t        t        d      ft        t        z  df      k(  sJ t        t        t        z  t        t        t        t
              z  z   t
        dt        f      t        t        t        z  t        z  t        z   t        dt        k  t        t        k        ft        t        z  t        z  df      k(  sJ t        t        t        z  t        t        t        t
              z  z   t
        t        df      t        dt        z
  t        z  t        z  t        z   t        t        t        k  t        dk        fdt        z
  t        z  t        z  df      k(  sJ t        t        t        z  t        t        t        t
              z  z   t
        t        t        f      t        t        t        z
  dz   t        z  t        z  t        z   t        t        t        k  t        t        k        ft        t        z
  dz   t        z  t        z  df      k(  sJ y 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            	      V   t        t        t        t        t        t
              z   z  t
        ddf      t        dt        z  t        z  t        z   t        dt        k  t        dk        fdt        z  t        z  df      k(  sJ t        t        t        t        t        t
              z   z  t
        ddf      t        t        t        z  t        z   t        t        d      ft        t        z  df      k(  sJ t        t        t        t        t        t
              z   z  t
        ddf      t        t        t        z  t        z   t        t        d      ft        t        z  df      k(  sJ t        t        t        t        t        t
              z   z  t
        ddf      t        t        t        z  t        z   t        t        d      ft        t        z  df      k(  sJ t        t        t        t        t        t
              z   z  t
        dt        f      t        t        t        z  t        z  t        z   t        dt        k  t        t        k        ft        t        z  t        z  df      k(  sJ t        t        t        t        t        t
              z   z  t
        t        df      t        dt        z
  t        z  t        z  t        z   t        t        t        k  t        dk        fdt        z
  t        z  t        z  df      k(  sJ t        t        t        t        t        t
              z   z  t
        t        t        f      t        t        t        z
  dz   t        z  t        z  t        z   t        t        t        k  t        t        k        ft        t        z
  dz   t        z  t        z  df      k(  sJ y 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            	         t        t        t        dt        t        t
              z  z   z  t
        ddf      t        dt        z  t        z  dt        z  z   t        dt        k  t        dk        fdt        z  t        z  df      k(  sJ t        t        t        dt        t        t
              z  z   z  t
        ddf      t        t        t        z  dt        z  z   t        t        d      ft        t        z  df      k(  sJ t        t        t        dt        t        t
              z  z   z  t
        ddf      t        t        t        z  dt        z  z   t        t        d      ft        t        z  df      k(  sJ t        t        t        dt        t        t
              z  z   z  t
        ddf      t        t        t        z  dt        z  z   t        t        d      ft        t        z  df      k(  sJ t        t        t        dt        t        t
              z  z   z  t
        dt        f      t        t        t        z  t        z  dt        z  z   t        dt        k  t        t        k        ft        t        z  t        z  df      k(  sJ t        t        t        dt        t        t
              z  z   z  t
        t        df      t        dt        z
  t        z  t        z  dt        z  z   t        t        t        k  t        dk        fdt        z
  t        z  t        z  df      k(  sJ t        t        t        dt        t        t
              z  z   z  t
        t        t        f      t        t        t        z
  dz   t        z  t        z  dt        z  z   t        t        t        k  t        t        k        ft        t        z
  dz   t        z  t        z  df      k(  sJ y )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            	         t        t        t        z   t        t        t        t
              z   z  t
        ddf      t        dt        t        z   z  t        z  t        z   t        z   t        dt        k  t        dk        fdt        t        z   z  t        z  df      k(  sJ t        t        t        z   t        t        t        t
              z   z  t
        ddf      t        t        t        z   t        z  t        z   t        z   t        t        d      ft        t        z   t        z  df      k(  sJ t        t        t        z   t        t        t        t
              z   z  t
        ddf      t        t        t        z   t        z  t        z   t        z   t        t        d      ft        t        z   t        z  df      k(  sJ t        t        t        z   t        t        t        t
              z   z  t
        ddf      t        t        t        z   t        z  t        z   t        z   t        t        d      ft        t        z   t        z  df      k(  sJ t        t        t        z   t        t        t        t
              z   z  t
        dt        f      t        t        t        t        z   z  t        z  t        z   t        z   t        dt        k  t        t        k        ft        t        t        z   z  t        z  df      k(  sJ t        t        t        z   t        t        t        t
              z   z  t
        t        df      t        dt        z
  t        t        z   z  t        z  t        z   t        z   t        t        t        k  t        dk        fdt        z
  t        t        z   z  t        z  df      k(  sJ t        t        t        z   t        t        t        t
              z   z  t
        t        t        f      t        t        t        z
  dz   t        t        z   z  t        z  t        z   t        z   t        t        t        k  t        t        k        ft        t        z
  dz   t        t        z   z  t        z  df      k(  sJ y 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                  F
   t        t        t        t        t              z   t
        t        t        t              z   z  t        ddf      t        t        t        t        t              t        z   t        dt        k  t        dk        fd      dt        t        t              t        z   z  t
        z  z         k(  sJ t        t        t        t        t              z   t
        t        t        t              z   z  t        ddf      t        t        t        t        t              t        z   t        t        d      fd      t        t        t              t        z   t
        z  z         k(  sJ t        t        t        t        t              z   t
        t        t        t              z   z  t        ddf      t        t        t        t        t              t        z   t        t        d      fd      t        t        t              t        z   t
        z  z         k(  sJ t        t        t        t        t              z   t
        t        t        t              z   z  t        ddf      t        t        t        t        t              t        z   t        t        d      fd      t        t        t              t        z   t
        z  z         k(  sJ t        t        t        t        t              z   t
        t        t        t              z   z  t        dt        f      t        t        t        t        t              t        z   t        dt        k  t        t        k        fd      t        t        t        t              t        z   z  t
        z  z         k(  sJ t        t        t        t        t              z   t
        t        t        t              z   z  t        t        df      t        t        t        t        t              t        z   t        t        t        k  t        dk        fd      dt        z
  t        t        t              t        z   z  t
        z  z         k(  sJ t        t        t        t        t              z   t
        t        t        t              z   z  t        t        t        f      t        t        t        t        t              t        z   t        t        t        k  t        t        k        fd      t        t        z
  dz   t        t        t              t        z   z  t
        z  z         k(  sJ y )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                  &    t        t        d        y )Nc                  p    t        t        t        t              t        t        t
              z   t              S )N)r   r   r   r   r   r&   r   r   r    <lambda>z$test_extract_delta.<locals>.<lambda>  s    ~bAhAq.A1Er   )r   
ValueErrorr   r   r    test_extract_deltark     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   rk   r   r   r    <module>rr      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   