# Revision history [back]

For the above rational function f and for the integration on curves that could without doubt detect if a pole is enclosed the following alternative solution worked for me:

var( 'z0,z1,t0,t1,t' );
assume( 0 < t < 1 );

E = (z0*z1 - 1) * (z0 - z1) / ( (t*z0 - 1)*(t*z1 - 1)*(t - z0)*(t - z1)*z0 )
assume( 0<t<1 )

DEN = E.denominator()
E0  = sum( [ E.residue( z0==pole ) for pole, mult in DEN.roots( z0 ) if abs(pole) < 1 and mult==1 ] )
E1  = sum( [ E.residue( z1==pole ) for pole, mult in DEN.roots( z1 ) if abs(pole) < 1 and mult==1 ] )

DEN0 = E0.denominator()
DEN1 = E1.denominator()

E01  = sum( [ E0.residue( z1==pole ) for pole, mult in DEN0.roots( z1 ) if abs(pole) < 1 ] )
E10  = sum( [ E1.residue( z0==pole ) for pole, mult in DEN1.roots( z0 ) if abs(pole) < 1 ] )

print "E   = %s\n" % E
print "E0  = %s"   % E0.factor()
print "E01 = %s\n" % E01
print "E1  = %s"   % E1.factor()
print "E10 = %s\n" % E10


(One really needs a machine provable True in abs(pole) < 1. This may fail in more complicated cases to be correctly recognized.) Results printed:

E   = (z0*z1 - 1)*(z0 - z1)/((t*z0 - 1)*(t*z1 - 1)*(t - z0)*(t - z1)*z0)

E0  = -(2*t*z1 - z1^2 - 1)/((t*z1 - 1)*(t - z1)*(t + 1)*(t - 1))
E01 = 1/(t^2 - 1)

E1  = 1/((t + 1)*(t - 1)*z0)
E10 = 1/(t^2 - 1)


The Residue Theorem is now only needed to conclude.

Unfortunately, i could not convince sage to correctly compute the integrals:

f = (z0*z1 - 1) * (z0 - z1) / ( (t*z0 - 1)*(t*z1 - 1)*(t - z0)*(t - z1)*z0 )
g = f.subs( { z0: exp( i*t0 ) ,
z1: exp( i*t1 ) } )

I10 = g . integrate( t1, 0, 2*pi ) . integrate( t0, 0, 2*pi ) . factor()
I01 = g . integrate( t0, 0, 2*pi ) . integrate( t1, 0, 2*pi ) . factor()

print "I10 is", I10
print "I01 is", I01


Here we get at least in both cases the same false result:

sage: version()
'SageMath version 7.6, Release Date: 2017-03-25'

I10 is -4*pi^2/t^2
I01 is -4*pi^2/t^2