#The first thing to do is to make the Toolbox available
import sys
#pretty printing
%load_ext sympy.interactive.ipythonprinting
sys.path.append('Source/Output')
from Toolbox import *
#Now we can load a result which will serve as an example. For that purpose use the load function of the Toolbox
RGEs,info = loadmodel('SM-BL.pickle')
info
#Print all the results available in the dictionary
RGEs.keys()
#Let's have a look at the lambda_1 coupling and we use the getoneloop function to get rid of the 4pi factors
Lambda1 = getoneloop(RGEs['\\lambda_1'])
Lambda1
#Let's declare symbols for each yukawas
yl = Symbol('Y_l',commutative=False)
ye= Symbol('Y_e',commutative=False)
yu= Symbol('Y_u',commutative=False)
yd= Symbol('Y_d',commutative=False)
yt=Symbol('yt',real=True)
#List of substitutions
Subs = ((yl,0),(yd,0),(yl,0),(ye,0),(yu,yt))
Lambda1 = Lambda1.subs(Subs)
Lambda1
#load the trace and MatMul classes
from RGEsmathModule import trace,MatM
#declare some wild cards for the mapping
p,q,r,s,t,u,v,w = map(Wild,['p','q','r','s','t','u','v','w'])
#Remove the 0 traces
Lambda1 =Lambda1.replace(trace(p,q),p*q).replace(trace(p,q,r,s),p*q*r*s)
Lambda1
#Now Let's try to obtain the beta function for the parameter lambda_1 - lambda_3 in the same approximation
#We first filter the rges for the lambda3 result
yh = Symbol('Y_H',real=True)
YH = Symbol('Y_H',commutative=False)
Lambda3=getoneloop(RGEs['\\lambda_3']).subs(Subs).replace(trace(p,q),p*q).replace(trace(p,q,r,s),p*q*r*s).subs(YH,yh)
Lambda3
#We can now do the difference
Diff = (Lambda3 - Lambda1).expand()
Diff
bYl = getoneloop(RGEs['Y_l'])
bYl
#If we want to match the object representing the Yukawa with indices i.e. outside of the traces we need to use functions
FYl = Function('Y_l')
#Let's get rid of the indices and translate Y_l into the Symbol Yl that we have introduced above
bYl = bYl.replace(FYl(p,q),yl)
bYl
#Now to be consistent we should remove the indices in the MatM function and also transforms all the Yukawa as scalars
bYl.replace(MatM((p,q,r),u,v),MatM((p,q,r)))