CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In

Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.

| Download

GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it

Views: 418346
/home/barakat/maple/lib/10/homalg.lib..........................................................................................................................................................................................................................:֝G����omalghomalgThomalgFhomalgShomalgZhomalgAhomalg/homalghomalg/forallringshomalg/compiledhomalg/versionhomalg/AddMathomalgA/inithomalg/AModuleForATwoExtensionFromCocyclehomalg/AModuleForATwoExtension.oldhomalg/AModuleForATwoExtensionhomalg/Annihilatorhomalg/AreEquivalentExtensionshomalg/BasisCoeffhomalg/BasisOfModulehomalg/BetterBasishomalg/BetterGeneratorshomalg/BetterPresentationhomalg/CheckCocomplexhomalg/CheckComplexhomalg/CheckCompositionhomalg/CheckHomhomalg/CheckHomsOfCoseqhomalg/CheckHomsOfSeqhomalg/CheckImSqhomalg/CheckKerSqhomalg/ChineseRemainderMaphomalg/CocycleOfExtension1homalg/CocycleOfExtensionhomalg/CodimOfModulehomalg/CofunctorOnSeqFhomalg/CofunctorOnSeqhomalg/CofunctorOnSeqsFM7R0
I(homalgS=6"%&falseGE\[l2%-RingNotationGf*F$F$6#%fnCopyright~(C)~2004~by~Mohame
d~Barakat.~All~rights~reserved.GF$C$30%3homalg/initializedG.%%trueG0-%,homalg/i
nitGF$""!-%4homalg/RingNotationG6#9"F$F$F$%'AddMatGf*F$F$6#%[oCopyright~(C)~200
4-2005~by~Mohamed~Barakat.~All~rights~reserved.GF$C$F,-%.homalg/AddMatGF7F$F$F$
%(ComposeGf*F$F$F;F$C$F,-%/homalg/ComposeGF7F$F$F$%*GlobalDimGf*F$F$6%F*%'syste
mG%)rememberGF$C$F,-%1homalg/GlobalDimGF7F$F$F$%'SubMatGf*F$F$F)F$C$F,-%.homalg
/SubMatGF7F$F$F$%-KroneckerMatGf*F$F$6#%fnCopyright~(C)~2003~by~Mohamed~Barakat
.~All~rights~reserved.GF$C$F,-%4homalg/KroneckerMatGF7F$F$F$%1PresentationInfoG
f*F$F$F)F$C$F,-%8homalg/PresentationInfoGF7F$F$F$%'ReduceGf*F$F$6%F<FHFIF$C$F,-
%.homalg/ReduceGF7F$F$F$%+InvolutionGf*F$F$6#%jnCopyright~(C)~2004-2005~by~Dani
el~Robertz.~All~rights~reserved.GF$C$F,-%2homalg/InvolutionGF7F$F$F$%1ResidueCl
assRingGf*F$F$6%%[oCopyright~(C)~2004-2006~by~Mohamed~Barakat.~All~rights~reser
ved.GFHFIF$C$F,-%8homalg/ResidueClassRingGF7F$F$F$%.BasisOfModuleGf*F$F$FjnF$C$
F,-%5homalg/BasisOfModuleGF7F$F$F$%3ReduceRingElementsGf*F$F$FgoF$C$F,-%:homalg
/ReduceRingElementsGF7F$F$F$%(DiagMatGf*F$F$6%%[oCopyright~(C)~2003-2005~by~Moh
amed~Barakat.~All~rights~reserved.GFHFIF$C$F,-%/homalg/DiagMatGF7F$F$F$%/Normal
izeInputGf*F$F$FGF$C$F,-%6homalg/NormalizeInputGF7F$F$F$%.NormalizeRingGf*F$F$6
%%enCopyright~(C)~2004~by~Daniel~Robertz.~All~rights~reserved.GFHFIF$C$F,-%5hom
alg/NormalizeRingGF7F$F$F$%'MulMatGf*F$F$F;F$C$F,-%.homalg/MulMatGF7F$F$F$%3Syz
ygiesGeneratorsGf*F$F$FGF$C$F,-%:homalg/SyzygiesGeneratorsGF7F$F$F$F$,
Q*homalgS.mF$
M7R0
I2homalg/CheckKerSqf*6+%"AG%'alpha2G%#_AG%%_phiG%"BG%'_beta2G%#_BG'%$varG%%list
G%,RingPackageG6)%#RPG%$narG%$phiG%*apply_phiG%&beta2G%(kphiCb2G%$ka2G6#%[oCopy
right~(C)~2003-2004~by~Mohamed~Barakat.~All~rights~reserved.G6"C*>8$-%1homalg/t
ablenameG6%9!&9"6#!""8%@$-%%typeG6$F=%*procedureG-%'RETURNG6#-F=6#&FC6#;""",&FE
FTFFFE@%-FI6$9'FK>8'FYC$>8&-%6homalg/NormalizeInputG6$FYF=>Fenf*6#%"aGF:6$%)ope
ratorG%&arrowGF:-%/homalg/ComposeG6&T#9$T&T'F:F:6(F3FhnF-9+F1F=>8(-Fjn6$9)F=>8)
-%4homalg/SumRelationsG6&-%1homalg/KernelEmbG6'Fgo-Fen6#F]p9*F[pF=FgoF[pF=>8*-F
gp6'Fgo9%9&F[pF=>F]q-%(convertG6$F]q%)listlistG-%.homalg/ReduceG6&F]qFbpF[pF=F:
F:F:F:,
Q4homalg/CheckKerSq.mF:
M7R0
I9homalg/CohomologyModulesf*6%'%*cocomplexG<$%&tableG%%listG'%$varGF)%,RingPack
ageG6*%#RPG%$narG%&firstG%#aiG%"lG%%stepG%$haiG%"jG6#%fnCopyright~(C)~2004~by~M
ohamed~Barakat.~All~rights~reserved.G6"C+>8$-%1homalg/tablenameG6%9!&9"6#!""8%@
$-%%typeG6$F;%*procedureG-%'RETURNG6#-F;6#&FA6#;""",&FCFRFDFC@$/9$7"-FK6#FW@%-F
G6$FVF)>8'7#-%"$G6#;FR-%%nopsG6#FV>Fhn-%%sortG6#-%$mapG6$%$lhsG-%#opG6#-%%evalG
F`o>8(-F_o6#Fhn>8&&FV6#&Fhn6#FR@%-FG6$Fcp%4homalg_presentationG>8)""#-FK6#-%:ho
malg/CohomologyModulesFG6#FA>8*7#-F[o6#;FR,&-%%iquoG6$F_pF]qFRFCFR-Ffo6$f*6#%"i
GF86$%)operatorG%&arrowGF8-%4homalg/DefectOfHomsG6%-%$seqG6$&T$6#&T%6#,&*&T'FRF
VFRFRT)FR/Fes;""!,&FdsF^qFCFRT,T-F8F86.F&FVF1FhnF3F]qF58+F+9%F.F;FeqF8F8F8F8,
Q;homalg/CohomologyModules.mF8
M7R0
I5homalg/ConnectingHomf*6*'%%_HqnG%4homalg_presentationG%#jnG%#bnG%$bsnG%%in_1G
'%'_Hsn_1GF''%$varG%%listG%,RingPackageG6.%#RPG%$narG%%optsG%$HqnG%&Hsn_1G%*Hsn
_1_epiG%%ZN_1G%&ZSN_1G%(Cqn_BqnG%&Cn_BnG%%Zn_1G%&Zsn_1G6#%[oCopyright~(C)~2004-
2005~by~Mohamed~Barakat.~All~rights~reserved.G6"C/>8$-%1homalg/tablenameG6%9!&9
"6#!""8%@$-%%typeG6$FD%*procedureG-%'RETURNG6#-FD6#&FJ6#;""",&FLFenFMFL@$2,&""(
FenFMFen9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&FJ6#;"")FfnFD@%-%)assignedG6#&F]
o6#Q3Hqn_embedding_infoFA>8'F\p>F`p-%;homalg/EmbedInFactorModuleG6$9$FD@%-Fjo6#
&F]o6#Q5Hsn_1_embedding_infoFA>8(Fip>F]q-Fcp6$9)FD@$-Fjo6#&F]o6#Q*Hsn_1_epiFA>8
)Feq@%-Fjo6#&F]o6#Q%Zn_1FA>8*F]r>Far%%NULLG@%-Fjo6#&F]o6#Q&Zsn_1FA>8+-%4homalg/
SumRelationsG6&Fgr9'9*FD>F[sF_s@%-Fjo6#&F]o6#Q(Cqn_BqnFA>8,Fes>FisFcr>8--%0homa
lg/PreimageG6'F`p9%FisF`sFD>8.-%9homalg/ImageOfSubmoduleFG6&F\t9&F`sFD>8/-F^t6'
Fbt9(FarF`sFD@%Fcq-%3homalg/ComposeMapsG6'FhtFiqFaqF`sFD-%:homalg/ReduceHomomor
phismG6&-F^t6'FhtF]qF[sF`sFDFaqF`sFDFAFAFAFA,
Q7homalg/ConnectingHom.mFA
M7R0
I5homalg/Functor_Ext_Rf*6#%"qG6"6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All
~rights~reserved.G%'systemG%)rememberGF&7$f*6#%"MGF&F&F&-%-homalg/Ext_RG6%T$9$&
9"6#;""#!""F&F&6$F%F3f*6%F.%$phiG%"NGF&F&F&-%0homalg/ExtMap_RG6'F2F39%9&&F56#;"
"%F9F&F&F:F&F&F&F&,
Q7homalg/Functor_Ext_R.mF&
M7R0
I6homalg/FunctorOnSeqsFf*6&%)_functorG'%&alphaG<$%&tableG%%listG%%_varG%,RingPa
ckageG6-%#RPG%$narG%(functorG%$varG%#aiG%"mG%"jG%$seqG%$tblG%"rG%"iG6%%fnCopyri
ght~(C)~2005~by~Mohamed~Barakat.~All~rights~reserved.G%'systemG%)rememberG6"C->
8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F@%*procedureG-%'RETURNG6#-F@6#
&FF6#;""",&FHFWFIFH@%-FL6$9$F*@%2""!-%%nopsG6#Ffn>8&&Ffn6#FW-%&ERRORG6#%enThe~f
irst~argument~providing~the~functor~is~an~empty~list!G>F^oFfn>8'&FF6#FX>8(-F)F=
@%-FL6$9%F*>&F[pF`o7#-%"$G6#;FW-F[o6#F`p>Fbp-%%sortG6#-%$mapG6$%$lhsG-%#opG6#-%
%evalGFip>8)-F[o6#Fbp?&8*7#-Fep6#;""#,(9#FW!"#FWFIFH%%trueGC$@%-FL6$&FF6#,&FWFW
F\rFWF*>&F[p6#F\r7#-Fep6#;FW-F[o6#Fjr>F^s-F\q6#-F_q6$Faq-Fcq6#-FfqFes@%/-%%irem
G6$F\rFarFW@$0Fhq-F[o6#F^s-Fbo6%%BThe~first~and~the~argument~numberGF\r%Chave~d
ifferent~numbers~of~entries!G@$0,&FhqFWFWFWFet-Fbo6%%4The~argument~numberGF\r%R
must~have~one~entry~more~than~the~first~argument!G>8+F\p?&F\r7#-Fep6#;FWFbrFerC
&>8,F\p>8-F`t?&8.7#-Fep6#;FW,(FhqFWFWFWF]vFHFer>&F[v6#,&&F^s6#F_vFWF]vFH-F^o6%-
%%copyG6#&Fjr6#FivFgoF@>&FcuF_s-F^w6#F[v-Fcq6#-F_q6$F^w-F_q6$f*6#%"aGF=6$%)oper
atorG%&arrowGF=&T#F\oF=F=6$F5FcuFeuF=F=F=F=,
Q8homalg/FunctorOnSeqsF.mF=
M7R0
I5homalg/FunctorOnSeqsf*6&%(functorG'%&alphaG<$%&tableG%%listG%%_varG%,RingPack
ageG6.%#RPG%$narG%$varG%#aiG%"mG%"jG%"kG%%seqsG%$resG%0functor_on_mapsG%$tblG%"
iG6%%fnCopyright~(C)~2005~by~Mohamed~Barakat.~All~rights~reserved.G%'systemG%)r
ememberG6"C0>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$FA%*procedureG-%'R
ETURNG6#-FA6#&FG6#;""",&FIFXFJFI@$29#,&""%FXFJFX-FQ6#-%5homalg/FunctorOnSeqFG6$
&9$6#;""$FI&FG6#;""#FI>8&&FG6#FY>8'-F)F>@%-FM6$9%F*>&F\p6#FX7#-%"$G6#;FX-%%nops
G6#Fap>Fcp-%%sortG6#-%$mapG6$%$lhsG-%#opG6#-%%evalGF\q>8(-F[q6#Fcp?&8)7#-Fgp6#;
Ffo,(FfnFX!"#FXFJFI%%trueGC%@%-FM6$&FG6#,&F_rFXFXFXF*>&F\p6#F_r7#-Fgp6#;FX-F[q6
#F[s>F_s-F_q6#-Fbq6$Fdq-Ffq6#-FiqFfs@$3/F_rFfo4-FM6$-%%copyG6#&&FG6#Fbo6#&&F\p6
#FfoFdp%4homalg_presentationG-FQ6#-%6homalg/FunctorOnSeqsFGF]o@%/-%%iremG6$F_rF
boFX@$0F[r-F[q6#F_s-%&ERRORG6%%BThe~first~and~the~argument~numberGF_r%Chave~dif
ferent~numbers~of~entries!G@$0,&F[rFXFXFXF[v-F^v6%%4The~argument~numberGF_r%Rmu
st~have~one~entry~more~than~the~first~argument!G@$0-Fgu6$FdrFboFfo-F^v6#%jnThe~
number~of~input~tables/lists~should~be~congruent~to~2~mod~3G>8+F]p?&8*7#-Fgp6#;
""!-%%iquoGF\wFfrC%>8,-%4homalg/FunctorOnSeqG6'F_o-Fft6#&FG6#,&FfoFXFcwFbo-Fft6
#&FG6#,&FboFXFcwFboFhoFA>&Faw6#,&FcwFboFXFX-Fft6#&F]xFdp>&FawFdx-Fft6#&F]xF^u>8
-&F_oF^u?&Fcw7#-Fgp6#;FXFiwFfrC%>8.F]p?&8/7#-Fgp6#;FXFdvFfr>&Faz6#&&F\p6#,$FcwF
bo6#Fcz-Fhy6'-Fft6#&&FGF][l6#&&F\p6#,&FcwFboFIFXF_[l-Fft6#&&FGF]yFjz-Fft6#&Fhx6
#&&F\pFdxF_[lFhoFA>&FawF][l-Fft6#Faz-Ffq6#-Fbq6$Fft-Fbq6$f*6#%"aGF>6$%)operator
G%&arrowGF>&T#6#F_oF>F>6$F5Faw7#-Fgp6#;FXFdrF>F>F>F>,
Q7homalg/FunctorOnSeqs.mF>
M7R0
I-homalg/Hom_Rf*6%%#_MG'%$varG%%listG%,RingPackageG6+%#RPG%$narG%%optsG%4readju
st_generatorsG%)optionalG%"MG%"TG%$kerG%$embG6%%[oCopyright~(C)~2003-2007~by~Mo
hamed~Barakat.~All~rights~reserved.G%'systemG%)rememberG6"C->8$-%1homalg/tablen
ameG6%9!&9"6#!""8%@$-%%typeG6$F;%*procedureG-%'RETURNG6#-F;6#&FA6#;""",&FCFRFDF
C@$-FG6$&FA6#FR%'stringGC$@(/FWQ;RETURN_morphism_on_objectsF8-FK6#f*6#%$phiGF86
$%)operatorG%&arrowGF8-%2homalg/InvolutionG6%9$T$T%F8F86&F'9%F+F;/FWQCRETURN_pr
oc_to_readjust_generatorsF8-FK6#f*6#%"aGF8F]oF8-Fao6%7#FcoFdoFeoF8F8Ffo/FWQ1RET
URN_co_contraF8-FK6#Q.contravariantF8-FK6#%%NULLG@$2,&""#FRFDFR9#>8&-%%copyG6#-
%2homalg/GetOptionsG6$&FA6#;""$FSF;@$4-%)assignedG6#&F`q6#Q<pos_of_NORMALIZE_GE
NERATORSF8>8'f*F]pF8F]oF8F_pF8F8Ffo>8(Fgq>8)-%6homalg/NormalizeInputG6$FcoF;>8*
-Fao6%FirFgoF;>8+-%/homalg/KernelFG6%F^sFgoF;@$-F^r6#&F`q6#QCvar_to_assign_embe
dding_generatorsF8C$>8,-%@homalg/GeneratorsOfPresentationG6$FbsF;-%'assignG6$Fi
sF^t@%-F^r6#Fdr-%9homalg/ConvertGeneratorsG6&FbsFdrFgrF;FbsF8F8F8F8,
Q/homalg/Hom_R.mF8
M7R0
I3homalg/IdentityMapf*6%%"MG'%$varG%%listG%,RingPackageG6$%#RPG%$narG6#%fnCopyr
ight~(C)~2005~by~Mohamed~Barakat.~All~rights~reserved.G6"C%>8$-%1homalg/tablena
meG6%9!&9"6#!""8%@$-%%typeG6$F2%*procedureG-%'RETURNG6#-F26#&F86#;""",&F:FIF;F:
-&F26#%'matrixG6#-%7homalg/StdBasisVectorsG6$9$F2F/F/F/F/,
Q5homalg/IdentityMap.mF/
M7R0
I0homalg/ImageEpif*6&%"AG%"NG%$varG%,RingPackageG6)%#RPG%$narG%%optsG%)optional
G%#imG%5image_embedding_infoG%$epiG6%%fnCopyright~(C)~2007~by~Mohamed~Barakat.~
All~rights~reserved.G%'systemG%)rememberG6"C,>8$-%1homalg/tablenameG6%9!&9"6#!"
"8%@$-%%typeG6$F8%*procedureG-%'RETURNG6#-F86#&F>6#;""",&F@FOFAF@@%2,&""#FOFAFO
9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&F>6#;""$FPF8>&FW6#Q2number_of_optionsF5"
"!@$2,&FUFOF]oF@,&F[oFOFAFO-FH6#-%1homalg/ImageFEpiG6#F>>8'&F>6#;""%FP>8(-%-hom
alg/ImageG6(9$9%9&/Q=var_to_assign_embedding_infoF5.8)F[pF8/Q5image_embedding_i
nfoF5-FY6#F[q@$-%)assignedG6#&FW6#Q@var_to_assign_functor_on_objectF5-%'assignG
6$FdqFap>8*-%3homalg/RightDivideG6'FepF[qFfpFgpF8-%:homalg/ReduceHomomorphismG6
&F[rFapFgpF8F5F5F5F5,
Q2homalg/ImageEpi.mF5
M7R0
I1homalg/ImageFEmbf*6%%#_AG'%$varG%%listG%,RingPackageG6)%#RPG%$narG%%optsG%)op
tionalG%"AG%#imG%5image_embedding_infoG6%%fnCopyright~(C)~2007~by~Mohamed~Barak
at.~All~rights~reserved.G%'systemG%)rememberG6"C*>8$-%1homalg/tablenameG6%9!&9"
6#!""8%@$-%%typeG6$F9%*procedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA@$2,&""#FP
FBFP9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&F?6#;""$FQF9>8'Fin>8(-%6homalg/Norma
lizeInputG6$9$F9>8)-%.homalg/ImageFG6'F`o9%/Q=var_to_assign_embedding_infoF6.8*
F^oF9@$-%)assignedG6#&FX6#Q@var_to_assign_functor_on_objectF6-%'assignG6$FcpFfo
-FZ6#F^pF6F6F6F6,
Q3homalg/ImageFEmb.mF6
M7R0
I1homalg/IsZeroMapf*6&%#_AG%#_NG%$varG%,RingPackageG6(%#RPG%$narG%%optsG%"AG%"N
G%$redG6%%[oCopyright~(C)~2004-2007~by~Mohamed~Barakat.~All~rights~reserved.G%'
systemG%)rememberG6"C+>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F7%*proc
edureG-%'RETURNG6#-F76#&F=6#;""",&F?FNF@F?@%2,&""#FNF@FN9#>8&-%%copyG6#-%2homal
g/GetOptionsG6$&F=6#;""$FOF7>&FV6#Q2number_of_optionsF4""!@$2,&FTFNF\oF?,&FjnFN
F@FN-FG6#-%2homalg/IsZeroMapFG6#F=>8'-%6homalg/NormalizeInputG6$9$F7>8(-F\p6%9%
9&F7>F`p-%5homalg/BasisOfModuleG6%F`pFdpF7>8)-%.homalg/ReduceG6&FjoF`pFdpF7@'/-
%3homalg/BetterBasisG6&FjpFdpQ3ALLOW_EMPTY_OUTPUTF4F77"%%trueG-%)assignedG6#&FV
6#Q/pos_of_VERBOSEF4Fjp%&falseGF4F4F4F4,
Q3homalg/IsZeroMap.mF4
M7R0
I3homalg/LastNonZerof*6#'%"LG%%listG6'%#RPG%$narG%"lG%"zG%"iG6#%fnCopyright~(C)
~2004~by~Mohamed~Barakat.~All~rights~reserved.G6"C(>8$-%1homalg/tablenameG6%9!&
9"6#!""8%@$-%%typeG6$F3%*procedureG-%'RETURNG6#-F36#&F96#;""",&F;FJF<F;@%32,&FJ
FJF<FJ9#-F?6$&F96#""#%'posintG>8&FS>FX-%%nopsG6#9$>8'-&F36#%%ZeroGF0?&8(7#-%"$G
6#;FJFX%%trueG@$0&Fgn6#,$F_oF;Fin-FC6#,(FXFJFJFJF_oF;""!F0F0F0F0,
Q5homalg/LastNonZero.mF0
M7R0
I=homalg/NatIsoKerOfSqToImOfSqf*6-%'alpha1G%"AG%'alpha2G%#_AG%$phiG%&beta1G%"BG
%&beta2G%#_BG'%$varG%%listG%,RingPackageG6'%#RPG%$narG%&KerSqG%%ImSqG%(ia1CphiG
6#%[oCopyright~(C)~2003-2004~by~Mohamed~Barakat.~All~rights~reserved.G6"C%>8$-%
1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F=%*procedureG-%'RETURNG6#-F=6#&FC6
#;""",&FEFTFFFE-%.homalg/LambekG6#FCF:F:F:F:,
Q?homalg/NatIsoKerOfSqToImOfSq.mF:
M7R0
IAhomalg/NatTrTorsionSubmoduleToIdf*6%%"MG%$varG%,RingPackageG6$%#RPG%$narG6%%[
oCopyright~(C)~2003-2004~by~Mohamed~Barakat.~All~rights~reserved.G%'systemG%)re
memberG6"C%>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F2%*procedureG-%'RE
TURNG6#-F26#&F86#;""",&F:FIF;F:-%;homalg/TorsionSubmoduleEmbG6#F8F/F/F/F/,
QChomalg/NatTrTorsionSubmoduleToId.mF/
M7R0
I7homalg/OriginalElementf*6&%#_BG'%"LG<$%%listG%4homalg_presentationG%$varG%,Ri
ngPackageG6*%#RPG%$narG%"AG%"mG%/SINGLE_ELEMENTG%"BG%.convert_procsG%$elmG6#%fn
Copyright~(C)~2007~by~Mohamed~Barakat.~All~rights~reserved.G6"C/>8$-%1homalg/ta
blenameG6%9!&9"6#!""8%@$-%%typeG6$F;%*procedureG-%'RETURNG6#-F;6#&FA6#;""",&FCF
RFDFC@%-FG6$9%F*>8&-%@homalg/GeneratorsOfPresentationG6$FWF;>FYFW>8'-%%nopsG6#F
Y>8(%&falseG@'4-FG6$9$<$F)&F;6#%+matrixtypeG@%/FinFR>8)7#7#Fdo-%&ERRORG6#%apThe
~second~argument~has~more~the~one~'row'~while~the~first~argument~is~a~ring~elem
ent!G34-FG6$Fdo<$%)listlistGFfo-FG6$FdoF)@%Fjo>F\p-%$mapG6$f*6#%"aGF86$%)operat
orG%&arrowGF8F^pF8F8F8FdoC$>F^o%%trueG>F\pF^p>F\p-%6homalg/NormalizeInputG6$Fdo
F;@$FUC$>F\p-%.homalg/ReduceG6&F\p-F\rFfn9&F;>F\p-F\r6$F\pF;>8*-%6homalg/GetCon
vertInfoG6%FYFerF;>8+-%9homalg/ConvertGeneratorsG6%FY&Fjr6#Q5normalize_generato
rsF8F;>F_s-F\r6$-%/homalg/ComposeG6&F\pF_sFerF;F;>F_s-Fas6%F_s&Fjr6#Q4readjust_
generatorsF8F;@$-FG6$F_sFfo>F_s-%(convertG6$F_sFhp@%F^o&F_s6#FRF_sF8F8F8F8,
Q9homalg/OriginalElement.mF8
M7R0
I3homalg/RankOfGaussf*6#%#_MG6(%#RPG%$narG%"MG%#nrG%"zG%"rG6#%fnCopyright~(C)~2
004~by~Mohamed~Barakat.~All~rights~reserved.G6"C)>8$-%1homalg/tablenameG6%9!&9"
6#!""8%@$-%%typeG6$F2%*procedureG-%'RETURNG6#-F26#&F86#;""",&F:FIF;F:>8&-%6homa
lg/NormalizeInputG6$9$F2>8'-&F26#%-NumberOfRowsG6#FL>8(-&F26#%%ZeroG6#-&F26#%3N
umberOfGeneratorsGFW?&8)7#-%"$G6#;FIFR%%trueG@$/&FL6#F^oFY-FB6#,&F^oFIF:FIFRF/F
/F/F/,
Q5homalg/RankOfGauss.mF/
M7R0
I<homalg/ReducedBasisOfModulef*6%%#_MG'%$varG%%listG%,RingPackageG64%#RPG%$narG
%%optsG%.COMPUTE_BASISG%0RETURN_SYZYGIESG%2ALLOW_EMPTY_BASISG%1NO_RING_NOTATION
G%)ring_relG%"MG%"mG%"nG%(col_posG%(row_posG%(entriesG%(red_entG%%zeroG%"SG%)un
it_posG6%%[oCopyright~(C)~2006-2007~by~Mohamed~Barakat.~All~rights~reserved.G%'
systemG%)rememberG6"C3>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$FD%*proc
edureG-%'RETURNG6#-FD6#&FJ6#;""",&FLFenFMFL@$2,&""#FenFMFen9#>8&-%%copyG6#-%2ho
malg/GetOptionsG6$&FJ6#;""$FfnFD@%-%)assignedG6#&F]o6#Q5pos_of_COMPUTE_BASISFA>
8'%%trueG>F`p%&falseG@%-Fjo6#&F]o6#Q7pos_of_RETURN_SYZYGIESFA>8(Fap>F[qFcp@%-Fj
o6#&F]o6#Q9pos_of_ALLOW_EMPTY_BASISFA>8)Fap>FdqFcp@%-Fjo6#&F]o6#Q8pos_of_NO_RIN
G_NOTATIONFA>8*Fap>F]rFcp>8+&-%5homalg/NormalizeRingG6$9%FD6#Fjn@%F`pC$>8,-%5ho
malg/BasisOfModuleG6%9$FerFD>Fjr-%6homalg/NormalizeInputG6%FjrFerFD>Fjr-Fas6$F^
sFD>8--&FD6#%3NumberOfGeneratorsG6#Fjr>8.-&FD6#%-NumberOfRowsGF\t@$0F`r7"C%>8/-
%$mapG6%%5homalg/SingleNonZeroGFjrFD>80-Fjt6$f*6#%"aGFA6$%)operatorG%&arrowGFA@
$0&T#6#F^s""!F^sFAFA6$F6Fht7#-%"$G6#;FenF^t@$0F^uFetC'>81-Fjt6$f*FbuFAFduFA&Fiu
6#&T%F[vFAFA6&F3FjrF6FhtF^u>82&-%:homalg/ReduceRingElementsG6%7#FgvFerFD6#Fen>8
3-&FD6#%%ZeroGFA>F^u-Fjt6$f*FbuFAFduFA@$/F]wFju&T'F[vFAFA6(F:FiwF9FawF7F^u7#-F`
v6#;Fen-%%nopsG6#F^u@&/F^uF^v@%Fdq@%F[q-FT6$FetFet-FT6#FetC$@%F]r>Fjr7#-F[x6#Fg
s>Fjr-%4homalg/RingNotationG6$FiyFD@%F[q-FT6$-%:homalg/SyzygiesGeneratorsG6&Fjr
FetFerFDFjr-FTF\tFdv>Fjr-%'subsopG6$-%#opG6#-Fjt6$f*FbuFAFduFA/F^s%%NULLGFAFAFA
F^uFjr@$3/FgsFen-Fjo6#&FD6#%4MinimalBasisOfIdealGC$>Fjr-Fh[l6$FjrFer>Fjr-Fas6$F
jrFD>84Fcz@$0Fc\lFetC&>85-%Chomalg/GetIndependentUnitPositionsG6&Fc\lFetFerFD>F
h\l-Fjt6$f*FbuFAFduFA&F^sFfrFAFAFAFh\l>F^tF_t@$/-%(convertG6$Fh\l%$setG<#F_v@%F
dq@%F[qFbyFdyC$@%F]r>FjrFiy>FjrF]z@%F[qFazFfz?(FAFenFenFA3Fe\l0Fh\lFetC%>Fjr-Fi
z6$-F\[l6#-Fjt6$f*FbuFAFduFAFa[lFAFAFAFh\lFjr>Fc\lFcz@$Fe\lC&>Fh\lFi\l>Fh\l-Fjt
6$f*FbuFAFduFAF`]lFAFAFAFh\l>F^tF_t@$/Fh\lF^v@%Fdq@%F[qFbyFdyC$@%F]r>FjrFiy>Fjr
F]z@%F[qFazFfz@%F]r@%F[q6$Fc\lFjrFjr@%F[q6$Fc\l-F^zFa\lFc`lFAFAFAFA,
Q>homalg/ReducedBasisOfModule.mFA
M7R0
I.homalg/ResDimf*6$'%$resG%%listG%,RingPackageG6$%#RPG%$narG6#%[oCopyright~(C)~
2003-2004~by~Mohamed~Barakat.~All~rights~reserved.G6"C%>8$-%1homalg/tablenameG6
%9!&9"6#!""8%@$-%%typeG6$F1%*procedureG-%'RETURNG6#-F16#&F76#;""",&F9FHF:F97$-%
#opG6#-%$mapG6$&F16#%-NumberOfRowsG9$-&F16#%3NumberOfGeneratorsG6#&FTF8F.F.F.F.,
Q0homalg/ResDim.mF.
M7R0
I1homalg/TorOnSeqsf*6'%"qG%"LG'%&alphaG<$%&tableG%%listG%%_varG%,RingPackageG6%
%#RPG%$narG%(functorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All~rights~res
erved.G%'systemG%)rememberG6"C&>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6
$F9%*procedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA>8&-%3homalg/Functor_TorG6$9
$9%-%5homalg/FunctorOnSeqsG6$FS&F?6#;""$FAF6F6F6F6,
Q3homalg/TorOnSeqs.mF6
M7R0
I/homalg/ZeroMapf*6&%#_MG%#_NG'%$varG%%listG%,RingPackageG6)%#RPG%$narG%"MG%"NG
%"mG%"nG%%zeroG6#%[oCopyright~(C)~2004-2005~by~Mohamed~Barakat.~All~rights~rese
rved.G6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F8%*procedureG-%'RET
URNG6#-F86#&F>6#;""",&F@FOFAF@@%-FD6$9$%(integerGC$>8(FT>8)9%C&>8&-%6homalg/Nor
malizeInputG6$FTF8>8'-Fjn6$FenF8>FX-&F86#%3NumberOfGeneratorsG6#Fhn>FZ-Fbo6#F]o
@%2,&""$FOFAFO9#>8*&F>6#""%>F_p-&F86#%%ZeroGF5-&F86#%'matrixG6#7#-%"$G6$7#-F_q6
$F_pFZFXF5F5F5F5,
Q1homalg/ZeroMap.mF5
M7R0
I8homalg/AreEqualMatricesf*6&%"AG%"BG'%$varG%%listG%,RingPackageG6$%#RPG%$narG6
%%fnCopyright~(C)~2008~by~Mohamed~Barakat.~All~rights~reserved.G%'systemG%)reme
mberG6"C%>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F5%*procedureG-%'RETU
RNG6#-F56#&F;6#;""",&F=FLF>F=-%2homalg/IsZeroMapFG6%-%.homalg/SubMatG6&9$9%9&F5
FVF5F2F2F2F2,
Q:homalg/AreEqualMatrices.mF2
M7R0
IChomalg/AModuleForATwoExtension.oldf*6&%*_ext_homsG%-_ext_modulesG%%_varG%,Rin
gPackageG64%#RPG%$narG%%optsG%$varG%$extG%)ext_homsG%,ext_modulesG%"FG%&etaMNG%
&etaNLG%"MG%"NG%"LG%"DG%"AG%"BG%"CG%&etaMLG6#%enCopyright~(C)~2007~by~Barbara~B
remer.~All~rights~reserved.G6"C2>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG
6$FA%*procedureG-%'RETURNG6#-FA6#&FG6#;""",&FIFXFJFI@%-FM6$&FG6#FY%%listG>8'Fgn
-%&ERRORG6#%-Wrong~input!G@%2,&""$FXFJFX9#C%>8(-%:homalg/NormalizeExtensionG6$&
FG6#;FX,&!"#FXFJFIF[o>8)-%%copyG6#&Fgo6#FX>8*-Fcp6#&Fgo6#""#C$>Fap-Fcp6#9$>Fhp-
Fcp6#9%>8+-%:homalg/FactorizeExtensionG6&FapFhpF[oFA>8,-%6homalg/NormalizeInput
G6$-%:homalg/CocycleOfExtensionG6%-%#opG6#&FhqF\qF[oFAFA>8--F_r6$-Fbr6%-Fer6#&F
hqFfpF[oFAFA>80-F_r6$&-%:homalg/ResolutionOfModuleG6&&F`sFfpF[o/Q)TRUNCATEF>""!
FAFfpFA>8/-F_r6$&-Fgs6&&FgrFfpF[oFjsFAFfpFA>8.-F_r6$&-Fgs6&&Fgr6#""&F[oFjsFAFfp
FA>81-Fcp6#&-%4homalg/SyzygiesDataG6&F]qFftF[oFAF\q>82-&FA6#%,UnionOfRowsG6$F^t
-%/homalg/ZeroMapG6&-%2homalg/FreeModuleG6%,(-&FA6#%-NumberOfRowsG6#FirFX-Ffv6#
FbsFX-Ffv6#F^tFIF[oFA-Fbv6%-&FA6#%3NumberOfGeneratorsGF]wF[oFAF[oFA>83-%/homalg
/ComposeG6&F`uF]rF[oFA>84-Fju6$FirFbs>85-%Chomalg/SolveSystemWithConstraintsCG6
(FhuFewFjwF`uF[oFA@%/F^x%%FAILGFdx-%:homalg/ReduceHomomorphismG6&F^xFbsF[oFAF>F
>F>F>,
QEhomalg/AModuleForATwoExtension.old.mF>
M7R0
I3homalg/BetterBasisf*6%%#_MG%$varG%,RingPackageG60%#RPG%$narG%%optsG%2ALLOW_EM
PTY_BASISG%)ring_relG%"MG%"mG%"nG%"zG%(col_posG%(row_posG%(entriesG%(red_entG%%
zeroG6#%[oCopyright~(C)~2004-2007~by~Mohamed~Barakat.~All~rights~reserved.G6"C1
>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F<%*procedureG-%'RETURNG6#-F<6
#&FB6#;""",&FDFSFEFD@$2,&""#FSFEFS9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&FB6#;"
"$FTF<@%5-%)assignedG6#&Fen6#Q9pos_of_ALLOW_EMPTY_BASISF9-Fco6#&Fen6#Q:pos_of_A
LLOW_EMPTY_OUTPUTF9>8'%%trueG>F^p%&falseG>8(&-%5homalg/NormalizeRingG6$9%F<6#FX
>8)-%6homalg/NormalizeInputG6$9$F<>8*-&F<6#%3NumberOfGeneratorsG6#F[q>8+-&F<6#%
-NumberOfRowsGFfq@$/F[q7"-FL6#F_r@$-Fco6#&F<6#%.SimplifyBasisG>F[q-Fer6$F[qFhp>
8,-&F<6#%%ZeroG6#Faq>F[q-%$mapG6$f*6#%"aGF96$%)operatorG%&arrowGF9@$0-Fds6%&T#6
#%)simplifyGF_qT&T'F_qF9F96(F)F<F&FhpF1F\sF[q@$F^r@%F^pF`r-FL6#7#F\s@$0FcpF_rC&
>FhqFiq>8--Fds6%%5homalg/SingleNonZeroGF[qF<>8.-Fds6$f*FgsF9FisF9@$0&Fat6#F_q""
!F_qF9F96$F2Fau7#-%"$G6#;FSFhq@$0FfuF_rC'>8/-Fds6$f*FgsF9FisF9&F\v6#&T%F]vF9F96
&F.F[qF2FauFfu>80&-%:homalg/ReduceRingElementsG6%7#FivFhpF<6#FS>81-F^sF9>Ffu-Fd
s6$f*FgsF9FisF9@$/F_wFat&FetF]vF9F96(F6F[xF5FcwF3Ffu7#-Fbv6#;FS-%%nopsG6#Ffu@&/
FfuF`v@%F^pF`r-FL6#7#F]sFfv>F[q-%'subsopG6$-%#opG6#-Fds6$f*FgsF9FisF9/F_q%%NULL
GF9F9F9FfuF[qF[qF9F9F9F9,
Q5homalg/BetterBasis.mF9
M7R0
I8homalg/CheckCompositionf*6'%"AG%"BG%"NG%$varG%,RingPackageG6$%#RPG%$narG6#%fn
Copyright~(C)~2004~by~Mohamed~Barakat.~All~rights~reserved.G6"C%>8$-%1homalg/ta
blenameG6%9!&9"6#!""8%@$-%%typeG6$F2%*procedureG-%'RETURNG6#-F26#&F86#;""",&F:F
IF;F:-%0homalg/CheckHomG6#F8F/F/F/F/,
Q:homalg/CheckComposition.mF/
M7R0
I;homalg/EulerCharacteristicf*6%%"MG%$varG%,RingPackageG6'%#RPG%$narG%$resG%$di
mG%"kG6#%fnCopyright~(C)~2007~by~Mohamed~Barakat.~All~rights~reserved.G6"C'>8$-
%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F3%*procedureG-%'RETURNG6#-F36#&F9
6#;""",&F;FJF<F;>8&-%:homalg/ResolutionOfModuleG6%9$9%F3>8'-%.homalg/ResDimG6$F
MF3-%$sumG6$*&)F;8(FJ&FT6#,&FgnF;F;FJFJ/Fgn;""!,&-%%nopsG6#FTFJF;FJF0F0F0F0,
Q=homalg/EulerCharacteristic.mF0
M7R0
I:homalg/FactorizeExtensionf*6&%&_homsG%)_modulesG%%_varG%,RingPackageG60%#RPG%
$narG%$varG%$extG%%homsG%(modulesG%"nG%(factorsG%$kerG%$_piG%"iG%#imG%#piG%%iot
aG6#%enCopyright~(C)~2007~by~Barbara~Bremer.~All~rights~reserved.G6"C->8$-%1hom
alg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F=%*procedureG-%'RETURNG6#-F=6#&FC6#;""
",&FEFTFFFE@%-FI6$&FC6#FU%%listG>8&FY-%&ERRORG6#%-Wrong~input!G@'2,&""$FTFFFT9#
C%>8'-%:homalg/NormalizeExtensionG6$&FC6#;FT,&!"#FTFFFEFgn>8(-%%copyG6#&Fco6#FT
>8)-F_p6#&Fco6#""#3-FI6$9$%&tableG-FI6$9%F^qC$>F]p-F_p6#F]q>Fdp-F_p6#FaqFhn>8*-
%%nopsG6#7#-%(indicesG6#F]p>8+7#-%"$G6$""!,&FjqFTFEFT>8,&FdpFD>8-&F]p6#Fhr?(8.F
hrFT,&FjqFT!"$FT%%trueGC'>8/-F_p6#F[s>80-F_p6#F^s>F[s-%-homalg/ImageG6'-F_p6#&F
]p6#,&FbsFTFTFT&Fdp6#FbsFgn/Q=var_to_assign_embedding_infoF:.81F=>F^s-%0homalg/
ImageEpiG6&FctFhtFgnF=>&Fcr6#,(FjqFTFEFTFbsFE7'Fis-F_p6#F]u-F_p6#Fht-F_p6#F\t-F
_p6#Fhs>&FcrFbp7'-F_p6#&Fdp6#Fir-F_p6#&F]pFev-F_p6#&Fdp6#,&FjqFTF[pFTF]tFis-FM6
#-%#opG6#FcrF:F:F:F:,
Q<homalg/FactorizeExtension.mF:
M7R0
I1homalg/Hom_R.oldf*6%%#_MG'%$varG%%listG%,RingPackageG6*%#RPG%$narG%%optsG%4re
adjust_generatorsG%)optionalG%"MG%"TG%$kerG6%%[oCopyright~(C)~2003-2007~by~Moha
med~Barakat.~All~rights~reserved.G%'systemG%)rememberG6"C,>8$-%1homalg/tablenam
eG6%9!&9"6#!""8%@$-%%typeG6$F:%*procedureG-%'RETURNG6#-F:6#&F@6#;""",&FBFQFCFB@
$-FF6$&F@6#FQ%'stringGC$@,/FVQCRETURN_ignore_embedding_generatorsF7-FJ6#%%trueG
/FVQ;RETURN_morphism_on_objectsF7-FJ6#f*6#%$phiGF76$%)operatorG%&arrowGF7f*6#%"
aGF7FaoF7-%$mapG6$f*6#%"bGF7FaoF7-%/homalg/ComposeG6&T$9$T&T'F7F76(F`oF`pF'FbpF
+FcpFapF7F76(F`oFapF'F`pF+T%F7F76&F'9%F+F:/FVQDRETURN_proc_to_normalize_generat
orsF7-FJ6#f*FeoF7FaoF7-%#opG6#-%6homalg/NormalizeInputG6$-%2homalg/InvolutionG6
%FapF`pFfpFfpF7F7Fgp/FVQCRETURN_proc_to_readjust_generatorsF7-FJ6#f*FeoF7FaoF7-
Feq6%7#FapF`pFfpF7F7Fgp/FVQ1RETURN_co_contraF7-FJ6#Q.contravariantF7-FJ6#%%NULL
G@$2,&""#FQFCFQ9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&F@6#;""$FRF:@$4-%)assigne
dG6#&F]s6#Q<pos_of_NORMALIZE_GENERATORSF7>8'f*FeoF7FaoF7F\rF7F7Fgp>8(Fds>8)-Fbq
6$FapF:>8*-Feq6%FftFhpF:>8+-%/homalg/KernelFG6%FjtFhpF:@%-F[t6#Fat-%9homalg/Con
vertGeneratorsG6&F^uFatFdtF:F^uF7F7F7F7,
Q3homalg/Hom_R.old.mF7
M7R0
IChomalg/InjectivePresentationIsoFFRf*6%%#_PG%$varG%,RingPackageG6(%#RPG%$narG%
"PG%"nG%"pG%$epiG6#%fnCopyright~(C)~2007~by~Mohamed~Barakat.~All~rights~reserve
d.G6"C)>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F4%*procedureG-%'RETURN
G6#-F46#&F:6#;""",&F<FKF=F<>8&-%6homalg/NormalizeInputG6$9$F4>8'-&F46#%3NumberO
fGeneratorsG6$FNF4>8(-%@homalg/InjectivePresentationFFRG6%FN9%F4@$/Fen%%FAILG-F
D6#F\o-&F46#%'matrixG6#-&F46#%,CertainRowsG6$-%7homalg/StdBasisVectorsG6$FenF47
#-%"$G6#;FKFTF1F1F1F1,
QEhomalg/InjectivePresentationIsoFFR.mF1
M7R0
I@homalg/IntersectionMultiplicityf*6&%#R1G%#R2G'%$varG%%listG%,RingPackageG6*%#
RPG%$narG%"nG%"TG%'lambdaG%"iG%"kG%"hG6%%fnCopyright~(C)~2007~by~Mohamed~Baraka
t.~All~rights~reserved.G%'systemG%)rememberG6"C*>8$-%1homalg/tablenameG6%9!&9"6
#!""8%@$-%%typeG6$F;%*procedureG-%'RETURNG6#-F;6#&FA6#;""",&FCFRFDFC>8&-%1homal
g/GlobalDimG6$9&F;>8'-%5homalg/TensorProductG6&9$9%FYF;@'-FG6$&Fen6#""%%*nonneg
intG%%trueG/-%%nopsG6#-%'indetsG6#F^oFR>8(-%#opGFfo-%&ERRORG6$%gqThe~fourth~lis
t~entry~of~the~homalg~presentation~of~the~tensor~product~does~not~seem~to~be~a~
Hilbert~series:GF^o>8)-%%evalG6$F^o/F[pFR?&8*7#-%"$G6#;FRFUFboC&-%+homalg/TorG6
'FipFinFjnFYF;>8+&%"%GF_o@$4-%)assignedG6#F[p@%/-Feo6#-Fho6#FdqFR>F[p-F]pF_rF^p
>Fcp,&FcpFR*&)FCFipFR-Fep6$FdqFgpFRFRFcpF8F8F8F8,
QBhomalg/IntersectionMultiplicity.mF8
M7R0
I/homalg/KernelFf*6%%"AG'%$varG%%listG%,RingPackageG6%%#RPG%$narG%%iotaG6%%[oCo
pyright~(C)~2004-2005~by~Mohamed~Barakat.~All~rights~reserved.G%'systemG%)remem
berG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F5%*procedureG-%'RETUR
NG6#-F56#&F;6#;""",&F=FLF>F=@$-FA6$&F;6#FL%'stringGC$@$/FQQ1RETURN_co_contraF2-
FE6#Q*covariantF2-FE6#%%NULLG>8&-%3homalg/SyzygiesOpFG6%9$9%F5-%7homalg/Subfact
orModuleG6&Fin7"F^oF5F2F2F2F2,
Q1homalg/KernelF.mF2
M7R0
I:homalg/LeftDerivedFunctorf*6''%"qG%*nonnegintG'%(functorG%%listG%"AG'%$varGF*
%,RingPackageG69%#RPG%$narG%"pG%%optsG%4readjust_generatorsG%)optionalG%3functo
r_on_objectsG%0functor_on_mapsG%$resG%%rdimG%$posG%(alpha_qG%)alpha_q1G%$Pq1G%%
Pq_1G%#PqG%%F_stG%:FPq_normalized_generatorsG%)Falpha_qG%$FPqG%&FPq_1G%*Falpha_
q1G%#LFG6#%[oCopyright~(C)~2005-2006~by~Mohamed~Barakat.~All~rights~reserved.G6
"C8>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$FL%*procedureG-%'RETURNG6#-
FL6#&FR6#;""",&FTF]oFUFT@$-FX6$&FR6#""$%'stringGC$@*/FboQ?RETURN_proc_to_induce
_morphismFI-Ffn6#f*6%%"MG%$phiG%"NG6#F8FIFIC$>FL-%%evalG6#-%7homalg/ResolutionO
fSeqG6)T$9$9%9&T&Q)TRUNCATEFIT'6%&&FL6#""#6#Fjp-%%copyG6#&&FLFcoFfq&&FL6#""&Ffq
FIFI6(F&F[qF-9'F0FL/FboQKRETURN_FunctorMap_of_the_functor_to_deriveFI-Ffn6#&F\q
Fdq/FboQIRETURN_FunctorMaps_of_a_composed_functorFI-Ffn6#%%NULLG/FboQ;RETURN_mo
rphism_on_objectsFIFir-Ffn6#-&F\q6#F]o6%FboFarFL?&8&7#-%"$G6#;F]o,&-%%nopsG6#F\
q#F]oFeqFTF]o%%trueG@$-FX6$&F\q6#,&F]oF]oFesFeqFeoC$@*/FdtFio-Ffn6#7#f*FIFapFIF
IC$>FL-Fep6#-%5homalg/ResolveModuleG6'FjpF^qT(F_qT)FbqFIFI6*F&F[qF+F]qF-FarF0FL
/FdtFcr-Ffn6#&F\q6#,&FeqF]oFesFeq/FdtFhrFir/FdtF]sFirF^s@$2,&""%F]oFUF]o9#>8'-F
hq6#-%2homalg/GetOptionsG6$&FR6#;F_rF^oFL@$4-%)assignedG6#&Ffv6#Q<pos_of_NORMAL
IZE_GENERATORSFI>8(-Fas6%QCRETURN_proc_to_readjust_generatorsFIFarFL>8)F\w>8*Fa
s>8+Ffr>8,-%:homalg/ResolutionOfModuleG6&F]qFar/F_qF[qFL>8--%.homalg/ResDimG6$F
cxFL@)2,&-F]t6#FixF]oFTF]oF[qC'>8.F[s@$-Fbw6#&Ffv6#QCvar_to_assign_embedding_ge
neratorsFIC$>Fdy/&Ffv6#QJpos_of_var_to_assign_embedding_generatorsFIF[s-%'assig
nG6$Fhy7#-&FL6#%%ZeroGFbs@$-Fbw6#&Ffv6#QBvar_to_assign_F_target_hullmoduleFIC$>
Fdy6$Fdy/&Ffv6#QIpos_of_var_to_assign_F_target_hullmoduleFIF[s-Fbz6$F\[lFdz@$07
#Fdy7">F]x-%#opG6#-%'subsopG6$Fdy7#F]x-Ffn6#-F_x6&-%2homalg/ZeroModuleG6$FarFLF
arF]xFL/F`y,&F[qF]oF]oF]oC%>8/&FcxFbs>807#-Ffz6#&FixFbs>81Fh\l/F[q""!C%>F_]l-&F
L6#%'matrixG6#7#-Fhs6$Fez&FixFS>Fb]lF`]l>Fh]l-%2homalg/FreeModuleG6%&Fix6#!"#Fa
rFLC%>F_]l&FcxFdq>Fb]lF`]l>Fh]l-Fi^l6%&Fix6#,&F[qFTF]_lF]oFarFL@%Fi]l>82Fh\l>Fj
_l-Fi^l6%&Fix6#,$F[qFTFarFL>83-Fi^l6%&Fix6#,&F[qFTFTF]oFarFL>86-Fax6)Fb`lF_]lFj
_lFar/Q3var_to_assign_F_stFI.84/QNvar_to_assign_F_source_unconverted_generators
FI.85FL>87&F_alFbs>88&F_alFdq/Q:FPq_normalized_generatorsFIFcal>89-Fax6'Fh]lFb]
lFb`lFarFL@$-Fbw6#Fcal>Feal-%9homalg/ReplaceGeneratorsG6%FealFcalFL>8:-%4homalg
/DefectOfHomsG6)F]blFealFi`lFhalFarF]xFL@%3-Fbw6#Fhw4/FhwF[s-%9homalg/ConvertGe
neratorsG6&FhblFhwF]xFLFhblFIFIFIFI,
Q<homalg/LeftDerivedFunctor.mFI
M7R0
I3homalg/LeftDivideCf*6'%#A_G%#B_G%"LG'%$varG%%listG%,RingPackageG60%#RPG%$narG
%"AG%"BG%#b1G%#b2G%"aG%%I_b1G%%I_b2G%#ATG%#AaG%#BaG%#LaG%"XG6#%enCopyright~(C)~
2008~by~Barbara~Bremer.~All~rights~reserved.G6"C3>8$-%1homalg/tablenameG6%9!&9"
6#!""8%@$-%%typeG6$F@%*procedureG-%'RETURNG6#-F@6#&FF6#;""",&FHFWFIFH>8&-%6homa
lg/NormalizeInputG6$9$F@>8'-Ffn6$9%F@>8(-&F@6#%3NumberOfGeneratorsG6#Fjn>8)-&F@
6#%-NumberOfRowsGFdo>8*-Fao6#FZ>8+-%3homalg/IdentityMapG6%F_o9'F@>8,-Fbp6%FfoFd
pF@>8--%2homalg/InvolutionG6%FZFdpF@>8/7#7#-%#opG6#-%$mapG6$Fcq-Ffn6$FjnF@>8.-%
4homalg/KroneckerMatG6&FjpF`pFdpF@>80-F]r6&Ffp9&FdpF@>81-%3homalg/RightDivideG6
(F_qF[rF`rFdpQ)USE_FAILF=F@@$/Fer%%FAILG-FP6#F\s>Fer-Ffn6$FerF@-Ffq6$f*6#%"iGF=
6$%)operatorG%&arrowGF=&&T#6#FW6#;,&*&,&FhnFWFHFWFWT%FWFWFWFW*&FhnFWFctFWF=F=6&
F:FerF1F_o7#-%"$G6#;FWF\pF=F=F=F=,
Q5homalg/LeftDivideC.mF=
M7R0
I2homalg/LeftDividef*6'%"AG%"BG%"LG%$varG%,RingPackageG6$%#RPG%$narG6#%[oCopyri
ght~(C)~2004-2005~by~Mohamed~Barakat.~All~rights~reserved.G6"C'>8$-%1homalg/tab
lenameG6%9!&9"6#!""8%@$-%%typeG6$F2%*procedureG-%'RETURNG6#-F26#&F86#;""",&F:FI
F;F:@$529#,&""%FIF;FI-F>6$&F86#FP%'symbolG-FB6#-%3homalg/LeftDivideFG6#F8@&-%4h
omalg/IsZeroModuleG6%9&9'F2-FB6#-%/homalg/ZeroMapG6&9$9%FjnF20-%3homalg/BetterB
asisG6&FinFjnQ3ALLOW_EMPTY_OUTPUTF/F27"-%&ERRORG6$%csUntil~now~LeftDivide~only~
expects~the~third~argument~to~indicate~a~free~module~given~by~a~basis,~i.e.~by~
trivial~relations,~but~recievedGFin-FYF_oF/F/F/F/,
Q4homalg/LeftDivide.mF/
M7R0
I4homalg/LeftinverseCf*6'%#_MG%"pG%#_PG%$varG%,RingPackageG62%#RPG%$narG%%optsG
%"MG%"PG%"bG%"cG%"dG%#PTG%#IbG%#IcG%#IdG%"BG%"AG%"LG%%iotaG6%%[oCopyright~(C)~2
006-2007~by~Mohamed~Barakat.~All~rights~reserved.G%'systemG%)rememberG6"C8>8$-%
1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$FB%*procedureG-%'RETURNG6#-FB6#&FH6
#;""",&FJFYFKFJ@%2,&""#FYFKFY9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&FH6#;""$FZF
B>&F[o6#Q2number_of_optionsF?""!@$2,&FinFYFgoFJ,&FeoFYFKFY-FR6#-%4homalg/Leftin
verseFG6#FH@$2F]p,&""%FYFKFY-FR6#-%3homalg/LeftinverseGFcp>8'-%6homalg/Normaliz
eInputG6$9$FB>8(-F_q6$9&FB>8)-&FB6#%3NumberOfGeneratorsG6#F]q>8*-Fjq6#Fcq>8+-&F
B6#%-NumberOfRowsGFar>8,-%2homalg/InvolutionG6%Fcq9'FB>8--%3homalg/IdentityMapG
6%FhqF]sFB>8.-Fas6%F_rF]sFB>8/-Fas6%FcrF]sFB>807#7$-%#opG6#-&FB6#%%ZeroG6#*&Fhq
FYFcrFY-F`t6#-%$mapG6$F`t-%7homalg/StdBasisVectorsGFfs>81-&FB6#%/UnionOfColumns
G6$-%4homalg/KroneckerMatG6&FirF_sF]sFB-Fgu6&Fds9%F]sFB>82-%/homalg/DiagMatG6%-
Fgu6&FhsF]qF]sFB-Fgu6&FdsFcqF]sFBFB>83-%3homalg/RightDivideG6(F\tF`uF]vF]sQ)USE
_FAILF?FB@$/Ffv%%FAILG-FR6#F]w>Ffv-F_q6$FfvFB>Ffv-F[u6$f*6#%"iGF?6$%)operatorG%
&arrowGF?&&T#6#FY6#;,&*&,&FaqFYFJFYFYT%FYFYFYFY*&FaqFYFexFYF?F?6&F:FfvF0Fhq7#-%
"$G6#;FYF_r-%:homalg/ReduceHomomorphismG6&FfvF]qF]sFBF?F?F?F?,
Q6homalg/LeftinverseC.mF?
M7R0
I2homalg/LHomOnSeqsf*6'%"qG%"LG'%&alphaG<$%&tableG%%listG%%_varG%,RingPackageG6
%%#RPG%$narG%*cofunctorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All~rights~
reserved.G%'systemG%)rememberG6"C&>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typ
eG6$F9%*procedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA>8&-%4homalg/Functor_LHom
G6$9$9%-%7homalg/CofunctorOnSeqsG6$FS&F?6#;""$FAF6F6F6F6,
Q4homalg/LHomOnSeqs.mF6
M7R0
I,homalg/LHomf*6''%"qG%*nonnegintG%"AG%"BG'%$varG%%listG%,RingPackageG6&%#RPG%$
narG%)optionalG%(functorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All~rights
~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%ty
peG6$F:%*procedureG-%'RETURNG6#-F:6#&F@6#;""",&FBFQFCFB>8&&F@6#;""&FR>8'-%4homa
lg/Functor_Hom2G6#9%-%:homalg/LeftDerivedFunctorG6(9$FZ9&9'FTF:F7F7F7F7,
Q.homalg/LHom.mF7
M7R0
I7homalg/NatTrSourceToImf*6&%"AG%"NG%$varG%,RingPackageG6(%#RPG%$narG%%optsG%#i
mG%5image_embedding_infoG%$epiG6%%fnCopyright~(C)~2007~by~Mohamed~Barakat.~All~
rights~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@
$-%%typeG6$F7%*procedureG-%'RETURNG6#-F76#&F=6#;""",&F?FNF@F?@%2,&""#FNF@FN9#>8
&-%%copyG6#-%2homalg/GetOptionsG6$&F=6#;""$FOF7>&FV6#Q2number_of_optionsF4""!@$
2,&FTFNF\oF?,&FjnFNF@FN-FG6#-%1homalg/ImageFEpiG6#F=-%0homalg/ImageEpiGFhoF4F4F
4F4,
Q9homalg/NatTrSourceToIm.mF4
M7R0
I6homalg/NormalizeInputf*6$%"MG%,RingPackageG6,%#RPG%$narG%"rG%"nG%"zG%#M0G%#Ml
G%#MrG%'RING_LG%'RING_RG6%%fnCopyright~(C)~2004~by~Mohamed~Barakat.~All~rights~
reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typ
eG6$F9%*procedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA@$/9$7"-FI6#FU@$-FE6$FT%4
homalg_presentationG@%332,&FPFPFBFP9#-FE6$&F?6#""#%'stringG2""!-%+searchtextG6$
Q-presentationF6F^o-FI6#-F"6$-%$mapG6$%$rhsG&FT6#FP&F?6#;F`oFA-FI6#-F"6$&FTF_oF
bp@1-FE6$FT&F96#%+matrixtypeGC$@$3Fin-FE6$F^o%'symbolG-%'assignG6$F^o%&falseG-%
(convertG6$FT%)listlistG33-%)assignedG6#&F96#%.IsRingElementG-FE6$FT-%%listG6#<
$FcoFir-Fcr6#F`pC$@$FbqFfq-F]p6$f*6#%"aGF66$%)operatorG%&arrowGF6@%-&T#Fdr6#FT7
#FTFTF6F66$F(F9FT-FEF\rC$@$FbqFfqFT-FE6$FT-Fir6#%"=GC&>8*-F"6%-F]p6$%$lhsGFT8,F
9>8+-F"6%-F]p6$F_pFT8-F9@$Fbq-Fgq6$F^o7$F_uFfu-%$zipG6%f*6$Fds%"bGF6FesF6/FT9%F
6F6F6FitFau3-%(hastypeG6$FTFft-FE6$FTFirC(?&8&FT%%trueG@$-FE6$F[wFftC$-F"6$7#-F
_p6#F[wF9>8(-&F96#%%ZeroG6#-&F96#%3NumberOfGeneratorsG6#%"%G>8)-F]p6$f*FcsF6Fes
F6@%-FEFfvFT/FTF[tF6F66$F,FgwFT>Fit-F"6%-F]p6$F^uFdxF_uF9>Fau-F"6%-F]p6$F_pFdxF
fuF9@$FbqFhu-F\v6%f*F_vF6FesF6FavF6F6F6FitFau-FE6$FT-Fir6#F]qFTFgvC$@$Fbq-Fgq6$
F^oF\w-F]p6$f*FcsF6FesF6@%FgvFTF]tF6F6F6FT-%&ERRORG6%%CInput~expected~to~be~of~
type~|frlistGF]q%*listlist|hrGF6F6F6F6,
Q8homalg/NormalizeInput.mF6
M7R0
I:homalg/PullbackPairOfMapsf*6)%#AAG%$phiG%#B_G%&beta1G%"BG%$varG%,RingPackageG
6+%#RPG%$narG%%optsG%"AG%"aG%$posG%)optionalG%#pbG%$embG6%%[oCopyright~(C)~2004
-2007~by~Mohamed~Barakat.~All~rights~reserved.G%'systemG%)rememberG6"C0>8$-%1ho
malg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F=%*procedureG-%'RETURNG6#-F=6#&FC6#;"
"",&FEFTFFFE@%2,&""$FTFFFT9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&FC6#;""%FUF=>&
Ffn6#Q2number_of_optionsF:""!@$2,&FZFTFboFE,&""'FTFFFT-FM6#-%;homalg/PullbackPa
irOfMapsFG6#FC>8'-%6homalg/NormalizeInputG6$9$F=>8(-&F=6#%3NumberOfGeneratorsG6
#Fap>Ffn-Fhn6#-F[o6$&FC6#;""(FUF=>8)%%NULLG@$-%)assignedG6#&Ffn6#QGpos_of_var_t
o_assign_functor_on_objectF:>Fgq6$Fgq/F]rFhq>8*-%#opG6#-%'subsopG6$Fgq7#Fbq>8+-
%0homalg/PullbackG6*Fep9%9&9'9(9)FdrF=@$-F[r6#&Ffn6#Q@var_to_assign_functor_on_
objectF:-%'assignG6$FisF]s>8,-%;homalg/EmbedInFactorModuleG6$F]sF=6$-&F=6#%'mat
rixG6#-&F=6#%/CertainColumnsG6$F`t7#;FTFgp-Fft6#-F[u6$F`t7#;,&FgpFTFTFTFEF:F:F:
F:,
Q<homalg/PullbackPairOfMaps.mF:
M7R0
I0homalg/PushoutFf*6&%(_alpha1G%%_psiG%$varG%,RingPackageG6,%#RPG%$narG%%optsG%
'alpha1G%$psiG%*minus_oneG%$posG%)optionalG%+alpha1_psiG%$epiG6%%fnCopyright~(C
)~2007~by~Mohamed~Barakat.~All~rights~reserved.G%'systemG%)rememberG6"C->8$-%1h
omalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F;%*procedureG-%'RETURNG6#-F;6#&FA6#;
""",&FCFRFDFC@$2,&""$FRFDFR9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&FA6#;""%FSF;>
8'-%6homalg/NormalizeInputG6$9$F;>8(-Fbo6$9%F;>8*%%NULLG@$-%)assignedG6#&FZ6#QA
pos_of_var_to_assign_CokernelEpiF8>F[p6$F[p/FapF\p@$-F_p6#&FZ6#QGpos_of_var_to_
assign_functor_on_objectF8>F[p6$F[p/FjpF\p>8+-%#opG6#-%'subsopG6$F[p7#F[o>8,-&F
;6#%/UnionOfColumnsG6$F`oFfo@%-F_p6#&FZ6#Q:var_to_assign_CokernelEpiF8C%>8--%4h
omalg/CokernelFEpiG6'Fjq9&/Q@var_to_assign_functor_on_objectF8%#poGFaqF;-%'assi
gnG6$Fcr-Ffn6#FhrF_s-%1homalg/CokernelFG6&FjqF\sFaqF;F8F8F8F8,
Q2homalg/PushoutF.mF8
M7R0
I3homalg/RHomHom2Mapf*6*%"qG%"AG%"MG%$phiG%"NG%"BG'%$varG%%listG%,RingPackageG6
&%#RPG%$narG%)optionalG%*cofunctorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~
All~rights~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!"
"8%@$-%%typeG6$F;%*procedureG-%'RETURNG6#-F;6#&FA6#;""",&FCFRFDFC>8&&FA6#;"")FS
>8'f*6#F'F8F8F8-%/homalg/RHomHomG6'T$T&9$T(&FA6#;""#FCF8F86(F%F]oF&9%F*9)-%2hom
alg/FunctorMapG6)Fen7#9&9'7#9(9*FUF;F8F8F8F8,
Q5homalg/RHomHom2Map.mF8
M7R0
I/homalg/Tor2Mapf*6)'%"qG%*nonnegintG%"LG%"MG%$phiG%"NG'%$varG%%listG%,RingPack
ageG6&%#RPG%$narG%)optionalG%(functorG6%%fnCopyright~(C)~2006~by~Mohamed~Baraka
t.~All~rights~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6
#!""8%@$-%%typeG6$F<%*procedureG-%'RETURNG6#-F<6#&FB6#;""",&FDFSFEFD>8&&FB6#;""
(FT>8'f*6#F)F9F9F9-%+homalg/TorG6&T$T&9$&FB6#;""#FDF9F96&F&F^oF(9%-%2homalg/Fun
ctorMapG6)Ffn7#9&9'7#9(9)FVF<F9F9F9F9,
Q1homalg/Tor2Map.mF9
M7R0
I3homalg/compute_psif*6)%#_MG%&etaMNG%#_NG%&etaNLG%#_LG%$varG%,RingPackageG6)%#
RPG%$narG%"LG%"MG%$syzG%"BG%"AG6#%ioCopyright~(C)~2008~by~Mohamed~Barakat~and~B
arbara~Bremer.~All~rights~reserved.G6"C*>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$
-%%typeG6$F9%*procedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA>8&-%6homalg/Normal
izeInputG6$&-%:homalg/ResolutionOfModuleG6&9(9)/Q)TRUNCATEF6""!F96#FPF9>8'-FU6$
&-FY6&9$FfnFgnF9FjnF9>8(-%%copyG6#&&-%5homalg/ResolveModuleG6%""#F\oFfnFjn6#F]p
>8)-%/homalg/ComposeG6&Fdo-%Qhomalg/AModuleForATwoExtensionFromTwoOneCocyclesG6
#F?FfnF9>8*-Fbp6&Fdo9%FfnF9-%3homalg/LeftDivideCG6'FhpF`pFSFfnF9F6F6F6F6,
Q5homalg/compute_psi.mF6
M7R0
IDhomalg/SolveSystemWithConstraintsC2f*6(%#_AG%#_BG%#_CG%#_EG%$varG%,RingPackag
eG6:%#RPG%$narG%%optsG%"AG%"BG%"CG%"EG%"MG%"NG%"LG%"aG%"bG%"cG%#c2G%"eG%"dG%#d_
G%#ETG%#ATG%#IbG%#IcG%#IdG%#IeG%"YG6%%enCopyright~(C)~2007~by~Barbara~Bremer.~A
ll~rights~reserved.G%'systemG%)rememberG6"C:>8$-%1homalg/tablenameG6%9!&9"6#!""
8%@$-%%typeG6$FK%*procedureG-%'RETURNG6#-FK6#&FQ6#;""",&FSF\oFTFS>8'-%6homalg/N
ormalizeInputG6$9$FK>8(-Fao6$9%FK>8)-Fao6$9&FK>8*-Fao6$9'FK>8.-&FK6#%3NumberOfG
eneratorsG6#F_o>8/-&FK6#%-NumberOfRowsG6#Feo>80-Ffp6#Fjo>81-F]qFdq>83-Ffp6#F_p>
82-F]qF[r>85-%2homalg/InvolutionG6%F_p9(FK>86-Fbr6%F_oFdrFK>87-%3homalg/Identit
yMapG6%F[qFdrFK>88-F\s6%FbqFdrFK>8:-F\s6%F]rFdrFK>8+7#7$-%#opG6#-%$mapG6$F[tFeo
-F[t6#-&FK6#%%ZeroG6#*&F]rF\oFbqF\o>8,-&FK6#%/UnionOfColumnsG6$-%4homalg/Kronec
kerMatG6&FfrF_sFdrFK-F`u6&F`rF_sFdrFK>8--F[u6$-%/homalg/ZeroMapG6$*&FfqF\oF]rF\
o*&F[qF\oFbqF\o-%.homalg/SubMatG6%-Fiu6&F[vFgtFdrFK-F`u6&FcsFjoFdrFKFdr>8;-%3ho
malg/RightDivideG6(FgsFitFeuFdrQ)USE_FAILFHFK@$/Fev%%FAILG-Fen6#F\w>Fev-Fao6$Fe
vFK-F^t6$f*6#%"iGFH6$%)operatorG%&arrowGFH&&T#6#F\o6#;,&*&,&FcoF\oFSF\oF\oT%F\o
F\oF\oF\o*&FcoF\oFcxF\oFHFH6&FCFevF8Fbq7#-%"$G6#;F\oFiqFHFHFHFH,
QFhomalg/SolveSystemWithConstraintsC2.mFH
M7R0
IAhomalg/IsEquivalenceOfExtensionsf*6/%#N1G%'alpha1G%#E1G%&beta1G%#M1G%$phiG%#N
2G%'alpha2G%#E2G%&beta2G%#M2G%$varG%,RingPackageG6'%#RPG%$narG%%optsG%(VERBOSEG
%"bG6%%fnCopyright~(C)~2007~by~Mohamed~Barakat.~All~rights~reserved.G%'systemG%
)rememberG6"C*>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F?%*procedureG-%
'RETURNG6#-F?6#&FE6#;""",&FGFVFHFG@$2,&"#7FVFHFV9#>8&-%%copyG6#-%2homalg/GetOpt
ionsG6$&FE6#;"#8FWF?@%-%)assignedG6#&Fhn6#Q/pos_of_VERBOSEF<>8'%%trueG>F[p%&fal
seG@$4-%:homalg/EqualPresentationsG6&9$9*Q2IGNORE_GENERATORSF<F?-%&ERRORG6#%YTh
e~two~submodules~must~have~identical~sets~of~relationsG@$F`p-Fhp6#%gnThe~two~fa
ctor~modules~must~have~identical~sets~of~relationsG>8(7&-%-homalg/IsHomG6(9&9)9
,9/Q(VERBOSEF<F?-%3homalg/IsBijectiveGFdq-%1homalg/IsZeroMapG6'-%.homalg/SubMat
G6&-%/homalg/ComposeG6&9%FfqFhqF?9+FhqF?FgqFhqFiqF?-F]r6'-F`r6&-Fcr6&Ffq9-FhqF?
9'FhqF?9.FhqFiqF?@%/-%(convertG6$F`q%$setG<#F\pF\p@%F[p-%$zipG6%f*6$%"xG%"yGF<6
$%)operatorG%&arrowGF</FdpFerF<F<F<7&Q$homF<Q$isoF<Q)commute1F<Q)commute2F<F`qF
^pF<F<F<F<,
QChomalg/IsEquivalenceOfExtensions.mF<
M7R0
I4homalg/IsZeroMatrixf*6%%#_MG'%$varG%%listG%,RingPackageG6%%#RPG%$narG%"MG6#%f
nCopyright~(C)~2008~by~Mohamed~Barakat.~All~rights~reserved.G6"C'>8$-%1homalg/t
ablenameG6%9!&9"6#!""8%@$-%%typeG6$F3%*procedureG-%'RETURNG6#-F36#&F96#;""",&F;
FJF<F;@$/8&7"-FC6#%%trueG>FN-%:homalg/ReduceRingElementsG6%9$9%F3-%2homalg/IsZe
roMapFG6%FNFXF3F0F0F0F0,
Q6homalg/IsZeroMatrix.mF0
M7R0
I.homalg/homalg=6"%&falseGE\[lH%+matrixtypeGQeqmatrixtype~[optional:~tablename~
provides~a~default]:~should~provide:~type(RP[matrix](...),matrixtype)=trueF$%6R
ingElementNormalFormGQ_rRingElementNormalForm(var)~[optional:~no~default~value]
:~return~a~procedure~to~compute~the~normal~form~ring~elementsF$%'AddRhsGQ\pAddR
hs(M,var,tvar)~[optional:~tablename~provides~a~default]:~add~right~hand~sidesF$
%0TriangularBasisGQ\rTriangularBasis(M,var)~[or~provide~BasisOfModule]:~compute
~a~triangular~basis~for~M~without~normalizing~the~inputF$%'AddMatGQipAddMat(A,B
,var)~[optional:~defaults~to~a~service~function]:~add~two~matrices~of~rings~ele
mentsF$%*BestBasisGQdvBestBasis(M,var,U,V)~[optional:~no~default~value]:~get~th
e~best~basis~even~if~it~changes~the~abstract~generators~and~store~the~change~of
~relations~in~U~and~the~change~of~generators~in~VF$%$REMGQhoREM(a,b,var)~[optio
nal:~no~default~value]:~compute~(the~remainder~of)~a~mod~bF$%(ComposeGQipCompos
e(A,B,var)~[optional:~defaults~to~a~service~function]:~compose~matrices~of~ring
~elementsF$%3NumberOfGeneratorsGQ[qNumberOfGenerators(M)~[optional:~tablename~p
rovides~a~default]:~rank~of~free~module~containing~MF$%'IsUnitGQepIsUnit(r,var)
~[optional:~defaults~to~a~service~function]:~check~if~r~is~a~unit~in~the~ringF$
%/UnionOfColumnsGQ[qUnionOfColumns(M,N,...)~[optional:~tablename~provides~a~def
ault]:~unify~the~columns~in~M,~N,~...F$%4MinimalBasisOfIdealGQgoMinimalBasisOfI
deal(M,var)~[optional:~no~default~value]:~get~a~minimal~basisF$%-NumberOfRowsGQ
coNumberOfRows(a)~[optional:~tablename~provides~a~default]:~number~of~rowsF$%.I
sRingElementGQ^pIsRingElement(r)~[optional:~no~default~value]:~decide~if~r~is~a
~ring~element~or~notF$%$GCDGQ_pGCD(a1,...,an,var)~[optional:~no~default~value]:
~compute~the~greatest~common~divisorF$%'matrixGQ`pmatrix(A)~[optional:~tablenam
e~provides~a~default]:~make~a~matrix~(out~of~a~listlist)F$%)simplifyGQ\psimplif
y(a,var)~[optional:~tablename~provides~a~default]:~simplify~and~expressionF$%.S
implifyBasisGQhoSimplifyBasis(M,var)~[optional:~no~default~value]:~try~to~get~a
~simpler~basisF$%*GlobalDimGQ]sGlobalDim(var)~[optional:~defaults~to~a~service~
function]:~compute~the~global~dimension~of~the~(residue~class)~ring~defined~by~
varF$%'SubMatGQ_qSubMat(A,B,var)~[optional:~defaults~to~a~service~function]:~su
bstract~two~matrices~of~rings~elementsF$%-KroneckerMatGQeqKroneckerMat(A,B,var)
~[optional:~defaults~to~a~service~function]:~compute~the~Kronecker~product~of~A
~and~BF$%%ZeroGQ^pZero(n)~[optional:~tablename~provides~a~default]:~zero~of~the
~free~module~of~rank~nF$%1PresentationInfoGQ[tPresentationInfo(M,var,v)~[option
al:~defaults~to~a~service~function]:~compute~combinatorial~informations~using~t
he~relations~of~the~presentationF$%'ReduceGQcqReduce(L,B,var)~[optional:~defaul
ts~to~a~service~function]:~normal~forms~of~rows~of~L~modulo~the~basis~BF$%6Quot
ientWithRemainderGQ^qQuotientWithRemainder(x,y,var)~[or~provide~Reduce]:~comput
e~the~quotient~'with~remainder'~of~x~by~yF$%,UnionOfRowsGQepUnionOfRows(M,N,...
)~[optional:~tablename~provides~a~default]:~unify~the~rows~in~M,~N,~...F$%/Cert
ainColumnsGQirCertainColumns(M,plist::list)~[optional:~tablename~provides~a~def
ault]:~extract~the~i-th~columnss~out~of~M,~for~all~i~in~plistF$%+InvolutionGQ\r
Involution(M,var)~[optional:~defaults~to~a~service~function]:~appropriate~invol
ution~(transpose/adjoint~operator)F$%$OneGQhn[optional:~tablename~provides~a~de
fault]:~the~one~in~the~ringF$%.BasisOfModuleGQjoBasisOfModule(M,var,opt)~[optio
nal:~defaults~to~a~service~function]:~basis~of~MF$%3ReduceRingElementsGQgrReduc
eRingElements(M,var)~[optional:~defaults~to~a~service~function]:~normal~forms~o
f~entries~of~M~modulo~the~ring~relationsF$%(DiagMatGQ_rDiagMat(L)~[optional:~de
faults~to~a~service~function]:~apply~the~i-th~element~of~L~to~the~i-th~standard
~basis~vectorF$%&MinusGQfoMinus(a,b,var)~[optional:~tablename~provides~a~defaul
t]:~substract~b~from~aF$%,CertainRowsGQbrCertainRows(M,plist::list)~[optional:~
tablename~provides~a~default]:~extract~the~i-th~rows~out~of~M,~for~all~i~in~pli
stF$%/NormalizeInputGQ^sNormalizeInput(M)~[optional:~defaults~to~a~service~func
tion]:~put~the~presentation~M~of~a~module~into~a~RingPackage~normalized~formF$%
-DivideByUnitGQapDivideByUnit(a,b,var)~[optional:~tablename~provides~a~default]
:~divide~a~by~the~unit~bF$%'MulMatGQiqMulMat(scal,A,var)~[optional:~defaults~to
~a~service~function]:~multiply~a~matrix~of~rings~elements~by~a~scalarF$%(GetSid
eGQdqGetSide(side,L,var,tvar)~[optional:~tablename~provides~a~default]:~get~the
~lhs/rhs~of~the~affine~system~LF$%3SyzygiesGeneratorsGQ]sSyzygiesGenerators(M1,
M2,var)~[optional:~defaults~to~a~service~function]:~compute~a~generating~set~of
~the~syzygies~of~M1~modulo~M2F$F$,
Q0homalg/homalg.mF$
M7R0
I6homalg/CheckCocomplexf*6%'%*cocomplexG%%listG'%$varGF'%,RingPackageG6&%#RPG%$
narG%"lG%"jG6#%fnCopyright~(C)~2004~by~Mohamed~Barakat.~All~rights~reserved.G6"
C(>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F5%*procedureG-%'RETURNG6#-F
56#&F;6#;""",&F=FLF>F=@$/9$7"-FE6#FQ>8&-%%nopsG6#FP7#-%"$G6#;""!,&-%%iquoG6$,&F
UFL!"#FL""#FLF=FL-%$mapG6$f*6#%"iGF26$%)operatorG%&arrowGF2-%8homalg/CheckCompo
sitionG6%-%$seqG6$&T$6#,&FPF_oT%FL/Fcp7%F_o""%""&T(T)F2F26*F&FPF/8'F)9%F,F5%"%G
F2F2F2F2,
Q8homalg/CheckCocomplex.mF2
M7R0
I7homalg/CofunctorOnSeqsf*6&%*cofunctorG'%&alphaG<$%&tableG%%listG%%_varG%,Ring
PackageG6.%#RPG%$narG%$varG%#aiG%"mG%"jG%"kG%'coseqsG%$resG%2cofunctor_on_mapsG
%$tblG%"iG6%%fnCopyright~(C)~2004~by~Mohamed~Barakat.~All~rights~reserved.G%'sy
stemG%)rememberG6"C0>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$FA%*proced
ureG-%'RETURNG6#-FA6#&FG6#;""",&FIFXFJFI@$29#,&""%FXFJFX-FQ6#-%7homalg/Cofuncto
rOnSeqFG6$&9$6#;""$FI&FG6#;""#FI>8&&FG6#FY>8'-F)F>@%-FM6$9%F*>&F\p6#FX7#-%"$G6#
;FX-%%nopsG6#Fap>Fcp-%%sortG6#-%$mapG6$%$lhsG-%#opG6#-%%evalGF\q>8(-F[q6#Fcp?&8
)7#-Fgp6#;Ffo,(FfnFX!"#FXFJFI%%trueGC%@%-FM6$&FG6#,&F_rFXFXFXF*>&F\p6#F_r7#-Fgp
6#;FX-F[q6#F[s>F_s-F_q6#-Fbq6$Fdq-Ffq6#-FiqFfs@$3/F_rFfo4-FM6$-%%copyG6#&&FG6#F
bo6#&&F\p6#FfoFdp%4homalg_presentationG-FQ6#-%8homalg/CofunctorOnSeqsFGF]o@%/-%
%iremG6$F_rFboFX@$0F[r-F[q6#F_s-%&ERRORG6%%BThe~first~and~the~argument~numberGF
_r%Chave~different~numbers~of~entries!G@$0,&F[rFXFXFXF[v-F^v6%%4The~argument~nu
mberGF_r%Rmust~have~one~entry~more~than~the~first~argument!G@$0-Fgu6$FdrFboFfo-
F^v6#%jnThe~number~of~input~tables/lists~should~be~congruent~to~2~mod~3G>8+F]p?
&8*7#-Fgp6#;""!-%%iquoGF\wFfrC%>8,-%6homalg/CofunctorOnSeqG6'F_o-Fft6#&FG6#,&Ff
oFXFcwFbo-Fft6#&FG6#,&FboFXFcwFboFhoFA>&Faw6#,&FcwFboFXFX-Fft6#&F]xFdp>&FawFdx-
Fft6#&F]xF^u>8-&F_oF^u?&Fcw7#-Fgp6#;FXFiwFfrC%>8.F]p?&8/7#-Fgp6#;FXFdvFfr>&Faz6
#&&F\p6#,$FcwFbo6#Fcz-Fhy6'-Fft6#&&FGF][l6#&&F\p6#,&FcwFboFIFXF_[l-Fft6#&&FGF]y
Fjz-Fft6#&Fhx6#&&F\pFdxF_[lFhoFA>&FawF][l-Fft6#Faz-Ffq6#-Fbq6$Fft-Fbq6$f*6#%"aG
F>6$%)operatorG%&arrowGF>&T#6#F_oF>F>6$F5Faw7#-Fgp6#;FXFdrF>F>F>F>,
Q9homalg/CofunctorOnSeqs.mF>
M7R0
I:homalg/CohomologyModulesFf*6%'%*cocomplexG<$%&tableG%%listG'%$varGF)%,RingPac
kageG6+%#RPG%$narG%#aiG%"lG%%stepG%$haiG%"jG%(cohomolG%"iG6#%fnCopyright~(C)~20
04~by~Mohamed~Barakat.~All~rights~reserved.G6"C)>8$-%1homalg/tablenameG6%9!&9"6
#!""8%@$-%%typeG6$F<%*procedureG-%'RETURNG6#-F<6#&FB6#;""",&FDFSFEFD@$/9$7"-FL6
#FX@%-FH6$FWF)>8&7#-%"$G6#;FS-%%nopsG6#FW>Fin-%%sortG6#-%$mapG6$%$lhsG-%#opG6#-
%%evalGFao>8'-F`o6#Fin>8)&Fin6#;""#FD@%-FH6$FWF(C%>8+-F(F9?&8,7#-F\o6#;FS,&F`pF
SFDFS%%trueG>&F^q6#&.%$EtaG6#&Fdp6#Faq-%5homalg/DefectOfHomsFG6&&FW6#&FinF`r&FW
6#&Fin6#,&FaqFSFSFS9%F<-%%copyG6#F^q-Fgo6$f*6#F6F96$%)operatorG%&arrowGF9-Fbr6&
&T$6#&T%6#,&FWFSFDFS&Fjs6#&F]tFaoT(T)F9F96*F&FWF0FinF+F\sF.F<FdpF9F9F9F9,
Q<homalg/CohomologyModulesF.mF9
M7R0
I3homalg/CokernelEpif*6&%"AG%"NG%$varG%,RingPackageG6)%#RPG%$narG%%optsG%$posG%
)optionalG%&cokerG%<cokernel_rewrite_generatorsG6%%[oCopyright~(C)~2004-2007~by
~Mohamed~Barakat.~All~rights~reserved.G%'systemG%)rememberG6"C.>8$-%1homalg/tab
lenameG6%9!&9"6#!""8%@$-%%typeG6$F8%*procedureG-%'RETURNG6#-F86#&F>6#;""",&F@FO
FAF@@%2,&""#FOFAFO9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&F>6#;""$FPF8>&FW6#Q2nu
mber_of_optionsF5""!@$2,&FUFOF]oF@,&F[oFOFAFO-FH6#-%4homalg/CokernelFEpiG6#F>>F
W-FY6#-Ffn6$&F>6#;""%FPF8>8'%%NULLG@$-%)assignedG6#&FW6#QGpos_of_var_to_assign_
functor_on_objectF5>Fdp6$Fdp/FjpFep@$-Fhp6#&FW6#QHpos_of_var_to_assign_rewrite_
generatorsF5>Fdp6$Fdp/FcqFep>8(-%#opG6#-%'subsopG6$Fdp7#F_p>8)-%0homalg/Cokerne
lG6(9$9%9&/QAvar_to_assign_rewrite_generatorsF5.8*FjqF8@$-Fhp6#&FW6#Q@var_to_as
sign_functor_on_objectF5-%'assignG6$FasFcr-%:homalg/ReduceHomomorphismG6&F]sFcr
FirF8F5F5F5F5,
Q5homalg/CokernelEpi.mF5
M7R0
I0homalg/ExtMap_Rf*6(%"qG%"MG%$phiG%"NG'%$varG%%listG%,RingPackageG6&%#RPG%$nar
G%)optionalG%*cofunctorG6%%fnCopyright~(C)~2005~by~Mohamed~Barakat.~All~rights~
reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typ
eG6$F9%*procedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA>8&&F?6#;""'FQ>8'f*6#F&F6
F6F6-%-homalg/Ext_RG6%T$9$&F?6#;""#FAF6F66$F%Fjn-%2homalg/FunctorMapG6)FY7#9%9&
7#9'9(FSF9F6F6F6F6,
Q2homalg/ExtMap_R.mF6
M7R0
I,homalg/Extqf*6''%"qG%*nonnegintG%"AG%"BG'%$varG%%listG%,RingPackageG6&%#RPG%$
narG%)optionalG%*cofunctorG6%%[oCopyright~(C)~2005-2006~by~Mohamed~Barakat.~All
~rights~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%
@$-%%typeG6$F:%*procedureG-%'RETURNG6#-F:6#&F@6#;""",&FBFQFCFB>8&&F@6#;""&FR>8'
-%3homalg/Functor_HomG6#9&-%=homalg/RightDerivedCofunctorG6(9$FZ9%9'FTF:F7F7F7F
7,
Q.homalg/Extq.mF7
M7R0
I3homalg/Functor_Torf*6$%"qG%"BG6"6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~A
ll~rights~reserved.G%'systemG%)rememberGF'7&f*6#%"MGF'F'F'-%+homalg/TorG6&T$9$T
&&9"6#;""#!""F'F'6&F%F4F&9%f*6%F/%$phiG%"NGF'F'F'-%.homalg/TorMapG6(F3F4F=9&F5&
F76#;""%F;F'F'F<F=f*6#%"PGF'F'F'f*F?F'F'F'-%/homalg/Tor2MapG6(F3F5F4F=FEFFF'F'6
&F%F3FLF4F'F'6$F%F4F'F'F'F',
Q5homalg/Functor_Tor.mF'
M7R0
I7homalg/ImageOfElementsf*6'%#_BG%#_AG%"LG%$varG%,RingPackageG6)%#RPG%$narG%"AG
%"mG%/SINGLE_ELEMENTG%"BG%$imgG6#%fnCopyright~(C)~2007~by~Mohamed~Barakat.~All~
rights~reserved.G6"C+>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F7%*proce
dureG-%'RETURNG6#-F76#&F=6#;""",&F?FNF@F?>8&-%6homalg/NormalizeInputG6$9%F7>8'-
&F76#%-NumberOfRowsG6#FQ>8(%&falseG@'4-FC6$9$<$%%listG&F76#%+matrixtypeG@%/FWFN
>8)7#7#F^o-%&ERRORG6#%apThe~second~argument~has~more~the~one~'row'~while~the~fi
rst~argument~is~a~ring~element!G34-FC6$F^o<$%)listlistGFao-FC6$F^oF`o@%Feo>Fgo-
%$mapG6$f*6#%"aGF46$%)operatorG%&arrowGF4FioF4F4F4F^oC$>Fhn%%trueG>FgoFio>Fgo-F
S6$F^oF7>8*-%3homalg/ComposeMapsG6%FgoFQ&F=6#;""$F?@$-FC6$FiqFao>Fiq-%(convertG
6$FiqFcp@%Fhn&Fiq6#FNFiqF4F4F4F4,
Q9homalg/ImageOfElements.mF4
M7R0
I5homalg/IsProjectiveCf*6%%#_PG%$varG%,RingPackageG6)%#RPG%$narG%"PG%"nG%#IdG%"
FG%"sG6#%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All~rights~reserved.G6"C*>8$-
%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F5%*procedureG-%'RETURNG6#-F56#&F;
6#;""",&F=FLF>F=>8&-%6homalg/NormalizeInputG6$9$F5>8'-&F56#%3NumberOfGenerators
G6#FO>8(-%3homalg/IdentityMapG6%FU9%F5>8)-%2homalg/FreeModuleGFin>8*-%4homalg/L
eftinverseCG6'F\oFfnFOFjnF5@%/F`o%%FAILG%&falseG%%trueGF2F2F2F2,
Q7homalg/IsProjectiveC.mF2
M7R0
I/homalg/LHomHomf*6('%"qG%*nonnegintG%"MG%"AG%"BG'%$varG%%listG%,RingPackageG6&
%#RPG%$narG%)optionalG%(functorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All
~rights~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%
@$-%%typeG6$F;%*procedureG-%'RETURNG6#-F;6#&FA6#;""",&FCFRFDFC>8&&FA6#;""'FS>8'
-%6homalg/Functor_HomHomG6$9&9'-%:homalg/LeftDerivedFunctorG6(9$Fen9%9(FUF;F8F8
F8F8,
Q1homalg/LHomHom.mF8
M7R0
I>homalg/ProjectiveDimensionFFRf*6%%"PG%$varG%,RingPackageG6'%#RPG%$narG%$resG%
"pG%"sG6#%fnCopyright~(C)~2007~by~Mohamed~Barakat.~All~rights~reserved.G6"C)>8$
-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F3%*procedureG-%'RETURNG6#-F36#&F
96#;""",&F;FJF<F;>8&-%:homalg/ResolutionOfModuleG6#F9>FM-%9homalg/ShortenResolu
tionG6&%)infinityGFM9%F3>8'-%%nopsG6#FM@$/FXFJC$>8(-%4homalg/RightinverseG6%&FM
6#FJFVF3@$0Fjn%%FAILG>FX""!FXF0F0F0F0,
Q@homalg/ProjectiveDimensionFFR.mF0
M7R0
I8homalg/ResidueClassRingf*6$%%_varG%,RingPackageG6&%#RPG%$narG%#NFG%$varG6%%[o
Copyright~(C)~2004-2006~by~Mohamed~Barakat.~All~rights~reserved.G%'systemG%)rem
emberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F3%*procedureG-%'RET
URNG6#-F36#&F96#;""",&F;FJF<F;>8'-%5homalg/NormalizeRingG6$9$F3@$-%)assignedG6#
&F36#%6RingElementNormalFormGC$>8&-FV6#FM@$30Fen%%NULLG-F?6$FenFA-FC6#Ffn@'/&FM
6#""#7"-&F36#%%ZeroG6#FJ-FT6#&F36#%$GCDG7#-F]p6#-%#opG6#-%$mapG6$FdpFbo-%5homal
g/BasisOfModuleG6%Ffp&FMFjoF3F0F0F0F0,
Q:homalg/ResidueClassRing.mF0
M7R0
I/homalg/RHomHomf*6('%"qG%*nonnegintG%"AG%"MG%"BG'%$varG%%listG%,RingPackageG6&
%#RPG%$narG%)optionalG%*cofunctorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~A
ll~rights~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""
8%@$-%%typeG6$F;%*procedureG-%'RETURNG6#-F;6#&FA6#;""",&FCFRFDFC>8&&FA6#;""'FS>
8'-%7homalg/Functor_HomHom2G6$9%9'-%=homalg/RightDerivedCofunctorG6(9$Fen9&9(FU
F;F8F8F8F8,
Q1homalg/RHomHom.mF8
M7R0
I4homalg/Rightinversef*6%%"LG'%$varG%%listG%,RingPackageG6%%#RPG%$narG%#LIG6#%e
nCopyright~(C)~2004~by~Daniel~Robertz.~All~rights~reserved.G6"C&>8$-%1homalg/ta
blenameG6%9!&9"6#!""8%@$-%%typeG6$F3%*procedureG-%'RETURNG6#-F36#&F96#;""",&F;F
JF<F;>8&-%4homalg/LeftinverseFG6%-%2homalg/InvolutionG6%9$9%F3FUF3@%0FM%%FAILG-
FR6%FMFUF3FXF0F0F0F0,
Q6homalg/Rightinverse.mF0
M7R0
I7homalg/StdBasisVectorsf*6$%#_nG%,RingPackageG6'%#RPG%$narG%"nG%"zG%"uG6#%[oCo
pyright~(C)~2004-2005~by~Mohamed~Barakat.~All~rights~reserved.G6"C(>8$-%1homalg
/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F2%*procedureG-%'RETURNG6#-F26#&F86#;""",&
F:FIF;F:@%-F>6$9$%(numericG@%-F>6$FN%'posintG>8&FN-%&ERRORG6#%^oIf~the~first~ar
gument~is~numeric~then~it~must~be~a~positive~integerG>FU-&F26#%3NumberOfGenerat
orsG6#-%6homalg/NormalizeInputG6$FNF2>8'-&F26#%%ZeroG6#FU>8(&F26#%$OneG-%$mapG6
$f*6#%"iGF/6$%)operatorG%&arrowGF/-%'subsopG6$/FNT#T%F/F/6&F,FeoF+F^o7#-%"$G6#;
FIFUF/F/F/F/,
Q9homalg/StdBasisVectors.mF/
M7R0
I.homalg/TorMapf*6)'%"qG%*nonnegintG%"MG%$phiG%"NG%"LG'%$varG%%listG%,RingPacka
geG6&%#RPG%$narG%)optionalG%(functorG6%%fnCopyright~(C)~2005~by~Mohamed~Barakat
.~All~rights~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#
!""8%@$-%%typeG6$F<%*procedureG-%'RETURNG6#-F<6#&FB6#;""",&FDFSFEFD>8&&FB6#;""(
FT>8'f*6#F(F9F9F9-%+homalg/TorG6&T$9$T&&FB6#;""#FDF9F96&F&F]oF+9(-%2homalg/Func
torMapG6)Ffn7#9%9&7#9'9)FVF<F9F9F9F9,
Q0homalg/TorMap.mF9
M7R0
I<homalg/TorsionFreeFactorEpif*6%%"MG%$varG%,RingPackageG6'%#RPG%$narG%%optsG%#
tfG%8torsion_free_factor_epiG6%%fnCopyright~(C)~2007~by~Mohamed~Barakat.~All~ri
ghts~reserved.G%'systemG%)rememberG6"C(>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-
%%typeG6$F5%*procedureG-%'RETURNG6#-F56#&F;6#;""",&F=FLF>F=@$2,&""#FLF>FL9#>8&-
%%copyG6#-%2homalg/GetOptionsG6$&F;6#;""$FMF5>8'-%9homalg/TorsionFreeFactorG6&9
$9%/QAvar_to_assign_rewrite_generatorsF2.8(F5@$-%)assignedG6#&FT6#Q@var_to_assi
gn_functor_on_objectF2-%'assignG6$FhoFjn-FV6#FcoF2F2F2F2,
Q>homalg/TorsionFreeFactorEpi.mF2
M7R0
I?homalg/YonedaProductOfCocyclesf*6+%"MG%%eta1G'%"mG%(integerG%"LG%%eta2G'%"nGF
)%"NG%$varG%,RingPackageG66%#RPG%$narG%%optsG%&res_XG%'X_homsG%*X_modulesG%&res
_YG%'Y_homsG%*Y_modulesG%%betaG%"iG%%liftG%&lift_G%&alphaG%#YiG%%Yi_1G%$etaG%$r
esG%$extG%'resultG6%%enCopyright~(C)~2007~by~Barbara~Bremer.~All~rights~reserve
d.G%'systemG%)rememberG6"C5>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$FM%
*procedureG-%'RETURNG6#-FM6#&FS6#;""",&FUF^oFVFU@$2,&"")F^oFVF^o9#>8&-%%copyG6#
-%2homalg/GetOptionsG6$&FS6#;""*F_oFM@$529)""!29&Fep-%&ERRORG6#%>n~and~m~must~b
e~non-negative!G>8'-%5homalg/ResolveModuleG6&,&FgpF^oFdpF^o9$9+FM>8(-Fho6#&F]q6
#F^o>8)-Fho6#&F]q6#""#>8*-F_q6&Fdp9'FcqFM>8+-Fho6#&FbrFiq>8,-Fho6#&FbrF_r>8--Fh
o6#&Fgr6#Fep>8/-%3homalg/RightDivideG6'9%FasFerFcqFM?(8.F^oF^oFdp%%trueGC(>80-F
ho6#Fgs>81-Fho6#&Feq6#,&F]tF^oFgpF^o>Fas-Fho6#&Fgr6#F]t>82-Fho6#&F\sF_u>83-Fho6
#&F\s6#,&F]tF^oFUF^o>Fgs-%4homalg/CompleteImSqG6)-Fho6#Fet-Fho6#FatFau-Fho6#Fas
FfuFcqFM>84-%/homalg/ComposeG6&Fgs9(FcqFM>87%%NULLG@$5-%)assignedG6#&Ffo6#QApos
_of_return_abstract_generatorFJ-Fbw6#&Ffo6#Q2pos_of_return_ExtFJ>86-%+homalg/Ex
tG6(FaqFbq9*Fcq/QTvar_to_assign_proc_to_express_generators_abstractlyFJ.%1abstr
act_cocycleGFM@%Faw>F]w6$F]w/-Fex6#-Fho6#FgvF\y>F]w6$F]wF\y@$Fgw>F]w6$F]w/Q$Ext
FJF]x-%#opG6#-%$mapG6$f*6#F<FJ6$%)operatorG%&arrowGFJ-Fho6#&7#T#6#FbqFJFJ6$FEF]
w7#-%"$G6#;F^o-%%nopsG6#7#F]wFJFJFJFJ,
QAhomalg/YonedaProductOfCocycles.mFJ
M7R0
I2homalg/ZeroModulef*6%'%$varG%%listG%&_zeroG%,RingPackageG6%%#RPG%$narG%%zeroG
6%%fnCopyright~(C)~2004~by~Mohamed~Barakat.~All~rights~reserved.G%'systemG%)rem
emberG6"C&>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F5%*procedureG-%'RET
URNG6#-F56#&F;6#;""",&F=FLF>F=@%2,&FLFLF>FL9#>8&9%>FS-&F56#%%ZeroGF2-%4homalg/P
resentationG6&7#/&F56#%$OneGFS7#Fin9$F5F2F2F2F2,
Q4homalg/ZeroModule.mF2
M7R0
ILhomalg/A2ExtensionModuleFromA2Extension.oldf*6&%*_ext_homsG%-_ext_modulesG%%_
varG%,RingPackageG65%#RPG%$narG%%optsG%$varG%$extG%)ext_homsG%,ext_modulesG%"FG
%&etaMLG%&etaLNG%&etaNLG%"MG%"NG%"LG%#d2G%"AG%"BG%"CG%&etaMNG6#%enCopyright~(C)
~2007~by~Barbara~Bremer.~All~rights~reserved.G6"C2>8$-%1homalg/tablenameG6%9!&9
"6#!""8%@$-%%typeG6$FB%*procedureG-%'RETURNG6#-FB6#&FH6#;""",&FJFYFKFJ@%-FN6$&F
H6#FZ%%listG>8'Fhn-%&ERRORG6#%-Wrong~input!G@%2,&""$FYFKFY9#C%>8(-%:homalg/Norm
alizeExtensionG6$&FH6#;FY,&!"#FYFKFJF\o>8)-%%copyG6#&Fho6#FY>8*-Fdp6#&Fho6#""#C
$>Fbp-Fdp6#9$>Fip-Fdp6#9%>8+-%:homalg/FactorizeExtensionG6&FbpFipF\oFB>8,-%6hom
alg/NormalizeInputG6$-%:homalg/CocycleOfExtensionG6%-%#opG6#&FiqF]qF\oFBFB>8--F
`r6$-Fcr6%-Ffr6#&FiqFgpF\oFBFB>8/-F`r6$&-%:homalg/ResolutionOfModuleG6&&Fhr6#""
&F\o/Q)TRUNCATEF?""!FBFgpFB>80-F`r6$&-Fhs6&&FasFgpF\oF]tFBFgpFB>81-F`r6$&-Fhs6&
&FhrFgpF\oF]tFBFgpFB>82-Fdp6#&&-%5homalg/ResolveModuleG6%F^qFcsF\oFgpF]q>83-&FB
6#%,UnionOfRowsG6$Fit-%/homalg/ZeroMapG6&-%2homalg/FreeModuleG6%,(-&FB6#%-Numbe
rOfRowsG6#FjrFY-Fhv6#FatFY-Fhv6#FitFJF\oFB-Fdv6%-&FB6#%3NumberOfGeneratorsGF_wF
\oFBF\oFB>84-%/homalg/ComposeG6&FauF^rF\oFB>85-F\v6$FjrFat>86-%Chomalg/SolveSys
temWithConstraintsCG6(FjuFgwF\xFauF\oFB@%/F`x%%FAILGFfx-%:homalg/ReduceHomomorp
hismG6&F`xFatF\oFBF?F?F?F?,
QNhomalg/A2ExtensionModuleFromA2Extension.old.mF?
M7R0
I4homalg/CokernelFMapf*6'%'alpha1G%$phiG%&beta1G'%$varG%%listG%,RingPackageG6&%
#RPG%$narG%)optionalG%(functorG6%%fnCopyright~(C)~2004~by~Mohamed~Barakat.~All~
rights~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@
$-%%typeG6$F8%*procedureG-%'RETURNG6#-F86#&F>6#;""",&F@FOFAF@>8&&F>6#;""&FP>8'%
1homalg/CokernelFG-%2homalg/FunctorMapG6)FX7#9$9%7#9&9'FRF8F5F5F5F5,
Q6homalg/CokernelFMap.mF5
M7R0
I0homalg/Cokernelf*6&%"AG%"NG%$varG%,RingPackageG6+%#RPG%$narG%%optsG%$posG%)op
tionalG%#ANG%"GG%%NgenG%5cokernel_target_hullG6%%[oCopyright~(C)~2004-2008~by~M
ohamed~Barakat.~All~rights~reserved.G%'systemG%)rememberG6"C/>8$-%1homalg/table
nameG6%9!&9"6#!""8%@$-%%typeG6$F:%*procedureG-%'RETURNG6#-F:6#&F@6#;""",&FBFQFC
FB@$-FF6$&F@6#FQ%'stringGC$@$/FVQ1RETURN_co_contraF7-FJ6#Q*covariantF7-FJ6#%%NU
LLG@%2,&""#FQFCFQ9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&F@6#;""$FRF:>&Fco6#Q2nu
mber_of_optionsF7""!@$2,&FaoFQF_pFB,&F]pFQFCFQ-FJ6#-%1homalg/CokernelFG6#F@>Fco
-Feo6#-Fho6$&F@6#;""%FRF:>8'F\o@$-%)assignedG6#&Fco6#QIpos_of_var_to_assign_F_t
arget_hullmoduleF7>Ffq6$Ffq/F[rF\o>8(-%#opG6#-%'subsopG6$Ffq7#Faq>8)-%4homalg/S
umRelationsG6&9$9%9&F:@%-FF6$F`s%4homalg_presentationGC$>8*-%@homalg/Generators
OfPresentationG6%F`sQ9BOTH_TYPES_OF_GENERATORSF7F:>8+-%6homalg/NormalizeInputG6
$-%$mapG6$%$rhsGFhsF:C$>Fhs7">F^tF\o@$-Fiq6#&Fco6#QBvar_to_assign_F_target_hull
moduleF7C$>8,-&F:6#%'matrixG6#-F`t6$F[sF:-%'assignG6$F]uFbu-%4homalg/Presentati
onG6'FhsF[sFasFbrF:F7F7F7F7,
Q2homalg/Cokernel.mF7
M7R0
I5homalg/CompleteImSqFf*6'%(_alpha1G%%_phiG%'_beta1G'%$varG%%listG%,RingPackage
G6+%#RPG%$narG%$phiG%*apply_phiG%*normalizeG%*NORMALIZEG%'alpha1G%&beta1G%(ia1C
phiG6#%fnCopyright~(C)~2004~by~Mohamed~Barakat.~All~rights~reserved.G6"C)>8$-%1
homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F;%*procedureG-%'RETURNG6#-F;6#&FA6#
;""",&FCFRFDFC@%-FG6$9%FI>8'FWC$>8&-%6homalg/NormalizeInputG6$FWF;>FYf*6#%"aGF8
6$%)operatorG%&arrowGF8-%/homalg/ComposeG6&9$T#T&T'F8F86(F/FfnF)9'F-F;@%32,&""%
FRFDFR9#-FG6$&FA6#""&FIC&>8(Fbp>8*Fdo>8+-%$mapG6$Fgp9&>8)%%trueGC%>Fip-Fhn6$Fdo
F;>F[qF_q>Faq%&falseG>8,-FY6#Fip@$Faq>F[r-F]q6$Fgp-%%copyG6#F[r-%4homalg/RightD
ivideFG6&F[rF[qFioF;F8F8F8F8,
Q7homalg/CompleteImSqF.mF8
M7R0
I5homalg/CompleteKerSqf*6(%'alpha2G%%_phiG%'_beta2G%#_BG%$varG%,RingPackageG6(%
#RPG%$narG%$phiG%*apply_phiG%&beta2G%(kphiCb2G6#%fnCopyright~(C)~2004~by~Mohame
d~Barakat.~All~rights~reserved.G6"C)>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%t
ypeG6$F7%*procedureG-%'RETURNG6#-F76#&F=6#;""",&F?FNF@F?@$29#,&""&FNF@FN-FG6#-%
6homalg/CompleteKerSqFG6#F=@%-FC6$9%FE>8'FgnC$>8&-%6homalg/NormalizeInputG6$Fgn
F7>Finf*6#%"aGF46$%)operatorG%&arrowGF4-%/homalg/ComposeG6&T#9$T&T'F4F46(F.F\oF
)9(F,F7>8(-F^o6$9&F7>8)-Fin6#Fap-%2homalg/LeftDivideG6'F[pFfp9'F_pF7F4F4F4F4,
Q7homalg/CompleteKerSq.mF4
M7R0
I/homalg/Composef*6&%"AG%"BG'%$varG%%listG%,RingPackageG6%%#RPG%$narG%"vG6#%[oC
opyright~(C)~2004-2005~by~Mohamed~Barakat.~All~rights~reserved.G6"C&>8$-%1homal
g/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F4%*procedureG-%'RETURNG6#-F46#&F:6#;""",
&F<FKF=F<>8&-%8homalg/ResidueClassRingG6$9&F4@%/FN-&F46#%%ZeroG6#FKC$-&F46#%)si
mplifyG6$-%&evalmG6#-%#&*G6$9$9%FR-&F46#%'matrixG6#%"%GC&FenFbo-%:homalg/Reduce
RingElementsG6%FgoFRF4FboF1F1F1F1,
Q1homalg/Compose.mF1
M7R0
I4homalg/Functor_Hom2f*6#%"AG6"6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All~
rights~reserved.G%'systemG%)rememberGF&7&f*6#%"MGF&F&F&-%+homalg/HomG6%T$9$&9"6
#;""#!""F&F&6$F%F3f*6%F.%$phiG%"NGF&F&F&-%/homalg/Hom2MapG6'F2F39%9&&F56#;""%F9
F&F&F:F3f*6#%"PGF&F&F&f*F<F&F&F&-%.homalg/HomMapG6'F3FBFCF2FDF&F&6$FJF3F&F&F&F&
F&F&F&,
Q6homalg/Functor_Hom2.mF&
M7R0
I4homalg/Functor_LHomf*6$%"qG%"BG6"6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~
All~rights~reserved.G%'systemG%)rememberGF'7&f*6#%"MGF'F'F'-%,homalg/LHomG6&T$9
$T&&9"6#;""#!""F'F'6&F%F4F&9%f*6%F/%$phiG%"NGF'F'F'-%/homalg/LHomMapG6(F3F4F=9&
F5&F76#;""%F;F'F'F<F=f*6#%"PGF'F'F'f*F?F'F'F'-%0homalg/LHom2MapG6(F3F5F4F=FEFFF
'F'6&F%F3FLF4F'F'6$F%F4F'F'F'F',
Q6homalg/Functor_LHom.mF'
M7R0
I8homalg/Functor_RHomHom3f*6%%"qG%"AG%"BG6"6%%fnCopyright~(C)~2006~by~Mohamed~B
arakat.~All~rights~reserved.G%'systemG%)rememberGF(7(f*6#%"MGF(F(F(-%/homalg/RH
omHomG6'T$T&T(9$&9"6#;""#!""F(F(6(F%F7F&9%F'9&f*6%F0%$phiG%"NGF(F(F(-%3homalg/R
HomHom3MapG6)F4F5F6F7F?F@&F96#;""%F=F(F(F>F?f*6#%"PGF(F(F(f*FBF(F(F(-%2homalg/R
HomHomMapG6)F4F7F?F@F5F6FHF(F(6(F%F4F'F5FNF7F(F(6&F%F7F'F@F@f*FMF(F(F(f*FBF(F(F
(-%3homalg/RHomHom2MapG6)F4F5F7F?F@F6FHF(F(6(F%F4F&F5FNF7F(F(6&F%F7F&F?F(F(F(F(,
Q:homalg/Functor_RHomHom3.mF(
M7R0
I4homalg/Functor_Tor2f*6$%"qG%"AG6"6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~
All~rights~reserved.G%'systemG%)rememberGF'7&f*6#%"MGF'F'F'-%+homalg/TorG6&T$T&
9$&9"6#;""#!""F'F'6&F%F5F&9%f*6%F/%$phiG%"NGF'F'F'-%/homalg/Tor2MapG6(F3F4F5F=9
&&F76#;""%F;F'F'F<F=f*6#%"PGF'F'F'f*F?F'F'F'-%.homalg/TorMapG6(F3F5F=FEF4FFF'F'
6&F%F3FLF5F'F'6$F%F5F'F'F'F',
Q6homalg/Functor_Tor2.mF'
M7R0
I6homalg/HomHom_ROnSeqsf*6%'%&alphaG<$%&tableG%%listG%%_varG%,RingPackageG6%%#R
PG%$narG%(functorG6%%ioCopyright~(C)~2005~by~Mohamed~Barakat~and~Daniel~Robertz
.~All~rights~reserved.G%'systemG%)rememberG6"C&>8$-%1homalg/tablenameG6%9!&9"6#
!""8%@$-%%typeG6$F7%*procedureG-%'RETURNG6#-F76#&F=6#;""",&F?FNF@F?>8&-%8homalg
/Functor_HomHom_RGF4-%5homalg/FunctorOnSeqsG6$FQ&F=6#;FNF?F4F4F4F4,
Q8homalg/HomHom_ROnSeqs.mF4
M7R0
I0homalg/HomHom_Rf*6%%"MG'%$varG%%listG%,RingPackageG6&%#RPG%$narG%)optionalG%*
cofunctorG6%%^pCopyright~(C)~2005-2006~by~Mohamed~Barakat~and~Daniel~Robertz.~A
ll~rights~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""
8%@$-%%typeG6$F6%*procedureG-%'RETURNG6#-F66#&F<6#;""",&F>FMF?F>>8&&F<6#;""$FN>
8'-%5homalg/Functor_Hom_RGF3-%%evalG6#--%7homalg/ComposeFunctorsG6'FVFV9%FPF66%
9$FjnF6F3F3F3F3,
Q2homalg/HomHom_R.mF3
M7R0
I,homalg/initf*6"6#%*ini_printG6#%ioCopyright~(C)~2004~by~Mohamed~Barakat~and~D
aniel~Robertz.~All~rights~reserved.GF$@$50%3homalg/initializedG.%%trueG32""!9#-
%%typeG6$&9"6#""".%%listGC'>8$f*F$F$F$F$@$0%2_Env_homalg_printG%&falseG-%&print
G6#F7F$F$F$>F,F--%%withG6#%(homalgFG-FI6#%(homalgSG-FI6#%(homalgZGF$6#F,F$F$,
Q.homalg/init.mF$
M7R0
I3homalg/LHomHom3Mapf*6*%"qG%"AG%"BG%"MG%$phiG%"NG'%$varG%%listG%,RingPackageG6
&%#RPG%$narG%)optionalG%(functorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~Al
l~rights~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8
%@$-%%typeG6$F;%*procedureG-%'RETURNG6#-F;6#&FA6#;""",&FCFRFDFC>8&&FA6#;"")FS>8
'f*6#F(F8F8F8-%/homalg/LHomHomG6'T$T&T(9$&FA6#;""#FCF8F86(F%F^oF&9%F'9&-%2homal
g/FunctorMapG6)Fen7#9'9(7#9)9*FUF;F8F8F8F8,
Q5homalg/LHomHom3Map.mF8
M7R0
I;homalg/NatTrKernelToSourcef*6'%"MG%"AG%"NG%$varG%,RingPackageG6%%#RPG%$narG%%
optsG6%%[oCopyright~(C)~2003-2005~by~Mohamed~Barakat.~All~rights~reserved.G%'sy
stemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F5%*proced
ureG-%'RETURNG6#-F56#&F;6#;""",&F=FLF>F=@%2,&""#FLF>FL9#>8&-%%copyG6#-%2homalg/
GetOptionsG6$&F;6#;""$FMF5>&FT6#Q2number_of_optionsF2""!@$2,&FRFLFjnF=,&""%FLF>
FL-FE6#-%2homalg/KernelFEmbG6#F;-%1homalg/KernelEmbGFgoF2F2F2F2,
Q=homalg/NatTrKernelToSource.mF2
M7R0
IAhomalg/RightSatelliteOfCofunctorf*6''%"qG%*nonnegintG'%*cofunctorG%%listG%"AG
'%$varGF*%,RingPackageG68%#RPG%$narG%"pG%%optsG%4readjust_generatorsG%)optional
G%5cofunctor_on_objectsG%2cofunctor_on_mapsG%%dataG%$posG%#muG%"KG%%Pq_1G%%F_st
G%9FK_normalized_generatorsG%$FmuG%#FKG%#RFG%*coker_epiG%#chG%-F_abstractlyG%+a
bstractlyG6#%[oCopyright~(C)~2005-2007~by~Mohamed~Barakat.~All~rights~reserved.
G6"C5>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$FK%*procedureG-%'RETURNG6
#-FK6#&FQ6#;""",&FSF\oFTFS@$-FW6$&FQ6#""$%'stringGC$@*/FaoQ?RETURN_proc_to_indu
ce_morphismFH-Fen6#f*6%%"MG%$phiG%"NG6%%$resG%$dq1G%%_dq1GFHFHC&>FK-%%evalG6#-%
7homalg/ResolutionOfSeqG6),&T$F\oF\oF\o9$9%9&T&Q)TRUNCATEFHT'@%-%4homalg/IsZero
ModuleG6%&&FK6#""#6#F]qFaqFcq>FT-%2homalg/ZeroModuleG6$FaqFcq>FT&&FK6#F\o6#F\q@
%-Ffq6%&&FK6#""&F\rFaqFcq>8&F^r>F^s&&FK6#""%Fer6%-%%copyG6#FT-Ffs6#&&FKFboF\r-F
fs6#F^sFHFH6(F&F^qF-9'F0FK/FaoQKRETURN_FunctorMap_of_the_functor_to_deriveFH-Fe
n6#&F_qFjq/FaoQIRETURN_FunctorMaps_of_a_composed_functorFH-Fen6#%%NULLG/FaoQ;RE
TURN_morphism_on_objectsFHFgt-Fen6#-&F_qFdr6%FaoF_tFK?&F^s7#-%"$G6#;F\o,&-%%nop
sG6#F_q#F\oF[rFSF\o%%trueG@$-FW6$&F_q6#,&F\oF\oF^sF[rFdoC$@*/F`vFho-Fen6#7#f*FH
6#FapFHFHC$>FK-Fgp6#-%5homalg/ResolveModuleG6'F\qFaqT(FbqT)@%-Ffq6%FhqFbwFcw-F_
r6$FbwFcw-Ffs6#FbrFHFH6*F&F^qF+F`qF-F_tF0FK/F`vFat-Fen6#&F_q6#,&F[rF\oF^sF[r/F`
vFftFgt/F`vF[uFgtF\u@$2,&FcsF\oFTF\o9#>8'-Ffs6#-%2homalg/GetOptionsG6$&FQ6#;F\s
F]oFK@$4-%)assignedG6#&Fix6#Q<pos_of_NORMALIZE_GENERATORSFH>8(-F_u6%QCRETURN_pr
oc_to_readjust_generatorsFHF_tFK>8)F_y>8*F_u>8+Fdt>8,-%4homalg/SyzygiesDataG6'F
^qF`qF_tQ)USE_FAILFHFK@%/Ffz%%FAILGC(>8-Fit@$-Fey6#&Fix6#QCvar_to_assign_embedd
ing_generatorsFHC$>F`[l/&Fix6#QJpos_of_var_to_assign_embedding_generatorsFHFit-
%'assignG6$Fd[l7#-&FK6#%%ZeroGFdr@$-Fey6#&Fix6#QBvar_to_assign_F_target_hullmod
uleFHC$>F`[l6$F`[l/&Fix6#QIpos_of_var_to_assign_F_target_hullmoduleFHFit-F^\l6$
Fh\lF`\l@$-Fey6#&Fix6#QTvar_to_assign_proc_to_express_generators_abstractlyFHC$
>F`[l6$F`[l/&Fix6#Qenpos_of_var_to_assign_proc_to_express_generators_abstractly
FHFit-F^\l6$Fg]lf*6#%$etaGFHFHFH""!FHFHFH@$07#F`[l7">F`z-%#opG6#-%'subsopG6$F`[
l7#F`z-Fen6#-Fbz6&-F_r6$F_tFKF_tF`zFKC%>8/&FfzFdr>8.&FfzFjq>80&FfzFbo>83-Fdz6*F
[`lF^`lFa`lF_t/Q3var_to_assign_F_stFH.81/QNvar_to_assign_F_target_unconverted_g
eneratorsFH.82/Qgnvar_to_assign_F_target_proc_to_express_generators_abstractlyF
H.88FK>84&Fj`lFjq/Q9FK_normalized_generatorsFHF^al@$-Fey6#F^al>Fdal-%9homalg/Re
placeGeneratorsG6%FdalF^alFK>85-%0homalg/CokernelG6'Fd`lFdalF_tF`zFK@$-Fey6#&Fi
x6#QBvar_to_assign_connecting_hom_procFHC%>86-%3homalg/CokernelEpiG6&Fd`lFdalF_
tFK>87f*6$Fe^l%#M_GFHFHFH-%3homalg/ComposeMapsG6'-Fcw6'T#F^qF_qFaqFcqT+T-FaqFcq
FHFH6.F;F[`lF-F_tF0FKF7FdzFBF\clFAF`bl-F^\l6$FgblFacl@$Fe]l@$3-Fey6#Fbal-FW6$Fb
alFYC%@$4-Fey6#F\cl>F\clF]cl>89f*Fd^lFHFHFH-F]_l6#-%4homalg/RingNotationG6$-%6h
omalg/NormalizeInputG6$-Ffcl6'7#-Fjcl6#F^qT%FcqT*F[dlF[dlF[dlFHFH6,FDFbalFBF\cl
FAF`blF-F_tF0FK-F^\l6$Fg]lF^el@%3-Fey6#F[z4/F[zFit-%9homalg/ConvertGeneratorsG6
&F`blF[zF`zFKF`blFHFHFHFH,
QChomalg/RightSatelliteOfCofunctor.mFH
M7R0
I.homalg/SubMatf*6&%"AG%"BG'%$varG%%listG%,RingPackageG6%%#RPG%$narG%*minus_one
G6#%fnCopyright~(C)~2004~by~Mohamed~Barakat.~All~rights~reserved.G6"C%>8$-%1hom
alg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F4%*procedureG-%'RETURNG6#-F46#&F:6#;""
",&F<FKF=F<-%.homalg/AddMatG6&9$-%.homalg/MulMatG6&F<9%9&F4FUF4F1F1F1F1,
Q0homalg/SubMat.mF1
M7R0
I4homalg/SyzygiesDataf*6&'%"qG%*nonnegintG%"AG%$varG%,RingPackageG6*%#RPG%$narG
%%optsG%$resG%%rdimG%#muG%"KG%%Pq_1G6%%fnCopyright~(C)~2007~by~Mohamed~Barakat.
~All~rights~reserved.G%'systemG%)rememberG6"C*>8$-%1homalg/tablenameG6%9!&9"6#!
""8%@$-%%typeG6$F;%*procedureG-%'RETURNG6#-F;6#&FA6#;""",&FCFRFDFC@$2,&""$FRFDF
R9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&FA6#;""%FSF;>8'-%:homalg/ResolutionOfMo
duleG6&9%9&/Q)TRUNCATEF89$F;>8(-%.homalg/ResDimG6$F`oF;@)2,&-%%nopsG6#FjoFRFCFR
Fho@%-%)assignedG6#&FZ6#Q0pos_of_USE_FAILF8-FK6#%%FAILG-FK6#7%7#&F;6#%$OneG-&F;
6#%'matrixG6#7#-&F;6#%%ZeroG6#FRFaq/Fap,&FhoFRFRFR@%-%4homalg/IsZeroModuleG6%&F
`oF_rFeoF;C$>8)7#-F\r6#&FjoF_r>8*FfrC$>FirFfr>F_sFjr/Fho""!C$>Fir-Ffq6#7#-%"$G6
$F[r&FjoFB>F_sFfrC$>Fir&F`o6#""#>F_sFfr@%Fcs>8+-%2homalg/ZeroModuleG6$FeoF;>Fgt
-%2homalg/FreeModuleG6%&Fjo6#,$FhoFCFeoF;7%-Ffn6#F_s-Ffn6#FirFgtF8F8F8F8,
Q6homalg/SyzygiesData.mF8
M7R0
I8homalg/TensorProductMapf*6(%"MG%$phiG%"NG%"LG'%$varG%%listG%,RingPackageG6&%#
RPG%$narG%)optionalG%(functorG6%%fnCopyright~(C)~2005~by~Mohamed~Barakat.~All~r
ights~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$
-%%typeG6$F9%*procedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA>8&&F?6#;""'FQ>8'f*
6#F%F6F6F6-%5homalg/TensorProductG6%9$T$&F?6#;""#FAF6F66$F(9'-%2homalg/FunctorM
apG6)FY7#Fin9%7#9&9(FSF9F6F6F6F6,
Q:homalg/TensorProductMap.mF6
M7R0
I5homalg/TensorProductf*6&%#_MG%#_NG'%$varG%%listG%,RingPackageG60%#RPG%$narG%$
idNG%$idMG%%optsG%"MG%"NG%#l0G%$_l0G%#M1G%#N1G%"GG%#MNG%3tensor_target_hullG6#%
[oCopyright~(C)~2005-2006~by~Mohamed~Barakat.~All~rights~reserved.G6"C1>8$-%1ho
malg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F?%*procedureG-%'RETURNG6#-F?6#&FE6#;"
"",&FGFVFHFG@$-FK6$&FE6#FV%'stringGC$@(/FenQCRETURN_ignore_embedding_generators
F<-FO6#%%trueG/FenQ;RETURN_morphism_on_objectsF<C$>8&-%3homalg/IdentityMapG6%9%
9&F?-FO6#f*6#%$phiGF<6$%)operatorG%&arrowGF<-%4homalg/KroneckerMatG6&9$T#T&T'F<
F<6(F.FcoF(FhoF,F?/FenQ1RETURN_co_contraF<-FO6#Q*covariantF<-FO6#%%NULLG@$-FK6$
&FE6#""#FgnC$@(/FdqF[oF\o/FdqF`oC$>8'-Feo6%FdpFhoF?-FO6#f*F\pF<F^pF<-Fbp6&FepFd
pFfpFgpF<F<6(F/F]rF(FhoF,F?/FdqFjpF[qF^q@$2,&""$FVFHFV9#>8(-%%copyG6#-%2homalg/
GetOptionsG6$&FE6#;""%FWF?>8)-%6homalg/NormalizeInputG6$FdpF?>8*-F[t6$FgoF?>8+-
&F?6#%3NumberOfGeneratorsG6#Fis>8,-Fdt6#F^t>8--Fbp6&Fis-Feo6%FitFhoF?FhoF?>8.-F
bp6&-Feo6%FbtFhoF?F^tFhoF?>8/-%$mapG6$f*6#%"aGF<F^pF</FdpFdpF<F<F<-%7homalg/Std
BasisVectorsG6$*&FbtFVFitFVF?>80-%4homalg/SumRelationsG6&F]uFcuFhoF?@$-%)assign
edG6#&F]s6#QBvar_to_assign_F_target_hullmoduleF<C$>81-&F?6#%'matrixG6#-F[t6$Ffv
F?-%'assignG6$F^wFcw-%4homalg/PresentationG6&FiuFfvFhoF?F<F<F<F<,
Q7homalg/TensorProduct.mF<
M7R0
I;homalg/BasisOfColumnsCoefff*6&%"MG'%$varG%%listG%"VG%,RingPackageG6&%#RPG%$na
rG%"UG%"BG6%%fnCopyright~(C)~2008~by~Mohamed~Barakat.~All~rights~reserved.G%'sy
stemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F7%*proced
ureG-%'RETURNG6#-F76#&F=6#;""",&F?FNF@F?>8'-%6homalg/NormalizeInputG6$-%2homalg
/BasisCoeffG6&-%2homalg/InvolutionG6%9$9%F7Ffn8&F7F7-%'assignG6$9&-FY6%FgnFfnF7
-FY6%FQFfnF7F4F4F4F4,
Q=homalg/BasisOfColumnsCoeff.mF4
M7R0
IAhomalg/DecideZeroRowsEffectivelyf*6'%"AG%"BG'%$varG%%listG%"UG%,RingPackageG6
$%#RPG%$narG6%%fnCopyright~(C)~2008~by~Mohamed~Barakat.~All~rights~reserved.G%'
systemG%)rememberG6"C%>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F6%*proc
edureG-%'RETURNG6#-F66#&F<6#;""",&F>FMF?F>-&F66#%'matrixG6#-%6homalg/NormalizeI
nputG6$-%3homalg/ReduceCoeffG6#F<F6F3F3F3F3,
QChomalg/DecideZeroRowsEffectively.mF3
M7R0
I-homalgA/initf*6"F$6#%ioCopyright~(C)~2004~by~Mohamed~Barakat~and~Daniel~Rober
tz.~All~rights~reserved.GF$-%,homalg/initG6#9"F$F$F$F$,
Q/homalgA/init.mF$
M7R0
I;homalg/CocycleOfExtension1f*6)%"NG%&alphaG%"EG%%betaG%"MG%$varG%,RingPackageG
6,%#RPG%$narG%%dataG%#d1G%#P0G%&sigmaG%$etaG%$resG%1abstract_cocycleG%$extG6%%i
oCopyright~(C)~2007~by~Mohamed~Barakat~and~Barbara~Bremer.~All~rights~reserved.
G%'systemG%)rememberG6"C.>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F>%*p
rocedureG-%'RETURNG6#-F>6#&FD6#;""",&FFFUFGFF>8&-%4homalg/SyzygiesDataG6&FU9(9)
F>>8'&FX6#""#>8(&FX6#""$>8)-%3homalg/LeftinverseG6'9&9'FfnFgnQ)NO_CHECKF;>8*-%4
homalg/CompleteImSqG6)FinFco9$9%FgoFgnF>>8+%%NULLG@$5-%)assignedG6#&%%optsG6#QA
pos_of_return_abstract_generatorF;-Fgp6#&Fjp6#Q2pos_of_return_ExtF;>8--%+homalg
/ExtG6(FUFfnF_pFgn/QTvar_to_assign_proc_to_express_generators_abstractlyF;.8,F>
@%Ffp>Fbp6$Fbp/-Fjq6#-%%copyG6#F[pFar>Fbp6$FbpFar@$F]q>Fbp6$-Fbr6#Fbp/Q$ExtF;Fc
q-%#opG6#-%$mapG6$f*6#%"iGF;6$%)operatorG%&arrowGF;-Fbr6#&7#T#6#F_pF;F;6$F4Fbp7
#-%"$G6#;FU-%%nopsG6#7#FbpF;F;F;F;,
Q=homalg/CocycleOfExtension1.mF;
M7R0
I/homalg/Coimagef*6'%#_MG%#_AG%#_NG%%_varG%,RingPackageG6)%#RPG%$narG%%optsG%"M
G%"AG%"NG%$varG6%%[oCopyright~(C)~2006-2007~by~Mohamed~Barakat.~All~rights~rese
rved.G%'systemG%)rememberG6"C(>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$
F9%*procedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA@%2,&""#FPFBFP9#>8&-%%copyG6#
-%2homalg/GetOptionsG6$&F?6#;""$FQF9>&FX6#Q2number_of_optionsF6""!@$2,&FVFPF^oF
A,&F\oFPFBFP-FI6#-%0homalg/CoimageFG6#F?@%/FdoFeoC%>8(9$>8)9%>8*9&C&>8'F`p>F_pF
cp>FbpFfp>Fep9'@%-%)assignedG6#Fip-%0homalg/CokernelG6&-%2homalg/SyzygiesOpG6&F
_pFbpFepF9FipFepF9-%1homalg/CokernelFG6%FeqFepF9F6F6F6F6,
Q1homalg/Coimage.mF6
M7R0
I1homalg/EqualMapsf*6'%#_AG%#_BG%"MG%$varG%,RingPackageG6(%#RPG%$narG%%optsG%"A
G%"BG%)optionalG6%%[oCopyright~(C)~2004-2007~by~Mohamed~Barakat.~All~rights~res
erved.G%'systemG%)rememberG6"C*>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6
$F8%*procedureG-%'RETURNG6#-F86#&F>6#;""",&F@FOFAF@@%2,&""$FOFAFO9#>8&-%%copyG6
#-%2homalg/GetOptionsG6$&F>6#;""%FPF8>&FW6#Q2number_of_optionsF5""!@$2,&FUFOF]o
F@,&F[oFOFAFO-FH6#-%2homalg/EqualMapsFG6#F>>8'-%6homalg/NormalizeInputG6$9$F8>8
(-F]p6$9%F8>8)&F>6#;""&FP-%1homalg/IsZeroMapG6'-%.homalg/SubMatG6&F[pFap9'F89&F
aqFfpF8F5F5F5F5,
Q3homalg/EqualMaps.mF5
M7R0
I4homalg/Functor_Extqf*6$%"qG%"BG6"6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~
All~rights~reserved.G%'systemG%)rememberGF'7&f*6#%"MGF'F'F'-%,homalg/ExtqG6&T$9
$T&&9"6#;""#!""F'F'6&F%F4F&9%f*6%F/%$phiG%"NGF'F'F'-%/homalg/ExtqMapG6(F3F4F=9&
F5&F76#;""%F;F'F'F<F=f*6#%"PGF'F'F'f*F?F'F'F'-%0homalg/Extq2MapG6(F3F5F4F=FEFFF
'F'6&F%F3FLF4F'F'6$F%F4F'F'F'F',
Q6homalg/Functor_Extq.mF'
M7R0
I8homalg/Functor_LHomHom2f*6%%"qG%"AG%"BG6"6%%fnCopyright~(C)~2006~by~Mohamed~B
arakat.~All~rights~reserved.G%'systemG%)rememberGF(7(f*6#%"MGF(F(F(-%/homalg/LH
omHomG6'T$T&9$T(&9"6#;""#!""F(F(6(F%F6F&9%F'9&f*6%F0%$phiG%"NGF(F(F(-%3homalg/L
HomHom2MapG6)F4F5F6F?F@F7&F96#;""%F=F(F(F>F?f*6#%"PGF(F(F(f*FBF(F(F(-%2homalg/L
HomHomMapG6)F4F6F?F@F5F7FHF(F(6(F%F4FNF6F'F5F(F(6&F%F6F'F@F@f*FMF(F(F(f*FBF(F(F
(-%3homalg/LHomHom3MapG6)F4F5F7F6F?F@FHF(F(6(F%F4F&F5FNF6F(F(6&F%F6F&F?F(F(F(F(,
Q:homalg/Functor_LHomHom2.mF(
M7R0
I2homalg/FunctorMapf*6(%(FunctorG%"MG%$phiG%"NG'%$varG%%listG%,RingPackageG68%#
RPG%$narG%%optsG%"oG%)optionalG%,functormapsG%&F2_stG%&F2MapG%*co_contraG%*COVA
RIANTG%'sourceG%'targetG%)F_sourceG%)F_targetG%>F_source_embedding_generatorsG%
>F_target_embedding_generatorsG%.F_target_hullG%5normalize_generatorsG%%F_stG%(
phi_indG%+functormapG%/phi_on_objectsG6%%[oCopyright~(C)~2004-2006~by~Mohamed~B
arakat.~All~rights~reserved.G%'systemG%)rememberG6"CG>8$-%1homalg/tablenameG6%9
!&9"6#!""8%@$-%%typeG6$FK%*procedureG-%'RETURNG6#-FK6#&FQ6#;""",&FSF\oFTFS@$2,&
""&F\oFTF\o9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&FQ6#;""'F]oFK>8'%%NULLG@$-%)a
ssignedG6#&Fdo6#Q0pos_of_F_sourceFH>F`p6$F`pFfp@$-Fdp6#&Fdo6#QEpos_of_F_source_
embedding_generatorsFH>F`p6$F`pF^q@$-Fdp6#&Fdo6#Q0pos_of_F_targetFH>F`p6$F`pFfq
@$-Fdp6#&Fdo6#QEpos_of_F_target_embedding_generatorsFH>F`p6$F`pF^r@$-Fdp6#&Fdo6
#Q;pos_of_F_target_hullmoduleFH>F`p6$F`pFfr>8(-%#opG6#-%'subsopG6$-F^s6#-%$mapG
6$f*6#%"aGFH6$%)operatorG%&arrowGFH/9$FapFHFHFH7#F`p7#F[p/Q(FunctorFHF_t/Fct-%%
evalG6#F_t>8)-F_t6%QIRETURN_FunctorMaps_of_a_composed_functorFH9(FK@$0FitFap@%3
-FW6$Fit-F+6#FY/-%%nopsG6#Fit""#C&/Q,functormapsFHFit/F]v-Ffs6$FftFit>8+-&Fit6#
Fju6(-F^s6#9%9&-F^s6#9'F]u/Q3var_to_assign_F_stFH8*FK-Fen6#-&Fit6#F\o6(&F`wFewF
bv&F`wFevF]uF\sFK-%&ERRORG6$%epI~expect~a~list~of~two~procedures~implementing~f
unctors~on~morphisms~or~NULL,~but~receivedGFit@$-Fdp6#&Fdo6#Q:pos_of_var_to_ass
ign_F_stFH>F`p6$F`pF`x@$-Fdp6#&Fdo6#QUpos_of_var_to_assign_F_source_unconverted
_generatorsFH>F`p6$F`pFhx@$-Fdp6#&Fdo6#QUpos_of_var_to_assign_F_target_unconver
ted_generatorsFH>F`p6$F`pF`y@$-Fdp6#&Fdo6#Q^opos_of_var_to_assign_F_target_proc
_to_express_generators_abstractlyFH>F`p6$F`pFhy>F\s-F^s6#-Fas6$-F^s6#-Ffs6$f*Fi
sFHF[tFHF^tFHFHFHF`tFat>8,-F_t6%Q1RETURN_co_contraFHF]uFK@'/FhzFap-Fjw6%%,The~f
unctorGF_t%at~cannot~tell~me~if~it~is~co-~or~contravariant.~This~is~an~indicati
on,~that~it~is~not~a~fully~featured~functor~yet:~i.e.~cannot~be~derived~or~comp
osed!G2""!-%+searchtextG6$Q'contraFHFhz>8-%&falseG>Fi[l%%trueG@%Fi[lC$>8.Fgv>8/
F[wC$>F`\lF[w>Fb\lFgv@$4-Fdp6#&Fdo6#QNvar_to_assign_F_source_unconverted_genera
torsFH>Fj\lFap@$4-Fdp6#&Fdo6#QNvar_to_assign_F_target_unconverted_generatorsFH>
Fb]lFap@$4-Fdp6#&Fdo6#Qgnvar_to_assign_F_target_proc_to_express_generators_abst
ractlyFH>Fj]lFap@$34-Fdp6#&Fdo6#Q>F_source_embedding_generatorsFH/-F_t6%QCRETUR
N_ignore_embedding_generatorsFHF]uFKF\\l>Fc^lFap@$34-Fdp6#&Fdo6#Q>F_target_embe
dding_generatorsFHFf^l>F`_lFap@%3-Fdp6#&Fdo6#Q)F_sourceFHFa^l>80Fh_l>F\`l-F_t6'
F`\lF]u/QEvar_to_assign_unconverted_generatorsFHFj\l/QCvar_to_assign_embedding_
generatorsFH.82FK@'-Fdp6#Fe`l/Fe^lFe`lFa^l>Fe`lFc^l>Fe`lFap@%33-Fdp6#&Fdo6#Q)F_
targetFH-Fdp6#&Fdo6#Q4F_target_hullmoduleFHF^_l>81Faal>Fjal-F_t6)Fb\lF]u/Fa`lFb
]l/QTvar_to_assign_proc_to_express_generators_abstractlyFHFj]l/Fc`l.83/QBvar_to
_assign_F_target_hullmoduleFH.84FK@'-Fdp6#Fcbl/Fb_l-FfoFjblF^_l>FcblF`_l>FcblFa
p@'-Fdp6#FgblC$/Q.F_target_hullFHFgbl/Fdcl-FfoFaclFdalC$>FgblFfalFecl>Fgbl7">85
-F_t6%QDRETURN_proc_to_normalize_generatorsFHF]uFK@$-Fdp6#&Fdo6#F_wC%>867$F\`lF
jal@$3-Fdp6#&Fdo6#Q<pos_of_NORMALIZE_GENERATORSFH0F\dlFap>Fgdl-Ffs6&%9homalg/Co
nvertGeneratorsGFgdlF\dlFK-%'assignG6$FcdlFgdl>87-F_t6%Q?RETURN_proc_to_induce_
morphismFHF]uFK@%0FielFapC&>88-F_t6%QKRETURN_FunctorMap_of_the_functor_to_deriv
eFHF]uFK@$5/FaflFap4-FW6$FaflFY-Fjw6$%apI~expect~a~procedure~implementing~the~f
unctor~to~be~derived~on~morphisms,~but~receivedGFafl>F\dlFap@'-FW6$FielFYC$>Fie
l-Fiel6%FgvFjvF[w>89-Fafl6&FielF]uF\sFK3-FW6$FielFdu/-Fhu6#FielF\oC$>Fiel-&Fiel
FewFH>Fggl--FaflF_hl6(FgvFjvF[wF]uF\sFK-Fjw6$%_pI~expect~a~procedure~(or~a~list
~of~one~procedure)~to~induce~a~morphism,~but~receivedGFielC$>Fggl-F_t6%Q;RETURN
_morphism_on_objectsFHF]uFK@%/FgglFap>FgglFjv>Fggl-Fft6#-Fggl6#Fjv-%3homalg/OnM
orphismsG6+F\`lFgglFjalFgblF]uFi`l/Fb_lFcbl/Q5normalize_generatorsFHF\dlFKFHFHF
HFH,
Q4homalg/FunctorMap.mFH
M7R0
I7homalg/GetUnitPositionf*6&%#_MG%)pos_listG'%$varG%%listG%,RingPackageG6)%#RPG
%$narG%"MG%"mG%"nG%"iG%"jG6#%[oCopyright~(C)~2004-2007~by~Mohamed~Barakat.~All~
rights~reserved.G6"C)>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F8%*proce
dureG-%'RETURNG6#-F86#&F>6#;""",&F@FOFAF@>8&-%6homalg/NormalizeInputG6$9$F8>8'-
&F86#%3NumberOfGeneratorsG6#FR>8(-&F86#%-NumberOfRowsGFgn?(8)FOFOFin%%trueG?(8*
FOFOFXF`o@$345-%'memberG6$7$F_oFbo9%-Fho6$FboF[p0-%6homalg/InverseElementG6%&FR
6$F_oFbo9&F8%%FAILG-FH6#Fjo%%NULLGF5F5F5F5,
Q9homalg/GetUnitPosition.mF5
M7R0
I3homalg/HomHomMap_Rf*6'%"MG%$phiG%"NG'%$varG%%listG%,RingPackageG6&%#RPG%$narG
%)optionalG%(functorG6%%ioCopyright~(C)~2005~by~Mohamed~Barakat~and~Daniel~Robe
rtz.~All~rights~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9
"6#!""8%@$-%%typeG6$F8%*procedureG-%'RETURNG6#-F86#&F>6#;""",&F@FOFAF@>8&&F>6#;
""&FP>8'%0homalg/HomHom_RG-%2homalg/FunctorMapG6)FX7#9$9%7#9&9'FRF8F5F5F5F5,
Q5homalg/HomHomMap_R.mF5
M7R0
I4homalg/HomHomOnSeqsf*6'%"AG%"BG'%&alphaG<$%&tableG%%listG%%_varG%,RingPackage
G6%%#RPG%$narG%(functorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All~rights~
reserved.G%'systemG%)rememberG6"C&>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typ
eG6$F9%*procedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA>8&-%6homalg/Functor_HomH
omG6$9$9%-%5homalg/FunctorOnSeqsG6$FS&F?6#;""$FAF6F6F6F6,
Q6homalg/HomHomOnSeqs.mF6
M7R0
I1homalg/HomOnSeqsf*6&%"LG'%&alphaG<$%&tableG%%listG%%_varG%,RingPackageG6%%#RP
G%$narG%*cofunctorG6%%fnCopyright~(C)~2004~by~Mohamed~Barakat.~All~rights~reser
ved.G%'systemG%)rememberG6"C&>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F
8%*procedureG-%'RETURNG6#-F86#&F>6#;""",&F@FOFAF@>8&-%3homalg/Functor_HomG6#9$-
%7homalg/CofunctorOnSeqsG6$FR&F>6#;""#F@F5F5F5F5,
Q3homalg/HomOnSeqs.mF5
M7R0
I1homalg/ImageFEpif*6%%#_AG'%$varG%%listG%,RingPackageG6*%#RPG%$narG%%optsG%"AG
%)optionalG%#imG%5image_embedding_infoG%$epiG6%%fnCopyright~(C)~2007~by~Mohamed
~Barakat.~All~rights~reserved.G%'systemG%)rememberG6"C,>8$-%1homalg/tablenameG6
%9!&9"6#!""8%@$-%%typeG6$F:%*procedureG-%'RETURNG6#-F:6#&F@6#;""",&FBFQFCFB@$2,
&""#FQFCFQ9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&F@6#;""$FRF:>8(Fjn>8'-%6homalg
/NormalizeInputG6$9$F:>8)-%.homalg/ImageFG6'Fao9%/Q=var_to_assign_embedding_inf
oF7.8*F_oF:@$-%)assignedG6#&FY6#Q@var_to_assign_functor_on_objectF7-%'assignG6$
FdpFgo/Q5image_embedding_infoF7-Fen6#F_p>8+-%4homalg/RightDivideFG6&FaoF\qF[pF:
-%:homalg/ReduceHomomorphismG6&F_qFgoF[pF:F7F7F7F7,
Q3homalg/ImageFEpi.mF7
M7R0
I3homalg/IsFreeBasisf*6%%#_MG'%$varG%%listG%,RingPackageG6&%#RPG%$narG%%optsG%"
MG6%%[oCopyright~(C)~2005-2007~by~Mohamed~Barakat.~All~rights~reserved.G%'syste
mG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F6%*procedure
G-%'RETURNG6#-F66#&F<6#;""",&F>FMF?F>@$2,&""#FMF?FM9#>8&-%%copyG6#-%2homalg/Get
OptionsG6$&F<6#;""$FNF6>8'-%6homalg/NormalizeInputG6$9$F6@'/F[o7#-&F66#%%ZeroG6
#-&F66#%3NumberOfGeneratorsG6#F[o%%trueG-%)assignedG6#&FU6#Q/pos_of_VERBOSEF3F[
o%&falseGF3F3F3F3,
Q5homalg/IsFreeBasis.mF3
M7R0
I.homalg/Kernelf*6'%"MG%"AG%"NG%$varG%,RingPackageG6+%#RPG%$narG%%optsG%$posG%)
optionalG%%MrelG%%MgenG%3kernel_target_hullG%%iotaG6%%[oCopyright~(C)~2003-2008
~by~Mohamed~Barakat.~All~rights~reserved.G%'systemG%)rememberG6"C0>8$-%1homalg/
tablenameG6%9!&9"6#!""8%@$-%%typeG6$F;%*procedureG-%'RETURNG6#-F;6#&FA6#;""",&F
CFRFDFC@$-FG6$&FA6#FR%'stringGC$@$/FWQ1RETURN_co_contraF8-FK6#Q*covariantF8-FK6
#%%NULLG@%2,&""#FRFDFR9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&FA6#;""$FSF;>&Fdo6
#Q2number_of_optionsF8""!@$2,&FboFRF`pFC,&""%FRFDFR-FK6#-%/homalg/KernelFG6#FA>
Fdo-Ffo6#-Fio6$&FA6#;""&FSF;>8'F]o@$-%)assignedG6#&Fdo6#QIpos_of_var_to_assign_
F_target_hullmoduleF8>Fhq6$Fhq/F]rF]o>8(-%#opG6#-%'subsopG6$Fhq7#Fcq>8)-%6homal
g/NormalizeInputG6$9$F;@%-FG6$Fas%4homalg_presentationG>8*-%@homalg/GeneratorsO
fPresentationGF`s>FgsF]o@$-F[r6#&Fdo6#QBvar_to_assign_F_target_hullmoduleF8C$>8
+-&F;6#%'matrixG6#F]s-%'assignG6$F^tFct>8,-%2homalg/SyzygiesOpG6&9%9&9'F;-%7hom
alg/SubfactorModuleG6(F]uF]sFcu/Q4original_generatorsF8FgsFdrF;F8F8F8F8,
Q0homalg/Kernel.mF8
M7R0
I3homalg/Leftinversef*6'%#_MG%#_AG%#_LG%%_varG%,RingPackageG6/%#RPG%$narG%%opts
G%"AG%"LG%"nG%"MG%$varG%"mG%#IdG%)NO_CHECKG%"sG%#AIG6#%fnCopyright~(C)~2007~by~
Mohamed~Barakat.~All~rights~reserved.G6"C0>8$-%1homalg/tablenameG6%9!&9"6#!""8%
@$-%%typeG6$F=%*procedureG-%'RETURNG6#-F=6#&FC6#;""",&FEFTFFFE@%2,&""#FTFFFT9#>
8&-%%copyG6#-%2homalg/GetOptionsG6$&FC6#;""$FUF=>&Ffn6#Q2number_of_optionsF:""!
@$2,&FZFTFboFE,&F`oFTFFFT-FM6#-%4homalg/LeftinverseFG6#FC@%2Fho,&""%FTFFFTC'>8'
-%6homalg/NormalizeInputG6$&FC6#FTF=>8(-Fgp6$&FC6#FYF=>8)-&F=6#%-NumberOfRowsG6
#Fep>8*7#-&F=6#%%ZeroG6#Fbq>8+&FC6#F`oC&>Fep-Fgp6$9%F=>F\q-Fgp6$9&F=>Fiq-Fgp6$9
$F=>Far9'>8,-&F=6#%3NumberOfGeneratorsGFgq>8--%7homalg/StdBasisVectorsG6$FdsF=@
$30F\q7"0-Ffs6#F\qFds-%&ERRORG6#%]oThe~second~and~third~argument~have~different
~numbers~of~'columns'!G@%-%)assignedG6#&Ffn6#Q0pos_of_NO_CHECKF:>8.%%trueG>Fau%
&falseG>8/-%3homalg/RightDivideG6(FjsFepF\qFarQ)USE_FAILF:F=@$/Ffu%%FAILG-FM6#F
]v>Ffu-%:homalg/ReduceHomomorphismG6&FfuFiqFarF=@$45Fau-%-homalg/IsHomG6'F\qFfu
FiqFarF=@%F`p-Fft6#%cjlhomalg~succeeded~to~compute~a~"left~inverse"~neglecting~
the~relations~of~the~target~of~the~given~map,~and~it~turned~out~that~this~"left
~inverse"~is~not~a~module~homomorphism~if~one~takes~into~account~these~relation
s~and~assumes~the~omitted~source~to~be~free.~So~homalg~cannot~decide~if~there~e
xists~a~left~inverse~(i.e.~a~split)~or~not!~If~the~source~of~the~given~map~is~n
ot~free~it~might~help~to~specify~it~as~a~first~argument.~In~case~your~ring~is~c
ommutative~you~can~use~the~slow~LeftinverseC~instead.G-Fft6#%\clhomalg~succeede
d~to~compute~a~"left~inverse"~neglecting~the~relations~of~the~source~and~the~ta
rget~of~the~given~map,~and~it~turned~out~that~this~"left~inverse"~is~not~a~modu
le~homomorphism~if~one~takes~into~account~these~relations.~So~homalg~cannot~dec
ide~if~there~exists~a~left~inverse~(i.e.~a~split)~or~not!~In~case~your~ring~is~
commutative~you~can~use~the~slow~LeftinverseC~instead.G-Fhn6#FfuF:F:F:F:,
Q5homalg/Leftinverse.mF:
M7R0
I=homalg/NatTrTargetToCokernelf*6&%"AG%"NG%$varG%,RingPackageG6%%#RPG%$narG%%op
tsG6%%[oCopyright~(C)~2004-2005~by~Mohamed~Barakat.~All~rights~reserved.G%'syst
emG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F4%*procedur
eG-%'RETURNG6#-F46#&F:6#;""",&F<FKF=F<@%2,&""#FKF=FK9#>8&-%%copyG6#-%2homalg/Ge
tOptionsG6$&F:6#;""$FLF4>&FS6#Q2number_of_optionsF1""!@$2,&FQFKFinF<,&FgnFKF=FK
-FD6#-%4homalg/CokernelFEpiG6#F:-%3homalg/CokernelEpiGFeoF1F1F1F1,
Q?homalg/NatTrTargetToCokernel.mF1
M7R0
I5homalg/SingleNonZerof*6#'%"LG%%listG6(%#RPG%$narG%"lG%"zG%"iG%"jG6#%fnCopyrig
ht~(C)~2006~by~Mohamed~Barakat.~All~rights~reserved.G6"C(>8$-%1homalg/tablename
G6%9!&9"6#!""8%@$-%%typeG6$F4%*procedureG-%'RETURNG6#-F46#&F:6#;""",&F<FKF=F<@%
32,&FKFKF=FK9#-F@6$&F:6#""#%'posintG>8&FT>FY-%%nopsG6#9$>8'-&F46#%%ZeroGF1?&8(7
#-%"$G6#;FKFY%%trueG@$0&Fhn6#F`oFjnC$?&8)7#-Fco6#;,&F`oFKFKFKFYFfo@$0&Fhn6#F]pF
jn-FD6#""!-FDFjoFipF1F1F1F1,
Q7homalg/SingleNonZero.mF1
M7R0
I7homalg/Template_homalgf*6&%&alphaG%#_MG'%$varG%%listG%,RingPackageG6&%#RPG%$n
arG%%optsG%"MG6#%ioCopyright~(C)~2007~by~Mohamed~Barakat~and~Daniel~Robertz.~Al
l~rights~reserved.G6"C(>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F5%*pro
cedureG-%'RETURNG6#-F56#&F;6#;""",&F=FLF>F=@%2,&""#FLF>FL9#>8&-%%copyG6#-%2homa
lg/GetOptionsG6$&F;6#;""$FMF5>&FT6#Q2number_of_optionsF2""!@$2,&FRFLFjnF=,&FhnF
LF>FL-FE6#-%8homalg/Template_homalgFG6#F;>8'-%6homalg/NormalizeInputG6$9%F5@%-%
)assignedG6#&FT6#Q5pos_of_USE_function1F2-%1homalg/function1G6%Fho9&F5-%1homalg
/function2GFfpF2F2F2F2,
Q9homalg/Template_homalg.mF2
M7R0
I+homalg/Torf*6''%"qG%*nonnegintG%"AG%"BG'%$varG%%listG%,RingPackageG6&%#RPG%$n
arG%)optionalG%(functorG6%%[oCopyright~(C)~2005-2006~by~Mohamed~Barakat.~All~ri
ghts~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-
%%typeG6$F:%*procedureG-%'RETURNG6#-F:6#&F@6#;""",&FBFQFCFB>8&&F@6#;""&FR>8'-%=
homalg/Functor_TensorProductG6#9&-%>homalg/LeftSatelliteOfFunctorG6(9$FZ9%9'FTF
:F7F7F7F7,
Q-homalg/Tor.mF7
M7R0
I;homalg/TorsionSubmoduleMapf*6'%"MG%$phiG%"NG'%$varG%%listG%,RingPackageG6&%#R
PG%$narG%)optionalG%(functorG6%%[oCopyright~(C)~2003-2004~by~Mohamed~Barakat.~A
ll~rights~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""
8%@$-%%typeG6$F8%*procedureG-%'RETURNG6#-F86#&F>6#;""",&F@FOFAF@>8&&F>6#;""&FP>
8'%8homalg/TorsionSubmoduleG-%2homalg/FunctorMapG6)FX7#9$9%7#9&9'FRF8F5F5F5F5,
Q=homalg/TorsionSubmoduleMap.mF5
M7R0
I>homalg/TorsionSubmoduleOnSeqsf*6%'%&alphaG<$%&tableG%%listG%%_varG%,RingPacka
geG6%%#RPG%$narG%(functorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All~right
s~reserved.G%'systemG%)rememberG6"C&>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%t
ypeG6$F7%*procedureG-%'RETURNG6#-F76#&F=6#;""",&F?FNF@F?>8&-%@homalg/Functor_To
rsionSubmoduleGF4-%5homalg/FunctorOnSeqsG6$FQ&F=6#;FNF?F4F4F4F4,
Q@homalg/TorsionSubmoduleOnSeqs.mF4
M7R0
I5homalg/compute_kappaf*6)%#_MG%&etaMNG%#_NG%&etaNLG%#_LG%$varG%,RingPackageG6)
%#RPG%$narG%"LG%"MG%$syzG%"BG%"AG6#%ioCopyright~(C)~2008~by~Mohamed~Barakat~and
~Barbara~Bremer.~All~rights~reserved.G6"C*>8$-%1homalg/tablenameG6%9!&9"6#!""8%
@$-%%typeG6$F9%*procedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA>8&-%6homalg/Norm
alizeInputG6$&-%:homalg/ResolutionOfModuleG6&9(9)/Q)TRUNCATEF6""!F96#FPF9>8'-FU
6$&-FY6&9$FfnFgnF9FjnF9>8(-%%copyG6#&&-%5homalg/ResolveModuleG6%""#F\oFfnFjn6#F
]p>8)-%/homalg/ComposeG6&Fdo-%Qhomalg/AModuleForATwoExtensionFromTwoOneCocycles
G6#F?FfnF9>8*-Fbp6&9'FdoFfnF9-%3homalg/RightDivideG6'F`p-%2homalg/InvolutionG6%
FhpFfnF9FSFfnF9F6F6F6F6,
Q7homalg/compute_kappa.mF6
M7R0
I8homalg/BasisOfRowsCoefff*6&%"MG'%$varG%%listG%"UG%,RingPackageG6$%#RPG%$narG6
%%fnCopyright~(C)~2008~by~Mohamed~Barakat.~All~rights~reserved.G%'systemG%)reme
mberG6"C%>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F5%*procedureG-%'RETU
RNG6#-F56#&F;6#;""",&F=FLF>F=-&F56#%'matrixG6#-%6homalg/NormalizeInputG6$-%2hom
alg/BasisCoeffG6#F;F5F2F2F2F2,
Q:homalg/BasisOfRowsCoeff.mF2
M7R0
I(homalgZ=6"%&falseGE\[l!F$,
Q*homalgZ.mF$
M7R0
I6homalg/CompleteKerSqFf*6'%'alpha2G%%_phiG%'_beta2G'%$varG%%listG%,RingPackage
G6(%#RPG%$narG%$phiG%*apply_phiG%&beta2G%(kphiCb2G6#%fnCopyright~(C)~2004~by~Mo
hamed~Barakat.~All~rights~reserved.G6"C(>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$
-%%typeG6$F8%*procedureG-%'RETURNG6#-F86#&F>6#;""",&F@FOFAF@@%-FD6$9%FF>8'FTC$>
8&-%6homalg/NormalizeInputG6$FTF8>FVf*6#%"aGF56$%)operatorG%&arrowGF5-%/homalg/
ComposeG6&T#9$T&T'F5F56(F/FYF)9'F-F8>8(-Fen6$9&F8>8)-F_o6&FYFhoFfoF8-%3homalg/L
eftDivideFG6&FboF]pFfoF8F5F5F5F5,
Q8homalg/CompleteKerSqF.mF5
M7R0
I4homalg/CompleteSeqFf*6'%%rhoAG%&alphaG%%rhoBG%$varG%,RingPackageG6)%#RPG%$nar
G%#aiG%"mG%#biG%$seqG%"iG6%%fnCopyright~(C)~2005~by~Mohamed~Barakat.~All~rights
~reserved.G%'systemG%)rememberG6"C,>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%ty
peG6$F9%*procedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA@%-FE6$9$%%listG>8&7#-%"
$G6#;FP-%%nopsG6#FU>FX-%%sortG6#-%$mapG6$%$lhsG-%#opG6#-%%evalGFjn>8'-Fin6#FX@%
-FE6$9&FV>8(7#-Fen6#;FP-Fin6#F_p>Fap-F]o6#-F`o6$Fbo-Fdo6#-FgoFgp@$0Fio-Fin6#Fap
-%&ERRORG6#%_oThe~number~of~entries~of~the~first~and~third~argument~must~coinci
de!G>8)-%&tableGF6>&FiqF@-%%copyG6#9%?&8*7#-Fen6#;""!,&FioFPFAFP%%trueG>&Fiq6#F
cr-%5homalg/CompleteImSqFG6'-F_r6#&FU6#&FX6#,&FPFPFcrFP-F_r6#&Fiq6#,&FcrFPFAFP-
F_r6#&F_p6#&FapFfs9'F9-F_r6#FiqF6F6F6F6,
Q6homalg/CompleteSeqF.mF6
M7R0
I3homalg/ComposeMapsf*6'%#_AG%#_BG%#_MG%$varG%,RingPackageG6)%#RPG%$narG%%optsG
%"AG%"BG%"CG%"MG6#%fnCopyright~(C)~2007~by~Mohamed~Barakat.~All~rights~reserved
.G6"C,>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F7%*procedureG-%'RETURNG
6#-F76#&F=6#;""",&F?FNF@F?@%2,&""$FNF@FN9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&
F=6#;""%FOF7>&FV6#Q2number_of_optionsF4""!@$2,&FTFNF\oF?,&FjnFNF@FN-FG6#-%/homa
lg/ComposeG6%-%6homalg/NormalizeInputG6$&F=6#FNF7-Fjo6$&F=6#""#F7&F=6#;FSF?>8'-
Fjo6$9$F7>8(-Fjo6$9%F7>8*-Fjo6$9&F7>8)-Fgo6&FgpF\q9'F7>Faq-%5homalg/BasisOfModu
leG6%FaqFiqF7-%:homalg/ReduceHomomorphismG6&FfqFaqFiqF7F4F4F4F4,
Q5homalg/ComposeMaps.mF4
M7R0
I7homalg/Functor_HomHom3f*6$%"AG%"BG6"6%%fnCopyright~(C)~2006~by~Mohamed~Baraka
t.~All~rights~reserved.G%'systemG%)rememberGF'7(f*6#%"MGF'F'F'-%.homalg/HomHomG
6&T$T&9$&9"6#;""#!""F'F'6&F%F5F&9%f*6%F/%$phiG%"NGF'F'F'-%2homalg/HomHom3MapG6(
F3F4F5F=9&&F76#;""%F;F'F'F<F5f*6#%"PGF'F'F'f*F?F'F'F'-%1homalg/HomHomMapG6(F5F=
FEF3F4FFF'F'6&F&F3FLF5F'F'6$F&F=F=f*FKF'F'F'f*F?F'F'F'-%2homalg/HomHom2MapG6(F3
F5F=FEF4FFF'F'6&F%F3FLF5F'F'6$F%F5F'F'F'F',
Q9homalg/Functor_HomHom3.mF'
M7R0
I8homalg/ImageOfSubmodulef*6'%#_AG%#_BG%#_MG%$varG%,RingPackageG6)%#RPG%$narG%%
optsG%"AG%"BG%"CG%"MG6#%fnCopyright~(C)~2007~by~Mohamed~Barakat.~All~rights~res
erved.G6"C->8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F7%*procedureG-%'RE
TURNG6#-F76#&F=6#;""",&F?FNF@F?@%2,&""$FNF@FN9#>8&-%%copyG6#-%2homalg/GetOption
sG6$&F=6#;""%FOF7>&FV6#Q2number_of_optionsF4""!@$2,&FTFNF\oF?,&FjnFNF@FN-FG6#-%
9homalg/ImageOfSubmoduleFG6#F=>8'-%6homalg/NormalizeInputG6$9$F7>8(-F\p6$9%F7>8
*-F\p6$9&F7>8)-%/homalg/ComposeG6&FjoF`p9'F7>Fep-%5homalg/BasisOfModuleG6%FepF^
qF7-%.homalg/ReduceG6&FjpFepF^qF7-%4homalg/RingNotationG6$%"%GF7F4F4F4F4,
Q:homalg/ImageOfSubmodule.mF4
M7R0
I7homalg/IsStablyFreeFFRf*6%%"PG%$varG%,RingPackageG6%%#RPG%$narG%"pG6#%fnCopyr
ight~(C)~2007~by~Mohamed~Barakat.~All~rights~reserved.G6"C&>8$-%1homalg/tablena
meG6%9!&9"6#!""8%@$-%%typeG6$F1%*procedureG-%'RETURNG6#-F16#&F76#;""",&F9FHF:F9
>8&-%>homalg/ProjectiveDimensionFFRG6#F7@%/FK""!%%trueG%&falseGF.F.F.F.,
Q9homalg/IsStablyFreeFFR.mF.
M7R0
I4homalg/KroneckerMatf*6&%#_AG%#_BG%$varG%,RingPackageG6)%#RPG%$narG%"AG%"BG%"r
G%"cG%"ZG6#%fnCopyright~(C)~2003~by~Mohamed~Barakat.~All~rights~reserved.G6"C*>
8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F6%*procedureG-%'RETURNG6#-F66#
&F<6#;""",&F>FMF?F>>8&-%6homalg/NormalizeInputG6$9$F6>8'-FR6$9%F6>8(-&F66#%-Num
berOfRowsG6#FP>8)-&F66#%3NumberOfGeneratorsGFjn>8*-&F66#%'matrixG6#7#-%"$G6$-&F
66#%%ZeroG6#-F^o6#FV-FgnFbp-Fdo6#-&%'linalgG6#%,blockmatrixG6%FenF\o-%$mapG6$f*
6#%"aGF3F3F3C$-%.homalg/MulMatG6&FTT#T&T'@%/%"%G-&FhqF^pF3T)F[rF3F36*F-FVF'9&F*
F6F0Fbo-F]q6$%#opG-%(convertG6$FP%)listlistGF3F3F3F3,
Q6homalg/KroneckerMat.mF3
M7R0
I/homalg/LHomMapf*6)%"qG%"MG%$phiG%"NG%"LG'%$varG%%listG%,RingPackageG6&%#RPG%$
narG%)optionalG%*cofunctorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All~righ
ts~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%
typeG6$F:%*procedureG-%'RETURNG6#-F:6#&F@6#;""",&FBFQFCFB>8&&F@6#;""(FR>8'f*6#F
&F7F7F7-%,homalg/LHomG6&T$9$T&&F@6#;""#FBF7F76&F%F[oF)9(-%2homalg/FunctorMapG6)
FZ7#9%9&7#9'9)FTF:F7F7F7F7,
Q1homalg/LHomMap.mF7
M7R0
I3homalg/OnMorphismsf*6('%#FMG%4homalg_presentationG%$phiG'%#FNGF'%4F_target_hu
llmoduleG'%$varG%%listG%,RingPackageG6'%#RPG%$narG%%optsG%8FM_generators_to_act
_onG%8FN_generators_to_act_onG6%%[oCopyright~(C)~2004-2005~by~Mohamed~Barakat.~
All~rights~reserved.G%'systemG%)rememberG6"C)>8$-%1homalg/tablenameG6%9!&9"6#!"
"8%@$-%%typeG6$F=%*procedureG-%'RETURNG6#-F=6#&FC6#;""",&FEFTFFFE@$2,&""&FTFFFT
9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&FC6#;""'FUF=@$4-%)assignedG6#&Ffn6#Q5nor
malize_generatorsF:>Ffo%%NULLG@%-Fdo6#&Ffn6#Q>F_source_embedding_generatorsF:>8
'F^p>Fbp-%@homalg/GeneratorsOfPresentationG6$9$F=@%-Fdo6#&Ffn6#Q>F_target_embed
ding_generatorsF:>8(F[q>F_q-Fep6$9&F=@%-Fdo6#&Ffn6#Q/pos_of_inverseF:-%7homalg/
CompleteImSqInvG6*FgpFbp9%F_q9'9(FfoF=-%4homalg/CompleteImSqG6*FbpF]rFcqF_qF^rF
_rFfoF=F:F:F:F:,
Q5homalg/OnMorphisms.mF:
M7R0
I:homalg/ReduceRingElementsf*6%%#_MG'%%_varG%%listG%,RingPackageG6(%#RPG%$narG%
"MG%$varG%"vG%(remprocG6%%[oCopyright~(C)~2004-2006~by~Mohamed~Barakat.~All~rig
hts~reserved.G%'systemG%)rememberG6"C)>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%
%typeG6$F8%*procedureG-%'RETURNG6#-F86#&F>6#;""",&F@FOFAF@>8&-%6homalg/Normaliz
eInputG6$9$F8>8'-%5homalg/NormalizeRingG6$9%F8>8(-%8homalg/ResidueClassRingG6$F
XF8@)/Fhn-&F86#%%ZeroG6#FO-FH6#FR-FD6$FhnFF>8)Fhn-%)assignedG6#&F86#%$REMG>Fhof
*6#%"aGF5F5F5-&T'F]p6%FV&T#Fbo&T%FboF5F56(F/FhnF.FXF+F8>Fhof*FapF5F5F5-%.homalg
/ReduceG6&FVFhpFipFepF5F5F[q-%$mapG6$FhoFRF5F5F5F5,
Q<homalg/ReduceRingElements.mF5
M7R0
I5homalg/RHomHomOnSeqsf*6(%"qG%"AG%"BG'%&alphaG<$%&tableG%%listG%%_varG%,RingPa
ckageG6%%#RPG%$narG%(functorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All~ri
ghts~reserved.G%'systemG%)rememberG6"C&>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-
%%typeG6$F:%*procedureG-%'RETURNG6#-F:6#&F@6#;""",&FBFQFCFB>8&-%7homalg/Functor
_RHomHomG6%9$9%9&-%5homalg/FunctorOnSeqsG6$FT&F@6#;""%FBF7F7F7F7,
Q7homalg/RHomHomOnSeqs.mF7
M7R0
I2homalg/SyzygiesOpf*6&%"AG%"NG%$varG%,RingPackageG6$%#RPG%$narG6%%[oCopyright~
(C)~2003-2006~by~Mohamed~Barakat.~All~rights~reserved.G%'systemG%)rememberG6"C&
>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F3%*procedureG-%'RETURNG6#-F36
#&F96#;""",&F;FJF<F;@$29#,&""$FJF<FJ-FC6#-%3homalg/SyzygiesOpFG6#F9&-%:homalg/R
esolutionOfModuleG6)9$9&/Q)TRUNCATEF0FJ/Q+LOWERBOUNDF0FJ/Q*GEOMETRICF0%%trueG/Q
0TARGETRELATIONSF09%F36#FJF0F0F0F0,
Q4homalg/SyzygiesOp.mF0
M7R0
I2homalg/Tor2OnSeqsf*6'%"qG%"LG'%&alphaG<$%&tableG%%listG%%_varG%,RingPackageG6
%%#RPG%$narG%(functorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All~rights~re
served.G%'systemG%)rememberG6"C&>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG
6$F9%*procedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA>8&-%4homalg/Functor_Tor2G6
$9$9%-%5homalg/FunctorOnSeqsG6$FS&F?6#;""$FAF6F6F6F6,
Q4homalg/Tor2OnSeqs.mF6
M7R0
I3homalg/Torq2OnSeqsf*6'%"qG%"LG'%&alphaG<$%&tableG%%listG%%_varG%,RingPackageG
6%%#RPG%$narG%(functorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All~rights~r
eserved.G%'systemG%)rememberG6"C&>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%type
G6$F9%*procedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA>8&-%5homalg/Functor_Torq2
G6$9$9%-%5homalg/FunctorOnSeqsG6$FS&F?6#;""$FAF6F6F6F6,
Q5homalg/Torq2OnSeqs.mF6
M7R0
I;homalg/TorsionSubmoduleEmbf*6%%"MG%$varG%,RingPackageG6'%#RPG%$narG%%optsG%$t
orG%7torsion_embedding_infoG6%%[oCopyright~(C)~2003-2005~by~Mohamed~Barakat.~Al
l~rights~reserved.G%'systemG%)rememberG6"C(>8$-%1homalg/tablenameG6%9!&9"6#!""8
%@$-%%typeG6$F5%*procedureG-%'RETURNG6#-F56#&F;6#;""",&F=FLF>F=@$2,&""#FLF>FL9#
>8&-%%copyG6#-%2homalg/GetOptionsG6$&F;6#;""$FMF5>8'-%8homalg/TorsionSubmoduleG
6&9$9%/Q=var_to_assign_embedding_infoF2.8(F5@$-%)assignedG6#&FT6#Q@var_to_assig
n_functor_on_objectF2-%'assignG6$FhoFjn-FV6#FcoF2F2F2F2,
Q=homalg/TorsionSubmoduleEmb.mF2
M7R0
I=homalg/ConvertColumnToMatrixf*6'%"MG%"rG%"cG'%$varG%%listG%,RingPackageG6%%#R
PG%$narG%(entriesG6#%fnCopyright~(C)~2008~by~Mohamed~Barakat.~All~rights~reserv
ed.G6"C&>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F5%*procedureG-%'RETUR
NG6#-F56#&F;6#;""",&F=FLF>F=>8&-%$mapG6$%#opG-%6homalg/NormalizeInputG6$9$F5-&F
56#%+matrixtypeG6%9%9&FOF2F2F2F2,
Q?homalg/ConvertColumnToMatrix.mF2
M7R0
I4homalg/CheckComplexf*6%'%(complexG%%listG'%$varGF'%,RingPackageG6&%#RPG%$narG
%"lG%"jG6#%fnCopyright~(C)~2004~by~Mohamed~Barakat.~All~rights~reserved.G6"C(>8
$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F5%*procedureG-%'RETURNG6#-F56#&
F;6#;""",&F=FLF>F=@$/9$7"-FE6#FQ>8&-%%nopsG6#FP7#-%"$G6#;FL-%%iquoG6$,&FUFL!"#F
L""#-%$mapG6$f*6#%"iGF26$%)operatorG%&arrowGF2-%8homalg/CheckCompositionG6%-%$s
eqG6$&T$6#,(FPF]oFLFLT%F=/Fap7%F=FLF]oT(T)F2F26*F&FPF/8'F)9%F,F5%"%GF2F2F2F2,
Q6homalg/CheckComplex.mF2
M7R0
I;homalg/CokernelOfExtensionf*6"6'%#RPG%$narG%%optsG%$extG%"iG6#%enCopyright~(C
)~2007~by~Barbara~Bremer.~All~rights~reserved.GF$C%>8$-%1homalg/tablenameG6%9!&
9"6#!""8%@$-%%typeG6$F/%*procedureG-%'RETURNG6#-F/6#&F56#;""",&F7FFF8F7@&/9#FFC
%>8'-%%copyG6#&F56#FF?(8(FFFF,&-%%nopsG6#FM#FF""#FYFF%%trueG>&FM6#,&FTFZF7FF-%)
CokernelG6$Fgn%$varG-FOFX/FJFZC%>FM-FO6#&F56#FZ?&FT-%(indicesGFXFen>&FM6#-%#opG
6#FT-F[o6$FjoF]o6$FNF^oF$F$F$F$,
Q=homalg/CokernelOfExtension.mF$
M7R0
I8homalg/CompleteImSqInvFf*6'%(_alpha1G%%_phiG%'_beta1G'%$varG%%listG%,RingPack
ageG6+%#RPG%$narG%$phiG%*apply_phiG%*normalizeG%*NORMALIZEG%'alpha1G%&beta1G%(i
a1CphiG6#%fnCopyright~(C)~2004~by~Mohamed~Barakat.~All~rights~reserved.G6"C)>8$
-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F;%*procedureG-%'RETURNG6#-F;6#&F
A6#;""",&FCFRFDFC@%-FG6$9%FI>8'FWC$>8&-%6homalg/NormalizeInputG6$FWF;>FYf*6#%"a
GF86$%)operatorG%&arrowGF8-%/homalg/ComposeG6&9$T#T&T'F8F86(F/FfnF)9'F-F;@%32,&
""%FRFDFR9#-FG6$&FA6#""&FIC&>8(Fbp>8*Fdo>8+-%$mapG6$Fgp9&>8)%%trueGC%>Fip-Fhn6$
FdoF;>F[qF_q>Faq%&falseG>8,-FY6#Fip@$Faq>F[r-F]q6$Fgp-%%copyG6#F[r-%4homalg/Rig
htDivideFG6&F[qF[rFioF;F8F8F8F8,
Q:homalg/CompleteImSqInvF.mF8
M7R0
I3homalg/Ext_ROnSeqsf*6&%"qG'%&alphaG<$%&tableG%%listG%%_varG%,RingPackageG6%%#
RPG%$narG%*cofunctorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All~rights~res
erved.G%'systemG%)rememberG6"C&>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6
$F8%*procedureG-%'RETURNG6#-F86#&F>6#;""",&F@FOFAF@>8&-%5homalg/Functor_Ext_RG6
#9$-%7homalg/CofunctorOnSeqsG6$FR&F>6#;""#F@F5F5F5F5,
Q5homalg/Ext_ROnSeqs.mF5
M7R0
I6homalg/Functor_HomHomf*6$%"AG%"BG6"6%%fnCopyright~(C)~2006~by~Mohamed~Barakat
.~All~rights~reserved.G%'systemG%)rememberGF'7(f*6#%"MGF'F'F'-%.homalg/HomHomG6
&9$T$T&&9"6#;""#!""F'F'6&F%F3F&9%f*6%F/%$phiG%"NGF'F'F'-%1homalg/HomHomMapG6(F3
F=9&F4F5&F76#;""%F;F'F'F<F3f*6#%"PGF'F'F'f*F?F'F'F'-%2homalg/HomHom2MapG6(F4F3F
=FEF5FFF'F'6&FLF3F&F4F'F'6$F&F=F=f*FKF'F'F'f*F?F'F'F'-%2homalg/HomHom3MapG6(F4F
5F3F=FEFFF'F'6&FLF3F%F4F'F'6$F%F3F'F'F'F',
Q8homalg/Functor_HomHom.mF'
M7R0
I5homalg/Functor_LHom2f*6$%"qG%"AG6"6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.
~All~rights~reserved.G%'systemG%)rememberGF'7&f*6#%"MGF'F'F'-%,homalg/LHomG6&T$
T&9$&9"6#;""#!""F'F'6&F%F5F&9%f*6%F/%$phiG%"NGF'F'F'-%0homalg/LHom2MapG6(F3F4F5
F=9&&F76#;""%F;F'F'F<F=f*6#%"PGF'F'F'f*F?F'F'F'-%/homalg/LHomMapG6(F3F5F=FEF4FF
F'F'6&F%F3FLF5F'F'6$F%F5F'F'F'F',
Q7homalg/Functor_LHom2.mF'
M7R0
I9homalg/Functor_LHomHom_Rf*6#%"qG6"6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.
~All~rights~reserved.G%'systemG%)rememberGF&7$f*6#%"MGF&F&F&-%1homalg/LHomHom_R
G6%T$9$&9"6#;""#!""F&F&6$F%F3f*6%F.%$phiG%"NGF&F&F&-%4homalg/LHomHomMap_RG6'F2F
39%9&&F56#;""%F9F&F&F:F&F&F&F&,
Q;homalg/Functor_LHomHom_R.mF&
M7R0
I2homalg/GetOptionsf*6#%,RingPackageG6(%#RPG%$narG%"oG%$optG%"iG%$strG6%%fnCopy
right~(C)~2005~by~Mohamed~Barakat.~All~rights~reserved.G%'systemG%)rememberG6"C
'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F4%*procedureG-%'RETURNG6#-F4
6#&F:6#;""",&F<FKF=F<>&8'6#Q2number_of_optionsF1""!?(8(FKFK,&9#FKF=F<%%trueG@,3
3-F@6$&F:6#FT%"=G-F@6$-%$lhsG6#Fgn%'stringG2FR-%+searchtextG6$Q'var_toF1F\oC&>8
)F\o@$0-%$rhsGF^o%%NULLG@%3-F@6$Fjo<$%(indexedG%'symbolG4-F@6$Fjo<$FB%&tableG>&
FO6#FgoFjo-%&ERRORG6&%SExpecting~the~right~hand~side~of~the~option~numberGFT%Bt
o~be~of~type~symbol~but~receivedG-%%copyG6#Fjo>&FO6#-%$catG6$Q(pos_of_F1FgoFT>F
N,&FNFKFKFK-F@6$FgnF_oC%>FgoFgn>FeqFT>FNF\r3Fen/F\oQ4readjust_generatorsF1C%@$F
io@%-F@6$FjoFB>&FO6#FerFjo-F]q6&F_qFT%Eto~be~of~type~procedure~but~receivedGFaq
>&FO6#Q;pos_of_readjust_generatorsF1FT>FNF\r3Fen/F\oQ5normalize_generatorsF1C%@
$Fio@%Fir>&FO6#FhsFjoF^s>&FO6#Q<pos_of_normalize_generatorsF1FT>FNF\rFZC&>FgoF\
o@$Fio>FjpFjo>FeqFT>FNF\r-FD6#-Fbq6#FOF1F1F1F1,
Q4homalg/GetOptions.mF1
M7R0
I2homalg/HomHom3Mapf*6)%"AG%"BG%"MG%$phiG%"NG'%$varG%%listG%,RingPackageG6&%#RP
G%$narG%)optionalG%(functorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All~rig
hts~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%
%typeG6$F:%*procedureG-%'RETURNG6#-F:6#&F@6#;""",&FBFQFCFB>8&&F@6#;""(FR>8'f*6#
F'F7F7F7-%.homalg/HomHomG6&T$T&9$&F@6#;""#FBF7F76&F%F\oF&9%-%2homalg/FunctorMap
G6)FZ7#9&9'7#9(9)FTF:F7F7F7F7,
Q4homalg/HomHom3Map.mF7
M7R0
I/homalg/Hom.oldf*6&%#_MG%#_NG'%$varG%%listG%,RingPackageG63%#RPG%$narG%"MG%"NG
%"lG%%optsG%4readjust_generatorsG%"oG%)optionalG%"pG%#l0G%#l1G%$_l0G%%HP0NG%%HP
1NG%&alphaG%$kerG6#%[oCopyright~(C)~2003-2006~by~Mohamed~Barakat.~All~rights~re
served.G6"C3>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$FB%*procedureG-%'R
ETURNG6#-FB6#&FH6#;""",&FJFYFKFJ@$-FN6$&FH6#FY%'stringGC$@,/FhnQCRETURN_ignore_
embedding_generatorsF?-FR6#%%trueG/FhnQ;RETURN_morphism_on_objectsF?-FR6#f*6#%$
phiGF?6$%)operatorG%&arrowGF?f*6#%"aGF?FioF?-%$mapG6$f*6#%"bGF?FioF?-%/homalg/C
omposeG6&T$9$T&T'F?F?6(FhoFhpF(FjpF,F[qFipF?F?6(FhoFipF(FhpF,T%F?F?6&F(9&F,FB/F
hnQDRETURN_proc_to_normalize_generatorsF?-FR6#f*F]pF?FioF?-F`p6$%#opG-%(convert
G6$Fip%)listlistGF?F?F?/FhnQCRETURN_proc_to_readjust_generatorsF?C%>8'-%6homalg
/NormalizeInputG6$9%FB>8(-&FB6#%3NumberOfGeneratorsG6#Far-FR6#f*FcpF?FioF?-&F^q
6#%'matrixG6#-F`p6$f*F]pF?FioF?&Fhp6#;,&*&FipFYF^qFYFYFYFY*&F^qFY,&FipFYFYFYFYF
?F?6&FdpFipF0T#7#-%"$G6#;""!,&*&-%%nopsG6#FipFYF`tFJFYFJFYF?F?6&F0FgrF,FB/FhnQ1
RETURN_co_contraF?-FR6#Q.contravariantF?-FR6#%%NULLG@$-FN6$&FH6#""#FjnC$@,/FhuF
^oF_o/FhuFco-FR6#f*FgoF?FioF?f*F]pF?FioF?-F`p6$f*FcpF?FioF?-Ffp6&FipFhpFjpF[qF?
F?F\qFipF?F?F]qF?F?F_q/FhuFbq-FR6#f*F]pF?FioF?FfqF?F?F?/FhuF^rC%>8&-Fcr6$FipFB>
Fgr-Fir6#F_w-FR6#f*FcpF?FioF?-Fas6#-F`p6$f*F]pF?FioF?&Fhp6#;,&*(-Fjt6#FhpFYF^qF
JFipFYFYFYFY*(FbxFYF^qFJF^tFYF?F?F_t7#-Fct6#;Fft,&F`tFYFJFYF?F?F\u/FhuF^u-FR6#Q
*covariantF?Fbu@$2,&""$FYFKFY9#>8)-%%copyG6#-%2homalg/GetOptionsG6$&FH6#;""%FZF
B@%4-%)assignedG6#&Fdy6#Q<pos_of_NORMALIZE_GENERATORSF?C%>8*f*FcpF?FioF?-Fas6#-
F`p6$f*F]pF?FioF?FhsF?F?6&FdpFipF8F`tFatF?F?6&F880F,FB>8+Fby>8,F[zC$>Fd[lFdz>Ff
[l-Fhq6#-%'subsopG6$/Fd[lFdu7#F[z@$-Fbz6#&Fdy6#QJpos_of_var_to_assign_embedding
_generatorsF?C$>8-Fd\l@%2Fi\lFd[l>Ff[l-Fhq6#-F]\l6$/Fi\lFdu7#Ff[l>Ff[l-Fhq6#-F]
\l6$/,&Fi\lFYFJFYFduFb]l>F_wF`w>FarFbr>8.Fcw>8/-&FB6#%-NumberOfRowsGFdw>Fb[lFhr
>81-%/homalg/DiagMatG6$-Fct6$FarF]^lFB>82-Fh^l6$-Fct6$FarF_^lFB>83-%2homalg/Inv
olutionG6%-%4homalg/KroneckerMatG6&F_w-%3homalg/IdentityMapG6%Fb[lF`qFBF`qFBF`q
FB>84-%.homalg/KernelG6(Ff^lFc_lF]_lF`qFf[lFB@%-Fbz6#Fiz-%9homalg/ConvertGenera
torsG6&F^`lFizFf[lFBF^`lF?F?F?F?,
Q1homalg/Hom.old.mF?
M7R0
I4homalg/IsSurjectivef*6&%"AG%"NG%$varG%,RingPackageG6&%#RPG%$narG%%optsG%&coke
rG6#%[oCopyright~(C)~2003-2006~by~Mohamed~Barakat.~All~rights~reserved.G6"C(>8$
-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F3%*procedureG-%'RETURNG6#-F36#&F
96#;""",&F;FJF<F;@%2,&""#FJF<FJ9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&F96#;""$F
KF3>&FR6#Q2number_of_optionsF0""!@$2,&FPFJFhnF;,&FfnFJF<FJ-FC6#-%5homalg/IsSurj
ectiveFG6#F9>8'-%0homalg/CokernelGFdo-%4homalg/IsZeroModuleG6%Ffo9&F3F0F0F0F0,
Q6homalg/IsSurjective.mF0
M7R0
I5homalg/LECS2conAiBjCf*6$%%LECSG%,RingPackageG6(%#RPG%$narG%$LHSG%$EtaG%"iG%'c
onhomG6#%fnCopyright~(C)~2004~by~Mohamed~Barakat.~All~rights~reserved.G6"C+>8$-
%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F3%*procedureG-%'RETURNG6#-F36#&F9
6#;""",&F;FJF<F;>8&-%$mapG6$%$lhsG-%#opG6#-%%evalG6#9$>8'-%&tableGF0?&8(7'.%"AG
.%%iotaG.%"BG.%#nuG.%"CG%%trueGC%-%'selectG6%%$hasGFMFhn-%%sortG6#-FO6$f*6#%"aG
F06$%)operatorG%&arrowGF0-FS6$7$""!FJFXF0F0F0%"%G>&FZ6#Fhn-FO6$f*F`pF0FbpF0-%%c
opyG6#&T$6#&-Fgo6%Fio-Fgo6%FioT%T'FX6#FJF0F06(F%FXF*FMF,FhnFip-Fgo6%FioFM.%&del
taG-F[p6#-FO6$f*F`pF0FbpF0-FS6$FJFXF0F0F0Fip>8)-FO6$f*F`pF0FbpF0-Faq6#&Fdq6#&-F
go6%Fio-Fgo6%FioF[rFarFXF]rF0F06&F%FXF*FMFip-FO6$Faq7(F[s&FZ6#Fjn&FZ6#F\o&FZ6#F
^o&FZ6#F`o&FZ6#FboF0F0F0F0,
Q7homalg/LECS2conAiBjC.mF0
M7R0
I1homalg/LECS2lecsf*6$%%LECSG%,RingPackageG6)%#RPG%$narG%)conAiBjCG%"nG%"iG%"jG
%%lecsG6#%fnCopyright~(C)~2004~by~Mohamed~Barakat.~All~rights~reserved.G6"C(>8$
-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F4%*procedureG-%'RETURNG6#-F46#&F
:6#;""",&F<FKF=F<>8&-%5homalg/LECS2conAiBjCG6#F:>8'-%%nopsG6#&FNF;>8*-%$seqG6$-
Fen6$-%%copyG6#&FN6$,$8(F<8)/F_o;FK""'/F`o;FK,&FSFKF<FK7$FY-Fen6$-Fjn6#&FN6$F^o
FS/F_o;FK""&F1F1F1F1,
Q3homalg/LECS2lecs.mF1
M7R0
I@homalg/NatTrTwoTargetsToPushoutf*6(%'alpha1G%#AAG%$psiG%#B_G%$varG%,RingPacka
geG6%%#RPG%$narG%%optsG6%%fnCopyright~(C)~2007~by~Mohamed~Barakat.~All~rights~r
eserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%type
G6$F6%*procedureG-%'RETURNG6#-F66#&F<6#;""",&F>FMF?F>@%2,&""$FMF?FM9#>8&-%%copy
G6#-%2homalg/GetOptionsG6$&F<6#;""%FNF6>&FU6#Q2number_of_optionsF3""!@$2,&FSFMF
[oF>,&""&FMF?FM-FF6#-%:homalg/PushoutPairOfMapsFG6#F<-%9homalg/PushoutPairOfMap
sGFhoF3F3F3F3,
QBhomalg/NatTrTwoTargetsToPushout.mF3
M7R0
I;homalg/PullbackPairOfMapsFf*6&%%_phiG%&beta1G%$varG%,RingPackageG6)%#RPG%$nar
G%%optsG%$phiG%"aG%#pbG%$embG6%%[oCopyright~(C)~2004-2007~by~Mohamed~Barakat.~A
ll~rights~reserved.G%'systemG%)rememberG6"C+>8$-%1homalg/tablenameG6%9!&9"6#!""
8%@$-%%typeG6$F8%*procedureG-%'RETURNG6#-F86#&F>6#;""",&F@FOFAF@@$2,&""$FOFAFO9
#>8&-%%copyG6#-%2homalg/GetOptionsG6$&F>6#;""%FPF8>8'-%6homalg/NormalizeInputG6
$9$F8>8(-&F86#%-NumberOfRowsG6#F]o>8)-%1homalg/PullbackFG6&Fao9%9&F8@$-%)assign
edG6#&FW6#Q@var_to_assign_functor_on_objectF5-%'assignG6$Fdp%#poG>8*-%;homalg/E
mbedInFactorModuleG6$FjoF86$-&F86#%'matrixG6#-&F86#%/CertainColumnsG6$F\q7#;FOF
co-Fbq6#-Fgq6$F\q7#;,&FcoFOFOFOF@F5F5F5F5,
Q=homalg/PullbackPairOfMapsF.mF5
M7R0
I<homalg/ResolveShortExactSeqf*6*'%"qG%*nonnegintG%#A_G%'alpha1G%"AG%'alpha2G%#
_AG%$varG%,RingPackageG6=%#RPG%$narG%#K_G%&K_embG%'K_projG%#P_G%%rho_G%&KiotaG%
%iotaG%"KG%%KembG%&KprojG%"PG%$rhoG%$KnuG%#nuG%#_KG%&_KembG%'_KprojG%#_PG%%_rho
G%)pullbackG%%PembG%"rG%"iG%._Ktarget_hullG%-Ktarget_hullG6#%[oCopyright~(C)~20
04-2005~by~Mohamed~Barakat.~All~rights~reserved.G6"CG>8$-%1homalg/tablenameG6%9
!&9"6#!""8%@$-%%typeG6$FP%*procedureG-%'RETURNG6#-FP6#&FV6#;""",&FXFaoFYFX@$29#
,&""(FaoFYFao-Fjn6#-%=homalg/ResolveShortExactSeqFG6#FV>8&-%&tableGFM>8'F_p>8(F
_p>8)F_p>8*F_p>8+F_p>8,F_p>8-F_p>8.F_p>8/F_p>80F_p>81F_p>82F_p>83F_p>84F_p>85F_
p>86F_p>87F_p>88F_p>89F_p>8:F_p>&F\r6#""!-%6homalg/NormalizeInputG6$9)FP>&F^rF[
s-%3homalg/IdentityMapG6%Fjr9*FP>&FhqF[s-&FP6#%'matrixG6#-F^s6$9(FP>&F^qF[s-F^s
6$9'FP>8;-&FP6#%3NumberOfGeneratorsG6$FbtFP>&F`qF[s-Fds6%FgtFfsFP>&FjpF[s-Fjs6#
-F^s6$9&FP>&F^pF[s-F^s6$9%FP>&FbpF[s-Fds6%FiuFfsFP@%32FfoFeo-Ffn6$&FV6#Fbo%'str
ingGC'>&FbrFW-%2homalg/ZeroModuleG6$FfsFP>&FdqFWF\w>&FfpFWF\w>&FjqFW-%/homalg/Z
eroMapG6&F`wF[wFfsFP>&F\qFW-Ffw6&FbwF`wFfsFPC'@%-Ffn6$F`s%4homalg_presentationG
>F[wF`s>F[w-%0homalg/CokernelGFes@%-Ffn6$FetF`x>F`wFet>F`w-Fdx6%FbtFfsFP@%F^x>F
bwF\v>Fbw-FdxF`v>Fdw-%%copyG6#Fhs>Fiw-Fby6#Fbu?&8<7#-%"$G6#;F\s9$%%trueGC>>&Fbr
6#Fhy-%6homalg/FreeHullModuleG6%&F\rFczFfsFP>&F`rFcz-Fjs6#-%;homalg/EmbedInFact
orModuleG6$FbzFP>&FfrFcz-%0homalg/PullbackG6)&F^qFcz&FhqFczFbzFizFgzFfsFP>&FdqF
cz-Fez6%F`[lFfsFP>&FhrFcz-F][l6$F`[lFP>&FbqFcz-Fjs6#-&FP6#%/CertainColumnsG6$F[
\l7#;FaoFgt>&FjqFcz-Fjs6#-Fc\l6$F[\l7#;,&FgtFaoFaoFaoFX>&FfpFcz-%.homalg/Kernel
G6(Fg[lFj\lFbzFfs/Q=var_to_assign_embedding_infoFM&F\qFczFP>&FdpFcz-%4homalg/Co
mpleteImSqG6)Fi]lF_\l&F^pFcz&FjpFczFd[lFfsFP@%3/FhyF\sFbvC%>&FdrF[s-Ffw6&&FbrF[
sF[wFfsFP>&FfqF[s-Ffw6&&FdqF[sF`wFfsFP>&FhpF[s-Ffw6&&FfpF[sFbwFfsFPC%>&FdrFcz-%
/homalg/ComposeG6&Fiz&F^rFczFfsFP>&FfqFcz-Fh_l6&F_\l&F`qFczFfsFP>&FhpFcz-Fh_l6&
F[^l&FbpFczFfsFP@$/FhyF^z[>&F\r6#,&FhyFaoFaoFao-Fe]l6)FbzFizFgzFfs/QBvar_to_ass
ign_F_target_hullmoduleFM.8=/Fh]l&F^rFj`lFP/Q._Ktarget_hullFMFaal/Feal-Fby6#Faa
l/Q+_Kemb[i+1]FMFcal/Fjal-Fby6#Fcal>&F^qFj`l-Fe]l6)Fg[lF_\lFd[lFfs/F_al.8>/Fh]l
&F`qFj`lFP/Q-Ktarget_hullFMFdbl/Fhbl-Fby6#Fdbl/Q*Kemb[i+1]FMFfbl/F]cl-Fby6#Ffbl
>&F^pFj`l-Fe]l6(Fc]lF[^lF_^lFfs/Fh]l&FbpFj`lFP/Q+K_emb[i+1]FMFfcl/Fhcl-Fby6#Ffc
l>&FjpFj`l-%1homalg/KernelMapG60Fc]lF[^lF_^lFi]lFg[lF_\lFd[lFfs/Q)F_sourceFMFbc
l/Q>F_source_embedding_generatorsFMFfcl/Q)F_targetFMF_bl/Q>F_target_embedding_g
eneratorsFMFfbl/Q4F_target_hullmoduleFMFdblFP>&FhqFj`l-F_dl60Fg[lF_\lFd[lFj\lFb
zFizFgzFfs/FbdlF_bl/FddlFfbl/FfdlFi`l/FhdlFcal/FjdlFaalFP>F_bl-F^s6$F_blFP>Fgt-
FitFfel@$FbvC*>&Fbr6#,&F^zFaoFaoFaoF\w>&FdqF]flF\w>&FfpF]flF\w>&FjqF]fl-Ffw6&F`
flF\flFfsFP>&F\qF]fl-Ffw6&FbflF`flFfsFP>&FdrF]fl-Ffw6&F\fl&Fbr6#F^zFfsFP>&FfqF]
fl-Ffw6&F`fl&FdqF`glFfsFP>&FhpF]fl-Ffw6&Fbfl&FfpF`glFfsFP-%#opG6#-%$mapG6$Fby7*
FhpFfpF\qFfqFdqFjqFdrFbrFMFMFMFM,
Q>homalg/ResolveShortExactSeq.mFM
M7R0
I4homalg/RightDivideFf*6&%#_BG%#_AG'%$varG%%listG%,RingPackageG6,%#RPG%$narG%%o
ptsG%"BG%"AG%#IAG%"iG%#CAG%#CBG%#NFG6#%[oCopyright~(C)~2004-2007~by~Mohamed~Bar
akat.~All~rights~reserved.G6"C.>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6
$F;%*procedureG-%'RETURNG6#-F;6#&FA6#;""",&FCFRFDFC@$2,&""$FRFDFR9#>8&-%%copyG6
#-%2homalg/GetOptionsG6$&FA6#;""%FSF;>8'-%6homalg/NormalizeInputG6$9$F;>8(-Fbo6
$9%F;@$0-&F;6#%3NumberOfGeneratorsG6#F`o-F]p6#Ffo-%&ERRORG6#%gnThe~first~two~ar
guments~have~different~numbers~of~'columns'!G>8)-%2homalg/BasisCoeffG6&Ffo9&8+F
;/Q#CAF8-Ffn6#F]q>8--%3homalg/ReduceCoeffG6'F`oFhpF\q8,F;/Q#CBF8-Ffn6#Fgq@$0-%3
homalg/BetterBasisG6&FcqF\qQ3ALLOW_EMPTY_OUTPUTF8F;7"@%-%)assignedG6#&FZ6#Q0pos
_of_USE_FAILF8-FK6#%%FAILG-Fdp6#%`sThe~second~argument~is~not~a~right~factor~of
~the~first~(modulo~the~third),~i.e.~the~second~(+third)~argument~is~not~a~gener
ating~set!G-%/homalg/ComposeG6&-%.homalg/MulMatG6&FCFgqF\qF;F]qF\qF;F8F8F8F8,
Q6homalg/RightDivideF.mF8
M7R0
I9homalg/TorsionFreeFactorf*6%%"MG'%$varG%%listG%,RingPackageG6&%#RPG%$narG%)op
tionalG%%iotaG6%%fnCopyright~(C)~2007~by~Mohamed~Barakat.~All~rights~reserved.G
%'systemG%)rememberG6"C(>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F6%*pr
ocedureG-%'RETURNG6#-F66#&F<6#;""",&F>FMF?F>@$-FB6$&F<6#FM%'stringGC$@$/FRQ1RET
URN_co_contraF3-FF6#Q*covariantF3-FF6#%%NULLG>8&&F<6#;""$FN>8'-%;homalg/Torsion
SubmoduleEmbG6%9$9%F6-%0homalg/CokernelG6'F`oFdoFeoFjnF6F3F3F3F3,
Q;homalg/TorsionFreeFactor.mF3
M7R0
I9homalg/A3ExtensionModulef*6+%#_MG%&etaMLG%#_LG%&etaLKG%#_KG%&etaKNG%#_NG%$var
G%,RingPackageG6Z%#RPG%$narG%"MG%"LG%"KG%"NG%%d2_MG%%d2_LG%"BG%#X1G%%r_dLG%%c_d
LG%$r_KG%$c_KG%$c_NG%$r_NG%%r_dMG%%c_dMG%#BbG%$L11G%$L12G%$L13G%$L14G%$L21G%$L2
2G%$L23G%$L24G%$L31G%$L32G%$L33G%$L34G%$L41G%$L42G%$L43G%$L44G%#LlG%'d2_L_TG%%X
1_TG%'d2_M_TG%$A11G%$A12G%$A13G%$A14G%$A21G%$A22G%$A23G%$A24G%$A31G%$A32G%$A33G
%$A34G%#AaG%$resG%&etaLNG%&etaMKG%&etaMNG6#%enCopyright~(C)~2008~by~Barbara~Bre
mer.~All~rights~reserved.G6"Cgn>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6
$Ffo%*procedureG-%'RETURNG6#-Ffo6#&F\p6#;""",&F^pF]qF_pF^p>8&-%6homalg/Normaliz
eInputG6$&-%:homalg/ResolutionOfModuleG6&9$9+/Q)TRUNCATEFco""!Ffo6#F]qFfo>8'-Fb
q6$&-Ffq6&9&FiqFjqFfoF]rFfo>8(-Fbq6$&-Ffq6&9(FiqFjqFfoF]rFfo>8)-Fbq6$&-Ffq6&9*F
iqFjqFfoF]rFfo>8*-Fbq6$-%%copyG6#&&-%5homalg/ResolveModuleG6%""#F`qFiqF]r6#FbtF
fo>8+-Fbq6$-F[t6#&&-F`t6%FbtF_rFiqF]rFctFfo>8,-%/homalg/ComposeG6&Fgs9%FiqFfo>8
--%3homalg/RightDivideG6&F_uF_rFiqFfo>8.-&Ffo6#%-NumberOfRowsG6#Fet>8/-&Ffo6#%3
NumberOfGeneratorsGF_v>80-F\v6#Fgr>81-FcvFiv>82-Fcv6#F_s>83-F\vF`w>84-F\v6#Fgs>
85-FcvFgw>867#7&-%#opG6#-%$mapG6$F`x-Fbq6$-Fau6&Fet9'FiqFfoFfo-F`x6#-&Ffo6#%%Ze
roG6#*&FjuF]qF^wF]q-F`x6#-F]y6#*&FewF]qF[wF]q-F`x6#-F]y6#*&FewF]qF^wF]q>87-%4ho
malg/KroneckerMatG6&-%3homalg/IdentityMapG6%FjuFiqFfoFgrFiqFfo>88-F_z6&Faz9)Fiq
Ffo>89-%/homalg/ZeroMapG6&*&FjuF]qFgvF]qFfyFiqFfo>8:-F\[l6&F^[lF[zFiqFfo>8;-F\[
l6&*&FjuF]qFbwF]q*&FjuF]qF[wF]qFiqFfo>8<-F_z6&FazF_sFiqFfo>8=-F\[l6&Fg[lFfyFiqF
fo>8>-F\[l6&Fg[lF[zFiqFfo>8?-F\[l6&*&FewF]qFgvF]qFh[lFiqFfo>8@-F\[l6&Fi\lFayFiq
Ffo>8A-F_z6&-Fbz6%FewFiqFfoFgrFiqFfo>8B-F_z6&Fb]lFhzFiqFfo>8C-F\[l6&*&FewF]qFbw
F]qFh[lFiqFfo>8D-F\[l6&F\^lFayFiqFfo>8E-F\[l6&F\^lFfyFiqFfo>8F-F_z6&Fb]lF_sFiqF
fo>8G-&%'linalgG6#%,blockmatrixG6%""%Fa_l72F]zFezFjzF`[lFd[lFj[lF^\lFb\lFf\lF[]
lF_]lFe]lFi]lF^^lFb^lFf^l>8H-%2homalg/InvolutionG6%FetFiqFfo>8I-Ff_l6%FeuFiqFfo
>8J-Ff_l6%FgsFiqFfo>8K-F\[l6&*&FavF]qF^wF]qFh[lFiqFfo>8L-%.homalg/SubMatG6%-F\[
l6&Fd`lFayFiqFfo-F_z6&Fd_l-Fbz6%F^wFiqFfoFiqFfoFiq>8M-F\[l6&Fd`lFfyFiqFfo>8N-F_
z6&Fi_lF^alFiqFfo>8O-F\[l6&*&FiwF]qF[wF]qFh[lFiqFfo>8P-F\[l6&F\blFayFiqFfo>8Q-F
h`l6%-F\[l6&F\blFfyFiqFfo-F_z6&F]`l-Fbz6%F[wFiqFfoFiqFfoFiq>8R-F\[l6&F\blF[zFiq
Ffo>8S-F\[l6&*&FiwF]qF^wF]qFh[lFiqFfo>8T-F\[l6&FcclFayFiqFfo>8U-F\[l6&FcclFfyFi
qFfo>8V-Fh`l6%-F\[l6&FcclF[zFiqFfo-F_z6&F]`lF^alFiqFfoFiq>8W-F\_l6%""$Fa_l7.Fa`
lFf`lFaalFealFialF^blFbblF\clF`clFeclFiclF]dl>8X-Fgu6(F\xFedlFj^lFiqQ)USE_FAILF
coFfo@$/F[el%%FAILG-Ffp6#Fael>F[el-Fbq6$F[elFfo>8Y-Fcx6$f*6#%"iGFco6$%)operator
G%&arrowGFco&&T#F]r6#;,&*&,&FhqF]qF^pF]qF]qT%F]qF]qF]qF]q*&FhqF]qFiflF]qFcoFco6
&F]oF[elF=F^w7#-%"$G6#;F]qFav>8Z-Fcx6$f*F\flFcoF^flFco&Fbfl6#;,(*&FiflF]qT'F]qF
]q*&FhflF]qT)F]qF]qF]qF]q,&FjglF]q*&FhqF]qF]hlF]qF]qFcoFco6*F]oF[elF=F^wF:FavF<
F[w7#-F^gl6#;F]qFiw>8en-Fcx6$f*F\flFcoF^flFco&Fbfl6#;,*FjglF]q*&F]hlF]qT+F]qF]q
FgflF]qF]qF]q,(FjglF]qF^ilF]qFjflF]qFcoFco6,F]oF[elF=F^wF:FavF<F[wF@FiwFahl-Ffp
6%/Q&etaLNFco-%:homalg/ReduceHomomorphismG6&FhelF_sFiqFfo/Q&etaMKFco-Fgil6&Fbgl
FgrFiqFfo/Q&etaMNFco-Fgil6&FfhlF_sFiqFfoFcoFcoFcoFco,
Q;homalg/A3ExtensionModule.mFco
M7R0
I?homalg/AModuleForATwoExtensionf*6&%*_ext_homsG%-_ext_modulesG%%_varG%,RingPac
kageG64%#RPG%$narG%%optsG%$varG%$extG%)ext_homsG%,ext_modulesG%"FG%&etaMNG%&eta
NLG%"MG%"NG%"LG%"DG%"BG%"XG%#BbG%&etaMLG6#%jnCopyright~(C)~2007-2008~by~Barbara
~Bremer.~All~rights~reserved.G6"C2>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typ
eG6$FA%*procedureG-%'RETURNG6#-FA6#&FG6#;""",&FIFXFJFI@%-FM6$&FG6#FY%%listG>8'F
gn-%&ERRORG6#%-Wrong~input!G@%2,&""$FXFJFX9#C%>8(-%:homalg/NormalizeExtensionG6
$&FG6#;FX,&!"#FXFJFIF[o>8)-%%copyG6#&Fgo6#FX>8*-Fcp6#&Fgo6#""#C$>Fap-Fcp6#9$>Fh
p-Fcp6#9%>8+-%:homalg/FactorizeExtensionG6&FapFhpF[oFA>8,-%6homalg/NormalizeInp
utG6$-%:homalg/CocycleOfExtensionG6%-%#opG6#&FhqF\qF[oFAFA>8--F_r6$-Fbr6%-Fer6#
&FhqFfpF[oFAFA>80-F_r6$&-%:homalg/ResolutionOfModuleG6&&F`sFfpF[o/Q)TRUNCATEF>"
"!FAFfpFA>8/-F_r6$&-Fgs6&&FgrFfpF[oFjsFAFfpFA>8.-F_r6$&-Fgs6&&Fgr6#""&F[oFjsFAF
fpFA>81-Fcp6#&-%4homalg/SyzygiesDataG6&F]qFftF[oFAF\q>82-%/homalg/ComposeG6&F`u
F]rF[oFA>83-%3homalg/RightDivideG6&FhuF^tF[oFA>84-Fju6&F]vFirF[oFA>85-%3homalg/
LeftDivideCG6'F`uFbvFbsF[oFA@%/Ffv%%FAILGF\w-%:homalg/ReduceHomomorphismG6&FfvF
bsF[oFAF>F>F>F>,
QAhomalg/AModuleForATwoExtension.mF>
M7R0
I:homalg/BetterPresentationf*6&'%#_GG-%%listG6#%"=G%#_MG%$varG%,RingPackageG6+%
#RPG%$narG%%optsG%)ring_relG%"MG%"GG%$stdG%#blG%"bG6#%[oCopyright~(C)~2004-2007
~by~Mohamed~Barakat.~All~rights~reserved.G6"C5>8$-%1homalg/tablenameG6%9!&9"6#!
""8%@$-%%typeG6$F=%*procedureG-%'RETURNG6#-F=6#&FC6#;""",&FEFTFFFE@$2,&""$FTFFF
T9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&FC6#;""%FUF=>8'&-%5homalg/NormalizeRing
G6$9&F=6#""#>8(-%6homalg/NormalizeInputG6$9%F=>8)-F]p6$-%$mapG6$%$rhsG9$F=>Fap-
%4homalg/RingNotationG6$FapF=>8+-%9homalg/NonZeroGeneratorsG6%F[pFgoF=@$-%)assi
gnedG6#&Ffn6#QBvar_to_assign_non_zero_generatorsF:-%'assignG6$FfqF^q@$/F^q7"@%0
FapF^r-FM6$7#/&F=6#%$OneG&Fap6#FT7#Fer-FM6$7#/Fer-&F=6#%%ZeroGF:Fjr>F[p-&F=6#%/
CertainColumnsG6$F[pF^q>F[p-%5homalg/BasisOfModuleGFaq@$0FboF^rC$>F[p-%3homalg/
BetterBasisGFaq>F[p-F[q6$F[pF=>Fap-&F=6#%,CertainRowsG6$FapF^q>8,-%%nopsG6#F^q>
8*-%7homalg/StdBasisVectorsG6$F\uF=>Fau-F[q6$FauF=>Fap-%$zipG6%f*6$%"xG%"yGF:6$
%)operatorG%&arrowGF:/FhpF_pF:F:F:FauFap6$FapF[pF:F:F:F:,
Q<homalg/BetterPresentation.mF:
M7R0
I1homalg/CheckImSqf*6(%(_alpha1G%%_phiG%&beta1G%"BG'%$varG%%listG%,RingPackageG
6)%#RPG%$narG%'alpha1G%$phiG%*apply_phiG%$ib1G%(ia1CphiG6#%[oCopyright~(C)~2003
-2004~by~Mohamed~Barakat.~All~rights~reserved.G6"C*>8$-%1homalg/tablenameG6%9!&
9"6#!""8%@$-%%typeG6$F:%*procedureG-%'RETURNG6#-F:6#&F@6#;""",&FBFQFCFB>8&-%6ho
malg/NormalizeInputG6$9$F:@%-FF6$9%FH>8(FfnC$>8'-FV6$FfnF:>Fhnf*6#%"aGF76$%)ope
ratorG%&arrowGF7-%/homalg/ComposeG6&FXT#T&T'F7F76(F1F[oF*9(F.F:>8)-%4homalg/Sum
RelationsG6&9&9'F\pF:>8*-Fhn6#FT>Fep-%(convertG6$Fep%)listlistG-%.homalg/Reduce
G6&FepF^pF\pF:F7F7F7F7,
Q3homalg/CheckImSq.mF7
M7R0
I:homalg/CocycleOfExtensionf*6&%*_ext_homsG%-_ext_modulesG%%_varG%,RingPackageG
68%#RPG%$narG%$argG%$varG%#naG%$extG%)ext_homsG%,ext_modulesG%%optsG%"nG%$resG%
)res_homsG%,res_modulesG%"iG%%eta_G%"dG%$G_iG%&alphaG%&G_i_1G%$etaG%1abstract_c
ocycleG%'resultG6%%enCopyright~(C)~2007~by~Barbara~Bremer.~All~rights~reserved.
G%'systemG%)rememberG6"C5>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$FG%*p
rocedureG-%'RETURNG6#-FG6#&FM6#;""",&FOFhnFPFO>8(,(9#FhnFOFhnFPFO?&8&FM%%trueG@
$-FS6$F_o%'stringG>F[o,&F[oFhnFOFhn@%-FS6$&FM6#,&F[oFhnFhnFhn%%listG>8'Fjo-%&ER
RORG6#%-Wrong~input!G@+2""&F[oC%>8)-%:homalg/NormalizeExtensionG6$&FM6#;FhnF[oF
_p>8*-%%copyG6#&Fip6#Fhn>8+-Fcq6#&Fip6#""#/F[oFfp-FW6#-%;homalg/CocycleOfExtens
ion1G6#FM2F]rF[oC%>FipFjp>FaqFbq>FhqFiq3-FS6$9$%&tableG-FS6$9%F]sC$>Faq-Fcq6#F\
s>Fhq-Fcq6#F`sF`p@$2,(F[oFhnFhnFhnFPFhnF]o>8,-Fcq6#-%2homalg/GetOptionsG6$&FM6#
;,&F[oFhnF]rFhnFinFG>8-,&-%%nopsG6#7#-%(indicesG6#FaqFhnFOFhn@$/Fgt""!-FW6#-Fcq
6#&Faq6#Fbu>8.-%5homalg/ResolveModuleG6&Fgt&FhqFNF_pFG>8/-Fcq6#&FjuFfq>80-Fcq6#
&FjuF\r>87-%3homalg/LeftinverseG6(-Fcq6#&FhqFhuFeu-Fcq6#F^vF_pQ)NO_CHECKFDFG?(8
1FhnFhnFgtF`oC(>82-Fcq6#Fjv>83-Fcq6#&F`v6#Few>84-Fcq6#&FhqF`x>85-Fcq6#&FaqF`x>8
6-Fcq6#&Fhq6#,&FewFhnFOFhn>Fjv-%4homalg/CompleteImSqG6)-Fcq6#F\x-Fcq6#Fhw-Fcq6#
Fbx-Fcq6#Fgx-Fcq6#F\yF_pFG>89%%NULLG@$5-%)assignedG6#&F\t6#QApos_of_return_abst
ract_generatorFD-Ffz6#&F\t6#Q2pos_of_return_ExtFD>Fip-%+homalg/ExtG6(FgtF^v&Fhq
6#FgtF_p/QTvar_to_assign_proc_to_express_generators_abstractlyFD.88FG@%Fez>Faz6
$Faz/-Fi[l6#FiwFiw>Faz6$FazFiw@$F[[l>Faz6$-Fcq6#Faz/Q$ExtFDFip-%#opG6#-%$mapG6$
f*6#F7FD6$%)operatorG%&arrowGFD-Fcq6#&7#T#FdsFDFD6$F?Faz7#-%"$G6#;Fhn-Fjt6#7#Fa
zFDFDFDFD,
Q<homalg/CocycleOfExtension.mFD
M7R0
I0homalg/CoimageFf*6%%"AG'%$varG%%listG%,RingPackageG6$%#RPG%$narG6%%fnCopyrigh
t~(C)~2006~by~Mohamed~Barakat.~All~rights~reserved.G%'systemG%)rememberG6"C%>8$
-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F4%*procedureG-%'RETURNG6#-F46#&F
:6#;""",&F<FKF=F<-%1homalg/CokernelFG6%-%3homalg/SyzygiesOpFG6%9$9%F4FTF4F1F1F1
F1,
Q2homalg/CoimageF.mF1
M7R0
I8homalg/copyright_homalgf*6"F$6#%^pCopyright~(C)~2002-2012~by~Mohamed~Barakat~
and~Daniel~Robertz.~All~rights~reserved.GF$C)-%&printG6#%7homalg~(2002-2012)~(C
)G-F)6#%[oCopyright~(C)~(2002-2012)~by~Mohamed~Barakat~and~Daniel~Robertz.G-F)6
#%5All~rights~reserved.G-F)6#%YThis~software~should~be~referenced~if~it~is~used
~in~workG-F)6#%>eventuating~in~a~publication.G-F)6#%GUsers~are~free~to~modify~t
his~program,G-F)6#%Tbut~it~is~not~to~be~redistributed~in~modified~form.GF$F$F$F
$,
Q:homalg/copyright_homalg.mF$
M7R0
I4homalg/DirectSumMapf*6*%#A1G%#A2G%%phi1G%%phi2G%#B1G%#B2G%$varG%,RingPackageG
6'%#RPG%$narG%)optionalG%$phiG%(functorG6#%[oCopyright~(C)~2003-2005~by~Mohamed
~Barakat.~All~rights~reserved.G6"C(>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%ty
peG6$F8%*procedureG-%'RETURNG6#-F86#&F>6#;""",&F@FOFAF@>8&&F>6#;"")FP>8'-%/homa
lg/DiagMatG6%9&9'F8>8(%1homalg/DirectSumG-%2homalg/FunctorMapG6)Fin7$9$9%FX7$9(
9)9*FRF8F5F5F5F5,
Q6homalg/DirectSumMap.mF5
M7R0
I2homalg/EqualMapsFf*6&%#_AG%#_BG'%$varG%%listG%,RingPackageG6'%#RPG%$narG%"AG%
"BG%)optionalG6%%fnCopyright~(C)~2004~by~Mohamed~Barakat.~All~rights~reserved.G
%'systemG%)rememberG6"C(>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F8%*pr
ocedureG-%'RETURNG6#-F86#&F>6#;""",&F@FOFAF@>8&-%6homalg/NormalizeInputG6$9$F8>
8'-FT6$9%F8>8(&F>6#;""%FP-%1homalg/IsZeroMapG6&-%.homalg/SubMatG6&FRFX9&F8FboFg
nF8F5F5F5F5,
Q4homalg/EqualMapsF.mF5
M7R0
I:homalg/EqualPresentationsf*6%'%#P1G%4homalg_presentationG'%#P2GF'%,RingPackag
eG6&%#RPG%$narG%%optsG%#eqG6#%[oCopyright~(C)~2004-2007~by~Mohamed~Barakat.~All
~rights~reserved.G6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F5%*proc
edureG-%'RETURNG6#-F56#&F;6#;""",&F=FLF>F=@$2,&""#FLF>FL9#>8&-%%copyG6#-%2homal
g/GetOptionsG6$&F;6#;""$FMF5@%-%)assignedG6#&FT6#Q9pos_of_IGNORE_GENERATORSF2>8
'-%$zipG6%f*6$%"aG%"bGF26$%)operatorG%&arrowGF2@%-%&evalbG6#/9$9%%%trueG0FapFbp
F2F2F2&Fap6#;FQF=&FbpFfp>Fao-Fco6%f*FfoF2FioF2@%F]pFcpFdpF2F2F2FapFbp@'/-%(conv
ertG6$Fao%$setG<#FcpFcp-F[o6#&FT6#Q/pos_of_VERBOSEF2Fao%&falseGF2F2F2F2,
Q<homalg/EqualPresentations.mF2
M7R0
I2homalg/Extension1f*6'%#_MG%%_etaG%#_NG%$varG%,RingPackageG61%#RPG%$narG%%opts
G%#d1G%$etaG%"NG%%d1_rG%&eta_rG%&eta_cG%$N_cG%#P0G%'alpha1G%"EG%'alpha2G%"MG6%%
fnCopyright~(C)~2007~by~Mohamed~Barakat.~All~rights~reserved.G%'systemG%)rememb
erG6"C0>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$FA%*procedureG-%'RETURN
G6#-FA6#&FG6#;""",&FIFXFJFI@$2,&""%FXFJFX9#>8&-%%copyG6#-%2homalg/GetOptionsG6$
&FG6#;""&FYFA>8'&-%:homalg/ResolutionOfModuleG6&9$9'/Q)TRUNCATEF>""!FA6#FX>8(-%
6homalg/NormalizeInputG6$9%FA>8)-Fdp6$9&FA>8*-&FA6#%-NumberOfRowsG6#Ffo>8+-F_q6
#Fbp@$0F]qFdq-%&ERRORG6#%gnThe~numbers~of~rows~of~the~first~and~second~argument
~differ!G>8,-&FA6#%3NumberOfGeneratorsGFfq>8--F`r6#Fhp@$0F^rFdr-Fjq6#%jnThe~num
bers~of~columns~of~the~second~and~third~argument~differ!G>8.-%6homalg/FreeHullM
oduleG6%FfoF\pFA@%-%)assignedG6#&Fjn6#Q+pos_of_ALLF>C%>8/&-%9homalg/PushoutPair
OfMapsG6)FfoF]sFbpFhpF\p/Q@var_to_assign_functor_on_objectF>.80FA6#""#>81-%3hom
alg/CokernelEpiG6'FjsFbtF\p/F`t.82FA6'F[q-F\o6#FjsFbt-F\o6#FftF\u-%/homalg/Push
outG6(FfoF]sFbpFhpF\pFAF>F>F>F>,
Q4homalg/Extension1.mF>
M7R0
I6homalg/InverseElementf*6%%"rG'%$varG%%listG%,RingPackageG6)%#RPG%$narG%%zeroG
%$oneG%*minus_oneG%)ring_relG%$invG6#%[oCopyright~(C)~2004-2007~by~Mohamed~Bara
kat.~All~rights~reserved.G6"C+>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$
F7%*procedureG-%'RETURNG6#-F76#&F=6#;""",&F?FNF@F?>8&-&F76#%%ZeroGF4>8'&F76#%$O
neG>8(-&F76#%&MinusG6%FQFW9%@&/9$FQ-FG6#%%FAILG-%'memberG6$F_o<$FWFfn-FG6#F_o>8
)&-%5homalg/NormalizeRingG6$F\oF76#""#@%/Fjo7"@%-%)assignedG6#&F76#%'IsUnitG@$-
Fhp6$F_oF\o-FG6#-&F76#%)simplifyG6$-&F76#%-DivideByUnitG6%FWF_oF\oF\oC$>8*-%4ho
malg/RightinverseG6%7#7#F_oF\oF7@$0F\rFbo-FG6#&F\r6$FNFNC$>F\rF]r@$FcrFdrFboF4F
4F4F4,
Q8homalg/InverseElement.mF4
M7R0
I2homalg/Involutionf*6%%#_MG'%$varG%%listG%,RingPackageG6%%#RPG%$narG%"MG6#%jnC
opyright~(C)~2004-2005~by~Daniel~Robertz.~All~rights~reserved.G6"C&>8$-%1homalg
/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F3%*procedureG-%'RETURNG6#-F36#&F96#;""",&
F;FJF<F;>8&-%6homalg/NormalizeInputG6$9$F3-&F36#%'matrixG6#-&%'linalgG6#%*trans
poseG6#FMF0F0F0F0,
Q4homalg/Involution.mF0
M7R0
I3homalg/IsCocomplexf*6%'%*cocomplexG%%listG'%$varGF'%,RingPackageG6)%#RPG%$nar
G%%homsG%%cmpsG%+check_homsG%+check_cmpsG%$resG6#%fnCopyright~(C)~2004~by~Moham
ed~Barakat.~All~rights~reserved.G6"C+>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%
typeG6$F8%*procedureG-%'RETURNG6#-F86#&F>6#;""",&F@FOFAF@>8&-%8homalg/CheckHoms
OfCoseqG6%9$9%F8>FR-%$mapG6'%1homalg/IsZeroMapGFRFWQ(VERBOSEF5F8>8'-%6homalg/Ch
eckCocomplexGFU>Fin-FZ6'FfnFinFWFgnF8>8(-%&evalbG6#/-%(convertG6$FR%$setG<#%%tr
ueG>8)-Fbo6#/-Ffo6$FinFhoFio@'3F`oF\pFjo32,&""#FOFAFO9#-FD6$&F>6#FP%'stringGC&>
8*%%NULLG@%F`o>F`q6$F`q/Q%homsF5Fjo>F`q6$F`q/FfqFR@%F\p>F`q6$F`q/Q%cmpsF5Fjo>F`
q6$F`q/F^rFinF`q%&falseGF5F5F5F5,
Q5homalg/IsCocomplex.mF5
M7R0
I4homalg/IsExactCoseqf*6%'%*cocomplexG%%listG'%$varGF'%,RingPackageG6'%#RPG%$na
rG%%ccpxG%%defsG%+check_defsG6#%fnCopyright~(C)~2004~by~Mohamed~Barakat.~All~ri
ghts~reserved.G6"C*>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F6%*procedu
reG-%'RETURNG6#-F66#&F<6#;""",&F>FMF?F>>8&-%3homalg/IsCocomplexG6&9$9%Q(VERBOSE
F3F6@%/7#FP7#%%trueG>FP/Q*cocomplexF3Fen@%32,&""#FMF?FM9#-FB6$&F<6#FN%'stringGF
P%&falseG>8'-%9homalg/CohomologyModulesG6%FTFUF6>Ffo-%$mapG6'%4homalg/IsZeroMod
uleGFfoFUFVF6>8(-%&evalbG6#/-%(convertG6$Ffo%$setG<#Fen@'F`pFenFjn@%F`p6$FP/Q+c
ohomologyF3Fen6$FP/F^qFfoFdoF3F3F3F3,
Q6homalg/IsExactCoseq.mF3
M7R0
I-homalg/IsHomf*6'%#_MG%#_AG%#_NG'%$varG%%listG%,RingPackageG6%%#RPG%$narG%$hom
G6#%[oCopyright~(C)~2003-2004~by~Mohamed~Barakat.~All~rights~reserved.G6"C&>8$-
%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F5%*procedureG-%'RETURNG6#-F56#&F;
6#;""",&F=FLF>F=>8&-%0homalg/CheckHomG6#F;-%1homalg/IsZeroMapG6%FO9'F5F2F2F2F2,
Q/homalg/IsHom.mF2
M7R0
I1homalg/PullbackFf*6&%%_phiG%'_beta1G%$varG%,RingPackageG6)%#RPG%$narG%$phiG%&
beta1G%*minus_oneG%,minus_beta1G%*phi_beta1G6%%fnCopyright~(C)~2004~by~Mohamed~
Barakat.~All~rights~reserved.G%'systemG%)rememberG6"C)>8$-%1homalg/tablenameG6%
9!&9"6#!""8%@$-%%typeG6$F8%*procedureG-%'RETURNG6#-F86#&F>6#;""",&F@FOFAF@>8&-%
6homalg/NormalizeInputG6$9$F8>8'-FT6$9%F8>8)-%.homalg/MulMatG6&F@FX9&F8>8*-&F86
#%,UnionOfRowsG6$FRFgn-%/homalg/KernelFG6%F]oF[oF8F5F5F5F5,
Q3homalg/PullbackF.mF5
M7R0
I=homalg/RightDerivedCofunctorf*6''%"qG%*nonnegintG'%*cofunctorG%%listG%"AG'%$v
arGF*%,RingPackageG69%#RPG%$narG%"pG%%optsG%4readjust_generatorsG%)optionalG%5c
ofunctor_on_objectsG%2cofunctor_on_mapsG%$resG%%rdimG%$posG%(alpha_qG%)alpha_q1
G%$Pq1G%%Pq_1G%#PqG%)Falpha_qG%%F_stG%:FPq_normalized_generatorsG%*Falpha_q1G%$
FPqG%%FPq1G%#RFG6#%[oCopyright~(C)~2005-2006~by~Mohamed~Barakat.~All~rights~res
erved.G6"C8>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$FL%*procedureG-%'RE
TURNG6#-FL6#&FR6#;""",&FTF]oFUFT@$-FX6$&FR6#""$%'stringGC$@*/FboQ?RETURN_proc_t
o_induce_morphismFI-Ffn6#f*6%%"MG%$phiG%"NG6#F8FIFIC$>FL-%%evalG6#-%7homalg/Res
olutionOfSeqG6)T$9$9%9&T&Q)TRUNCATEFIT'6%&&FL6#""#6#Fjp-%%copyG6#&&FLFcoFfq&&FL
6#""&FfqFIFI6(F&F[qF-9'F0FL/FboQKRETURN_FunctorMap_of_the_functor_to_deriveFI-F
fn6#&F\qFdq/FboQIRETURN_FunctorMaps_of_a_composed_functorFI-Ffn6#%%NULLG/FboQ;R
ETURN_morphism_on_objectsFIFir-Ffn6#-&F\q6#F]o6%FboFarFL?&8&7#-%"$G6#;F]o,&-%%n
opsG6#F\q#F]oFeqFTF]o%%trueG@$-FX6$&F\q6#,&F]oF]oFesFeqFeoC$@*/FdtFio-Ffn6#7#f*
FIFapFIFIC$>FL-Fep6#-%5homalg/ResolveModuleG6'FjpF^qT(F_qT)FbqFIFI6*F&F[qF+F]qF
-FarF0FL/FdtFcr-Ffn6#&F\q6#,&FeqF]oFesFeq/FdtFhrFir/FdtF]sFirF^s@$2,&""%F]oFUF]
o9#>8'-Fhq6#-%2homalg/GetOptionsG6$&FR6#;F_rF^oFL@$4-%)assignedG6#&Ffv6#Q<pos_o
f_NORMALIZE_GENERATORSFI>8(-Fas6%QCRETURN_proc_to_readjust_generatorsFIFarFL>8)
F\w>8*Fas>8+Ffr>8,-%:homalg/ResolutionOfModuleG6&F]qFar/F_qF[qFL>8--%.homalg/Re
sDimG6$FcxFL@)2,&-F]t6#FixF]oFTF]oF[qC'>8.F[s@$-Fbw6#&Ffv6#QCvar_to_assign_embe
dding_generatorsFIC$>Fdy/&Ffv6#QJpos_of_var_to_assign_embedding_generatorsFIF[s
-%'assignG6$Fhy7#-&FL6#%%ZeroGFbs@$-Fbw6#&Ffv6#QBvar_to_assign_F_target_hullmod
uleFIC$>Fdy6$Fdy/&Ffv6#QIpos_of_var_to_assign_F_target_hullmoduleFIF[s-Fbz6$F\[
lFdz@$07#Fdy7">F]x-%#opG6#-%'subsopG6$Fdy7#F]x-Ffn6#-F_x6&-%2homalg/ZeroModuleG
6$FarFLFarF]xFL/F`y,&F[qF]oF]oF]oC%>8/&FcxFbs>807#-Ffz6#&FixFbs>81Fh\l/F[q""!C%
>F_]l-&FL6#%'matrixG6#7#-Fhs6$Fez&FixFS>Fb]lF`]l>Fh]l-%2homalg/FreeModuleG6%&Fi
x6#!"#FarFLC%>F_]l&FcxFdq>Fb]lF`]l>Fh]l-Fi^l6%&Fix6#,&F[qFTF]_lF]oFarFL@%Fi]l>8
2Fh\l>Fj_l-Fi^l6%&Fix6#,$F[qFTFarFL>83-Fi^l6%&Fix6#,&F[qFTFTF]oFarFL>84-Fax6'Fb
`lF_]lFj_lFarFL>87-Fax6)Fh]lFb]lFb`lFar/Q3var_to_assign_F_stFI.85/QNvar_to_assi
gn_F_source_unconverted_generatorsFI.86FL>88&FcalFbs>89&FcalFdq/Q:FPq_normalize
d_generatorsFIFgal@$-Fbw6#Fgal>Fial-%9homalg/ReplaceGeneratorsG6%FialFgalFL>8:-
%4homalg/DefectOfHomsG6)Fi`lFialF]alF\blFarF]xFL@%3-Fbw6#Fhw4/FhwF[s-%9homalg/C
onvertGeneratorsG6&FhblFhwF]xFLFhblFIFIFIFI,
Q?homalg/RightDerivedCofunctor.mFI
M7R0
I4homalg/SumRelationsf*6&%$_M1G%$_M2G'%$varG%%listG%,RingPackageG6&%#RPG%$narG%
#M1G%#M2G6#%[oCopyright~(C)~2003-2004~by~Mohamed~Barakat.~All~rights~reserved.G
6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F5%*procedureG-%'RETURNG6#
-F56#&F;6#;""",&F=FLF>F=>8&-%6homalg/NormalizeInputG6$9$F5>8'-FQ6$9%F5-%5homalg
/BasisOfModuleG6%-&F56#%,UnionOfRowsG6$FOFU9&F5F2F2F2F2,
Q6homalg/SumRelations.mF2
M7R0
I6homalg/SyzygiesModulef*6&%#M1G%#M2G%%_varG%,RingPackageG6&%#RPG%$narG%%optsG%
$varG6%%fnCopyright~(C)~2007~by~Mohamed~Barakat.~All~rights~reserved.G%'systemG
%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F5%*procedureG-
%'RETURNG6#-F56#&F;6#;""",&F=FLF>F=@%2,&""#FLF>FL9#>8&-%%copyG6#-%2homalg/GetOp
tionsG6$&F;6#;""$FMF5>&FT6#Q2number_of_optionsF2""!@%2,&FRFLFjnF=,&FhnFLF>FL>8'
&F;6#FQ>Fco9&-%1homalg/CokernelFG6%-%5homalg/SyzygiesBasisG6#F;FcoF5F2F2F2F2,
Q8homalg/SyzygiesModule.mF2
M7R0
I;homalg/TensorProductOnSeqsf*6&%"LG'%&alphaG<$%&tableG%%listG%%_varG%,RingPack
ageG6%%#RPG%$narG%(functorG6%%fnCopyright~(C)~2005~by~Mohamed~Barakat.~All~righ
ts~reserved.G%'systemG%)rememberG6"C&>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%
typeG6$F8%*procedureG-%'RETURNG6#-F86#&F>6#;""",&F@FOFAF@>8&-%=homalg/Functor_T
ensorProductG6#9$-%5homalg/FunctorOnSeqsG6$FR&F>6#;""#F@F5F5F5F5,
Q=homalg/TensorProductOnSeqs.mF5
M7R0
I@homalg/YonedaProductOfCocycles2f*6+%#M_G%%eta1G'%"mG%(integerG%#L_G%%eta2G'%"
nGF)%#N_G%$varG%,RingPackageG6/%#RPG%$narG%%optsG%"MG%"LG%"NG%%ext1G%%ext2G%$ex
tG%"iG%$etaG%'resultG%$EXTG6%%enCopyright~(C)~2007~by~Barbara~Bremer.~All~right
s~reserved.G%'systemG%)rememberG6"C2>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%t
ypeG6$FF%*procedureG-%'RETURNG6#-FF6#&FL6#;""",&FNFgnFOFN@$2,&"")FgnFOFgn9#>8&-
%%copyG6#-%2homalg/GetOptionsG6$&FL6#;""*FhnFF@$529)""!29&F^p-%&ERRORG6#%>n~and
~m~must~be~non-negative!G>8'-%6homalg/NormalizeInputG6$9$FF>8(-Fhp6$9'FF>8)-Fhp
6$9*FF>8*-%1homalg/ExtensionG6(F`pFfp9%F\q9+FF>8+-Fhq6(F]pF\q9(FaqF[rFF>8,-%Aho
malg/YonedaProductOfExtensionsG6&7#Ffq7#F]rF[rFF>8.-%:homalg/CocycleOfExtension
G6%FbrF[rFF>8/%%NULLG@$5-%)assignedG6#&F_o6#QApos_of_return_abstract_generatorF
C-Fcs6#&F_o6#Q2pos_of_return_ExtFC>80-%+homalg/ExtG6(,&F`pFgnF]pFgnFfpFaqF[r/QT
var_to_assign_proc_to_express_generators_abstractlyFC.%1abstract_cocycleGFF@%Fb
s>F^s6$F^s/-Fft6#-Fao6#FirF]u>F^s6$F^sF]u@$Fhs>F^s6$F^s/Q$ExtFCF^t-%#opG6#-%$ma
pG6$f*6#F;FC6$%)operatorG%&arrowGFC-Fao6#&7#T#6#FjpFCFC6$F=F^s7#-%"$G6#;Fgn-%%n
opsG6#7#F^sFCFCFCFC,
QBhomalg/YonedaProductOfCocycles2.mFC
M7R0
I9type/homalg_presentationf*6#%"PG6#%"aG6#%fnCopyright~(C)~2004~by~Mohamed~Bara
kat.~All~rights~reserved.G6"@%333-%%typeG6$9$%%listG2""#-%%nopsG6#F2-F06$&F26#"
"$%'stringG2""!-%+searchtextG6$Q-presentationF*F;%%trueG%&falseGF*F*F*F*,
Q;type/homalg_presentation.mF*
M7R0
I9homalg/DecideZeroColumnsf*6&%"LG%"BG'%$varG%%listG%,RingPackageG6&%#RPG%$narG
%#ILG%#IBG6%%fnCopyright~(C)~2008~by~Mohamed~Barakat.~All~rights~reserved.G%'sy
stemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F7%*proced
ureG-%'RETURNG6#-F76#&F=6#;""",&F?FNF@F?>8&-%2homalg/InvolutionG6%9$9&F7>8'-FS6
%9%FVF7-FS6%-%6homalg/NormalizeInputG6$-%.homalg/ReduceG6&-Fin6$FQF7-Fin6$FXF7F
VF7F7FVF7F4F4F4F4,
Q;homalg/DecideZeroColumns.mF4
M7R0
I:homalg/ConvertRowToMatrixf*6'%"MG%"rG%"cG'%$varG%%listG%,RingPackageG6%%#RPG%
$narG%(entriesG6#%fnCopyright~(C)~2008~by~Mohamed~Barakat.~All~rights~reserved.
G6"C&>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F5%*procedureG-%'RETURNG6
#-F56#&F;6#;""",&F=FLF>F=>8&-%#opG6#-%6homalg/NormalizeInputG6$9$F5-&F56#%'matr
ixG6#-&%'linalgG6#%*transposeG6#-FZ6%9&9%FOF2F2F2F2,
Q<homalg/ConvertRowToMatrix.mF2
M7R0
I'homalg=6"%&falseGE\[li[l%3ReduceHomomorphismGf*F$F$6%%fnCopyright~(C)~2005~by
~Mohamed~Barakat.~All~rights~reserved.G%'systemG%)rememberGF$C$30%3homalg/initi
alizedG.%%trueG0-%,homalg/initGF$""!-%:homalg/ReduceHomomorphismG6#9"F$F$F$%-Ri
ngNotationGf*F$F$6#%fnCopyright~(C)~2004~by~Mohamed~Barakat.~All~rights~reserve
d.GF$C$F.-%4homalg/RingNotationGF9F$F$F$%,LHomHom3MapGf*F$F$6%%fnCopyright~(C)~
2006~by~Mohamed~Barakat.~All~rights~reserved.GF+F,F$C$F.-%3homalg/LHomHom3MapGF
9F$F$F$%2TorsionFreeFactorGf*F$F$6%%fnCopyright~(C)~2007~by~Mohamed~Barakat.~Al
l~rights~reserved.GF+F,F$C$F.-%9homalg/TorsionFreeFactorGF9F$F$F$%,LHom2OnSeqsG
f*F$F$FDF$C$F.-%3homalg/LHom2OnSeqsGF9F$F$F$%,IsCocomplexGf*F$F$F=F$C$F.-%3homa
lg/IsCocomplexGF9F$F$F$%-Functor_TorqGf*F$F$FDF$C$F.-%4homalg/Functor_TorqGF9F$
F$F$%*KernelEmbGf*F$F$6%%[oCopyright~(C)~2003-2007~by~Mohamed~Barakat.~All~righ
ts~reserved.GF+F,F$C$F.-%1homalg/KernelEmbGF9F$F$F$%/RHomHom3OnSeqsGf*F$F$FDF$C
$F.-%6homalg/RHomHom3OnSeqsGF9F$F$F$%/CheckHomsOfSeqGf*F$F$F=F$C$F.-%6homalg/Ch
eckHomsOfSeqGF9F$F$F$%%TorqGf*F$F$6%%[oCopyright~(C)~2005-2006~by~Mohamed~Barak
at.~All~rights~reserved.GF+F,F$C$F.-%,homalg/TorqGF9F$F$F$%2NatTrIdToHomHom_RGf
*F$F$6%%[oCopyright~(C)~2003-2004~by~Mohamed~Barakat.~All~rights~reserved.GF+F,
F$C$F.-%9homalg/NatTrIdToHomHom_RGF9F$F$F$%)ExtMap_RGf*F$F$F)F$C$F.-%0homalg/Ex
tMap_RGF9F$F$F$%4EulerCharacteristicGf*F$F$6#FLF$C$F.-%;homalg/EulerCharacteris
ticGF9F$F$F$%-LHomHomMap_RGf*F$F$6%%ioCopyright~(C)~2005~by~Mohamed~Barakat~and
~Daniel~Robertz.~All~rights~reserved.GF+F,F$C$F.-%4homalg/LHomHomMap_RGF9F$F$F$
%)Extq2MapGf*F$F$FDF$C$F.-%0homalg/Extq2MapGF9F$F$F$%/FreeHullModuleGf*F$F$F=F$
C$F.-%6homalg/FreeHullModuleGF9F$F$F$%/HomHom_ROnSeqsGf*F$F$FeqF$C$F.-%6homalg/
HomHom_ROnSeqsGF9F$F$F$%-Functor_Ext2Gf*F$F$FDF$C$F.-%4homalg/Functor_Ext2GF9F$
F$F$%.HomHom3OnSeqsGf*F$F$FDF$C$F.-%5homalg/HomHom3OnSeqsGF9F$F$F$%'AddMatGf*F$
F$6#%[oCopyright~(C)~2004-2005~by~Mohamed~Barakat.~All~rights~reserved.GF$C$F.-
%.homalg/AddMatGF9F$F$F$%,Functor_TorGf*F$F$FDF$C$F.-%3homalg/Functor_TorGF9F$F
$F$%5TorsionFreeFactorMapGf*F$F$FKF$C$F.-%<homalg/TorsionFreeFactorMapGF9F$F$F$
%'HomHomGf*F$F$FDF$C$F.-%.homalg/HomHomGF9F$F$F$%'LambekGf*F$F$6#%[oCopyright~(
C)~2003-2006~by~Mohamed~Barakat.~All~rights~reserved.GF$C$F.-%.homalg/LambekGF9
F$F$F$%,OnMorphismsGf*F$F$6%FfsF+F,F$C$F.-%3homalg/OnMorphismsGF9F$F$F$%0Compos
eFunctorsGf*F$F$6#%^pCopyright~(C)~2005-2006~by~Mohamed~Barakat~and~Daniel~Robe
rtz.~All~rights~reserved.GF$C$F.-%7homalg/ComposeFunctorsGF9F$F$F$%1Functor_LHo
mHom2Gf*F$F$FDF$C$F.-%8homalg/Functor_LHomHom2GF9F$F$F$%2PushoutPairOfMapsGf*F$
F$FKF$C$F.-%9homalg/PushoutPairOfMapsGF9F$F$F$%,Torq2OnSeqsGf*F$F$FDF$C$F.-%3ho
malg/Torq2OnSeqsGF9F$F$F$%+Tor2OnSeqsGf*F$F$FDF$C$F.-%2homalg/Tor2OnSeqsGF9F$F$
F$%)PreimageGf*F$F$F=F$C$F.-%0homalg/PreimageGF9F$F$F$%0ResolutionOfSeqGf*F$F$F
buF$C$F.-%7homalg/ResolutionOfSeqGF9F$F$F$%(LHomMapGf*F$F$FDF$C$F.-%/homalg/LHo
mMapGF9F$F$F$%+Ext2OnSeqsGf*F$F$FDF$C$F.-%2homalg/Ext2OnSeqsGF9F$F$F$%*ExtOnSeq
sGf*F$F$FDF$C$F.-%1homalg/ExtOnSeqsGF9F$F$F$%.FunctorOnSeqsGf*F$F$F)F$C$F.-%5ho
malg/FunctorOnSeqsGF9F$F$F$%%LHomGf*F$F$FDF$C$F.-%,homalg/LHomGF9F$F$F$%*IsComp
lexGf*F$F$F=F$C$F.-%1homalg/IsComplexGF9F$F$F$%(ExtqMapGf*F$F$F)F$C$F.-%/homalg
/ExtqMapGF9F$F$F$%.CodimOfModuleGf*F$F$F_qF$C$F.-%5homalg/CodimOfModuleGF9F$F$F
$%.Functor_Hom_RGf*F$F$FDF$C$F.-%5homalg/Functor_Hom_RGF9F$F$F$%1TorsionSubmodu
leGf*F$F$6%%^pCopyright~(C)~2003-2005~by~Mohamed~Barakat~and~Daniel~Robertz.~Al
l~rights~reserved.GF+F,F$C$F.-%8homalg/TorsionSubmoduleGF9F$F$F$%.Functor_Ext_R
Gf*F$F$FDF$C$F.-%5homalg/Functor_Ext_RGF9F$F$F$%7Functor_TensorProduct2Gf*F$F$F
DF$C$F.-%>homalg/Functor_TensorProduct2GF9F$F$F$%3LeftDerivedFunctorGf*F$F$6#F]
pF$C$F.-%:homalg/LeftDerivedFunctorGF9F$F$F$%0DefectOfHomsMapGf*F$F$FbuF$C$F.-%
7homalg/DefectOfHomsMapGF9F$F$F$%2ReplaceGeneratorsGf*F$F$6#F*F$C$F.-%9homalg/R
eplaceGeneratorsGF9F$F$F$%2TensorProduct2MapGf*F$F$F\pF$C$F.-%9homalg/TensorPro
duct2MapGF9F$F$F$%6Functor_TensorProductGf*F$F$FDF$C$F.-%=homalg/Functor_Tensor
ProductGF9F$F$F$%(ComposeGf*F$F$FesF$C$F.-%/homalg/ComposeGF9F$F$F$%2Cohomology
ModulesGf*F$F$F=F$C$F.-%9homalg/CohomologyModulesGF9F$F$F$%-Functor_LHomGf*F$F$
FDF$C$F.-%4homalg/Functor_LHomGF9F$F$F$%$HomGf*F$F$6#F\oF$C$F.-%+homalg/HomGF9F
$F$F$%3Ext1Of2OneCocyclesGf*F$F$6#%enCopyright~(C)~2008~by~Barbara~Bremer.~All~
rights~reserved.GF$C$F.-%:homalg/Ext1Of2OneCocyclesGF9F$F$F$%<InjectivePresenta
tionIsoFFRGf*F$F$F_qF$C$F.-%Chomalg/InjectivePresentationIsoFFRGF9F$F$F$%0IsSho
rtExactSeqGf*F$F$F=F$C$F.-%7homalg/IsShortExactSeqGF9F$F$F$%-CheckComplexGf*F$F
$F=F$C$F.-%4homalg/CheckComplexGF9F$F$F$%'TorMapGf*F$F$F)F$C$F.-%.homalg/TorMap
GF9F$F$F$%,Functor_ExtGf*F$F$FDF$C$F.-%3homalg/Functor_ExtGF9F$F$F$%/CofunctorO
nSeqGf*F$F$6%%[oCopyright~(C)~2004-2006~by~Mohamed~Barakat.~All~rights~reserved
.GF+F,F$C$F.-%6homalg/CofunctorOnSeqGF9F$F$F$%/SyzygiesModuleGf*F$F$FKF$C$F.-%6
homalg/SyzygiesModuleGF9F$F$F$%0SubfactorModuleGf*F$F$FjzF$C$F.-%7homalg/Subfac
torModuleGF9F$F$F$%-LeftinverseCGf*F$F$6%%[oCopyright~(C)~2006-2007~by~Mohamed~
Barakat.~All~rights~reserved.GF+F,F$C$F.-%4homalg/LeftinverseCGF9F$F$F$%.Connec
tingHomGf*F$F$FesF$C$F.-%5homalg/ConnectingHomGF9F$F$F$%+IsExactSeqGf*F$F$F=F$C
$F.-%2homalg/IsExactSeqGF9F$F$F$%(Tor2MapGf*F$F$FDF$C$F.-%/homalg/Tor2MapGF9F$F
$F$%1Functor_LHomHom3Gf*F$F$FDF$C$F.-%8homalg/Functor_LHomHom3GF9F$F$F$%:NatTrP
ullbackToTwoSourcesGf*F$F$6%%[oCopyright~(C)~2004-2007~by~Mohamed~Barakat.~All~
rights~reserved.GF+F,F$C$F.-%Ahomalg/NatTrPullbackToTwoSourcesGF9F$F$F$%.IsProj
ectiveCGf*F$F$6#FEF$C$F.-%5homalg/IsProjectiveCGF9F$F$F$%,AnnihilatorGf*F$F$FKF
$C$F.-%3homalg/AnnihilatorGF9F$F$F$%3BetterPresentationGf*F$F$6#FhclF$C$F.-%:ho
malg/BetterPresentationGF9F$F$F$%0IsCommutativeSqGf*F$F$F=F$C$F.-%7homalg/IsCom
mutativeSqGF9F$F$F$%,RHomHom3MapGf*F$F$FDF$C$F.-%3homalg/RHomHom3MapGF9F$F$F$%-
DefectOfHomsGf*F$F$6%%^pCopyright~(C)~2003-2008~by~Mohamed~Barakat~and~Daniel~R
obertz.~All~rights~reserved.GF+F,F$C$F.-%4homalg/DefectOfHomsGF9F$F$F$%'DerModG
f*F$F$Fe^lF$C$F.-%.homalg/DerModGF9F$F$F$%*EqualMapsGf*F$F$FgclF$C$F.-%1homalg/
EqualMapsGF9F$F$F$%*DirectSumGf*F$F$F[uF$C$F.-%1homalg/DirectSumGF9F$F$F$%-Func
tor_ExtqGf*F$F$FDF$C$F.-%4homalg/Functor_ExtqGF9F$F$F$%-Functor_Hom2Gf*F$F$FDF$
C$F.-%4homalg/Functor_Hom2GF9F$F$F$%0LHomHom_ROnSeqsGf*F$F$FDF$C$F.-%7homalg/LH
omHom_ROnSeqsGF9F$F$F$%,IdentityMapGf*F$F$Ff\lF$C$F.-%3homalg/IdentityMapGF9F$F
$F$%.LHomHomOnSeqsGf*F$F$FDF$C$F.-%5homalg/LHomHomOnSeqsGF9F$F$F$%*ExtensionGf*
F$F$6%%LCopyright~(C)~2007~by~~All~rights~reserved.GF+F,F$C$F.-%1homalg/Extensi
onGF9F$F$F$%9GeneratorsOfPresentationGf*F$F$FesF$C$F.-%@homalg/GeneratorsOfPres
entationGF9F$F$F$%+Hom2OnSeqsGf*F$F$FDF$C$F.-%2homalg/Hom2OnSeqsGF9F$F$F$%-Func
torOnSeqGf*F$F$F\pF$C$F.-%4homalg/FunctorOnSeqGF9F$F$F$%2ParametrizeModuleGf*F$
F$6%%^pCopyright~(C)~2003-2007~by~Mohamed~Barakat~and~Daniel~Robertz.~All~right
s~reserved.GF+F,F$C$F.-%9homalg/ParametrizeModuleGF9F$F$F$%:RightSatelliteOfCof
unctorGf*F$F$6#%[oCopyright~(C)~2005-2007~by~Mohamed~Barakat.~All~rights~reserv
ed.GF$C$F.-%Ahomalg/RightSatelliteOfCofunctorGF9F$F$F$%'ExtMapGf*F$F$F)F$C$F.-%
.homalg/ExtMapGF9F$F$F$%5TorsionFreeFactorEpiGf*F$F$FKF$C$F.-%<homalg/TorsionFr
eeFactorEpiGF9F$F$F$%3CocycleOfExtensionGf*F$F$6%%enCopyright~(C)~2007~by~Barba
ra~Bremer.~All~rights~reserved.GF+F,F$C$F.-%:homalg/CocycleOfExtensionGF9F$F$F$
%*TorOnSeqsGf*F$F$FDF$C$F.-%1homalg/TorOnSeqsGF9F$F$F$%,CokernelEpiGf*F$F$FgclF
$C$F.-%3homalg/CokernelEpiGF9F$F$F$%7LongExactCohomologySeqGf*F$F$FidlF$C$F.-%>
homalg/LongExactCohomologySeqGF9F$F$F$%&IsHomGf*F$F$6#FdpF$C$F.-%-homalg/IsHomG
F9F$F$F$%4ChineseRemainderMapGf*F$F$Ff\lF$C$F.-%;homalg/ChineseRemainderMapGF9F
$F$F$%(CoimageGf*F$F$F\blF$C$F.-%/homalg/CoimageGF9F$F$F$%/LHomHom3OnSeqsGf*F$F
$FDF$C$F.-%6homalg/LHomHom3OnSeqsGF9F$F$F$%6RightDerivedCofunctorGf*F$F$F[\lF$C
$F.-%=homalg/RightDerivedCofunctorGF9F$F$F$%+TorqOnSeqsGf*F$F$FDF$C$F.-%2homalg
/TorqOnSeqsGF9F$F$F$%1Functor_RHomHom2Gf*F$F$FDF$C$F.-%8homalg/Functor_RHomHom2
GF9F$F$F$%2A3ExtensionModuleGf*F$F$F[_lF$C$F.-%9homalg/A3ExtensionModuleGF9F$F$
F$%1BetterGeneratorsGf*F$F$FidlF$C$F.-%8homalg/BetterGeneratorsGF9F$F$F$%(Ext2M
apGf*F$F$FDF$C$F.-%/homalg/Ext2MapGF9F$F$F$%9Functor_TorsionSubmoduleGf*F$F$FDF
$C$F.-%@homalg/Functor_TorsionSubmoduleGF9F$F$F$%'HomMapGf*F$F$6%%[oCopyright~(
C)~2003-2005~by~Mohamed~Barakat.~All~rights~reserved.GF+F,F$C$F.-%.homalg/HomMa
pGF9F$F$F$%/homalg_optionsGf*F$F$6#F]blF$C$F.-%6homalg/homalg_optionsGF9F$F$F$%
6NatTrTargetToCokernelGf*F$F$FbuF$C$F.-%=homalg/NatTrTargetToCokernelGF9F$F$F$%
8TorsionFreeFactorOnSeqsGf*F$F$FKF$C$F.-%?homalg/TorsionFreeFactorOnSeqsGF9F$F$
F$%,IsInjectiveGf*F$F$F[uF$C$F.-%3homalg/IsInjectiveGF9F$F$F$%2A2ExtensionModul
eGf*F$F$F[_lF$C$F.-%9homalg/A2ExtensionModuleGF9F$F$F$%(PushoutGf*F$F$FKF$C$F.-
%/homalg/PushoutGF9F$F$F$%0HomologyModulesGf*F$F$F=F$C$F.-%7homalg/HomologyModu
lesGF9F$F$F$%$TorGf*F$F$F\pF$C$F.-%+homalg/TorGF9F$F$F$%,Ext_ROnSeqsGf*F$F$FDF$
C$F.-%3homalg/Ext_ROnSeqsGF9F$F$F$%0CompleteImSqInvGf*F$F$F=F$C$F.-%7homalg/Com
pleteImSqInvGF9F$F$F$%+RHomHomMapGf*F$F$FDF$C$F.-%2homalg/RHomHomMapGF9F$F$F$%,
RHomHom2MapGf*F$F$FDF$C$F.-%3homalg/RHomHom2MapGF9F$F$F$%.LEHS2AiBjCconGf*F$F$F
=F$C$F.-%5homalg/LEHS2AiBjCconGF9F$F$F$%-Functor_Tor2Gf*F$F$FDF$C$F.-%4homalg/F
unctor_Tor2GF9F$F$F$%(MakeSeqGf*F$F$6#F\alF$C$F.-%/homalg/MakeSeqGF9F$F$F$%0Nat
TrImToTargetGf*F$F$FKF$C$F.-%7homalg/NatTrImToTargetGF9F$F$F$%.LECS2conAiBjCGf*
F$F$F=F$C$F.-%5homalg/LECS2conAiBjCGF9F$F$F$%0IsStablyFreeFFRGf*F$F$F_qF$C$F.-%
7homalg/IsStablyFreeFFRGF9F$F$F$%0OriginalElementGf*F$F$F_qF$C$F.-%7homalg/Orig
inalElementGF9F$F$F$%-DirectSumMapGf*F$F$6#Fe`mF$C$F.-%4homalg/DirectSumMapGF9F
$F$F$%+BasisCoeffGf*F$F$6%%ioCopyright~(C)~2004~by~Mohamed~Barakat~and~Daniel~R
obertz.~All~rights~reserved.GF+F,F$C$F.-%2homalg/BasisCoeffGF9F$F$F$%0NatTrSour
ceToImGf*F$F$FKF$C$F.-%7homalg/NatTrSourceToImGF9F$F$F$%)CokernelGf*F$F$6%%[oCo
pyright~(C)~2004-2008~by~Mohamed~Barakat.~All~rights~reserved.GF+F,F$C$F.-%0hom
alg/CokernelGF9F$F$F$%$ExtGf*F$F$6%F\uF+F,F$C$F.-%+homalg/ExtGF9F$F$F$%-Present
ationGf*F$F$FidlF$C$F.-%4homalg/PresentationGF9F$F$F$%'KernelGf*F$F$6%%[oCopyri
ght~(C)~2003-2008~by~Mohamed~Barakat.~All~rights~reserved.GF+F,F$C$F.-%.homalg/
KernelGF9F$F$F$%&ImageGf*F$F$FKF$C$F.-%-homalg/ImageGF9F$F$F$%0ImageOfElementsG
f*F$F$F_qF$C$F.-%7homalg/ImageOfElementsGF9F$F$F$%*LHomHom_RGf*F$F$FDF$C$F.-%1h
omalg/LHomHom_RGF9F$F$F$%(LHomHomGf*F$F$FDF$C$F.-%/homalg/LHomHomGF9F$F$F$%8Yon
edaProductOfCocyclesGf*F$F$Ff[mF$C$F.-%?homalg/YonedaProductOfCocyclesGF9F$F$F$
%,LeftinverseGf*F$F$F_qF$C$F.-%3homalg/LeftinverseGF9F$F$F$%:StablyFreePresenta
tionFFRGf*F$F$F_qF$C$F.-%Ahomalg/StablyFreePresentationFFRGF9F$F$F$%4NatTrKerne
lToSourceGf*F$F$Fd`mF$C$F.-%;homalg/NatTrKernelToSourceGF9F$F$F$%0StdBasisVecto
rsGf*F$F$FesF$C$F.-%7homalg/StdBasisVectorsGF9F$F$F$%*GlobalDimGf*F$F$6%F>F+F,F
$C$F.-%1homalg/GlobalDimGF9F$F$F$%/DerMinusLogInvGf*F$F$F_qF$C$F.-%6homalg/DerM
inusLogInvGF9F$F$F$%3EqualPresentationsGf*F$F$FidlF$C$F.-%:homalg/EqualPresenta
tionsGF9F$F$F$%-IsExactCoseqGf*F$F$F=F$C$F.-%4homalg/IsExactCoseqGF9F$F$F$%/Fun
ctor_HomHomGf*F$F$FDF$C$F.-%6homalg/Functor_HomHomGF9F$F$F$%,CokernelMapGf*F$F$
FbuF$C$F.-%3homalg/CokernelMapGF9F$F$F$%'SubMatGf*F$F$F=F$C$F.-%.homalg/SubMatG
F9F$F$F$%.CompleteKerSqGf*F$F$F=F$C$F.-%5homalg/CompleteKerSqGF9F$F$F$%*MakeCos
eqGf*F$F$FbemF$C$F.-%1homalg/MakeCoseqGF9F$F$F$%,Functor_HomGf*F$F$FDF$C$F.-%3h
omalg/Functor_HomGF9F$F$F$%)PullbackGf*F$F$FbuF$C$F.-%0homalg/PullbackGF9F$F$F$
%1Functor_HomHom_RGf*F$F$FDF$C$F.-%8homalg/Functor_HomHom_RGF9F$F$F$%+LHomHomMa
pGf*F$F$FDF$C$F.-%2homalg/LHomHomMapGF9F$F$F$%,Hom_ROnSeqsGf*F$F$Fd\nF$C$F.-%3h
omalg/Hom_ROnSeqsGF9F$F$F$%.IsTorsionFreeGf*F$F$FKF$C$F.-%5homalg/IsTorsionFree
GF9F$F$F$%1Functor_RHomHom3Gf*F$F$FDF$C$F.-%8homalg/Functor_RHomHom3GF9F$F$F$%4
TensorProductOnSeqsGf*F$F$F)F$C$F.-%;homalg/TensorProductOnSeqsGF9F$F$F$%)LHom2
MapGf*F$F$FDF$C$F.-%0homalg/LHom2MapGF9F$F$F$%+ExtqOnSeqsGf*F$F$FDF$C$F.-%2homa
lg/ExtqOnSeqsGF9F$F$F$%-KroneckerMatGf*F$F$6#%fnCopyright~(C)~2003~by~Mohamed~B
arakat.~All~rights~reserved.GF$C$F.-%4homalg/KroneckerMatGF9F$F$F$%:YonedaProdu
ctOfExtensionsGf*F$F$Ff[mF$C$F.-%Ahomalg/YonedaProductOfExtensionsGF9F$F$F$%:Fu
nctor_TorsionFreeFactorGf*F$F$FKF$C$F.-%Ahomalg/Functor_TorsionFreeFactorGF9F$F
$F$%.HomHom2OnSeqsGf*F$F$FDF$C$F.-%5homalg/HomHom2OnSeqsGF9F$F$F$%(Hom2MapGf*F$
F$F)F$C$F.-%/homalg/Hom2MapGF9F$F$F$%,LHomHom2MapGf*F$F$FDF$C$F.-%3homalg/LHomH
om2MapGF9F$F$F$%,ReduceCoeffGf*F$F$FbgmF$C$F.-%3homalg/ReduceCoeffGF9F$F$F$%5Te
nsorProduct2OnSeqsGf*F$F$FDF$C$F.-%<homalg/TensorProduct2OnSeqsGF9F$F$F$%1Prese
ntationInfoGf*F$F$F=F$C$F.-%8homalg/PresentationInfoGF9F$F$F$%-IsSurjectiveGf*F
$F$F[uF$C$F.-%4homalg/IsSurjectiveGF9F$F$F$%4TorsionSubmoduleMapGf*F$F$FcpF$C$F
.-%;homalg/TorsionSubmoduleMapGF9F$F$F$%(ZeroMapGf*F$F$FesF$C$F.-%/homalg/ZeroM
apGF9F$F$F$%'ReduceGf*F$F$FbuF$C$F.-%.homalg/ReduceGF9F$F$F$%.Functor_Extq2Gf*F
$F$FDF$C$F.-%5homalg/Functor_Extq2GF9F$F$F$%+LHomOnSeqsGf*F$F$FDF$C$F.-%2homalg
/LHomOnSeqsGF9F$F$F$%&Ext_RGf*F$F$6%%^pCopyright~(C)~2003-2006~by~Mohamed~Barak
at~and~Daniel~Robertz.~All~rights~reserved.GF+F,F$C$F.-%-homalg/Ext_RGF9F$F$F$%
9InjectivePresentationFFRGf*F$F$F_qF$C$F.-%@homalg/InjectivePresentationFFRGF9F
$F$F$%+InvolutionGf*F$F$6#%jnCopyright~(C)~2004-2005~by~Daniel~Robertz.~All~rig
hts~reserved.GF$C$F.-%2homalg/InvolutionGF9F$F$F$%+ZeroModuleGf*F$F$Fd\nF$C$F.-
%2homalg/ZeroModuleGF9F$F$F$%1ResidueClassRingGf*F$F$F[alF$C$F.-%8homalg/Residu
eClassRingGF9F$F$F$%.Functor_LHom2Gf*F$F$FDF$C$F.-%5homalg/Functor_LHom2GF9F$F$
F$%*IsZeroMapGf*F$F$FgclF$C$F.-%1homalg/IsZeroMapGF9F$F$F$%1TensorProductMapGf*
F$F$F)F$C$F.-%8homalg/TensorProductMapGF9F$F$F$%)HomMap_RGf*F$F$Fd`mF$C$F.-%0ho
malg/HomMap_RGF9F$F$F$%6NatIsoKerOfSqToImOfSqGf*F$F$F\]mF$C$F.-%=homalg/NatIsoK
erOfSqToImOfSqGF9F$F$F$%/RHomHom2OnSeqsGf*F$F$FDF$C$F.-%6homalg/RHomHom2OnSeqsG
F9F$F$F$%AA2ExtensionModuleFromA2ExtensionGf*F$F$6#%jnCopyright~(C)~2007-2008~b
y~Barbara~Bremer.~All~rights~reserved.GF$C$F.-%Hhomalg/A2ExtensionModuleFromA2E
xtensionGF9F$F$F$%0Functor_LHomHomGf*F$F$FDF$C$F.-%7homalg/Functor_LHomHomGF9F$
F$F$%)ImageEpiGf*F$F$FKF$C$F.-%0homalg/ImageEpiGF9F$F$F$%7ProjectiveDimensionFF
RGf*F$F$F_qF$C$F.-%>homalg/ProjectiveDimensionFFRGF9F$F$F$%/InverseElementGf*F$
F$FidlF$C$F.-%6homalg/InverseElementGF9F$F$F$%/CheckCocomplexGf*F$F$F=F$C$F.-%6
homalg/CheckCocomplexGF9F$F$F$%+HomHom2MapGf*F$F$FDF$C$F.-%2homalg/HomHom2MapGF
9F$F$F$%.TensorProductGf*F$F$F[\lF$C$F.-%5homalg/TensorProductGF9F$F$F$%-HomHom
OnSeqsGf*F$F$FDF$C$F.-%4homalg/HomHomOnSeqsGF9F$F$F$%,DerMinusLogGf*F$F$F_qF$C$
F.-%3homalg/DerMinusLogGF9F$F$F$%+HomHom3MapGf*F$F$FDF$C$F.-%2homalg/HomHom3Map
GF9F$F$F$%,ComposeMapsGf*F$F$F_qF$C$F.-%3homalg/ComposeMapsGF9F$F$F$%+CheckKerS
qGf*F$F$F\]mF$C$F.-%2homalg/CheckKerSqGF9F$F$F$%*KernelMapGf*F$F$Fd`mF$C$F.-%1h
omalg/KernelMapGF9F$F$F$%0CofunctorOnSeqsGf*F$F$Fd\nF$C$F.-%7homalg/CofunctorOn
SeqsGF9F$F$F$%+FreeModuleGf*F$F$FbuF$C$F.-%2homalg/FreeModuleGF9F$F$F$%2Functor
_LHomHom_RGf*F$F$FDF$C$F.-%9homalg/Functor_LHomHom_RGF9F$F$F$%+FunctorMapGf*F$F
$F[alF$C$F.-%2homalg/FunctorMapGF9F$F$F$%.BasisOfModuleGf*F$F$FbuF$C$F.-%5homal
g/BasisOfModuleGF9F$F$F$%%ExtqGf*F$F$F\pF$C$F.-%,homalg/ExtqGF9F$F$F$%*LEHS2leh
sGf*F$F$F=F$C$F.-%1homalg/LEHS2lehsGF9F$F$F$%.ResolveModuleGf*F$F$F\pF$C$F.-%5h
omalg/ResolveModuleGF9F$F$F$%3PullbackPairOfMapsGf*F$F$FgclF$C$F.-%:homalg/Pull
backPairOfMapsGF9F$F$F$%+LeftDivideGf*F$F$FesF$C$F.-%2homalg/LeftDivideGF9F$F$F
$%,CompleteSeqGf*F$F$F)F$C$F.-%3homalg/CompleteSeqGF9F$F$F$%:IsEquivalenceOfExt
ensionsGf*F$F$FKF$C$F.-%Ahomalg/IsEquivalenceOfExtensionsGF9F$F$F$%3ReduceRingE
lementsGf*F$F$F[alF$C$F.-%:homalg/ReduceRingElementsGF9F$F$F$%.RHomHomOnSeqsGf*
F$F$FDF$C$F.-%5homalg/RHomHomOnSeqsGF9F$F$F$%+table2listGf*F$F$F=F$C$F.-%2homal
g/table2listGF9F$F$F$%(DiagMatGf*F$F$Fd`mF$C$F.-%/homalg/DiagMatGF9F$F$F$%1Chec
kCompositionGf*F$F$F=F$C$F.-%8homalg/CheckCompositionGF9F$F$F$%.SyzygiesBasisGf
*F$F$FgclF$C$F.-%5homalg/SyzygiesBasisGF9F$F$F$%,IsReflexiveGf*F$F$FKF$C$F.-%3h
omalg/IsReflexiveGF9F$F$F$%1CheckHomsOfCoseqGf*F$F$F=F$C$F.-%8homalg/CheckHomsO
fCoseqGF9F$F$F$%5ResolveShortExactSeqGf*F$F$FesF$C$F.-%<homalg/ResolveShortExac
tSeqGF9F$F$F$%-RightinverseGf*F$F$6#%enCopyright~(C)~2004~by~Daniel~Robertz.~Al
l~rights~reserved.GF$C$F.-%4homalg/RightinverseGF9F$F$F$%-CompleteImSqGf*F$F$F=
F$C$F.-%4homalg/CompleteImSqGF9F$F$F$%5ReducedBasisOfModuleGf*F$F$F\blF$C$F.-%<
homalg/ReducedBasisOfModuleGF9F$F$F$%9NatTrTwoTargetsToPushoutGf*F$F$FKF$C$F.-%
@homalg/NatTrTwoTargetsToPushoutGF9F$F$F$%(TorqMapGf*F$F$F)F$C$F.-%/homalg/Torq
MapGF9F$F$F$%7TorsionSubmoduleOnSeqsGf*F$F$FDF$C$F.-%>homalg/TorsionSubmoduleOn
SeqsGF9F$F$F$%+SyzygiesOpGf*F$F$FehmF$C$F.-%2homalg/SyzygiesOpGF9F$F$F$%,RightD
ivideGf*F$F$FidlF$C$F.-%3homalg/RightDivideGF9F$F$F$%/NormalizeInputGf*F$F$Fd\n
F$C$F.-%6homalg/NormalizeInputGF9F$F$F$%)HomHom_RGf*F$F$6%FiuF+F,F$C$F.-%0homal
g/HomHom_RGF9F$F$F$%(KerOfSqGf*F$F$F\]mF$C$F.-%/homalg/KerOfSqGF9F$F$F$%0Functo
r_HomHom3Gf*F$F$FDF$C$F.-%7homalg/Functor_HomHom3GF9F$F$F$%'ImOfSqGf*F$F$F\]mF$
C$F.-%.homalg/ImOfSqGF9F$F$F$%,HomHomMap_RGf*F$F$FeqF$C$F.-%3homalg/HomHomMap_R
GF9F$F$F$%;NatTrIdToTorsionFreeFactorGf*F$F$FKF$C$F.-%Bhomalg/NatTrIdToTorsionF
reeFactorGF9F$F$F$%)Torq2MapGf*F$F$FDF$C$F.-%0homalg/Torq2MapGF9F$F$F$%8DegreeO
fTorsionFreenessGf*F$F$F_qF$C$F.-%?homalg/DegreeOfTorsionFreenessGF9F$F$F$%.Nor
malizeRingGf*F$F$6%F^foF+F,F$C$F.-%5homalg/NormalizeRingGF9F$F$F$%-Intersection
Gf*F$F$F^jlF$C$F.-%4homalg/IntersectionGF9F$F$F$%-SumRelationsGf*F$F$F\]mF$C$F.
-%4homalg/SumRelationsGF9F$F$F$%0Functor_RHomHomGf*F$F$FDF$C$F.-%7homalg/Functo
r_RHomHomGF9F$F$F$%2ShortenResolutionGf*F$F$FKF$C$F.-%9homalg/ShortenResolution
GF9F$F$F$%*HomOnSeqsGf*F$F$Fd\nF$C$F.-%1homalg/HomOnSeqsGF9F$F$F$%*IsTorsionGf*
F$F$FKF$C$F.-%1homalg/IsTorsionGF9F$F$F$%1ImageOfSubmoduleGf*F$F$F_qF$C$F.-%8ho
malg/ImageOfSubmoduleGF9F$F$F$%*CheckImSqGf*F$F$F\]mF$C$F.-%1homalg/CheckImSqGF
9F$F$F$%0Functor_HomHom2Gf*F$F$FDF$C$F.-%7homalg/Functor_HomHom2GF9F$F$F$%(Kaeh
lerGf*F$F$Fe^lF$C$F.-%/homalg/KaehlerGF9F$F$F$%)CheckHomGf*F$F$F\]mF$C$F.-%0hom
alg/CheckHomGF9F$F$F$%/LHomHom2OnSeqsGf*F$F$FDF$C$F.-%6homalg/LHomHom2OnSeqsGF9
F$F$F$%'MulMatGf*F$F$FesF$C$F.-%.homalg/MulMatGF9F$F$F$%,IsFreeBasisGf*F$F$6%Ff
jlF+F,F$C$F.-%3homalg/IsFreeBasisGF9F$F$F$%*HomHomMapGf*F$F$FDF$C$F.-%1homalg/H
omHomMapGF9F$F$F$%:NatTrTorsionSubmoduleToIdGf*F$F$FcpF$C$F.-%Ahomalg/NatTrTors
ionSubmoduleToIdGF9F$F$F$%.Functor_Torq2Gf*F$F$FDF$C$F.-%5homalg/Functor_Torq2G
F9F$F$F$%(RHomHomGf*F$F$FDF$C$F.-%/homalg/RHomHomGF9F$F$F$%&Hom_RGf*F$F$F[oF$C$
F.-%-homalg/Hom_RGF9F$F$F$%*LECS2lecsGf*F$F$F=F$C$F.-%1homalg/LECS2lecsGF9F$F$F
$%-IsZeroModuleGf*F$F$FgclF$C$F.-%4homalg/IsZeroModuleGF9F$F$F$%=StablyFreePres
entationIsoFFRGf*F$F$F_qF$C$F.-%Dhomalg/StablyFreePresentationIsoFFRGF9F$F$F$%,
IsBijectiveGf*F$F$F_qF$C$F.-%3homalg/IsBijectiveGF9F$F$F$%,Extq2OnSeqsGf*F$F$FD
F$C$F.-%3homalg/Extq2OnSeqsGF9F$F$F$%3SyzygiesGeneratorsGf*F$F$Fd\nF$C$F.-%:hom
alg/SyzygiesGeneratorsGF9F$F$F$%)ImageEmbGf*F$F$FKF$C$F.-%0homalg/ImageEmbGF9F$
F$F$%3ResolutionOfModuleGf*F$F$FDF$C$F.-%:homalg/ResolutionOfModuleGF9F$F$F$%7L
eftSatelliteOfFunctorGf*F$F$F[\lF$C$F.-%>homalg/LeftSatelliteOfFunctorGF9F$F$F$
%5LongExactHomologySeqGf*F$F$FidlF$C$F.-%<homalg/LongExactHomologySeqGF9F$F$F$%
4TorsionSubmoduleEmbGf*F$F$Fd`mF$C$F.-%;homalg/TorsionSubmoduleEmbGF9F$F$F$F$,
Q)homalg.mF$
M7R0
I(homalgT=6"%&falseGE\[lT%/GetConvertInfoGf*F$F$6#%[oCopyright~(C)~2005-2007~by
~Mohamed~Barakat.~All~rights~reserved.GF$C$30%3homalg/initializedG.%%trueG0-%,h
omalg/initGF$""!-%6homalg/GetConvertInfoG6#9"F$F$F$%2NonZeroGeneratorsGf*F$F$6#
%[oCopyright~(C)~2004-2005~by~Mohamed~Barakat.~All~rights~reserved.GF$C$F,-%9ho
malg/NonZeroGeneratorsGF7F$F$F$%6ConvertColumnToMatrixGf*F$F$6#%fnCopyright~(C)
~2008~by~Mohamed~Barakat.~All~rights~reserved.GF$C$F,-%=homalg/ConvertColumnToM
atrixGF7F$F$F$%?GetRowIndependentUnitPositionsGf*F$F$FBF$C$F,-%Fhomalg/GetRowIn
dependentUnitPositionsGF7F$F$F$%*tablenameGf*F$F$6#%^pCopyright~(C)~2004-2006~b
y~Mohamed~Barakat~and~Daniel~Robertz.~All~rights~reserved.GF$C$F,-%1homalg/tabl
enameGF7F$F$F$%-IsZeroMatrixGf*F$F$FBF$C$F,-%4homalg/IsZeroMatrixGF7F$F$F$%<Syz
ygiesGeneratorsOfColumnsGf*F$F$6%FC%'systemG%)rememberGF$C$F,-%Chomalg/Syzygies
GeneratorsOfColumnsGF7F$F$F$%4EmbedInFactorModuleGf*F$F$6#%fnCopyright~(C)~2004
~by~Mohamed~Barakat.~All~rights~reserved.GF$C$F,-%;homalg/EmbedInFactorModuleGF
7F$F$F$%1BasisOfRowModuleGf*F$F$FZF$C$F,-%8homalg/BasisOfRowModuleGF7F$F$F$%+Ex
tension1Gf*F$F$6%%fnCopyright~(C)~2007~by~Mohamed~Barakat.~All~rights~reserved.
GFenFfnF$C$F,-%2homalg/Extension1GF7F$F$F$%,BetterBasisGf*F$F$6#%[oCopyright~(C
)~2004-2007~by~Mohamed~Barakat.~All~rights~reserved.GF$C$F,-%3homalg/BetterBasi
sGF7F$F$F$%9YonedaProductOfCocycles2Gf*F$F$6%%enCopyright~(C)~2007~by~Barbara~B
remer.~All~rights~reserved.GFenFfnF$C$F,-%@homalg/YonedaProductOfCocycles2GF7F$
F$F$%4BasisOfColumnsCoeffGf*F$F$FZF$C$F,-%;homalg/BasisOfColumnsCoeffGF7F$F$F$%
0PrettyExtensionGf*F$F$6#FgpF$C$F,-%7homalg/PrettyExtensionGF7F$F$F$%=SolveSyst
emWithConstraintsC2Gf*F$F$FfpF$C$F,-%Dhomalg/SolveSystemWithConstraintsC2GF7F$F
$F$%,ZeroColumnsGf*F$F$FBF$C$F,-%3homalg/ZeroColumnsGF7F$F$F$%4BasisOfColumnMod
uleGf*F$F$FZF$C$F,-%;homalg/BasisOfColumnModuleGF7F$F$F$%BGetColumnIndependentU
nitPositionsGf*F$F$FBF$C$F,-%Ihomalg/GetColumnIndependentUnitPositionsGF7F$F$F$
%2DecideZeroColumnsGf*F$F$FZF$C$F,-%9homalg/DecideZeroColumnsGF7F$F$F$%,compute
_psiGf*F$F$6#%ioCopyright~(C)~2008~by~Mohamed~Barakat~and~Barbara~Bremer.~All~r
ights~reserved.GF$C$F,-%3homalg/compute_psiGF7F$F$F$%-FirstNonZeroGf*F$F$F\oF$C
$F,-%4homalg/FirstNonZeroGF7F$F$F$%/MonomialMatrixGf*F$F$6#%[oCopyright~(C)~200
9-2012~by~Mohamed~Barakat.~All~rights~reserved.GF$C$F,-%6homalg/MonomialMatrixG
F7F$F$F$%1BasisOfRowsCoeffGf*F$F$FZF$C$F,-%8homalg/BasisOfRowsCoeffGF7F$F$F$%'R
esDimGf*F$F$6#%[oCopyright~(C)~2003-2004~by~Mohamed~Barakat.~All~rights~reserve
d.GF$C$F,-%.homalg/ResDimGF7F$F$F$%1AreEqualMatricesGf*F$F$FZF$C$F,-%8homalg/Ar
eEqualMatricesGF7F$F$F$%)ZeroRowsGf*F$F$FBF$C$F,-%0homalg/ZeroRowsGF7F$F$F$%/De
cideZeroRowsGf*F$F$FZF$C$F,-%6homalg/DecideZeroRowsGF7F$F$F$%8DiagonalElementsA
ndRankGf*F$F$F\oF$C$F,-%?homalg/DiagonalElementsAndRankGF7F$F$F$%,LastNonZeroGf
*F$F$F\oF$C$F,-%3homalg/LastNonZeroGF7F$F$F$%<SolveSystemWithConstraintsCGf*F$F
$FfpF$C$F,-%Chomalg/SolveSystemWithConstraintsCGF7F$F$F$%,RankOfGaussGf*F$F$F\o
F$C$F,-%3homalg/RankOfGaussGF7F$F$F$%2ConvertGeneratorsGf*F$F$F;F$C$F,-%9homalg
/ConvertGeneratorsGF7F$F$F$%3ConvertRowToMatrixGf*F$F$FBF$C$F,-%:homalg/Convert
RowToMatrixGF7F$F$F$%-SyzygiesDataGf*F$F$FhoF$C$F,-%4homalg/SyzygiesDataGF7F$F$
F$%.SingleNonZeroGf*F$F$6#%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All~rights~
reserved.GF$C$F,-%5homalg/SingleNonZeroGF7F$F$F$%?A2ExtensionModuleFromA2Cocycl
eGf*F$F$FbqF$C$F,-%Fhomalg/A2ExtensionModuleFromA2CocycleGF7F$F$F$%2ConvertToLi
stListGf*F$F$FBF$C$F,-%9homalg/ConvertToListListGF7F$F$F$%<GetIndependentUnitPo
sitionsGf*F$F$FbxF$C$F,-%Chomalg/GetIndependentUnitPositionsGF7F$F$F$%0GetUnitP
ositionGf*F$F$F_pF$C$F,-%7homalg/GetUnitPositionGF7F$F$F$%:DecideZeroRowsEffect
ivelyGf*F$F$FZF$C$F,-%Ahomalg/DecideZeroRowsEffectivelyGF7F$F$F$%4CokernelOfExt
ensionGf*F$F$FbqF$C$F,-%;homalg/CokernelOfExtensionGF7F$F$F$%1copyright_homalgG
f*F$F$6#%^pCopyright~(C)~2002-2012~by~Mohamed~Barakat~and~Daniel~Robertz.~All~r
ights~reserved.GF$C$F,-%8homalg/copyright_homalgGF7F$F$F$%4CocycleOfExtension1G
f*F$F$6%%ioCopyright~(C)~2007~by~Mohamed~Barakat~and~Barbara~Bremer.~All~rights
~reserved.GFenFfnF$C$F,-%;homalg/CocycleOfExtension1GF7F$F$F$%+GetOptionsGf*F$F
$6%%fnCopyright~(C)~2005~by~Mohamed~Barakat.~All~rights~reserved.GFenFfnF$C$F,-
%2homalg/GetOptionsGF7F$F$F$%3NormalizeExtensionGf*F$F$FbqF$C$F,-%:homalg/Norma
lizeExtensionGF7F$F$F$%9SyzygiesGeneratorsOfRowsGf*F$F$FZF$C$F,-%@homalg/Syzygi
esGeneratorsOfRowsGF7F$F$F$%.compute_kappaGf*F$F$FasF$C$F,-%5homalg/compute_kap
paGF7F$F$F$%=DecideZeroColumnsEffectivelyGf*F$F$FZF$C$F,-%Dhomalg/DecideZeroCol
umnsEffectivelyGF7F$F$F$%0Template_homalgGf*F$F$6#%ioCopyright~(C)~2007~by~Moha
med~Barakat~and~Daniel~Robertz.~All~rights~reserved.GF$C$F,-%7homalg/Template_h
omalgGF7F$F$F$%3FactorizeExtensionGf*F$F$FbqF$C$F,-%:homalg/FactorizeExtensionG
F7F$F$F$%6GetCleanRowsPositionsGf*F$F$FBF$C$F,-%=homalg/GetCleanRowsPositionsGF
7F$F$F$F$,
Q*homalgT.mF$
M7R0
IJhomalg/AModuleForATwoExtensionFromCocyclef*6'%"MG%$etaG%"NG'%$varG%%listG%,Ri
ngPackageG6%%#RPG%$narG%$extG6#%enCopyright~(C)~2007~by~Barbara~Bremer.~All~rig
hts~reserved.G6"C&>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F5%*procedur
eG-%'RETURNG6#-F56#&F;6#;""",&F=FLF>F=>8&-%1homalg/ExtensionG6(""#9$9%9&9'F5-%?
homalg/AModuleForATwoExtensionG6%FOFWF5F2F2F2F2,
QLhomalg/AModuleForATwoExtensionFromCocycle.mF2
M7R0
I8homalg/BetterGeneratorsf*6%%#_MG'%$varG%%listG%,RingPackageG6S%#RPG%$narG%*co
mpute_UG%*compute_VG%+compute_UIG%+compute_VIG%&nar_UG%&nar_VG%'nar_UIG%'nar_VI
G%"MG%"mG%#UVG%#MMG%DCOMPUTED_A_STABLY_FREE_PRESENTATIONG%)finishedG%Tcheck_if_
stably_free_rank_1_commutative_FFR_is_freeG%Hcheck_if_stably_free_rank_1_FFR_is
_freeG%Echeck_if_parametrization_FFR_is_freeG%#nnG%"nG%%Id_UG%%Id_VG%"UG%"VG%#U
IG%#VIG%%zeroG%$oneG%.clean_columnsG%0unclean_columnsG%"bG%2get_unit_positionG%
9get_clean_rows_positionsG%Cget_pair_of_gcd_1_position_per_rowG%Fget_pair_of_gc
d_1_position_per_columnG%Fget_all_but_one_gcd_1_column_positionG%Cget_all_but_o
ne_gcd_1_row_positionG%Jget_column_with_a_unit_in_its_leftinverseG%Hget_row_wit
h_a_unit_in_its_rightinverseG%0eliminate_unitsG%+clean_rowsG%-unclean_rowsG%Del
iminate_all_but_one_gcd_1_columnsG%Aeliminate_all_but_one_gcd_1_rowsG%Qeliminat
e_columns_with_a_unit_in_its_leftinverseG%Oeliminate_rows_with_a_unit_in_its_ri
ghtinverseG%#CMG%"AG6#%[oCopyright~(C)~2004-2007~by~Mohamed~Barakat.~All~rights
~reserved.G6"C1>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F[o%*procedureG
-%'RETURNG6#-F[o6#&Fao6#;""",&FcoFbpFdoFco@0/9#,&""#FbpFdoFbpC&>8&%&falseG>8'F\
q>8(F\q>8)F\q3/Ffp,&""$FbpFdoFbp-Fgo6$&Fao6#Ffq%'symbolGC'>F[qF\q>F^q%%trueG>F`
qF\q>FbqF\q>8+Ffq332FeqFfpFgq-Fgo6$&Fao6#""%%'stringGC'>F[qF\q>F^qF\q>F`qF\q>Fb
qF_r>8-Ffq33332,&""&FbpFdoFbpFfpFgq-Fgo6$FirF[r-Fgo6$&Fao6#FjsF\s-Fgo6$&Fao6#""
'F\sC(>F[qF\q>F^qF_r>F`qF\q>FbqF_r>FcrFfq>FcsF[s3332,&F[sFbpFdoFbpFfpFgqF[tF]tC
(>F[qF\q>F^qF\q>F`qF_r>FbqF_r>8,Ffq>FcsF[s33Ffs-Fgo6$F_tF[r-Fgo6$FctF[rC*>F[qF_
r>F^qF_r>F`qF_r>FbqF_r>8*Ffq>FcrF[s>FhuFjs>FcsFet3FgqF[tC(>F[qF_r>F^qF_r>F`qF\q
>FbqF\q>FfvFfq>FcrF[s>8.-%6homalg/NormalizeInputG6$9$F[o>8/-&F[o6#%3NumberOfGen
eratorsG6#Fcw>83F\q@$33-%)assignedG6#&F[o6#QTcheck_if_stably_free_rank_1_commut
ative_FFR_is_freeFhn/7#Fgx7#F_r4-%3homalg/IsFreeBasisG6%-%<homalg/ReducedBasisO
fModuleG6%Fcw9%F[oFdyF[oC(>84f*Fhn6%%"SG%"pG%$epiGFhnFhnC'>F[o-%Ahomalg/StablyF
reePresentationFFRG6&T#T&Q/ONLY_IF_RANK_1FhnT'@$/F[o%%FAILG-F[p6#F\q>Fdo-&FezF\
x6#F[o>F[q-&Fez6#%'matrixG6#-%:homalg/ReduceRingElementsG6%-%$mapG6$f*6#%"iGFhn
6$%)operatorG%&arrowGFhn7#*&)Fco,&FbzFbpFgwFbpFbp-&%'linalgG6#%$detG6#-Few6$-&F
ez6#%/CertainColumnsG6$T%7$-%"$G6#;Fbp,&FgwFbpFcoFbp-Fe]l6#;,&FgwFbpFbpFbpFbzFe
zFbpFhnFhn6(F[zFdoFjyF[oF+Fez7#-Fe]l6#;FbpFdoFczFez-F[p6#7$-%%copyG6#F[q-%4homa
lg/LeftinverseFG6%F[qFczFezFhnFhn6(F5FcwF'FdyF+F[o@$3-Fex6#&F[o6#Q1heuristics_d
ebugFhn/7#F`_lF\y-%&debugG6#Fgy-%6homalg/homalg_optionsG6$/FixF\qF[o>8<-FgyFhn-
Fi_l6$/FixF_rF[o@$-Fgo6$F]`lF(C(>Fcw7#7#-&F[o6#%%ZeroGFhn@$Fbq>8>-Ff^l6#&F]`l6#
Fhp@$F^q>F]`l-Ff^l6#&F]`l6#Fbp@$F[q>8;Q.not~availableFhn@$F`q>8=F]bl>F`xF_r@$33
4F`x-Fex6#&F[o6#QHcheck_if_stably_free_rank_1_FFR_is_freeFhn/7#FhblF\yC(>85f*Fh
n6&%"PG%"FG%#imGF\zFhnFhnC)>F[o-%9homalg/ParametrizeModuleGFaz@$FgzFiz>Fdo-%2ho
malg/FreeModuleG6%FbpFczFez@$4-%3homalg/IsInjectiveG6'FbzF[oFdoFczFezFiz>F^q-%1
homalg/ImageFEpiG6&F[oFcz/Q@var_to_assign_functor_on_objectFhn.F[qFez@$4-F_yFj^
lFiz-F[p6#7$-Ff^l6#F^q-%3homalg/LeftinverseG6(FbzF^qF[qFczQ)NO_CHECKFhnFezFhnFh
nF[_l@$F]_l-Ff_l6#F_cl-Fi_l6$/FjblF\qF[o>F]`l-F_clFhn-Fi_l6$/FjblF_rF[o@$Fc`lC(
>FcwFg`l@$Fbq>F_alF`al@$F^q>F]`lFfal@$F[q>F\blF]bl@$F`q>F`blF]bl>F`xF_r@$33Febl
-Fex6#&F[o6#QEcheck_if_parametrization_FFR_is_freeFhn/7#FbglF\yC(>86f*Fhn6'Fbcl
%"rGFcclFdclF\zFhnFhnC)>F[o-Fhcl6%FbzFczFez>FdoF\[l>F[q-F\dl6%FdoFczFez@$4-Fadl
6'FbzF[oF[qFczFezFiz>F`q-Fedl6&F[oFcz/Fhdl.F^qFez@$4-F_y6%F^qFczFezFiz-F[p6#7$-
Ff^l6#F`q-Fcel6(FbzF`qF^qFczFeelFezFhnFhnF[_l@$F]_l-Ff_l6#Figl-Fi_l6$/FdglF\qF[
o>F]`l-FiglFhn-Fi_l6$/FdglF_rF[o@$Fc`lC(>Fcw7#-Fj`l6#-F[xFgal@$Fbq>F_alF`al@$F^
q>F]`lFfal@$F[q>F\blF]bl@$F`q>F`blF]bl>F`xF_r@&33Febl-Fex6#&F[o6#%*BestBasisG4-
F_yFcyC0@'4555F[qF`qF^qFbq>80%%NULLG3Fc\m45F^qFbq>Fe\mF\bl>Fe\m6$F\blF]`l>82F\q
@$3-Fex6#&F[o6#%<NeedsStablyFreePresentationG/Fc]mF_rC$>81-F`zFcy@$30Fi]mFhz0-F
[x6#Fi]mFiwC$>F^]mF_r>Fcw-Ff^lF`^m>Fcw-Fi[m6%FcwFdyFe\m@$4-Fgo6$Fcw&F[o6#%+matr
ixtypeG>Fcw-&F[oFb[lF^x@'F`\mFhnFg\m@$45-Fgo6$F\blF\_m-Fgo6$F\blF\s>F\bl-Fa_m6#
F\blC%/Q"VFhn-Ff^l6#F]`l@$Fd_m>F\blF[`m@&33Fc`l0F]`l7"-Fgo6$FhalF\s@%2""!-%+sea
rchtextG6$Q$invFhnFhalC$>F_alF`al@$F^q>F]`l-Fcel6'F_alFgwFdyFeelF[o-%&ERRORG6$%
GCannot~interpret~the~first~string~in~VGFhal4-Fgo6$F]`lF\_m>F]`l-Fa_mFa`m@$F`q@
%Fh_m>F`blF\bl>F`bl-Fi^l6%F\blFdyF[o@$3Fbq4-Fex6#F_al>F_al-Fi^l6%F]`lFdyF[o@$3F
bqF^]m>F_al-&F[oF_]l6$F_al7#-Fe]l6#;FbpFiw@$3F^qF^]m>F]`l-&F[o6#%,CertainRowsG6
$F]`lFecm>8T-%2homalg/BasisCoeffG6&FcwFdy.8SF[o@$3F[q4Fh_m>F\bl-%/homalg/Compos
eG6&FgdmF\blFdyF[o@$3F`q4-Fgo6$F`blF\sC$-%4homalg/RightDivideFG6&FcwFbdmFdyF[o>
F`bl-F]em6&F`bl%"%GFdyF[o>FcwFbdmFeblC6>8:-%3homalg/IdentityMapG6%FiwFdyF[o@$F^
q>F]`l-Ff^l6#F_fm@$Fbq>F_alFefm>87-&F[o6#%-NumberOfRowsGF^x>88Fjfm>89-Fafm6%F`g
mFdyF[o@$F[q>F\bl-Ff^l6#Fbgm@$F`q>F`blFggm>8?Fi`l>8@-&F[o6#%$OneGFhn>8AFh`m>8BF
ecm>8MFh`m>8N7#-Fe]l6#;FbpF`gm>8Df*Fhn6$F]\l%"jGFhnFhnC$?&F[o7#-Fe]l6#;FbpFbzF_
r?&FdoFb]lF_r@$0-%6homalg/InverseElementG6%&Fez6$F[oFdoT*T+Fhz-F[p6#7$F[oFdoFf\
mFhnFhn6,F?F`gmFIFfhmF5FcwF'FdyF+F[o>8Ef*Fhn6%FTFcimF]\lFhnFhnC%>F[oFf\m?&FdoFb
zF_r?(F[qFbpFbpFb]lF_r@$/&T)6$F[qFdoFezC$>F[o6$F[oF[q[7#F[oFhnFhn6*FHFdhmF?F`gm
FGF^hmF5Fcw>8Lf*6#F[z6.%$posGF]\lFcimF\hl%"qG%"aG%"vG%#viG%"uG%#uiG%"lG%"kGFhnF
hnC)@$3-Fex6#&FbzFa_l/7#F^]nF\y/Q#M~Fhn-Ff^l6#Fb]l@%2F]amFfp>F[oFgw>F[o-FezFhn@
%/F[oFf\mC%>Fc[n-FcjmFhn>T--Fi[l6$f*6#Fb\nFhnF^\lFhn@$4-%'memberG6$FgwFbzFgwFhn
Fhn6$FTFc[n7#-Fe]l6#;FbpT/-F[p6$QMeliminate_units:~NO~new~obsolete~generators:F
hnT1>T3F\q?(FhnFbpFbpFhnF_rC5>Fdo&F[oFial>F[q&F[oFcal>Fc_n7$-%#opG6#Fc_nF[q>T5-
Fi[l6$f*Fd^nFhnF^\lFhn@$0FgwFbzFgwFhnFhn6$FcimF[qFb`n@$0&Fb]l6$FdoF[qT7C(>F^qF[
an>F`q-&Fbz6#%)simplifyG6$-&Fbz6#%-DivideByUnitG6%F]anF^qT:F[bn>F[anF]an?(FbqFb
pFbpT;F_r@$0FbqF[q>&Fb]l6$FdoFbq-Fban6$-Fgan6%FbbnF^qF[bnF[bn@$T=?(FbqFbpFbpT?F
_r>&TAFcbn-Fban6$-Fgan6%F]cnF^qF[bnF[bn@$TC?(FbqFbpFbpF[cnF_r>&TE6$FbqFdo-Fban6
$-Fgan6%FgcnF`qF[bnF[bn>Ffv-Ff^l6#TG@$TI>FcrF_dn?(FcwFbpFbpF^bnF_r@$30FcwF[q0&F
b]l6$FdoFcwTKC%>F^qFjdn>&Ffv6$F[qFcw-&Fbz6#%&MinusG6%F\enF^qF[bn@$Fcdn>&FcrFaen
F^q@$TM>TO-F]em6&F]fnFfvF[bnFbz@$Fcdn>TQ-F]em6&FcrFbfnF[bnFbz>Fb]l-F]em6&Fb]lFf
vF[bnFbz@$Fibn>Fhu-Ff^l6#TS@$Fdcn>FcsFjfn@$5FibnFdcn?(FiwFbpFbpF__nF_r@$30FiwFd
o0&Fb]l6$FiwF[qF\enC%>F^qFfgn@$Fibn>&Fhu6$FiwFdoFben@$Fdcn>&FcsF]hnF^q@$Fibn>F^
cn-F]em6&FhuF^cnF[bnFbz@$Fdcn>Fhcn-F]em6&FhcnFcsF[bnFbz?&Fiw7$-Fe]l6#;Fbp,&FdoF
bpFcoFbp-Fe]l6#;,&FbpFbpFdoFbpF__nF_r>FfgnF\en>F[oFi]n@$F[^nFh[n>Fc[nF^^n>F`^n-
Fi[l6$f*Fd^nFhnF^\lFhn@$Ff^nFgwFhnFhnFj^nF[_n-F[p6$QVeliminate_units:~the~NEW~l
ist~of~obsolete~generators:FhnFc_nFhnFhn6TF+F[oF5FcwFKF`imFTFhhmFLFijmFUFjhmF?F
`gmFHFdhmFJ8CFIFfhmFGF^hmF'FdyF6FiwF-F[qF>FjfmFBF\blF/F`qFDF`blFAF_fmF0FbqFFF\h
mF.F^qFCF]`lFEF_alF@Fbgm@$3-Fex6#&F[o6#Q+heuristicsFhn/7#FejnF\yC,>8Gf*Fhn6&Fci
mF]\lFh\n%"hGFhnFhnC$?&F[oFbzF_r?&FdoFb]lF_r?(F[qFbinFbpFezF_r@$-Fh^n6$F[qFb]lC
$>F^q-Fi^l6%7$7#&Fc[n6$FdoF[o7#&Fc[n6$F[qF[oT,F`^n@$0F^qFhz-F[p6#7&FdoF[oF[qF^q
Ff\mFhnFhn6.FIFfhmFUFjhmF?F`gmF5FcwF'FdyF+F[o>8Ff*Fhn6&F]\lFcimFg\nF_[oFhnFhnC$
?&F[oFbzF_r?&FdoFb]lF_r?&F[q7#-Fe]l6#;FbinFezF_r@$Fe[oC$>F^q-%4homalg/Rightinve
rseG6%7#7$&Fc[nFajm&Fc[nFg[nFb\oF`^n@$Fd\o-F[p6#7&F[oFdoF[qF^qFf\mFhnFhn6.FUFjh
mFIFfhmF6FiwF5FcwF'FdyF+F[o>8Hf*Fhn6'FcimF]\lF\hl%"fGF_[oFhnFhnC$?&F[oFbzF_r?&F
doFb]lF_rC&>F[q-Fi[l6$f*6#Fh\nFhnF^\lFhn@$Fg^nFgwFhnFhn6$FUFb]l7$F[inFb]o>F^q-F
i[l6$f*Fa_oFhnF^\lFhn7#&Fbz6$FgwFb]lFhnFhn6&F5F`^nFcimF[oF[q>F`q-Fi^l6%F^qFbjmF
cjm@$0F`qFhz-F[p6#7&FdoF[oF[qF`qFf\mFhnFhn6.FIFfhmFUFjhmF?F`gmF'FdyF+F[oF5Fcw>8
If*Fhn6'F]\lFcim%"cGFh^oF_[oFhnFhnC$?&F[oFbzF_r?&FdoFb]lF_rC&>F[q-Fi[l6$f*6#Fg\
nFhnF^\lFhn@$Fg^nFgwFhnFhn6$FIFb]lFd_o>F^q7#-Fi[l6$f*FcaoFhnF^\lFhn&Fbz6$Fb]lFg
wFhnFhn6&F5F`^nF]\lF[oF[q>F`q-Fi]oF_`o@$Fa`o-F[p6#7&F[oFdoF[qF`qFf\mFhnFhn6.FUF
jhmFIFfhmF6FiwF'FdyF+F[oF5Fcw>8Jf*Fhn6&FcimFh^oF_[oF[zFhnFhnC$?&F[oFbzF_rC%>Fdo
-Fi[l6$f*Fa_oFhnF^\lFhnFi_oFhnFhn6&F5FcjmFcimF[oFb]l>F[q-Fi^l6%FdoT(Fc[n@$0F[qF
hzC$>F^q-%7homalg/GetUnitPositionG6&F[qFh`mFdcoFc[n@$0F^qFf\m-F[p6#7&&Fb]l6#&F^
qFcalF[oFcdoF[qFf\mFhnFhn6,FIFfhmFUFjhmF'FdyF+F[oF5Fcw>8Kf*Fhn6&F]\lFh^oF_[oF[z
FhnFhnC$?&F[oFbzF_rC%>Fdo7#-Fi[l6$f*FcaoFhnF^\lFhnF[boFhnFhn6&F5FcjmF]\lF[oFb]l
>F[q-Fi]oFcco@$FfcoC$>F^qFico@$F]do-F[p6#7&F[o&Fb]l6#&F^qFialF]foF[qFf\mFhnFhn6
,FUFjhmFIFfhmF'FdyF+F[oF5Fcw>8Of*Fhn6.F`\nF]\lFcimF\hlF_[oFe\nFf\nFh\nFj`oF8%$M
i_GFg\nFhnFhnC'@$2-%%nopsG6#FbzFfq-F[p6%QWeliminate_all_but_one_gcd_1_columns:~
nothing~to~do~forFhnFgfoQCunclean~rows,~which~is~less~than~3Fhn>F[o-Fb]lFhn@%F[
^n-F[p6$Q[oeliminate_all_but_one_gcd_1_columns:~NO~new~obsolete~generators:FhnF
ez>Fc[nF\q?(FhnFbpFbpFhnF_rC2>FdoFi_n>F[qF[`n>F^q&F[oFjq>F`q&F[oFjr>F`q-F]em6&7
#7#-&Fc_nFden6%Fcjm&F`^nF\anT0F`qFfhoFc_n@$Fe_n>Fbq-Ff^l6#Fb`n@$F]an>FfvFiho@$5
Fe_nF]an?&Fcr7#-Fe]l6#;Fbp-FhfoFaelF_r@$0&F`^n6$&F^q6#FcrF[qT9C$@$Fe_n>&Fbq6$Fd
oFiio&F`q6$FbpFcr@$F]an>&FfvF`jo-Fcho6%F[joFajoFfho@$Fe_n>F^bn-F]em6&FbqF^bnFfh
oFc_n@$F]an>Fibn-F]em6&FibnFfvFfhoFc_n>Fhu-Fi[l6$f*FcaoFhnF^\lFhn@$Fg^nFgwFhnFh
n6$FIFdcn7$-Fe]l6#;Fbp,&F[qFbpFcoFbp-Fe]l6#;,&F[qFbpFbpFbpF[cn@$0FhuFh`mC)>Fcs-
&Fc_nF^dm6$F`^nF^q>Fcs-&Fc_nF_]l6$FcsFhu>Fcs-F]em6&F`qFcsFfhoFc_n>Fcw-Fd\p6$F`^
n7#Fdo>Fcw-Fh\p6$FcwFhu>Fcs-%.homalg/AddMatG6&FcwFcsFfhoFc_n?&Fiw7#-Fe]l6#;Fbp-
Fhfo6#FhuF_r>&F`^n6$Fdo&Fhu6#Fiw&Fcs6$FbpFiw>FehoFcjm-F^cn6#7$FdoF[q>F[oF_go@$F
[^nFh[n-F[p6$Qdoeliminate_all_but_one_gcd_1_columns:~the~NEW~list~of~obsolete~g
enerators:FhnFezFhnFhn6DFUFjhmFOFe^oFHFdhmFJF`jnFGF^hmF5FcwF'FdyF+F[oF-F[qF@Fbg
mF/F`qFFF\hmFBF\blFDF`blF6FiwFSF\\nFIFfhm>8Pf*Fhn6.F`\nF]\lFcimFj`oF_[oFc\nFd\n
Fg\nF\hlF8%$M_jGFh\nFhnFhnC'@$Fffo-F[p6%QUeliminate_all_but_one_gcd_1_rowss:~no
thing~to~do~forFhnFgfoQFunclean~columns,~which~is~less~than~3Fhn>F[oF_go@%F[^n-
F[p6$Qhneliminate_all_but_one_gcd_1_rows:~NO~new~obsolete~generators:FhnFez>Fc[
nF\q?(FhnFbpFbpFhnF_rC2>FdoFi_n>F[qF[`n>F^qFjgo>F`qF\ho>F`q-F]em6&F`qF`hoFfhoFc
_n@$Fe_n>FbqFiho@$F]an>FfvFiho@$F^io?&FcrF`ioF_r@$0&F`^nF`joF[joC$@$Fe_n>&FbqFh
io&F`q6$FcrFbp@$F]an>&FfvFhio-Fcho6%F[joFgapFfho@$Fe_n>F^bn-F]em6&F^bnFbqFfhoFc
_n@$F]an>Fibn-F]em6&FfvFibnFfhoFc_n>Fhu-Fi[l6$f*Fa_oFhnF^\lFhn@$Fg^nFgwFhnFhn6$
FUFdcn7$F[in-Fe]l6#;FbinF[cn@$F`\pC)>Fcs-Fh\pFe\p>Fcs-Fd\pFi\p>Fcs-F]em6&FcsF`q
FfhoFc_n>Fcw-Fh\p6$F`^n7#F[q>Fcw-Fd\pFc]p>FcsFe]p?&FiwFi]pF_r>&F`^n6$Fb^pF[q&Fc
s6$FiwFbp>FehoFcjmFg^p>F[oF_go@$F[^nFh[n-F[p6$Qaoeliminate_all_but_one_gcd_1_ro
ws:~the~NEW~list~of~obsolete~generators:FhnFezFhnFhn6DFIFfhmFPFg`oFHFdhmFJF`jnF
GF^hmF5FcwF'FdyF+F[oF.F^qFAF_fmF0FbqFFF\hmFCF]`lFEF_alF?F`gmFSF\\nFUFjhm>8Qf*Fh
n6/F`\nF]\lFcimF[zF\hlF_[o%"eGFe\nFf\nFh\nFj`oF8Fg\nFhnFhnC&>F[o-FbzFhn@%F[^n-F
[p6$Qhoeliminate_columns_with_a_unit_in_its_leftinverse:~NO~new~obsolete~genera
tors:FhnFb]l>FezF\q?(FhnFbpFbpFhnF_rC3>FdoFi_n>F[qF[`n>F^qFjgo>F`qFc[n>FbqF\ho>
Ffv-&F`^nFden6$Fcjm&Fbq6$FbpF^q@$F__n>Fcr-Ff^lF``n@$Fe_n>FhuFifp@$5F__nFe_n?&Fc
s7#-Fe]l6#;Fbp-FhfoFfilF_r@$0&Fb`n6$&F`q6#FcsF[qFcjmC$@$F__n>&Fcr6$FdoFhgp&Fbq6
$FbpFcs@$Fe_n@%0FhgpFdo>&FhuF^hp-&F`^nFhan6%F_hpFfvT8>&Fhu6$FdoFdo-Fghp6%-&F`^n
FahmFhnF_hpFihp@$F__n>F[jo-F]em6&FcrF[joFihpF`^n@$Fe_n>F^bn-F]em6&F^bnFhuFihpF`
^n>Fcw-Fi[l6$f*FcaoFhnF^\lFhn@$Fg^nFgwFhnFhnFe[p7$Fg[p-Fe]l6#;F^\pFibn@$0FcwFh`
mC&>Fiw-&F`^nF^dm6$Fb`nF`q>Fiw-&F`^nF_]l6$FiwFcw>Fiw-F]em6&FbqFiwFihpF`^n?&Fe\m
7#-Fe]l6#;Fbp-FhfoF^xF_r>&Fb`n6$Fdo&Fcw6#Fe\m&Fiw6$FbpFe\m>&Fb`nF\anF[cnFg^p>F[
oFdep@$F[^nFh[n-F[p6$Qapeliminate_columns_with_a_unit_in_its_leftinverse:~the~N
EW~list~of~obsolete~generators:FhnFb]lFhnFhn6DFQFfboFHFdhmFJF`jnFUFjhmFFF\hmF+F
[oF-F[qF@FbgmF/F`qF5FcwF'FdyFBF\blFDF`blF6FiwFGF^hmFSF\\nFIFfhm>8Rf*Fhn6/F`\nF]
\lFcimF[zFj`oF_[oFaepFc\nFd\nFg\nF\hlF8Fh\nFhnFhnC&>F[oFdep@%F[^n-F[p6$Qfoelimi
nate_rows_with_a_unit_in_its_rightinverse:~NO~new~obsolete~generators:FhnFb]l>F
ezF\q?(FhnFbpFbpFhnF_rC3>FdoFi_n>F[qF[`n>F^qFjgo>F`qFc[n>FbqF\ho>Ffv-Fcfp6$Fcjm
&Fbq6$F^qFbp@$F__n>FcrFifp@$Fe_n>FhuFifp@$F]gp?&FcsF_gpF_r@$0&Fb`nF^hpFcjmC$@$F
__n>&FcrFggp&Fbq6$FcsFbp@$Fe_n@%0FhgpF[q>&FhuFggp-Fghp6%Fi^qFfvFihp>&Fhu6$F[qF[
q-Fghp6%F_ipFi^qFihp@$F__n>F[jo-F]em6&F[joFcrFihpF`^n@$Fe_n>F^bn-F]em6&FhuF^bnF
ihpF`^n>Fcw-Fi[l6$f*Fa_oFhnF^\lFhn@$Fg^nFgwFhnFhnF[cp7$F[in-Fe]l6#;FbinFibn@$Fc
jpC&>Fiw-F[[qFhjp>Fiw-FgjpF\[q>Fiw-F]em6&FiwFbqFihpF`^n?&Fe\mFa[qF_r>&Fb`n6$Fi[
qF[q&Fiw6$Fe\mFbp>F^\qF[cnFg^p>F[oFdep@$F[^nFh[n-F[p6$Q_peliminate_rows_with_a_
unit_in_its_rightinverse:~the~NEW~list~of~obsolete~generators:FhnFb]lFhnFhn6DFR
FfdoFHFdhmFJF`jnFIFfhmFFF\hmF+F[oF.F^qFAF_fmF0FbqF5FcwF'FdyFCF]`lFEF_alF?F`gmFG
F^hmFSF\\nFUFjhm@$F]_lC+-Ff_l6#F\\n-Ff_l6#Fe^o-Ff_l6#Fg`o-Ff_l6#Ffbo-Ff_l6#Ffdo
-Ff_l6#F`fo-Ff_l6#Fa_p-Ff_l6#F^ep-Ff_l6#Ff\q?(FhnFbpFbpFhnF_rC/>Fbdm-Fddm6&-Ff^
lF^xFdyFfdmF[o>Fbdm-Few6$FbdmF[o@$F[q>F\blF\em@$F`qC$-Ffem6&FgcqFbdmFdyF[o>F`bl
Fiem>Fcw-Fa_m6#Fbdm>F`gmF[gm>FbgmFcgm>F`jnF_r-F\\nFhn@$FbjnC$-F`foFhn-Fa_pFhn@$
3-Fex6#&F[o6#Q8heuristics_experimentalFhn/7#FaeqF\yC$-F^epFhn-Ff\qFhn@$3-Fex6#&
F[o6#Q7heuristics_commutativeFhn/7#F]fqF\yFhn@$F`jnFh[n@$F[q-%'assignG6$&Fao6#F
fvF\bl@$F^q-Fefq6$&FaoFjioF``m@$F`q-Fefq6$&FaoF^^pF`bl@$Fbq-Fefq6$&FaoFigpF_al-
Fa_m6#-Few6$FcwF[oFhnFhnFhnFhn,
Q:homalg/BetterGenerators.mFhn
M7R0
I6homalg/CheckHomsOfSeqf*6%'%(complexG%%listG'%$varGF'%,RingPackageG6&%#RPG%$na
rG%"lG%"jG6#%fnCopyright~(C)~2004~by~Mohamed~Barakat.~All~rights~reserved.G6"C(
>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F5%*procedureG-%'RETURNG6#-F56
#&F;6#;""",&F=FLF>F=@$/9$7"-FE6#FQ>8&-%%nopsG6#FP7#-%"$G6#;FL-%%iquoG6$,&FUFLF=
FL""#-%$mapG6$f*6#%"iGF26$%)operatorG%&arrowGF2-%)CheckHomG6%-%$seqG6$&T$6#,(FP
F\oFLFLT%F=/F`p;""!F\oT(T)F2F26*F&FPF/8'F)9%F,F5%"%GF2F2F2F2,
Q8homalg/CheckHomsOfSeq.mF2
M7R0
I;homalg/ChineseRemainderMapf*6%%"MG%$varG%,RingPackageG6(%#RPG%$narG%"nG%"LG%"
AG%#IdG6#%fnCopyright~(C)~2005~by~Mohamed~Barakat.~All~rights~reserved.G6"C)>8$
-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F4%*procedureG-%'RETURNG6#-F46#&F
:6#;""",&F<FKF=F<>8&-%%nopsG6#9$>8'-%/homalg/DiagMatG6$-%#opGFQF4>8(7#7#-%"$G6$
-&F46#%$OneGF1FN>8)-%7homalg/StdBasisVectorsG6$FNF4-%3homalg/RightDivideG6'F`oF
enFT9%F4F1F1F1F1,
Q=homalg/ChineseRemainderMap.mF1
M7R0
I4homalg/CokernelFEpif*6%%"AG'%$varG%%listG%,RingPackageG6)%#RPG%$narG%%optsG%$
posG%)optionalG%&cokerG%<cokernel_rewrite_generatorsG6%%[oCopyright~(C)~2004-20
07~by~Mohamed~Barakat.~All~rights~reserved.G%'systemG%)rememberG6"C,>8$-%1homal
g/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F9%*procedureG-%'RETURNG6#-F96#&F?6#;""",
&FAFPFBFA@$2,&""#FPFBFP9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&F?6#;""$FQF9>8'%%
NULLG@$-%)assignedG6#&FX6#QGpos_of_var_to_assign_functor_on_objectF6>F^o6$F^o/F
doF_o@$-Fbo6#&FX6#QHpos_of_var_to_assign_rewrite_generatorsF6>F^o6$F^o/F]pF_o>8
(-%#opG6#-%'subsopG6$F^o7#Fin>8)-%1homalg/CokernelFG6'9$9%/QAvar_to_assign_rewr
ite_generatorsF6.8*FdpF9@$-Fbo6#&FX6#Q@var_to_assign_functor_on_objectF6-%'assi
gnG6$FjqF]q-FZ6#FfqF6F6F6F6,
Q6homalg/CokernelFEpi.mF6
M7R0
I5homalg/DefectOfHomsFf*6&%%betaG%&alphaG%$varG%,RingPackageG6(%#RPG%$narG%%opt
sG%$posG%)optionalG%*ker_alphaG6%%^pCopyright~(C)~2003-2008~by~Mohamed~Barakat~
and~Daniel~Robertz.~All~rights~reserved.G%'systemG%)rememberG6"C,>8$-%1homalg/t
ablenameG6%9!&9"6#!""8%@$-%%typeG6$F7%*procedureG-%'RETURNG6#-F76#&F=6#;""",&F?
FNF@F?@$-FC6$&F=6#FN%'stringGC$@$/FSQ1RETURN_co_contraF4-FG6#Q*covariantF4-FG6#
%%NULLG@$2,&""$FNF@FN9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&F=6#;""%FOF7>8'Fin@
$-%)assignedG6#&F`o6#QIpos_of_var_to_assign_F_target_hullmoduleF4>F\p6$F\p/FapF
in>8(-%#opG6#-%'subsopG6$F\p7#Fgo@$-F_p6#&F`o6#QBvar_to_assign_F_target_hullmod
uleF4-%'assignG6$Fcq9$>8)-%3homalg/SyzygiesOpFG6%9%9&F7-%7homalg/SubfactorModul
eG6'F[rFiqF`rFhpF7F4F4F4F4,
Q7homalg/DefectOfHomsF.mF4
M7R0
I7homalg/DefectOfHomsMapf*6-%'alpha1G%"AG%'alpha2G%#_AG%$phiG%&beta1G%"BG%&beta
2G%#_BG%$varG%,RingPackageG6'%#RPG%$narG%%optsG%)optionalG%(functorG6%%[oCopyri
ght~(C)~2004-2005~by~Mohamed~Barakat.~All~rights~reserved.G%'systemG%)rememberG
6"C)>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F=%*procedureG-%'RETURNG6#
-F=6#&FC6#;""",&FEFTFFFE@%2,&""'FTFFFT9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&FC
6#;""(FUF=>&Ffn6#Q2number_of_optionsF:""!@$2,&FZFTFboFE,&"#5FTFFFT-FM6#-%8homal
g/DefectOfHomsFMapG6#FC>8'&FC6#;"#6FU>8(%4homalg/DefectOfHomsG-%2homalg/Functor
MapG6)Fgp7&9$9%9&9'9(7&9)9*9+9,9-FapF=F:F:F:F:,
Q9homalg/DefectOfHomsMap.mF:
M7R0
I?homalg/DegreeOfTorsionFreenessf*6%%#_PG%$varG%,RingPackageG6*%#RPG%$narG%%opt
sG%&boundG%"kG%"PG%#APG%"EG6#%fnCopyright~(C)~2007~by~Mohamed~Barakat.~All~righ
ts~reserved.G6"C+>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F6%*procedure
G-%'RETURNG6#-F66#&F<6#;""",&F>FMF?F>@$2,&""#FMF?FM9#>8&-%%copyG6#-%2homalg/Get
OptionsG6$&F<6#;""$FNF6@%-%)assignedG6#&FU6#Q-pos_of_BOUNDF3>8'&FU6#Q&BOUNDF3>F
bo-%1homalg/GlobalDimG6$9%F6@%-F\o6#&FU6#Q0pos_of_START_ATF3>8(&FU6#Q)START_ATF
3>FbpFM>8)-%6homalg/NormalizeInputG6$9$F6>8*-%2homalg/InvolutionG6%FhpFjoF6?(F3
FMFMF31FbpFboC%>8+-%-homalg/Ext_RG6&FbpF^qFjoF6@$4-%4homalg/IsZeroModuleG6%FfqF
joF6-FF6#,&FbpFMF>FM>Fbp,&FbpFMFMFMFboF3F3F3F3,
QAhomalg/DegreeOfTorsionFreeness.mF3
M7R0
I1homalg/DirectSumf*6&%"AG%"BG%$varG%,RingPackageG6%%#RPG%$narG%)optionalG6#%[o
Copyright~(C)~2003-2006~by~Mohamed~Barakat.~All~rights~reserved.G6"C'>8$-%1homa
lg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F2%*procedureG-%'RETURNG6#-F26#&F86#;"""
,&F:FIF;F:@$-F>6$&F86#FI%'stringGC$@$/FNQ1RETURN_co_contraF/-FB6#Q*covariantF/-
FB6#%%NULLG>8&&F86#;""%FJ-%1homalg/CokernelFG6&-%/homalg/DiagMatG6%9$9%F29&FfnF
2F/F/F/F/,
Q3homalg/DirectSum.mF/
M7R0
I/homalg/ExtqMapf*6)%"qG%"MG%$phiG%"NG%"LG'%$varG%%listG%,RingPackageG6&%#RPG%$
narG%)optionalG%*cofunctorG6%%fnCopyright~(C)~2005~by~Mohamed~Barakat.~All~righ
ts~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%
typeG6$F:%*procedureG-%'RETURNG6#-F:6#&F@6#;""",&FBFQFCFB>8&&F@6#;""(FR>8'f*6#F
&F7F7F7-%,homalg/ExtqG6&T$9$T&&F@6#;""#FBF7F76&F%F[oF)9(-%2homalg/FunctorMapG6)
FZ7#9%9&7#9'9)FTF:F7F7F7F7,
Q1homalg/ExtqMap.mF7
M7R0
I2homalg/ExtqOnSeqsf*6'%"qG%"LG'%&alphaG<$%&tableG%%listG%%_varG%,RingPackageG6
%%#RPG%$narG%*cofunctorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All~rights~
reserved.G%'systemG%)rememberG6"C&>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typ
eG6$F9%*procedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA>8&-%4homalg/Functor_Extq
G6$9$9%-%7homalg/CofunctorOnSeqsG6$FS&F?6#;""$FAF6F6F6F6,
Q4homalg/ExtqOnSeqs.mF6
M7R0
I-homalg/Ext_Rf*6&'%"qG%*nonnegintG%"MG'%$varG%%listG%,RingPackageG6&%#RPG%$nar
G%)optionalG%*cofunctorG6%%^pCopyright~(C)~2003-2006~by~Mohamed~Barakat~and~Dan
iel~Robertz.~All~rights~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenam
eG6%9!&9"6#!""8%@$-%%typeG6$F9%*procedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA>
8&&F?6#;""%FQ>8'7$%-homalg/Hom_RG%2homalg/InvolutionG-%>homalg/RightDerivedCofu
nctorFG6(9$FY9%9&FSF9F6F6F6F6,
Q/homalg/Ext_R.mF6
M7R0
I3homalg/Functor_Extf*6$%"qG%"BG6"6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~A
ll~rights~reserved.G%'systemG%)rememberGF'7&f*6#%"MGF'F'F'-%+homalg/ExtG6&T$9$T
&&9"6#;""#!""F'F'6&F%F4F&9%f*6%F/%$phiG%"NGF'F'F'-%.homalg/ExtMapG6(F3F4F=9&F5&
F76#;""%F;F'F'F<F=f*6#%"PGF'F'F'f*F?F'F'F'-%/homalg/Ext2MapG6(F3F5F4F=FEFFF'F'6
&F%F3FLF4F'F'6$F%F4F'F'F'F',
Q5homalg/Functor_Ext.mF'
M7R0
IAhomalg/Functor_TorsionFreeFactorf*6"F$6%%fnCopyright~(C)~2007~by~Mohamed~Bara
kat.~All~rights~reserved.G%'systemG%)rememberGF$7$%9homalg/TorsionFreeFactorG%<
homalg/TorsionFreeFactorMapGF$F$F$F$,
QChomalg/Functor_TorsionFreeFactor.mF$
M7R0
I6homalg/homalg_optionsf*6$%"tG%,RingPackageG6'%#RPG%$narG%&dummyG%%optsG%$resG
6#%[oCopyright~(C)~2006-2007~by~Mohamed~Barakat.~All~rights~reserved.G6"C>@%2""
!9#>8$-%1homalg/tablenameG6%9!&9"6#!""8%>F6-F86%F:8&F?@$-%%typeG6$F6%*procedure
G-%'RETURNG6#-F66#&F<6#;""",&F>FQF?F>@$2F?F4>8'-%%copyG6#-%2homalg/GetOptionsG6
$FNF6>8(%%NULLG@$4-%)assignedG6#&F66#QTcheck_if_stably_free_rank_1_commutative_
FFR_is_freeF/>F_o%&falseG@$4-F]o6#&F66#QHcheck_if_stably_free_rank_1_FFR_is_fre
eF/>FhoFco@$4-F]o6#&F66#QEcheck_if_parametrization_FFR_is_freeF/>F`pFco@$4-F]o6
#&F66#Q+heuristicsF/>FhpFco@$4-F]o6#&F66#Q7heuristics_commutativeF/>F`qFco@$4-F
]o6#&F66#Q8heuristics_experimentalF/>FhqFco@$4-F]o6#&F66#Q1heuristics_debugF/>F
`rFco@$32F3,&F4FQF?F>-%'memberG6$9$<$%'MatrixG%'matrixGC%>&F66#F^sf*6#%"aGF/F/F
/-%(convertG6$F[sT$F/F/6$F%F[s>&F66#%+matrixtypeGF[s>Fhn6$Fhn/Q+matrixtypeF/F[s
@$-F]o6#&FV6#Qenpos_of_check_if_stably_free_rank_1_commutative_FFR_is_freeF/C$@
$-F]o6#&FVF`o@%-FF6$F]u%(booleanG@%F]u>F_o%%trueG>F_oFco-%&ERRORG6#%gpexpecting
~boolean~value~for~the~"check_if_stably_free_rank_1_commutative_FFR_is_free"~op
tionG>Fhn6$Fhn/FaoF_o@$-F]o6#&FV6#Q@pos_of_check_rank_1_commutativeF/C$@$-F]o6#
&FV6#Q9check_rank_1_commutativeF/@%-FF6$FgvFau@%Fgv>F_oFdu>F_oFcoFfu>FhnF[v@$-F
]o6#&FV6#QOpos_of_check_if_stably_free_rank_1_FFR_is_freeF/C$@$-F]o6#&FVFio@%-F
F6$F[xFau@%F[x>FhoFdu>FhoFco-Fgu6#%[pexpecting~boolean~value~for~the~"check_if_
stably_free_rank_1_FFR_is_free"~optionG>Fhn6$Fhn/FjoFho@$-F]o6#&FV6#Q4pos_of_ch
eck_rank_1F/C$@$-F]o6#&FV6#Q-check_rank_1F/@%-FF6$FbyFau@%Fby>FhoFdu>FhoFcoFbx>
FhnFfx@$-F]o6#&FV6#QLpos_of_check_if_parametrization_FFR_is_freeF/C$@$-F]o6#&FV
Fap@%-FF6$FfzFau@%Ffz>F`pFdu>F`pFco-Fgu6#%hoexpecting~boolean~value~for~the~"ch
eck_if_parametrization_FFR_is_free"~optionG>Fhn6$Fhn/FbpF`p@$-F]o6#&FV6#Q=pos_o
f_check_parametrizationF/C$@$-F]o6#&FV6#Q6check_parametrizationF/@%-FF6$F]\lFau
@%F]\l>F`pFdu>F`pFcoF][l>FhnFa[l@$-F]o6#&FV6#Q2pos_of_heuristicsF/C$@$-F]o6#&FV
Fip@%-FF6$Fa]lFau@%Fa]l>FhpFdu>FhpFco-Fgu6#%Texpecting~boolean~value~for~the~"h
euristics"~optionG>Fhn6$Fhn/FjpFhp@$-F]o6#&FV6#Q2pos_of_HeuristicsF/C$@$-F]o6#&
FV6#Q+HeuristicsF/@%-FF6$Fh^lFau@%Fh^l>FhpFdu>FhpFcoFh]l>FhnF\^l@$-F]o6#&FV6#Q>
pos_of_heuristics_commutativeF/C$@$-F]o6#&FVFaq@%-FF6$F\`lFau@%F\`l>F`qFdu>F`qF
co-Fgu6#%jnexpecting~boolean~value~for~the~"heuristics_commutative"~optionG>Fhn
6$Fhn/FbqF`q@$-F]o6#&FV6#Q>pos_of_Heuristics_commutativeF/C$@$-F]o6#&FV6#Q7Heur
istics_commutativeF/@%-FF6$FcalFau@%Fcal>F`qFdu>F`qFcoFc`l>FhnFg`l@$-F]o6#&FV6#
Q?pos_of_heuristics_experimentalF/C$@$-F]o6#&FVFiq@%-FF6$FgblFau@%Fgbl>FhqFdu>F
hqFco-Fgu6#%[oexpecting~boolean~value~for~the~"heuristics_experimental"~optionG
>Fhn6$Fhn/FjqFhq@$-F]o6#&FV6#Q?pos_of_Heuristics_experimentalF/C$@$-F]o6#&FV6#Q
8Heuristics_experimentalF/@%-FF6$F^dlFau@%F^dl>FhqFdu>FhqFcoF^cl>FhnFbcl@$-F]o6
#&FV6#Q8pos_of_heuristics_debugF/C$@$-F]o6#&FVFar@%-FF6$FbelFau@%Fbel>F`rFdu>F`
rFco-Fgu6#%Zexpecting~boolean~value~for~the~"heuristics_debug"~optionG>Fhn6$Fhn
/FbrF`r@$-F]o6#&FV6#Q8pos_of_Heuristics_debugF/C$@$-F]o6#&FV6#Q1Heuristics_debu
gF/@%-FF6$FiflFau@%Fifl>F`rFdu>F`rFcoFiel>FhnF]fl@$-F]o6#&FV6#Q2pos_of_matrixty
peF/C$@$-F]o6#&FV6#Fbt@%-Fir6$F]hlF\sC$>Fasf*FdsF/F/F/-Fgs6$F[s&T#F^hlF/F/6$F+F
V>F\tF]hl-Fgu6#%Wexpecting~matrix~or~Matrix~for~the~"matrixtype"~optionG>Fhn6$F
hn/FbtF\t@%/FgrF36+-Fgs6$F6%'stringGF`ilF\vFgxFb[lF]^lFh`lFcclF^fl6$FdilFhnF/F/
F/F/,
Q8homalg/homalg_options.mF/
M7R0
I.homalg/HomHomf*6'%"MG%"AG%"BG'%$varG%%listG%,RingPackageG6'%#RPG%$narG%)optio
nalG%+cofunctor1G%+cofunctor2G6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All~r
ights~reserved.G%'systemG%)rememberG6"C(>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$
-%%typeG6$F9%*procedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA>8&&F?6#;""&FQ>8'-%
3homalg/Functor_HomG6#9&>8(-Fen6#9%-%%evalG6#--%7homalg/ComposeFunctorsG6'FYFin
9'FSF96%9$FdoF9F6F6F6F6,
Q0homalg/HomHom.mF6
M7R0
I3homalg/IsReflexivef*6%%#_MG'%$varG%%listG%,RingPackageG6)%#RPG%$narG%%optsG%"
MG%#MIG%(VERBOSEG%"bG6%%fnCopyright~(C)~2007~by~Mohamed~Barakat.~All~rights~res
erved.G%'systemG%)rememberG6"C*>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6
$F9%*procedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA@$2,&""#FPFBFP9#>8&-%%copyG6
#-%2homalg/GetOptionsG6$&F?6#;""$FQF9>8'-%6homalg/NormalizeInputG6$9$F9>8(-%2ho
malg/InvolutionG6%F^o9%F9>8*7$-%-homalg/Ext_RG6&FPFdoFhoF9-F]p6&FUFdoFhoF9>Fjo-
%$mapG6&%4homalg/IsZeroModuleGFjoFhoF9@%-%)assignedG6#&FX6#Q/pos_of_VERBOSEF6@%
/Fjo7$%%trueGF`qF`qFjo3&Fjo6#FP&Fjo6#FUF6F6F6F6,
Q5homalg/IsReflexive.mF6
M7R0
I3homalg/LeftDivideFf*6&%"AG%"BG'%$varG%%listG%,RingPackageG6'%#RPG%$narG%#AaG%
#BaG%#CaG6#%fnCopyright~(C)~2004~by~Mohamed~Barakat.~All~rights~reserved.G6"C(>
8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F6%*procedureG-%'RETURNG6#-F66#
&F<6#;""",&F>FMF?F>>8&-%2homalg/InvolutionG6%9$9&F6>8'-FR6%9%FUF6>8(-%4homalg/R
ightDivideFG6&FWFPFUF6-FR6%FfnFUF6F3F3F3F3,
Q5homalg/LeftDivideF.mF3
M7R0
I4homalg/LeftinverseFf*6%%"LG'%$varG%%listG%,RingPackageG6*%#RPG%$narG%#ILG%"lG
%"EG%"ZG%#T1G%#T2G6#%ioCopyright~(C)~2004~by~Daniel~Robertz~and~Mohamed~Barakat
.~All~rights~reserved.G6"C)>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F8%
*procedureG-%'RETURNG6#-F86#&F>6#;""",&F@FOFAF@>8&-%2homalg/BasisCoeffG6&9$9%8*
F8>8'-&F86#%3NumberOfGeneratorsG6#FR>8(-%7homalg/StdBasisVectorsG6$FZF8>8)-%3ho
malg/ReduceCoeffG6'F[oFRFW8+F8@%/-%3homalg/BetterBasisG6&F`oFWQ3ALLOW_EMPTY_OUT
PUTF5F87"-%/homalg/ComposeG6&-%.homalg/MulMatG6&F@FdoFWF8FXFWF8%%FAILGF5F5F5F5,
Q6homalg/LeftinverseF.mF5
M7R0
I>homalg/LeftSatelliteOfFunctorf*6''%"qG%*nonnegintG'%(functorG%%listG%"AG'%$va
rGF*%,RingPackageG65%#RPG%$narG%"pG%%optsG%4readjust_generatorsG%)optionalG%3fu
nctor_on_objectsG%0functor_on_mapsG%%dataG%$posG%#muG%"KG%%Pq_1G%%F_stG%9FK_nor
malized_generatorsG%$FmuG%#FKG%&FPq_1G%#LFG6#%[oCopyright~(C)~2005-2006~by~Moha
med~Barakat.~All~rights~reserved.G6"C4>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%
%typeG6$FH%*procedureG-%'RETURNG6#-FH6#&FN6#;""",&FPFinFQFP@$-FT6$&FN6#""$%'str
ingGC$@*/F^oQ?RETURN_proc_to_induce_morphismFE-FX6#f*6%%"MG%$phiG%"NG6%%$resG%$
dq1G%%_dq1GFEFEC&>FH-%%evalG6#-%7homalg/ResolutionOfSeqG6),&T$FinFinFin9$9%9&T&
Q)TRUNCATEFET'@%-%4homalg/IsZeroModuleG6%&&FH6#""#6#FjpF^qF`q>FQ-%2homalg/ZeroM
oduleG6$F^qF`q>FQ&&FH6#Fin6#Fip@%-Fcq6%&&FH6#""&FiqF^qF`q>8&F[r>F[s&&FH6#""%Fbr
6%-%%copyG6#FQ-Fcs6#&&FHF_oFiq-Fcs6#F[sFEFE6(F&F[qF-9'F0FH/F^oQKRETURN_FunctorM
ap_of_the_functor_to_deriveFE-FX6#&F\qFgq/F^oQIRETURN_FunctorMaps_of_a_composed
_functorFE-FX6#%%NULLG/F^oQ;RETURN_morphism_on_objectsFEFdt-FX6#-&F\qFar6%F^oF\
tFH?&F[s7#-%"$G6#;Fin,&-%%nopsG6#F\q#FinFhqFPFin%%trueG@$-FT6$&F\q6#,&FinFinF[s
FhqFaoC$@*/F]vFeo-FX6#7#f*FE6#F^pFEFEC$>FH-Fdp6#-%5homalg/ResolveModuleG6'FipF^
qT(F_qT)@%-Fcq6%FeqF_wF`w-F\r6$F_wF`w-Fcs6#F_rFEFE6*F&F[qF+F]qF-F\tF0FH/F]vF^t-
FX6#&F\q6#,&FhqFinF[sFhq/F]vFctFdt/F]vFhtFdtFit@$2,&F`sFinFQFin9#>8'-Fcs6#-%2ho
malg/GetOptionsG6$&FN6#;FirFjnFH@$4-%)assignedG6#&Ffx6#Q<pos_of_NORMALIZE_GENER
ATORSFE>8(-F\u6%QCRETURN_proc_to_readjust_generatorsFEF\tFH>8)F\y>8*F\u>8+Fat>8
,-%4homalg/SyzygiesDataG6'F[qF]qF\tQ)USE_FAILFEFH@%/Fcz%%FAILGC'>8-Fft@$-Fby6#&
Ffx6#QCvar_to_assign_embedding_generatorsFEC$>F][l/&Ffx6#QJpos_of_var_to_assign
_embedding_generatorsFEFft-%'assignG6$Fa[l7#-&FH6#%%ZeroGFar@$-Fby6#&Ffx6#QBvar
_to_assign_F_target_hullmoduleFEC$>F][l6$F][l/&Ffx6#QIpos_of_var_to_assign_F_ta
rget_hullmoduleFEFft-F[\l6$Fe\lF]\l@$07#F][l7">F]z-%#opG6#-%'subsopG6$F][l7#F]z
-FX6#-F_z6&-F\r6$F\tFHF\tF]zFHC%>8/&FczFar>8.&FczFgq>80&FczF_o>83-Faz6)Fe^lFh^l
F[_lF\t/Q3var_to_assign_F_stFE.81/QNvar_to_assign_F_source_unconverted_generato
rsFE.82FH>84&Fd_lFar>85&Fd_lFgq/Q9FK_normalized_generatorsFEFh_l@$-Fby6#Fh_l>Fj
_l-%9homalg/ReplaceGeneratorsG6%Fj_lFh_lFH>86-%.homalg/KernelG6(Fj_lF^_lF]`lF\t
F]zFH@%3-Fby6#Fhy4/FhyFft-%9homalg/ConvertGeneratorsG6&Fi`lFhyF]zFHFi`lFEFEFEFE,
Q@homalg/LeftSatelliteOfFunctor.mFE
M7R0
I?homalg/LongExactCohomologySeqFf*6('%&alphaG<$%&tableG%%listG'%%IotaGF''%%beta
GF''%#NuGF''%$varGF)%,RingPackageG68%#RPG%$narG%#aiG%$_aiG%"mG%#iiG%$_iiG%#biG%
$_biG%#niG%$_niG%"iG%&gammaG%#giG%$_giG%%LECSG%$haiG%$hbiG%$hgiG%$hiiG%$hniG%#d
iG6#%[oCopyright~(C)~2004-2007~by~Mohamed~Barakat.~All~rights~reserved.G6"C?>8$
-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$FO%*procedureG-%'RETURNG6#-FO6#&F
U6#;""",&FWF`oFXFW@%-Fen6$9$F)C$>8&7#-%"$G6#;F`o-%%nopsG6#Feo>8'7#-F[p6#;FW&Fho
6#!"$C$>Fho-%%sortG6#-%$mapG6$%$lhsG-%#opG6#-%%evalGF`p>FbpFho>8(-F_p6#Fho@%-Fe
n6$9%F)C$>8)7#-F[p6#;F`o-F_p6#F`r>8*7#-F[p6#;FW&FcrFhpC$>Fcr-F]q6#-F`q6$Fbq-Fdq
6#-FgqFir>F[sFcr@$0,&FjqF`oF`oF`o-F_p6#Fcr-%&ERRORG6#%foThe~second~argument~mus
t~have~one~entry~more~than~the~first/third~argument!G@%-Fen6$9&F)C$>8+7#-F[p6#;
F`o-F_p6#Fgt>8,7#-F[p6#;FW&FjtFhpC$>Fjt-F]q6#-F`q6$Fbq-Fdq6#-FgqF`u>FbuFjt@$0Fj
q-F_p6#Fjt-Fat6#%jnThe~first~and~third~argument~have~different~numbers~of~entri
es!G@%-Fen6$9'F)C$>8-7#-F[p6#;F`o-F_p6#F\w>8.7#-F[p6#;FW&F_wFhpC$>F_w-F]q6#-F`q
6$Fbq-Fdq6#-FgqFew>FgwF_w@$0F^t-F_p6#F_w-Fat6#%\oThe~second~and~fourth~argument
~have~different~numbers~of~entries!G>80-F(FL>81Fho>82Fbp?&8/7#-F[p6#;F`oFjq%%tr
ueG>&F_y6#&Fby6#Ffy-%5homalg/CompleteImSqFG6'&F\w6#&F_wF`z&Fgt6#&FjtF`z&F\w6#,&
FfzF`oF`oF`o9(FO@$32,&""&F`oFXF`o9#-Fen6$&FU6#""'%'symbolG-%'assignG6$Ff[l-%%co
pyG6#F_y>83F`y>84&Fbp6#;""#FW?&Ffy7#-F[p6#;F`o,&FjqF`oFWF`oF[z>&Fa\l6#-&.%$EtaG
6#&Fc\lF`z6#.%"AG-%5homalg/DefectOfHomsFG6&&Feo6#,&&Fho6#,&FfyF`oF`oF`oF`oFWF`o
&Feo6#F`^lF][lFO>85&FbuFe\l?&FfyFi\lF[z>&Fa\l6#-&Fc]l6#&Ff^lF`z6#.%"BG-F[^l6&&F
gt6#,&&FjtFa^lF`oFWF`o&Fgt6#Fh_lF][lFO>86&FdyFe\l?&FfyFi\lF[z>&Fa\l6#-&Fc]l6#&F
\`lF`z6#.%"CG-F[^l6&&F_y6#,&&FbyFa^lF`oFWF`o&F_y6#F^alF][lFO>87&F[s6#;Fg\l!"#?&
FfyFi\lF[z>&Fa\l6#-&Fc]l6#&FbalF`z6#.%%iotaG-%8homalg/DefectOfHomsFMapG6)Fe_lFi
_l&F`r6#&FcrFa^lF]^lFc^lF][lFO>88&FgwFdal?&FfyFi\lF[z>&Fa\l6#-&Fc]l6#&FiblF`z6#
.%#nuG-Fcbl6)F[alF_al&F\w6#&F_wFa^lFe_lFi_lF][lFO>89&F\`l6#;F`oFfal?&Ffy7#-F[p6
#;F`o,&FjqF`oFfalF`oF[z>&Fa\l6#&%&deltaG6#&F\dlF`z-%6homalg/ConnectingHomFG6*F_
]lFeblFi_lF_al&F\w6#,&FjclF`oF`oF`o&Fa\l6#-&Fc]l6#,&Fe`lF`oF`oF`oFf`lF][lFO-F^\
l6#Fa\lFLFLFLFL,
QAhomalg/LongExactCohomologySeqF.mFL
M7R0
I>homalg/LongExactCohomologySeqf*6,'%&alphaG<$%&tableG%%listG'%#AAGF''%%IotaGF'
'%%betaGF''%#BBGF''%#NuGF''%&gammaGF''%#CCGF''%$varGF)%,RingPackageG6=%#RPG%$na
rG%#aiG%$_aiG%"mG%#AiG%#iiG%$_iiG%#biG%$_biG%#BiG%#niG%$_niG%"iG%#giG%$_giG%#Ci
G%%LECSG%/embedding_infoG%.F_target_hullG%$ETAG%$haiG%$hbiG%$hgiG%$hiiG%$hniG%#
diG6#%[oCopyright~(C)~2004-2007~by~Mohamed~Barakat.~All~rights~reserved.G6"CE>8
$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$Ffn%*procedureG-%'RETURNG6#-Ffn6
#&F\o6#;""",&F^oF]pF_oF^o@$29#,&"")F]pF_oF]p-Ffo6#-%?homalg/LongExactCohomology
SeqFG6#F\o@%-Fbo6$9$F)C$>8&7#-%"$G6#;F]p-%%nopsG6#F\q>8'7#-Fbq6#;F^o&F_q6#!"$C$
>F_q-%%sortG6#-%$mapG6$%$lhsG-%#opG6#-%%evalGFgq>FiqF_q>8(-Ffq6#F_q@%-Fbo6$9%F)
>8)7#-Fbq6#;F]p-Ffq6#Fgs>Fis-Fdr6#-Fgr6$Fir-F[s6#-F^sF_t@$0,&FasF]pF]pF]p-Ffq6#
Fis-%&ERRORG6#%`oThe~second~argument~must~have~one~entry~more~than~the~first~ar
gument!G@%-Fbo6$9&F)C$>8*7#-Fbq6#;F]p-Ffq6#Fdu>8+7#-Fbq6#;F^o&FguF_rC$>Fgu-Fdr6
#-Fgr6$Fir-F[s6#-F^sF]v>F_vFgu@$0Fjt-Ffq6#Fgu-F^u6#%_oThe~third~argument~must~h
ave~one~entry~more~than~the~first~argument!G@%-Fbo6$9'F)C$>8,7#-Fbq6#;F]p-Ffq6#
Fiw>8-7#-Fbq6#;F^o&F\xF_rC$>F\x-Fdr6#-Fgr6$Fir-F[s6#-F^sFbx>FdxF\x@$0Fas-Ffq6#F
\x-F^u6#%[oThe~first~and~fourth~argument~have~different~numbers~of~entries!G@%-
Fbo6$9(F)>8.7#-Fbq6#;F]p-Ffq6#F^z>F`z-Fdr6#-Fgr6$Fir-F[s6#-F^sFfz@$0Fjt-Ffq6#F`
z-F^u6#%_oThe~fifth~argument~must~have~one~entry~more~than~the~first~argument!G
@%-Fbo6$9)F)C$>8/7#-Fbq6#;F]p-Ffq6#Fi[l>807#-Fbq6#;F^o&F\\lF_rC$>F\\l-Fdr6#-Fgr
6$Fir-F[s6#-F^sFb\l>Fd\lF\\l@$0Faw-Ffq6#F\\l-F^u6#%jnThe~third~and~sixth~argume
nt~have~different~numbers~of~entries!G@%-Fbo6$9*F)C$>827#-Fbq6#;F]p-Ffq6#F^^l>8
37#-Fbq6#;F^o&Fa^lF_rC$>Fa^l-Fdr6#-Fgr6$Fir-F[s6#-F^sFg^l>Fi^lFa^l@$0Fas-Ffq6#F
a^l-F^u6#%\oThe~first~and~seventh~argument~have~different~numbers~of~entries!G@
%-Fbo6$9+F)>847#-Fbq6#;F]p-Ffq6#Fc`l>Fe`l-Fdr6#-Fgr6$Fir-F[s6#-F^sF[al@$0Fjt-Ff
q6#Fe`l-F^u6#%_oThe~eigth~argument~must~have~one~entry~more~than~the~first~argu
ment!G>85-F(FY>86F]bl>87F]bl>89&Fiq6#;""#F^o?&817#-Fbq6#;F]p,&FasF]pF^oF]p%%tru
eG>&F\bl6#-&.%$EtaG6#&Fcbl6#Fibl6#.%"AG-%4homalg/DefectOfHomsG6*&F\q6#,&&F_q6#,
&FiblF]pF]pF]pF]pF^oF]p&Fgs6#&FisFddl&F\q6#Fcdl&Fgs6#,&FhdlF]pF]pF]p9,/Q=var_to
_assign_embedding_infoFY&F_bl6#-&88FgclFjcl/QBvar_to_assign_F_target_hullmodule
FY&FablFbelFfn>8:&FdxFebl?&FiblFjblF_cl>&F\bl6#-&Fecl6#&FjelFicl6#.%"BG-F^dl6)&
Fiw6#,&&F\xFddlF]pF^oF]p&F^z6#&F`zFddl&Fiw6#F\gl&F^z6#,&F_glF]pF]pF]pF^el/Fgel&
Fabl6#-&FeelFbflFdflFfn>8;&Fi^lFebl?&FiblFjblF_cl>&F\bl6#-&Fecl6#&F[hlFicl6#.%"
CG-F^dl6*&F^^l6#,&&Fa^lFddlF]pF^oF]p&Fc`l6#&Fe`lFddl&F^^l6#F]il&Fc`l6#,&F`ilF]p
F]pF]pF^el/F`el&F_bl6#-&FeelFchlFehl/Fgel&FablFhilFfn>8<&F_v6#;Fgbl!"#?&FiblFjb
lF_cl>&F\bl6#-&Fecl6#&F^jlFicl6#.%%iotaG-%7homalg/DefectOfHomsMapG60FiflF]glF`g
lFbgl&Fdu6#&FguFddlF`dlFfdlFidlF[elF^el/Q)F_sourceFYF^fl/Q)F_targetFYFacl/Q4F_t
arget_hullmoduleFYFhelFfn>8=&Fd\lF`jl?&FiblFjblF_cl>&F\bl6#-&Fecl6#&F[\mFicl6#.
%#nuG-F_[m60FjhlF^ilFailFcil&Fi[l6#&F\\lFddlFiflF]glF`glFbglF^el/Fe[mF_hl/Fg[mF
^fl/Fi[mFfglFfn>8>&F[hl6#;F]pFbjl?&Fibl7#-Fbq6#;F]p,&FasF]pFbjlF]pF_cl>&F\bl6#&
%&deltaG6#&Fa]mFicl-%5homalg/ConnectingHomG6.FaclFa[mF`glFail&Fi[l6#,&F\]mF]pF]
pF]p&F\bl6#-&Fecl6#,&FdhlF]pF]pF]pFehlF^el/Q3Hqn_embedding_infoFYFael/Q5Hsn_1_e
mbedding_infoFY&F_bl6#-&FeelF\_mFehl/Q(Cqn_BqnFYFhel/Q%Zn_1FYFbglFfn-%%copyG6#F
\blFYFYFYFY,
Q@homalg/LongExactCohomologySeq.mFY
M7R0
I/homalg/MakeSeqf*6%'%%homsG<$%&tableG%%listG'%.chain_modulesGF'%,RingPackageG6
(%#RPG%$narG%#hiG%"hG%"cG%#ciG6#%[oCopyright~(C)~2004-2006~by~Mohamed~Barakat.~
All~rights~reserved.G6"C(>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F9%*p
rocedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA@%-FE6$9$F)>8&7#-%"$G6#;FP-%%nopsG
6#FU>FW-%%sortG6#-%$mapG6$%$lhsG-%#opG6#-%%evalGFin>8'-Fhn6#FW@%-FE6$9%F)C$>8(-
Fhn6#F^p@%/Fap,&FhoFPFPFP>8)7#-FZ6#;FPFap-%&ERRORG6#%^rThe~number~of~homomorphi
sms~(second~argument)~should~be~one~less~than~the~number~of~chain~modules~(firs
t~argument)!G>Fhp-F\o6#-F_o6$Fao-Fco6#-FfoFcp7$&F^p6#&Fhp6#FP-Fco6#-F_o6$f*6#%"
aGF66$%)operatorG%&arrowGF66$-%%copyG6#&T$6#&T%Fin&T(6#&T)6#,&FUFPFPFPF6F66*F&F
UF0FWF+F^pF3Fhp7#-FZ6#;FPFhoF6F6F6F6,
Q1homalg/MakeSeq.mF6
M7R0
I4homalg/Presentationf*6&'%#_GG<$%'stringG-%%listG6#%"=G%#_MG'%$varGF*%,RingPac
kageG66%#RPG%$narG%%optsG%1ASSIGN_EMBEDDINGG%3REWRITE_GENERATORSG%.convert_proc
sG%$genG%%GpreG%(CONVERTG%"MG%"GG%"VG%#VIG%4non_zero_generatorsG%"PG%$epiG%%Pge
nG%$embG%%PembG%%PnewG6#%[oCopyright~(C)~2004-2007~by~Mohamed~Barakat.~All~righ
ts~reserved.G6"C8>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$FK%*procedure
G-%'RETURNG6#-FK6#&FQ6#;""",&FSF\oFTFS@$2,&""$F\oFTF\o9#>8&-%%copyG6#-%2homalg/
GetOptionsG6$&FQ6#;""%F]oFK@%5-%)assignedG6#&Fdo6#Q=var_to_assign_embedding_inf
oFH-Fbp6#&Fdo6#QCvar_to_assign_embedding_generatorsFH>8'%%trueG>F]q%&falseG@%-F
bp6#&Fdo6#QAvar_to_assign_rewrite_generatorsFH>8(F^q>FhqF`q@'5/9$7"-FW6$F]rF(C%
>8)%%NULLG>8*-%7homalg/StdBasisVectorsG6$9%FK>8+-%$mapG6$f*6#%"aGFH6$%)operator
G%&arrowGFH/F]rF]rFHFHFHFfrF]qC%>Fcr-%6homalg/GetConvertInfoG6%F]r9&FK>Ffr-%6ho
malg/NormalizeInputG6$-F^s6$%$rhsGF]rFK>F\s-F^s6$f*FasFHFcsFHFfsFHFHFHFgrC$>Fcr
Fis>F\sF]r@%0FcrFdr>8,F^q>F^uF`q@%FhqC$>8--%8homalg/BetterGeneratorsG6)FjrF\t8/
80Q!FHFiuFK>Fgu-F_t6$FguFK>Fcu-Feu6'FjrF\tFhuFiuFK>Fcu-F_t6$FcuFK/Q"VFH-Ffo6#Fg
u/Q#VIFH-Ffo6#Fhu>8.-F_t6$-F^s6$FctF\sFK@$3F^u4F]q>F\w-%9homalg/ConvertGenerato
rsG6%F\w&Fcr6#Q5normalize_generatorsFHFK>F\w-%/homalg/ComposeG6&FhuF\wF\tFK>F\w
-F_t6$F\wFK@$Fbw>F\w-F^s6$&Fcr6#Q4readjust_generatorsFHF\w>F\w-%$zipG6%f*6$Fbs%
"bGFHFcsFH/F]rFjrFHFHFH-Fhr6%-%%nopsG6#F\wF\tFKF\w>82-%:homalg/BetterPresentati
onG6'F\wFcuF\t/QBvar_to_assign_non_zero_generatorsFH.81FK6$Q4non_zero_generator
sFHF^z@$FhqC$@'4-Fbp6#F^z-%&ERRORG6#%Enon_zero_generators~is~not~assigned!G/F^z
F^r>83-&FK6#%'matrixG6#7#-%"$G6$7#-&FK6#%%ZeroGFH-&FK6#%-NumberOfRowsGFfv>F][l-
F_[l6#-&FK6#%/CertainColumnsG6$FguF^z-%'assignG6$Fdq-Ffo6#F][l@$F]qC,>84-F_t6$-
F^s6$Fct&Fgy6#F\oFK@$F^u>Ffr-Ffw6%FfrFhwFK>87-F]x6&F`]lFfrF\tFK@'-Fbp6#&Fdo6#Q5
embedding_generatorsFHC$>85-F_t6$Fb^lFK>86-F]x6&F`]lFg^lF\tFK-Fbp6#&Fdo6#Q?pos_
of_use_generators_to_embedFH>F[_l-Ffo6#F\^l>F[_l-F_[l6#F`]l@$Fap-Fi\l6$Fdp-Ffo6
#F[_l@$Fgp-Fi\l6$Fip-F_t6$F[_lFK>F\^l-F_t6$F\^lFK@$F^u>F\^l-Ffw6%F\^lFfxFK>F\^l
-%4homalg/RingNotationGFe`l>Fgy6$-F[y6%f*F^yFHFcsFH/-%$lhsG6#F]rFjrFHFHFHFe]lF\
^l&Fgy6#""#7%FgyQ-PresentationFH-%8homalg/PresentationInfoG6%FfalF\tFKFHFHFHFH,
Q6homalg/Presentation.mFH
M7R0
I0homalg/Pullbackf*6)%"AG%%_phiG%#B_G%'_beta1G%"BG%$varG%,RingPackageG6,%#RPG%$
narG%%optsG%$phiG%&beta1G%*minus_oneG%)optionalG%%ApB_G%,minus_beta1G%*phi_beta
1G6%%[oCopyright~(C)~2004-2005~by~Mohamed~Barakat.~All~rights~reserved.G%'syste
mG%)rememberG6"C->8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F>%*procedure
G-%'RETURNG6#-F>6#&FD6#;""",&FFFUFGFF@%2,&""$FUFGFU9#>8&-%%copyG6#-%2homalg/Get
OptionsG6$&FD6#;""%FVF>>&Fgn6#Q2number_of_optionsF;""!@$2,&FenFUFcoFF,&""'FUFGF
U-FN6#-%1homalg/PullbackFG6#FD>8'-%6homalg/NormalizeInputG6$9%F>>8(-Fdp6$9'F>>8
*&FD6#;""(FV>8+-%/homalg/DiagMatG6%9$9&F>>8,-%.homalg/MulMatG6&FFFhp9)F>>8--&F>
6#%,UnionOfRowsG6$FbpFjq-%.homalg/KernelG6(FcqF`r9(F^rF]qF>F;F;F;F;,
Q2homalg/Pullback.mF;
M7R0
I6homalg/RHomHom2OnSeqsf*6(%"qG%"AG%"BG'%&alphaG<$%&tableG%%listG%%_varG%,RingP
ackageG6%%#RPG%$narG%*cofunctorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All
~rights~reserved.G%'systemG%)rememberG6"C&>8$-%1homalg/tablenameG6%9!&9"6#!""8%
@$-%%typeG6$F:%*procedureG-%'RETURNG6#-F:6#&F@6#;""",&FBFQFCFB>8&-%8homalg/Func
tor_RHomHom2G6%9$9%9&-%7homalg/CofunctorOnSeqsG6$FT&F@6#;""%FBF7F7F7F7,
Q8homalg/RHomHom2OnSeqs.mF7
M7R0
I6homalg/RHomHom3OnSeqsf*6(%"qG%"AG%"BG'%&alphaG<$%&tableG%%listG%%_varG%,RingP
ackageG6%%#RPG%$narG%(functorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All~r
ights~reserved.G%'systemG%)rememberG6"C&>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$
-%%typeG6$F:%*procedureG-%'RETURNG6#-F:6#&F@6#;""",&FBFQFCFB>8&-%8homalg/Functo
r_RHomHom3G6%9$9%9&-%5homalg/FunctorOnSeqsG6$FT&F@6#;""%FBF7F7F7F7,
Q8homalg/RHomHom3OnSeqs.mF7
M7R0
I2homalg/table2listf*6$%$tabG%,RingPackageG6&%#RPG%$narG%$LHSG%%nameG6#%fnCopyr
ight~(C)~2004~by~Mohamed~Barakat.~All~rights~reserved.G6"C'>8$-%1homalg/tablena
meG6%9!&9"6#!""8%@$-%%typeG6$F1%*procedureG-%'RETURNG6#-F16#&F76#;""",&F9FHF:F9
>8&-%$mapG6$%$lhsG-%#opG6#-%%evalG6#9$@%2,&FHFHF:FH9#C$>8'&F76#""#@%-F=6$Fgn%)f
unctionGC$-%%sortG6#-FM6%FQFK7$""!FH-FM6$f*6#%"aGF.6$%)operatorG%&arrowGF.-&-FQ
6$7$FfoFfoT#FU6#-FQ6$;FHF9FdpF.F.6$F+Fgn%"%GC$-Fao6#-FM6$FQFK-FM6$f*FjoF.F\pF.&
FdpFUF.F.FipFjp-Fao6#FK-FM6$f*FjoF.F\pF.-%%copyG6#&T$FUF.F.6$F%FVFjpF.F.F.F.,
Q4homalg/table2list.mF.
M7R0
I-homalgT/initf*6"F$6#%ioCopyright~(C)~2004~by~Mohamed~Barakat~and~Daniel~Rober
tz.~All~rights~reserved.GF$-%,homalg/initG6#9"F$F$F$F$,
Q/homalgT/init.mF$
M7R0
IFhomalg/GetRowIndependentUnitPositionsf*6&%#_MG%)pos_listG'%$varG%%listG%,Ring
PackageG6$%#RPG%$narG6#%fnCopyright~(C)~2008~by~Mohamed~Barakat.~All~rights~res
erved.G6"C%>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F3%*procedureG-%'RE
TURNG6#-F36#&F96#;""",&F;FJF<F;-%Chomalg/GetIndependentUnitPositionsG6$-%6homal
g/NormalizeInputG6$-&F36#%'matrixG6#-&%'linalgG6#%*transposeG6#-FU6#-FP6$9$F3F3
&F96#;""#F;F0F0F0F0,
QHhomalg/GetRowIndependentUnitPositions.mF0
M7R0
I(homalgA=6"%&falseGE\[l]bl%3ReduceHomomorphismGf*F$F$6%%fnCopyright~(C)~2005~b
y~Mohamed~Barakat.~All~rights~reserved.G%'systemG%)rememberGF$C$30%3homalg/init
ializedG.%%trueG0-%,homalg/initGF$""!-%:homalg/ReduceHomomorphismG6#9"F$F$F$%-R
ingNotationGf*F$F$6#%fnCopyright~(C)~2004~by~Mohamed~Barakat.~All~rights~reserv
ed.GF$C$F.-%4homalg/RingNotationGF9F$F$F$%+KernelFMapGf*F$F$6%F>F+F,F$C$F.-%2ho
malg/KernelFMapGF9F$F$F$%,LHomHom3MapGf*F$F$6%%fnCopyright~(C)~2006~by~Mohamed~
Barakat.~All~rights~reserved.GF+F,F$C$F.-%3homalg/LHomHom3MapGF9F$F$F$%)Coimage
FGf*F$F$FJF$C$F.-%0homalg/CoimageFGF9F$F$F$%2TorsionFreeFactorGf*F$F$6%%fnCopyr
ight~(C)~2007~by~Mohamed~Barakat.~All~rights~reserved.GF+F,F$C$F.-%9homalg/Tors
ionFreeFactorGF9F$F$F$%6LongExactHomologySeqFGf*F$F$6#%[oCopyright~(C)~2004-200
6~by~Mohamed~Barakat.~All~rights~reserved.GF$C$F.-%=homalg/LongExactHomologySeq
FGF9F$F$F$%,LHom2OnSeqsGf*F$F$FJF$C$F.-%3homalg/LHom2OnSeqsGF9F$F$F$%,IsCocompl
exGf*F$F$F=F$C$F.-%3homalg/IsCocomplexGF9F$F$F$%-Functor_TorqGf*F$F$FJF$C$F.-%4
homalg/Functor_TorqGF9F$F$F$%*KernelEmbGf*F$F$6%%[oCopyright~(C)~2003-2007~by~M
ohamed~Barakat.~All~rights~reserved.GF+F,F$C$F.-%1homalg/KernelEmbGF9F$F$F$%/Ge
tConvertInfoGf*F$F$6#%[oCopyright~(C)~2005-2007~by~Mohamed~Barakat.~All~rights~
reserved.GF$C$F.-%6homalg/GetConvertInfoGF9F$F$F$%)PushoutFGf*F$F$FVF$C$F.-%0ho
malg/PushoutFGF9F$F$F$%/RHomHom3OnSeqsGf*F$F$FJF$C$F.-%6homalg/RHomHom3OnSeqsGF
9F$F$F$%/CheckHomsOfSeqGf*F$F$F=F$C$F.-%6homalg/CheckHomsOfSeqGF9F$F$F$%%TorqGf
*F$F$6%%[oCopyright~(C)~2005-2006~by~Mohamed~Barakat.~All~rights~reserved.GF+F,
F$C$F.-%,homalg/TorqGF9F$F$F$%2NatTrIdToHomHom_RGf*F$F$6%%[oCopyright~(C)~2003-
2004~by~Mohamed~Barakat.~All~rights~reserved.GF+F,F$C$F.-%9homalg/NatTrIdToHomH
om_RGF9F$F$F$%)ExtMap_RGf*F$F$F)F$C$F.-%0homalg/ExtMap_RGF9F$F$F$%4EulerCharact
eristicGf*F$F$6#FWF$C$F.-%;homalg/EulerCharacteristicGF9F$F$F$%-LHomHomMap_RGf*
F$F$6%%ioCopyright~(C)~2005~by~Mohamed~Barakat~and~Daniel~Robertz.~All~rights~r
eserved.GF+F,F$C$F.-%4homalg/LHomHomMap_RGF9F$F$F$%)Extq2MapGf*F$F$FJF$C$F.-%0h
omalg/Extq2MapGF9F$F$F$%/FreeHullModuleGf*F$F$F=F$C$F.-%6homalg/FreeHullModuleG
F9F$F$F$%2NonZeroGeneratorsGf*F$F$6#%[oCopyright~(C)~2004-2005~by~Mohamed~Barak
at.~All~rights~reserved.GF$C$F.-%9homalg/NonZeroGeneratorsGF9F$F$F$%/HomHom_ROn
SeqsGf*F$F$FcsF$C$F.-%6homalg/HomHom_ROnSeqsGF9F$F$F$%'AddMatGf*F$F$FdtF$C$F.-%
.homalg/AddMatGF9F$F$F$%6ConvertColumnToMatrixGf*F$F$6#%fnCopyright~(C)~2008~by
~Mohamed~Barakat.~All~rights~reserved.GF$C$F.-%=homalg/ConvertColumnToMatrixGF9
F$F$F$%-Functor_Ext2Gf*F$F$FJF$C$F.-%4homalg/Functor_Ext2GF9F$F$F$%.HomHom3OnSe
qsGf*F$F$FJF$C$F.-%5homalg/HomHom3OnSeqsGF9F$F$F$%,Functor_TorGf*F$F$FJF$C$F.-%
3homalg/Functor_TorGF9F$F$F$%5TorsionFreeFactorMapGf*F$F$FVF$C$F.-%<homalg/Tors
ionFreeFactorMapGF9F$F$F$%'HomHomGf*F$F$FJF$C$F.-%.homalg/HomHomGF9F$F$F$%/Comp
leteKerSqFGf*F$F$F=F$C$F.-%6homalg/CompleteKerSqFGF9F$F$F$%'LambekGf*F$F$6#%[oC
opyright~(C)~2003-2006~by~Mohamed~Barakat.~All~rights~reserved.GF$C$F.-%.homalg
/LambekGF9F$F$F$%,OnMorphismsGf*F$F$6%FetF+F,F$C$F.-%3homalg/OnMorphismsGF9F$F$
F$%,SyzygiesOpFGf*F$F$6%%^pCopyright~(C)~2003-2004~by~Daniel~Robertz~and~Mohame
d~Barakat.~All~rights~reserved.GF+F,F$C$F.-%3homalg/SyzygiesOpFGF9F$F$F$%0Compo
seFunctorsGf*F$F$6#%^pCopyright~(C)~2005-2006~by~Mohamed~Barakat~and~Daniel~Rob
ertz.~All~rights~reserved.GF$C$F.-%7homalg/ComposeFunctorsGF9F$F$F$%1Functor_LH
omHom2Gf*F$F$FJF$C$F.-%8homalg/Functor_LHomHom2GF9F$F$F$%?GetRowIndependentUnit
PositionsGf*F$F$FeuF$C$F.-%Fhomalg/GetRowIndependentUnitPositionsGF9F$F$F$%2Pus
houtPairOfMapsGf*F$F$FVF$C$F.-%9homalg/PushoutPairOfMapsGF9F$F$F$%,Torq2OnSeqsG
f*F$F$FJF$C$F.-%3homalg/Torq2OnSeqsGF9F$F$F$%*tablenameGf*F$F$6#%^pCopyright~(C
)~2004-2006~by~Mohamed~Barakat~and~Daniel~Robertz.~All~rights~reserved.GF$C$F.-
%1homalg/tablenameGF9F$F$F$%+Tor2OnSeqsGf*F$F$FJF$C$F.-%2homalg/Tor2OnSeqsGF9F$
F$F$%9IntersectionMultiplicityGf*F$F$FVF$C$F.-%@homalg/IntersectionMultiplicity
GF9F$F$F$%-IsZeroMatrixGf*F$F$FeuF$C$F.-%4homalg/IsZeroMatrixGF9F$F$F$%)Preimag
eGf*F$F$F=F$C$F.-%0homalg/PreimageGF9F$F$F$%<SyzygiesGeneratorsOfColumnsGf*F$F$
6%FfuF+F,F$C$F.-%Chomalg/SyzygiesGeneratorsOfColumnsGF9F$F$F$%,LeftDivideFGf*F$
F$F=F$C$F.-%3homalg/LeftDivideFGF9F$F$F$%0ResolutionOfSeqGf*F$F$FaxF$C$F.-%7hom
alg/ResolutionOfSeqGF9F$F$F$%(LHomMapGf*F$F$FJF$C$F.-%/homalg/LHomMapGF9F$F$F$%
4EmbedInFactorModuleGf*F$F$F=F$C$F.-%;homalg/EmbedInFactorModuleGF9F$F$F$%+Ext2
OnSeqsGf*F$F$FJF$C$F.-%2homalg/Ext2OnSeqsGF9F$F$F$%*ExtOnSeqsGf*F$F$FJF$C$F.-%1
homalg/ExtOnSeqsGF9F$F$F$%1BasisOfRowModuleGf*F$F$Fd\lF$C$F.-%8homalg/BasisOfRo
wModuleGF9F$F$F$%.FunctorOnSeqsGf*F$F$F)F$C$F.-%5homalg/FunctorOnSeqsGF9F$F$F$%
1IsCommutativeSqFGf*F$F$F=F$C$F.-%8homalg/IsCommutativeSqFGF9F$F$F$%%LHomGf*F$F
$FJF$C$F.-%,homalg/LHomGF9F$F$F$%*IsComplexGf*F$F$F=F$C$F.-%1homalg/IsComplexGF
9F$F$F$%(ExtqMapGf*F$F$F)F$C$F.-%/homalg/ExtqMapGF9F$F$F$%.CodimOfModuleGf*F$F$
F]sF$C$F.-%5homalg/CodimOfModuleGF9F$F$F$%.Functor_Hom_RGf*F$F$FJF$C$F.-%5homal
g/Functor_Hom_RGF9F$F$F$%1TorsionSubmoduleGf*F$F$6%%^pCopyright~(C)~2003-2005~b
y~Mohamed~Barakat~and~Daniel~Robertz.~All~rights~reserved.GF+F,F$C$F.-%8homalg/
TorsionSubmoduleGF9F$F$F$%.Functor_Ext_RGf*F$F$FJF$C$F.-%5homalg/Functor_Ext_RG
F9F$F$F$%7Functor_TensorProduct2Gf*F$F$FJF$C$F.-%>homalg/Functor_TensorProduct2
GF9F$F$F$%-CokernelFMapGf*F$F$FDF$C$F.-%4homalg/CokernelFMapGF9F$F$F$%3LeftDeri
vedFunctorGf*F$F$6#F[rF$C$F.-%:homalg/LeftDerivedFunctorGF9F$F$F$%0DefectOfHoms
MapGf*F$F$FaxF$C$F.-%7homalg/DefectOfHomsMapGF9F$F$F$%-IsBijectiveFGf*F$F$F]sF$
C$F.-%4homalg/IsBijectiveFGF9F$F$F$%2ReplaceGeneratorsGf*F$F$6#F*F$C$F.-%9homal
g/ReplaceGeneratorsGF9F$F$F$%+Extension1Gf*F$F$FVF$C$F.-%2homalg/Extension1GF9F
$F$F$%2TensorProduct2MapGf*F$F$FjqF$C$F.-%9homalg/TensorProduct2MapGF9F$F$F$%,B
etterBasisGf*F$F$6#%[oCopyright~(C)~2004-2007~by~Mohamed~Barakat.~All~rights~re
served.GF$C$F.-%3homalg/BetterBasisGF9F$F$F$%6Functor_TensorProductGf*F$F$FJF$C
$F.-%=homalg/Functor_TensorProductGF9F$F$F$%3CohomologyModulesFGf*F$F$F=F$C$F.-
%:homalg/CohomologyModulesFGF9F$F$F$%(ComposeGf*F$F$FdtF$C$F.-%/homalg/ComposeG
F9F$F$F$%1IsShortExactSeqFGf*F$F$F=F$C$F.-%8homalg/IsShortExactSeqFGF9F$F$F$%4P
ullbackPairOfMapsFGf*F$F$6%FgdlF+F,F$C$F.-%;homalg/PullbackPairOfMapsFGF9F$F$F$
%2CohomologyModulesGf*F$F$F=F$C$F.-%9homalg/CohomologyModulesGF9F$F$F$%-Functor
_LHomGf*F$F$FJF$C$F.-%4homalg/Functor_LHomGF9F$F$F$%$HomGf*F$F$6#F^pF$C$F.-%+ho
malg/HomGF9F$F$F$%9YonedaProductOfCocycles2Gf*F$F$6%%enCopyright~(C)~2007~by~Ba
rbara~Bremer.~All~rights~reserved.GF+F,F$C$F.-%@homalg/YonedaProductOfCocycles2
GF9F$F$F$%3Ext1Of2OneCocyclesGf*F$F$6#%enCopyright~(C)~2008~by~Barbara~Bremer.~
All~rights~reserved.GF$C$F.-%:homalg/Ext1Of2OneCocyclesGF9F$F$F$%<InjectivePres
entationIsoFFRGf*F$F$F]sF$C$F.-%Chomalg/InjectivePresentationIsoFFRGF9F$F$F$%0I
sShortExactSeqGf*F$F$F=F$C$F.-%7homalg/IsShortExactSeqGF9F$F$F$%-CheckComplexGf
*F$F$F=F$C$F.-%4homalg/CheckComplexGF9F$F$F$%'ImageFGf*F$F$FVF$C$F.-%.homalg/Im
ageFGF9F$F$F$%'TorMapGf*F$F$F)F$C$F.-%.homalg/TorMapGF9F$F$F$%,Functor_ExtGf*F$
F$FJF$C$F.-%3homalg/Functor_ExtGF9F$F$F$%+KernelFEmbGf*F$F$F]pF$C$F.-%2homalg/K
ernelFEmbGF9F$F$F$%/CofunctorOnSeqGf*F$F$6%FhnF+F,F$C$F.-%6homalg/CofunctorOnSe
qGF9F$F$F$%(Hom.oldGf*F$F$FjwF$C$F.-%/homalg/Hom.oldGF9F$F$F$%/SyzygiesModuleGf
*F$F$FVF$C$F.-%6homalg/SyzygiesModuleGF9F$F$F$%0SubfactorModuleGf*F$F$F`alF$C$F
.-%7homalg/SubfactorModuleGF9F$F$F$%-LeftinverseCGf*F$F$6%%[oCopyright~(C)~2006
-2007~by~Mohamed~Barakat.~All~rights~reserved.GF+F,F$C$F.-%4homalg/LeftinverseC
GF9F$F$F$%.ConnectingHomGf*F$F$FdtF$C$F.-%5homalg/ConnectingHomGF9F$F$F$%+IsExa
ctSeqGf*F$F$F=F$C$F.-%2homalg/IsExactSeqGF9F$F$F$%4BasisOfColumnsCoeffGf*F$F$Fd
\lF$C$F.-%;homalg/BasisOfColumnsCoeffGF9F$F$F$%4LeftDerivedFunctorFGf*F$F$FfblF
$C$F.-%;homalg/LeftDerivedFunctorFGF9F$F$F$%/FunctorOnSeqsFGf*F$F$F)F$C$F.-%6ho
malg/FunctorOnSeqsFGF9F$F$F$%0PrettyExtensionGf*F$F$6#FhglF$C$F.-%7homalg/Prett
yExtensionGF9F$F$F$%(Tor2MapGf*F$F$FJF$C$F.-%/homalg/Tor2MapGF9F$F$F$%1Functor_
LHomHom3Gf*F$F$FJF$C$F.-%8homalg/Functor_LHomHom3GF9F$F$F$%:NatTrPullbackToTwoS
ourcesGf*F$F$FaflF$C$F.-%Ahomalg/NatTrPullbackToTwoSourcesGF9F$F$F$%-CokernelFE
piGf*F$F$FaflF$C$F.-%4homalg/CokernelFEpiGF9F$F$F$%.IsProjectiveCGf*F$F$6#FKF$C
$F.-%5homalg/IsProjectiveCGF9F$F$F$%,AnnihilatorGf*F$F$FVF$C$F.-%3homalg/Annihi
latorGF9F$F$F$%3BetterPresentationGf*F$F$FfdlF$C$F.-%:homalg/BetterPresentation
GF9F$F$F$%0IsCommutativeSqGf*F$F$F=F$C$F.-%7homalg/IsCommutativeSqGF9F$F$F$%=So
lveSystemWithConstraintsC2Gf*F$F$FgglF$C$F.-%Dhomalg/SolveSystemWithConstraints
C2GF9F$F$F$%,RHomHom3MapGf*F$F$FJF$C$F.-%3homalg/RHomHom3MapGF9F$F$F$%,ZeroColu
mnsGf*F$F$FeuF$C$F.-%3homalg/ZeroColumnsGF9F$F$F$%-DefectOfHomsGf*F$F$6%%^pCopy
right~(C)~2003-2008~by~Mohamed~Barakat~and~Daniel~Robertz.~All~rights~reserved.
GF+F,F$C$F.-%4homalg/DefectOfHomsGF9F$F$F$%'DerModGf*F$F$FaglF$C$F.-%.homalg/De
rModGF9F$F$F$%*EqualMapsGf*F$F$FaflF$C$F.-%1homalg/EqualMapsGF9F$F$F$%8LongExac
tCohomologySeqFGf*F$F$FfdlF$C$F.-%?homalg/LongExactCohomologySeqFGF9F$F$F$%4Bas
isOfColumnModuleGf*F$F$Fd\lF$C$F.-%;homalg/BasisOfColumnModuleGF9F$F$F$%*Direct
SumGf*F$F$FjwF$C$F.-%1homalg/DirectSumGF9F$F$F$%BGetColumnIndependentUnitPositi
onsGf*F$F$FeuF$C$F.-%Ihomalg/GetColumnIndependentUnitPositionsGF9F$F$F$%-Functo
r_ExtqGf*F$F$FJF$C$F.-%4homalg/Functor_ExtqGF9F$F$F$%-Functor_Hom2Gf*F$F$FJF$C$
F.-%4homalg/Functor_Hom2GF9F$F$F$%0LHomHom_ROnSeqsGf*F$F$FJF$C$F.-%7homalg/LHom
Hom_ROnSeqsGF9F$F$F$%2DecideZeroColumnsGf*F$F$Fd\lF$C$F.-%9homalg/DecideZeroCol
umnsGF9F$F$F$%,IdentityMapGf*F$F$FfclF$C$F.-%3homalg/IdentityMapGF9F$F$F$%.LHom
HomOnSeqsGf*F$F$FJF$C$F.-%5homalg/LHomHomOnSeqsGF9F$F$F$%*ExtensionGf*F$F$6%%LC
opyright~(C)~2007~by~~All~rights~reserved.GF+F,F$C$F.-%1homalg/ExtensionGF9F$F$
F$%9GeneratorsOfPresentationGf*F$F$FdtF$C$F.-%@homalg/GeneratorsOfPresentationG
F9F$F$F$%+Hom2OnSeqsGf*F$F$FJF$C$F.-%2homalg/Hom2OnSeqsGF9F$F$F$%-FunctorOnSeqG
f*F$F$FjqF$C$F.-%4homalg/FunctorOnSeqGF9F$F$F$%2ParametrizeModuleGf*F$F$6%%^pCo
pyright~(C)~2003-2007~by~Mohamed~Barakat~and~Daniel~Robertz.~All~rights~reserve
d.GF+F,F$C$F.-%9homalg/ParametrizeModuleGF9F$F$F$%:RightSatelliteOfCofunctorGf*
F$F$FdpF$C$F.-%Ahomalg/RightSatelliteOfCofunctorGF9F$F$F$%'ExtMapGf*F$F$F)F$C$F
.-%.homalg/ExtMapGF9F$F$F$%+IsZeroMapFGf*F$F$FDF$C$F.-%2homalg/IsZeroMapFGF9F$F
$F$%5TorsionFreeFactorEpiGf*F$F$FVF$C$F.-%<homalg/TorsionFreeFactorEpiGF9F$F$F$
%3CocycleOfExtensionGf*F$F$FgglF$C$F.-%:homalg/CocycleOfExtensionGF9F$F$F$%,com
pute_psiGf*F$F$6#%ioCopyright~(C)~2008~by~Mohamed~Barakat~and~Barbara~Bremer.~A
ll~rights~reserved.GF$C$F.-%3homalg/compute_psiGF9F$F$F$%*TorOnSeqsGf*F$F$FJF$C
$F.-%1homalg/TorOnSeqsGF9F$F$F$%,CokernelEpiGf*F$F$FaflF$C$F.-%3homalg/Cokernel
EpiGF9F$F$F$%7LongExactCohomologySeqGf*F$F$FfdlF$C$F.-%>homalg/LongExactCohomol
ogySeqGF9F$F$F$%-FirstNonZeroGf*F$F$F=F$C$F.-%4homalg/FirstNonZeroGF9F$F$F$%&Is
HomGf*F$F$6#FbrF$C$F.-%-homalg/IsHomGF9F$F$F$%,LeftDivideCGf*F$F$F^hlF$C$F.-%3h
omalg/LeftDivideCGF9F$F$F$%-IsInjectiveFGf*F$F$Fg_mF$C$F.-%4homalg/IsInjectiveF
GF9F$F$F$%/MonomialMatrixGf*F$F$6#%[oCopyright~(C)~2009-2012~by~Mohamed~Barakat
.~All~rights~reserved.GF$C$F.-%6homalg/MonomialMatrixGF9F$F$F$%4ChineseRemainde
rMapGf*F$F$FfclF$C$F.-%;homalg/ChineseRemainderMapGF9F$F$F$%(CoimageGf*F$F$F]\m
F$C$F.-%/homalg/CoimageGF9F$F$F$%/LHomHom3OnSeqsGf*F$F$FJF$C$F.-%6homalg/LHomHo
m3OnSeqsGF9F$F$F$%6RightDerivedCofunctorGf*F$F$FfblF$C$F.-%=homalg/RightDerived
CofunctorGF9F$F$F$%+TorqOnSeqsGf*F$F$FJF$C$F.-%2homalg/TorqOnSeqsGF9F$F$F$%1Bas
isOfRowsCoeffGf*F$F$Fd\lF$C$F.-%8homalg/BasisOfRowsCoeffGF9F$F$F$%'ResDimGf*F$F
$F_[nF$C$F.-%.homalg/ResDimGF9F$F$F$%1Functor_RHomHom2Gf*F$F$FJF$C$F.-%8homalg/
Functor_RHomHom2GF9F$F$F$%2ImageOfSubmoduleFGf*F$F$F]sF$C$F.-%9homalg/ImageOfSu
bmoduleFGF9F$F$F$%2A3ExtensionModuleGf*F$F$F^hlF$C$F.-%9homalg/A3ExtensionModul
eGF9F$F$F$%1AreEqualMatricesGf*F$F$Fd\lF$C$F.-%8homalg/AreEqualMatricesGF9F$F$F
$%1BetterGeneratorsGf*F$F$FfdlF$C$F.-%8homalg/BetterGeneratorsGF9F$F$F$%(Ext2Ma
pGf*F$F$FJF$C$F.-%/homalg/Ext2MapGF9F$F$F$%9Functor_TorsionSubmoduleGf*F$F$FJF$
C$F.-%@homalg/Functor_TorsionSubmoduleGF9F$F$F$%'HomMapGf*F$F$6%%[oCopyright~(C
)~2003-2005~by~Mohamed~Barakat.~All~rights~reserved.GF+F,F$C$F.-%.homalg/HomMap
GF9F$F$F$%)ZeroRowsGf*F$F$FeuF$C$F.-%0homalg/ZeroRowsGF9F$F$F$%/homalg_optionsG
f*F$F$6#F^\mF$C$F.-%6homalg/homalg_optionsGF9F$F$F$%6NatTrTargetToCokernelGf*F$
F$FaxF$C$F.-%=homalg/NatTrTargetToCokernelGF9F$F$F$%/DecideZeroRowsGf*F$F$Fd\lF
$C$F.-%6homalg/DecideZeroRowsGF9F$F$F$%8TorsionFreeFactorOnSeqsGf*F$F$FVF$C$F.-
%?homalg/TorsionFreeFactorOnSeqsGF9F$F$F$%,IsInjectiveGf*F$F$FjwF$C$F.-%3homalg
/IsInjectiveGF9F$F$F$%2A2ExtensionModuleGf*F$F$F^hlF$C$F.-%9homalg/A2ExtensionM
oduleGF9F$F$F$%*PullbackFGf*F$F$FDF$C$F.-%1homalg/PullbackFGF9F$F$F$%(PushoutGf
*F$F$FVF$C$F.-%/homalg/PushoutGF9F$F$F$%0HomologyModulesGf*F$F$F=F$C$F.-%7homal
g/HomologyModulesGF9F$F$F$%$TorGf*F$F$FjqF$C$F.-%+homalg/TorGF9F$F$F$%,Ext_ROnS
eqsGf*F$F$FJF$C$F.-%3homalg/Ext_ROnSeqsGF9F$F$F$%0CompleteImSqInvGf*F$F$F=F$C$F
.-%7homalg/CompleteImSqInvGF9F$F$F$%+RHomHomMapGf*F$F$FJF$C$F.-%2homalg/RHomHom
MapGF9F$F$F$%,RHomHom2MapGf*F$F$FJF$C$F.-%3homalg/RHomHom2MapGF9F$F$F$%.LEHS2Ai
BjCconGf*F$F$F=F$C$F.-%5homalg/LEHS2AiBjCconGF9F$F$F$%-Functor_Tor2Gf*F$F$FJF$C
$F.-%4homalg/Functor_Tor2GF9F$F$F$%8DiagonalElementsAndRankGf*F$F$F=F$C$F.-%?ho
malg/DiagonalElementsAndRankGF9F$F$F$%(MakeSeqGf*F$F$FgnF$C$F.-%/homalg/MakeSeq
GF9F$F$F$%0NatTrImToTargetGf*F$F$FVF$C$F.-%7homalg/NatTrImToTargetGF9F$F$F$%*Co
kernelFGf*F$F$FaxF$C$F.-%1homalg/CokernelFGF9F$F$F$%.LECS2conAiBjCGf*F$F$F=F$C$
F.-%5homalg/LECS2conAiBjCGF9F$F$F$%-CompleteSeqFGf*F$F$F)F$C$F.-%4homalg/Comple
teSeqFGF9F$F$F$%0IsStablyFreeFFRGf*F$F$F]sF$C$F.-%7homalg/IsStablyFreeFFRGF9F$F
$F$%0OriginalElementGf*F$F$F]sF$C$F.-%7homalg/OriginalElementGF9F$F$F$%-DirectS
umMapGf*F$F$6#F]anF$C$F.-%4homalg/DirectSumMapGF9F$F$F$%+BasisCoeffGf*F$F$6%%io
Copyright~(C)~2004~by~Mohamed~Barakat~and~Daniel~Robertz.~All~rights~reserved.G
F+F,F$C$F.-%2homalg/BasisCoeffGF9F$F$F$%0NatTrSourceToImGf*F$F$FVF$C$F.-%7homal
g/NatTrSourceToImGF9F$F$F$%)CokernelGf*F$F$6%%[oCopyright~(C)~2004-2008~by~Moha
med~Barakat.~All~rights~reserved.GF+F,F$C$F.-%0homalg/CokernelGF9F$F$F$%$ExtGf*
F$F$6%F[xF+F,F$C$F.-%+homalg/ExtGF9F$F$F$%-PresentationGf*F$F$FfdlF$C$F.-%4homa
lg/PresentationGF9F$F$F$%.IsSurjectiveFGf*F$F$Fg_mF$C$F.-%5homalg/IsSurjectiveF
GF9F$F$F$%'KernelGf*F$F$6%%[oCopyright~(C)~2003-2008~by~Mohamed~Barakat.~All~ri
ghts~reserved.GF+F,F$C$F.-%.homalg/KernelGF9F$F$F$%&ImageGf*F$F$FVF$C$F.-%-homa
lg/ImageGF9F$F$F$%0ImageOfElementsGf*F$F$F]sF$C$F.-%7homalg/ImageOfElementsGF9F
$F$F$%,LastNonZeroGf*F$F$F=F$C$F.-%3homalg/LastNonZeroGF9F$F$F$%*LHomHom_RGf*F$
F$FJF$C$F.-%1homalg/LHomHom_RGF9F$F$F$%(LHomHomGf*F$F$FJF$C$F.-%/homalg/LHomHom
GF9F$F$F$%<SolveSystemWithConstraintsCGf*F$F$FgglF$C$F.-%Chomalg/SolveSystemWit
hConstraintsCGF9F$F$F$%8YonedaProductOfCocyclesGf*F$F$FgglF$C$F.-%?homalg/Yoned
aProductOfCocyclesGF9F$F$F$%,LeftinverseGf*F$F$F]sF$C$F.-%3homalg/LeftinverseGF
9F$F$F$%:StablyFreePresentationFFRGf*F$F$F]sF$C$F.-%Ahomalg/StablyFreePresentat
ionFFRGF9F$F$F$%4NatTrKernelToSourceGf*F$F$F\anF$C$F.-%;homalg/NatTrKernelToSou
rceGF9F$F$F$%0CofunctorOnSeqFGf*F$F$FDF$C$F.-%7homalg/CofunctorOnSeqFGF9F$F$F$%
*GlobalDimGf*F$F$FDF$C$F.-%1homalg/GlobalDimGF9F$F$F$%,RankOfGaussGf*F$F$F=F$C$
F.-%3homalg/RankOfGaussGF9F$F$F$%0StdBasisVectorsGf*F$F$FdtF$C$F.-%7homalg/StdB
asisVectorsGF9F$F$F$%/DerMinusLogInvGf*F$F$F]sF$C$F.-%6homalg/DerMinusLogInvGF9
F$F$F$%3EqualPresentationsGf*F$F$FfdlF$C$F.-%:homalg/EqualPresentationsGF9F$F$F
$%2ConvertGeneratorsGf*F$F$FdtF$C$F.-%9homalg/ConvertGeneratorsGF9F$F$F$%-IsExa
ctCoseqGf*F$F$F=F$C$F.-%4homalg/IsExactCoseqGF9F$F$F$%/Functor_HomHomGf*F$F$FJF
$C$F.-%6homalg/Functor_HomHomGF9F$F$F$%3ConvertRowToMatrixGf*F$F$FeuF$C$F.-%:ho
malg/ConvertRowToMatrixGF9F$F$F$%,CokernelMapGf*F$F$FaxF$C$F.-%3homalg/Cokernel
MapGF9F$F$F$%'SubMatGf*F$F$F=F$C$F.-%.homalg/SubMatGF9F$F$F$%.CompleteKerSqGf*F
$F$F=F$C$F.-%5homalg/CompleteKerSqGF9F$F$F$%(KernelFGf*F$F$FaxF$C$F.-%/homalg/K
ernelFGF9F$F$F$%*MakeCoseqGf*F$F$FgnF$C$F.-%1homalg/MakeCoseqGF9F$F$F$%,Functor
_HomGf*F$F$FJF$C$F.-%3homalg/Functor_HomGF9F$F$F$%)PullbackGf*F$F$FaxF$C$F.-%0h
omalg/PullbackGF9F$F$F$%1Functor_HomHom_RGf*F$F$FJF$C$F.-%8homalg/Functor_HomHo
m_RGF9F$F$F$%*Hom_R.oldGf*F$F$F]pF$C$F.-%1homalg/Hom_R.oldGF9F$F$F$%+LHomHomMap
Gf*F$F$FJF$C$F.-%2homalg/LHomHomMapGF9F$F$F$%,Hom_ROnSeqsGf*F$F$FDF$C$F.-%3homa
lg/Hom_ROnSeqsGF9F$F$F$%.IsTorsionFreeGf*F$F$FVF$C$F.-%5homalg/IsTorsionFreeGF9
F$F$F$%1Functor_RHomHom3Gf*F$F$FJF$C$F.-%8homalg/Functor_RHomHom3GF9F$F$F$%4Ten
sorProductOnSeqsGf*F$F$F)F$C$F.-%;homalg/TensorProductOnSeqsGF9F$F$F$%*ImageFEp
iGf*F$F$FVF$C$F.-%1homalg/ImageFEpiGF9F$F$F$%1DefectOfHomsFMapGf*F$F$FDF$C$F.-%
8homalg/DefectOfHomsFMapGF9F$F$F$%)LHom2MapGf*F$F$FJF$C$F.-%0homalg/LHom2MapGF9
F$F$F$%+ExtqOnSeqsGf*F$F$FJF$C$F.-%2homalg/ExtqOnSeqsGF9F$F$F$%3PushoutPairOfMa
psFGf*F$F$FVF$C$F.-%:homalg/PushoutPairOfMapsFGF9F$F$F$%-KroneckerMatGf*F$F$6#%
fnCopyright~(C)~2003~by~Mohamed~Barakat.~All~rights~reserved.GF$C$F.-%4homalg/K
roneckerMatGF9F$F$F$%-SyzygiesDataGf*F$F$FVF$C$F.-%4homalg/SyzygiesDataGF9F$F$F
$%:YonedaProductOfExtensionsGf*F$F$FgglF$C$F.-%Ahomalg/YonedaProductOfExtension
sGF9F$F$F$%/ConnectingHomFGf*F$F$F=F$C$F.-%6homalg/ConnectingHomFGF9F$F$F$%.Sin
gleNonZeroGf*F$F$Fg_mF$C$F.-%5homalg/SingleNonZeroGF9F$F$F$%?A2ExtensionModuleF
romA2CocycleGf*F$F$F]^mF$C$F.-%Fhomalg/A2ExtensionModuleFromA2CocycleGF9F$F$F$%
:Functor_TorsionFreeFactorGf*F$F$FVF$C$F.-%Ahomalg/Functor_TorsionFreeFactorGF9
F$F$F$%.HomHom2OnSeqsGf*F$F$FJF$C$F.-%5homalg/HomHom2OnSeqsGF9F$F$F$%(Hom2MapGf
*F$F$F)F$C$F.-%/homalg/Hom2MapGF9F$F$F$%,LHomHom2MapGf*F$F$FJF$C$F.-%3homalg/LH
omHom2MapGF9F$F$F$%1PresentationInfoGf*F$F$F=F$C$F.-%8homalg/PresentationInfoGF
9F$F$F$%,ReduceCoeffGf*F$F$FginF$C$F.-%3homalg/ReduceCoeffGF9F$F$F$%5TensorProd
uct2OnSeqsGf*F$F$FJF$C$F.-%<homalg/TensorProduct2OnSeqsGF9F$F$F$%-IsSurjectiveG
f*F$F$FjwF$C$F.-%4homalg/IsSurjectiveGF9F$F$F$%4TorsionSubmoduleMapGf*F$F$FarF$
C$F.-%;homalg/TorsionSubmoduleMapGF9F$F$F$%(ZeroMapGf*F$F$FdtF$C$F.-%/homalg/Ze
roMapGF9F$F$F$%'ReduceGf*F$F$FaxF$C$F.-%.homalg/ReduceGF9F$F$F$%.Functor_Extq2G
f*F$F$FJF$C$F.-%5homalg/Functor_Extq2GF9F$F$F$%2ConvertToListListGf*F$F$FeuF$C$
F.-%9homalg/ConvertToListListGF9F$F$F$%1CompleteImSqInvFGf*F$F$F=F$C$F.-%8homal
g/CompleteImSqInvFGF9F$F$F$%+LHomOnSeqsGf*F$F$FJF$C$F.-%2homalg/LHomOnSeqsGF9F$
F$F$%&Ext_RGf*F$F$6%%^pCopyright~(C)~2003-2006~by~Mohamed~Barakat~and~Daniel~Ro
bertz.~All~rights~reserved.GF+F,F$C$F.-%-homalg/Ext_RGF9F$F$F$%<GetIndependentU
nitPositionsGf*F$F$Fg_mF$C$F.-%Chomalg/GetIndependentUnitPositionsGF9F$F$F$%9In
jectivePresentationFFRGf*F$F$F]sF$C$F.-%@homalg/InjectivePresentationFFRGF9F$F$
F$%-LeftinverseFGf*F$F$6#%ioCopyright~(C)~2004~by~Daniel~Robertz~and~Mohamed~Ba
rakat.~All~rights~reserved.GF$C$F.-%4homalg/LeftinverseFGF9F$F$F$%+EqualMapsFGf
*F$F$FDF$C$F.-%2homalg/EqualMapsFGF9F$F$F$%+InvolutionGf*F$F$6#%jnCopyright~(C)
~2004-2005~by~Daniel~Robertz.~All~rights~reserved.GF$C$F.-%2homalg/InvolutionGF
9F$F$F$%0GetUnitPositionGf*F$F$FfdlF$C$F.-%7homalg/GetUnitPositionGF9F$F$F$%1Re
sidueClassRingGf*F$F$FhjlF$C$F.-%8homalg/ResidueClassRingGF9F$F$F$%+ZeroModuleG
f*F$F$FDF$C$F.-%2homalg/ZeroModuleGF9F$F$F$%.Functor_LHom2Gf*F$F$FJF$C$F.-%5hom
alg/Functor_LHom2GF9F$F$F$%*IsZeroMapGf*F$F$FaflF$C$F.-%1homalg/IsZeroMapGF9F$F
$F$%1TensorProductMapGf*F$F$F)F$C$F.-%8homalg/TensorProductMapGF9F$F$F$%)HomMap
_RGf*F$F$F\anF$C$F.-%0homalg/HomMap_RGF9F$F$F$%6NatIsoKerOfSqToImOfSqGf*F$F$F_[
nF$C$F.-%=homalg/NatIsoKerOfSqToImOfSqGF9F$F$F$%/RHomHom2OnSeqsGf*F$F$FJF$C$F.-
%6homalg/RHomHom2OnSeqsGF9F$F$F$%AA2ExtensionModuleFromA2ExtensionGf*F$F$6#%jnC
opyright~(C)~2007-2008~by~Barbara~Bremer.~All~rights~reserved.GF$C$F.-%Hhomalg/
A2ExtensionModuleFromA2ExtensionGF9F$F$F$%:DecideZeroRowsEffectivelyGf*F$F$Fd\l
F$C$F.-%Ahomalg/DecideZeroRowsEffectivelyGF9F$F$F$%0Functor_LHomHomGf*F$F$FJF$C
$F.-%7homalg/Functor_LHomHomGF9F$F$F$%)ImageEpiGf*F$F$FVF$C$F.-%0homalg/ImageEp
iGF9F$F$F$%7ProjectiveDimensionFFRGf*F$F$F]sF$C$F.-%>homalg/ProjectiveDimension
FFRGF9F$F$F$%4CokernelOfExtensionGf*F$F$F]^mF$C$F.-%;homalg/CokernelOfExtension
GF9F$F$F$%/InverseElementGf*F$F$FfdlF$C$F.-%6homalg/InverseElementGF9F$F$F$%/Ch
eckCocomplexGf*F$F$F=F$C$F.-%6homalg/CheckCocomplexGF9F$F$F$%+HomHom2MapGf*F$F$
FJF$C$F.-%2homalg/HomHom2MapGF9F$F$F$%.TensorProductGf*F$F$FfblF$C$F.-%5homalg/
TensorProductGF9F$F$F$%-HomHomOnSeqsGf*F$F$FJF$C$F.-%4homalg/HomHomOnSeqsGF9F$F
$F$%,DerMinusLogGf*F$F$F]sF$C$F.-%3homalg/DerMinusLogGF9F$F$F$%+HomHom3MapGf*F$
F$FJF$C$F.-%2homalg/HomHom3MapGF9F$F$F$%,ComposeMapsGf*F$F$F]sF$C$F.-%3homalg/C
omposeMapsGF9F$F$F$%+CheckKerSqGf*F$F$F_[nF$C$F.-%2homalg/CheckKerSqGF9F$F$F$%*
KernelMapGf*F$F$F\anF$C$F.-%1homalg/KernelMapGF9F$F$F$%0CofunctorOnSeqsGf*F$F$F
DF$C$F.-%7homalg/CofunctorOnSeqsGF9F$F$F$%1copyright_homalgGf*F$F$6#%^pCopyrigh
t~(C)~2002-2012~by~Mohamed~Barakat~and~Daniel~Robertz.~All~rights~reserved.GF$C
$F.-%8homalg/copyright_homalgGF9F$F$F$%+FreeModuleGf*F$F$FaxF$C$F.-%2homalg/Fre
eModuleGF9F$F$F$%2Functor_LHomHom_RGf*F$F$FJF$C$F.-%9homalg/Functor_LHomHom_RGF
9F$F$F$%.BasisOfModuleGf*F$F$FaxF$C$F.-%5homalg/BasisOfModuleGF9F$F$F$%+Functor
MapGf*F$F$FhjlF$C$F.-%2homalg/FunctorMapGF9F$F$F$%%ExtqGf*F$F$FjqF$C$F.-%,homal
g/ExtqGF9F$F$F$%*LEHS2lehsGf*F$F$F=F$C$F.-%1homalg/LEHS2lehsGF9F$F$F$%.ResolveM
oduleGf*F$F$FjqF$C$F.-%5homalg/ResolveModuleGF9F$F$F$%3PullbackPairOfMapsGf*F$F
$FaflF$C$F.-%:homalg/PullbackPairOfMapsGF9F$F$F$%+LeftDivideGf*F$F$FdtF$C$F.-%2
homalg/LeftDivideGF9F$F$F$%4CocycleOfExtension1Gf*F$F$6%%ioCopyright~(C)~2007~b
y~Mohamed~Barakat~and~Barbara~Bremer.~All~rights~reserved.GF+F,F$C$F.-%;homalg/
CocycleOfExtension1GF9F$F$F$%,CompleteSeqGf*F$F$F)F$C$F.-%3homalg/CompleteSeqGF
9F$F$F$%:IsEquivalenceOfExtensionsGf*F$F$FVF$C$F.-%Ahomalg/IsEquivalenceOfExten
sionsGF9F$F$F$%3ReduceRingElementsGf*F$F$FhjlF$C$F.-%:homalg/ReduceRingElements
GF9F$F$F$%1CofunctorOnSeqsFGf*F$F$FDF$C$F.-%8homalg/CofunctorOnSeqsFGF9F$F$F$%.
RHomHomOnSeqsGf*F$F$FJF$C$F.-%5homalg/RHomHomOnSeqsGF9F$F$F$%(DiagMatGf*F$F$F\a
nF$C$F.-%/homalg/DiagMatGF9F$F$F$%+table2listGf*F$F$F=F$C$F.-%2homalg/table2lis
tGF9F$F$F$%1CheckCompositionGf*F$F$F=F$C$F.-%8homalg/CheckCompositionGF9F$F$F$%
.SyzygiesBasisGf*F$F$FaflF$C$F.-%5homalg/SyzygiesBasisGF9F$F$F$%1Intersection.n
ewGf*F$F$FVF$C$F.-%8homalg/Intersection.newGF9F$F$F$%,IsReflexiveGf*F$F$FVF$C$F
.-%3homalg/IsReflexiveGF9F$F$F$%1CheckHomsOfCoseqGf*F$F$F=F$C$F.-%8homalg/Check
HomsOfCoseqGF9F$F$F$%5ResolveShortExactSeqGf*F$F$FdtF$C$F.-%<homalg/ResolveShor
tExactSeqGF9F$F$F$%-RightinverseGf*F$F$6#%enCopyright~(C)~2004~by~Daniel~Robert
z.~All~rights~reserved.GF$C$F.-%4homalg/RightinverseGF9F$F$F$%-CompleteImSqGf*F
$F$F=F$C$F.-%4homalg/CompleteImSqGF9F$F$F$%5ReducedBasisOfModuleGf*F$F$F]\mF$C$
F.-%<homalg/ReducedBasisOfModuleGF9F$F$F$%9NatTrTwoTargetsToPushoutGf*F$F$FVF$C
$F.-%@homalg/NatTrTwoTargetsToPushoutGF9F$F$F$%(TorqMapGf*F$F$F)F$C$F.-%/homalg
/TorqMapGF9F$F$F$%7TorsionSubmoduleOnSeqsGf*F$F$FJF$C$F.-%>homalg/TorsionSubmod
uleOnSeqsGF9F$F$F$%+SyzygiesOpGf*F$F$FjjnF$C$F.-%2homalg/SyzygiesOpGF9F$F$F$%,R
ightDivideGf*F$F$FfdlF$C$F.-%3homalg/RightDivideGF9F$F$F$%.DefectOfHomsFGf*F$F$
F[bmF$C$F.-%5homalg/DefectOfHomsFGF9F$F$F$%+GetOptionsGf*F$F$F)F$C$F.-%2homalg/
GetOptionsGF9F$F$F$%*ImageFEmbGf*F$F$FVF$C$F.-%1homalg/ImageFEmbGF9F$F$F$%/Norm
alizeInputGf*F$F$FDF$C$F.-%6homalg/NormalizeInputGF9F$F$F$%)HomHom_RGf*F$F$6%F_
yF+F,F$C$F.-%0homalg/HomHom_RGF9F$F$F$%(KerOfSqGf*F$F$F_[nF$C$F.-%/homalg/KerOf
SqGF9F$F$F$%3NormalizeExtensionGf*F$F$F]^mF$C$F.-%:homalg/NormalizeExtensionGF9
F$F$F$%0Functor_HomHom3Gf*F$F$FJF$C$F.-%7homalg/Functor_HomHom3GF9F$F$F$%'ImOfS
qGf*F$F$F_[nF$C$F.-%.homalg/ImOfSqGF9F$F$F$%,HomHomMap_RGf*F$F$FcsF$C$F.-%3homa
lg/HomHomMap_RGF9F$F$F$%;NatTrIdToTorsionFreeFactorGf*F$F$FVF$C$F.-%Bhomalg/Nat
TrIdToTorsionFreeFactorGF9F$F$F$%)Torq2MapGf*F$F$FJF$C$F.-%0homalg/Torq2MapGF9F
$F$F$%8DegreeOfTorsionFreenessGf*F$F$F]sF$C$F.-%?homalg/DegreeOfTorsionFreeness
GF9F$F$F$%.NormalizeRingGf*F$F$6%FdaqF+F,F$C$F.-%5homalg/NormalizeRingGF9F$F$F$
%-IntersectionGf*F$F$FdgmF$C$F.-%4homalg/IntersectionGF9F$F$F$%-SumRelationsGf*
F$F$F_[nF$C$F.-%4homalg/SumRelationsGF9F$F$F$%0Functor_RHomHomGf*F$F$FJF$C$F.-%
7homalg/Functor_RHomHomGF9F$F$F$%2ShortenResolutionGf*F$F$FVF$C$F.-%9homalg/Sho
rtenResolutionGF9F$F$F$%*HomOnSeqsGf*F$F$FDF$C$F.-%1homalg/HomOnSeqsGF9F$F$F$%*
IsTorsionGf*F$F$FVF$C$F.-%1homalg/IsTorsionGF9F$F$F$%1ImageOfSubmoduleGf*F$F$F]
sF$C$F.-%8homalg/ImageOfSubmoduleGF9F$F$F$%9SyzygiesGeneratorsOfRowsGf*F$F$Fd\l
F$C$F.-%@homalg/SyzygiesGeneratorsOfRowsGF9F$F$F$%*CheckImSqGf*F$F$F_[nF$C$F.-%
1homalg/CheckImSqGF9F$F$F$%0Functor_HomHom2Gf*F$F$FJF$C$F.-%7homalg/Functor_Hom
Hom2GF9F$F$F$%(KaehlerGf*F$F$FaglF$C$F.-%/homalg/KaehlerGF9F$F$F$%)CheckHomGf*F
$F$F_[nF$C$F.-%0homalg/CheckHomGF9F$F$F$%-RightDivideFGf*F$F$FfdlF$C$F.-%4homal
g/RightDivideFGF9F$F$F$%1HomologyModulesFGf*F$F$F=F$C$F.-%8homalg/HomologyModul
esFGF9F$F$F$%/LHomHom2OnSeqsGf*F$F$FJF$C$F.-%6homalg/LHomHom2OnSeqsGF9F$F$F$%'M
ulMatGf*F$F$FdtF$C$F.-%.homalg/MulMatGF9F$F$F$%.compute_kappaGf*F$F$FdimF$C$F.-
%5homalg/compute_kappaGF9F$F$F$%7RightDerivedCofunctorFGf*F$F$FfblF$C$F.-%>homa
lg/RightDerivedCofunctorFGF9F$F$F$%,IsFreeBasisGf*F$F$6%FepF+F,F$C$F.-%3homalg/
IsFreeBasisGF9F$F$F$%EA2ExtensionModuleFromA2Extension.oldGf*F$F$F]^mF$C$F.-%Lh
omalg/A2ExtensionModuleFromA2Extension.oldGF9F$F$F$%*HomHomMapGf*F$F$FJF$C$F.-%
1homalg/HomHomMapGF9F$F$F$%:NatTrTorsionSubmoduleToIdGf*F$F$FarF$C$F.-%Ahomalg/
NatTrTorsionSubmoduleToIdGF9F$F$F$%.Functor_Torq2Gf*F$F$FJF$C$F.-%5homalg/Funct
or_Torq2GF9F$F$F$%=DecideZeroColumnsEffectivelyGf*F$F$Fd\lF$C$F.-%Dhomalg/Decid
eZeroColumnsEffectivelyGF9F$F$F$%(RHomHomGf*F$F$FJF$C$F.-%/homalg/RHomHomGF9F$F
$F$%.FunctorOnSeqFGf*F$F$F)F$C$F.-%5homalg/FunctorOnSeqFGF9F$F$F$%.CompleteImSq
FGf*F$F$F=F$C$F.-%5homalg/CompleteImSqFGF9F$F$F$%&Hom_RGf*F$F$F]pF$C$F.-%-homal
g/Hom_RGF9F$F$F$%0Template_homalgGf*F$F$6#%ioCopyright~(C)~2007~by~Mohamed~Bara
kat~and~Daniel~Robertz.~All~rights~reserved.GF$C$F.-%7homalg/Template_homalgGF9
F$F$F$%*LECS2lecsGf*F$F$F=F$C$F.-%1homalg/LECS2lecsGF9F$F$F$%-IsZeroModuleGf*F$
F$FaflF$C$F.-%4homalg/IsZeroModuleGF9F$F$F$%=StablyFreePresentationIsoFFRGf*F$F
$F]sF$C$F.-%Dhomalg/StablyFreePresentationIsoFFRGF9F$F$F$%3FactorizeExtensionGf
*F$F$F]^mF$C$F.-%:homalg/FactorizeExtensionGF9F$F$F$%,IsBijectiveGf*F$F$F]sF$C$
F.-%3homalg/IsBijectiveGF9F$F$F$%,Extq2OnSeqsGf*F$F$FJF$C$F.-%3homalg/Extq2OnSe
qsGF9F$F$F$%6GetCleanRowsPositionsGf*F$F$FeuF$C$F.-%=homalg/GetCleanRowsPositio
nsGF9F$F$F$%3SyzygiesGeneratorsGf*F$F$FDF$C$F.-%:homalg/SyzygiesGeneratorsGF9F$
F$F$%)ImageEmbGf*F$F$FVF$C$F.-%0homalg/ImageEmbGF9F$F$F$%3ResolutionOfModuleGf*
F$F$FJF$C$F.-%:homalg/ResolutionOfModuleGF9F$F$F$%7LeftSatelliteOfFunctorGf*F$F
$FfblF$C$F.-%>homalg/LeftSatelliteOfFunctorGF9F$F$F$%5LongExactHomologySeqGf*F$
F$FfdlF$C$F.-%<homalg/LongExactHomologySeqGF9F$F$F$%4TorsionSubmoduleEmbGf*F$F$
F\anF$C$F.-%;homalg/TorsionSubmoduleEmbGF9F$F$F$F$,
Q*homalgA.mF$
M7R0
I0homalg/compiled"-f@J07?6",
Q2homalg/compiled.mF$
M7R0
I6homalg/ConnectingHomFf*6*'%%_HqnG%4homalg_presentationG%#jnG%#bnG%$bsnG%%in_1
G'%'_Hsn_1GF''%$varG%%listG%,RingPackageG6)%#RPG%$narG%$HqnG%&Hsn_1G%&Cn_BnG%%Z
n_1G%&Zsn_1G6#%fnCopyright~(C)~2004~by~Mohamed~Barakat.~All~rights~reserved.G6"
C*>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F?%*procedureG-%'RETURNG6#-F
?6#&FE6#;""",&FGFVFHFG>8&-%;homalg/EmbedInFactorModuleG6$9$F?>8'-Fen6$9)F?>8(-%
0homalg/PreimageG6&FY9%9*F?>8)-%9homalg/ImageOfSubmoduleFG6&F^o9&FcoF?>8*-F`o6&
Feo9(FcoF?-%:homalg/ReduceHomomorphismG6&-F`o6'F[pFin9'FcoF?F\oFcoF?F<F<F<F<,
Q8homalg/ConnectingHomF.mF<
M7R0
I4homalg/DefectOfHomsf*6(%%betaG%"MG%&alphaG%"NG%$varG%,RingPackageG6+%#RPG%$na
rG%%optsG%$posG%)optionalG%(im_betaG%%MgenG%3defect_target_hullG%*ker_alphaG6%%
^pCopyright~(C)~2003-2008~by~Mohamed~Barakat~and~Daniel~Robertz.~All~rights~res
erved.G%'systemG%)rememberG6"C0>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6
$F<%*procedureG-%'RETURNG6#-F<6#&FB6#;""",&FDFSFEFD@$-FH6$&FB6#FS%'stringGC$@$/
FXQ1RETURN_co_contraF9-FL6#Q*covariantF9-FL6#%%NULLG@%2,&""$FSFEFS9#>8&-%%copyG
6#-%2homalg/GetOptionsG6$&FB6#;""%FTF<>&Feo6#Q2number_of_optionsF9""!@$2,&FcoFS
FapFD,&""&FSFEFS-FL6#-%5homalg/DefectOfHomsFG6#FB>Feo-Fgo6#-Fjo6$&FB6#;""'FTF<>
8'F^o@$-%)assignedG6#&Feo6#QIpos_of_var_to_assign_F_target_hullmoduleF9>Fiq6$Fi
q/F^rF^o>8(-%#opG6#-%'subsopG6$Fiq7#Fdq>8)-%4homalg/SumRelationsG6&9$9%9(F<@%-F
H6$Fcs%4homalg_presentationG>8*-%@homalg/GeneratorsOfPresentationG6$FcsF<>FjsF^
o@$-F\r6#&Feo6#QBvar_to_assign_F_target_hullmoduleF9C$>8+-%6homalg/NormalizeInp
utG6$F^sF<-%'assignG6$FbtFgt>8,-%1homalg/KernelEmbG6'Fcs9&9'FdsF<-%7homalg/Subf
actorModuleG6(F_uF^sFds/Q4original_generatorsF9FjsFerF<F9F9F9F9,
Q6homalg/DefectOfHoms.mF9
M7R0
I?homalg/DiagonalElementsAndRankf*6%%#_MG%%_varG%,RingPackageG6-%#RPG%$narG%"MG
%$varG%"vG%"nG%"zG%"mG%#edG%%rankG%"dG6#%fnCopyright~(C)~2004~by~Mohamed~Baraka
t.~All~rights~reserved.G6"C2>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F9
%*procedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA>8&-%6homalg/NormalizeInputG6$9
$F9>8'-%5homalg/NormalizeRingG6$9%F9>8(-%8homalg/ResidueClassRingG6$FYF9>8)-&F9
6#%3NumberOfGeneratorsG6#FS>8*-&F96#%%ZeroG6#F^o@$0Fin-Fgo6#FP>FS-%:homalg/Redu
ceRingElementsG6%FSFYF9>FS-%3homalg/BetterBasisGFbp@$/FS7"-FI6$FeoF^o>8+-%$minG
6$F^o-&F96#%-NumberOfRowsGFco-%$mapG6$f*6#%"iGF66$%)operatorG%&arrowGF6&&T#6#FW
F`rF6F66$F+FS7#-%"$G6#;FPF\q>8,7$-%#opG6#%"%G-F[s6#-Fgo6#,&F^oFPF\qFA>8-""!?&8.
Fhr%%trueG@$/FgsFes>Fds,&FdsFPFPFP6$FhrFdsF6F6F6F6,
QAhomalg/DiagonalElementsAndRank.mF6
M7R0
I6homalg/FreeHullModulef*6%%#_MG'%$varG%%listG%,RingPackageG6&%#RPG%$narG%"MG%"
nG6#%fnCopyright~(C)~2004~by~Mohamed~Barakat.~All~rights~reserved.G6"C'>8$-%1ho
malg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F4%*procedureG-%'RETURNG6#-F46#&F:6#;"
"",&F<FKF=F<>8&-%6homalg/NormalizeInputG6$9$F4>8'-&F46#%3NumberOfGeneratorsG6#F
N@%/-%4homalg/IsZeroModuleG6%FN9%F4%%trueG-%2homalg/ZeroModuleG6%Fin-&F46#%%Zer
oG6#FTF4-%2homalg/FreeModuleG6%FTFinF4F1F1F1F1,
Q8homalg/FreeHullModule.mF1
M7R0
I2homalg/FreeModulef*6%'%"nG%*nonnegintG'%$varG%%listG%,RingPackageG6$%#RPG%$na
rG6%%[oCopyright~(C)~2004-2005~by~Mohamed~Barakat.~All~rights~reserved.G%'syste
mG%)rememberG6"C%>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F6%*procedure
G-%'RETURNG6#-F66#&F<6#;""",&F>FMF?F>@%/9$""!-%2homalg/ZeroModuleG6$9%F6-%0homa
lg/CokernelG6%7#-&F66#%%ZeroG6#FQFVF6F3F3F3F3,
Q4homalg/FreeModule.mF3
M7R0
I5homalg/Functor_Hom_Rf*6"F$6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All~rig
hts~reserved.G%'systemG%)rememberGF$7$%-homalg/Hom_RG%0homalg/HomMap_RGF$F$F$F$,
Q7homalg/Functor_Hom_R.mF$
M7R0
I=homalg/Functor_TensorProductf*6#%"BG6"6%%fnCopyright~(C)~2006~by~Mohamed~Bara
kat.~All~rights~reserved.G%'systemG%)rememberGF&7&f*6#%"MGF&F&F&-%5homalg/Tenso
rProductG6%9$T$&9"6#;""#!""F&F&6$F%F2f*6%F.%$phiG%"NGF&F&F&-%8homalg/TensorProd
uctMapG6'F29%9&F3&F56#;""%F9F&F&F:F2f*6#%"PGF&F&F&f*F<F&F&F&-%9homalg/TensorPro
duct2MapG6'F3F2FBFCFDF&F&6$FJF2F&F&F&F&F&F&F&,
Q?homalg/Functor_TensorProduct.mF&
M7R0
IChomalg/GetIndependentUnitPositionsf*6&%#_MG%)pos_listG'%$varG%%listG%,RingPac
kageG60%#RPG%$narG%"MG%"mG%"nG%#nnG%)dep_listG%%restG%"rG%$posG%%zeroG%"iG%"jG%
"kG6#%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All~rights~reserved.G6"C/>8$-%1h
omalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F?%*procedureG-%'RETURNG6#-F?6#&FE6#;
""",&FGFVFHFG>8&-%6homalg/NormalizeInputG6$9$F?>8'-&F?6#%-NumberOfRowsG6#FY>8(-
&F?6#%3NumberOfGeneratorsGF^o>8)7#-%"$G6#;FVF`o>8*7">8+-%'subsopG6$-%#opG6#-%$m
apG6$f*6#%"aGF<6$%)operatorG%&arrowGF</Fgn%%NULLGF<F<F<F]pFfo>8,-%%nopsG6#F`p>8
-Faq>8.-&F?6#%%ZeroGF<?&8/7#-Fio6#;FVFin%%trueG?&807#-Fio6#;FVFcqFerC$>81&F`p6#
,$FgrFG@$34-%'memberG6$7$F`rF^s9%0-%6homalg/InverseElementG6%&FY6$F`rF^s9&F?%%F
AILGC'>Fhq6$FhqFhs>F]p7$-Fep6#F]p-Fep6#-Fhp6$f*F[qF<F]qF<@$0&T#6$T%FgnT'FgnF<F<
6(F.FYF7F`rF6FjqFfo>F`p-Fbp6$-Fep6#-Fhp6$f*F[qF<F]qF<F`qF<F<F<F]pFfo>FcqFdq[7#F
hqF<F<F<F<,
QEhomalg/GetIndependentUnitPositions.mF<
M7R0
I.homalg/ImageFf*6%%#_AG'%$varG%%listG%,RingPackageG6*%#RPG%$narG%%optsG%8USE_I
MAGE_OF_GENERATORSG%)optionalG%"AG%#AAG%"mG6%%fnCopyright~(C)~2007~by~Mohamed~B
arakat.~All~rights~reserved.G%'systemG%)rememberG6"C+>8$-%1homalg/tablenameG6%9
!&9"6#!""8%@$-%%typeG6$F:%*procedureG-%'RETURNG6#-F:6#&F@6#;""",&FBFQFCFB@$2,&"
"#FQFCFQ9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&F@6#;""$FRF:@%-%)assignedG6#&FY6
#Q?pos_of_USE_IMAGE_OF_GENERATORSF7>8'%%trueG>Ffo%&falseG>8(Fjn>8)-%6homalg/Nor
malizeInputG6$9$F:@$4FfoC$>8*-%<homalg/ReducedBasisOfModuleG6&Fap9%Q.COMPUTE_BA
SISF7F:@$2-&F:6#%-NumberOfRowsG6#Ffp-F_q6#F]p>F]pFfp>8+-&F:6#%3NumberOfGenerato
rsG6$F]pF:-%7homalg/SubfactorModuleG6'F]p7#-&F:6#%%ZeroG6#FgqFjpF[pF:F7F7F7F7,
Q0homalg/ImageF.mF7
M7R0
I7homalg/IsShortExactSeqf*6)%#M_G%&alphaG%"MG%%betaG%#_MG%$varG%,RingPackageG61
%#RPG%$narG%&hom_aG%&hom_bG%%homsG%$cmpG%%cmpsG%$kerG%$defG%&cokerG%%defsG%+che
ck_homsG%+check_cmpsG%+check_defsG%$resG6#%fnCopyright~(C)~2004~by~Mohamed~Bara
kat.~All~rights~reserved.G6"C2>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$
FA%*procedureG-%'RETURNG6#-FA6#&FG6#;""",&FIFXFJFI@$29#,&""'FXFJFX-FQ6#-%8homal
g/IsShortExactSeqFG6#FG>8&-%0homalg/CheckHomG6'9$9%9&9)FA>8'-Fao6'Feo9'9(FfoFA>
8(-%$mapG6'%1homalg/IsZeroMapG7$F_oFhoFfoQ(VERBOSEF>FA>8)-%8homalg/CheckComposi
tionG6'FdoF[pF\pFfoFA>8*7#-Fbp6&FfpFfoFdpFA>8+-%.homalg/KernelGFbo>8,-%4homalg/
DefectOfHomsG6(FdoFeoF[pF\pFfoFA>8--%0homalg/CokernelG6&F[pF\pFfoFA>8.-F`p6'%4h
omalg/IsZeroModuleG7%F`qFdqFiqFfoFdpFA>8/-%&evalbG6#/-%(convertG6$F^p%$setG<#%%
trueG>80-Ffr6#/-Fjr6$F[qF\sF]s>81-Ffr6#/-Fjr6$F^rF\sF]s@'33FdrF`sFgsF^s32FgnFfn
-FM6$&FG6#FY%'stringGC'>82%%NULLG@%Fdr>Fit6$Fit/Q%homsF>F^s>Fit6$Fit/F_uF^p@%F`
s>Fit6$Fit/Q%cmpsF>F^s>Fit6$Fit/FguF[q@%Fgs>Fit6$Fit/Q%defsF>F^s>Fit6$Fit/F_vF^
rFit%&falseGF>F>F>F>,
Q9homalg/IsShortExactSeq.mF>
M7R0
I5homalg/IsTorsionFreef*6%%"MG'%$varG%%listG%,RingPackageG6'%#RPG%$narG%%optsG%
#MtG%"bG6%%fnCopyright~(C)~2007~by~Mohamed~Barakat.~All~rights~reserved.G%'syst
emG%)rememberG6"C(>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F7%*procedur
eG-%'RETURNG6#-F76#&F=6#;""",&F?FNF@F?@$2,&""#FNF@FN9#>8&-%%copyG6#-%2homalg/Ge
tOptionsG6$&F=6#;""$FOF7>8'-%8homalg/TorsionSubmoduleG6%9$9%F7>8(-%4homalg/IsZe
roModuleG6%F\oFaoF7@%-%)assignedG6#&FV6#Q/pos_of_VERBOSEF4@%Fco%%trueGF\oFcoF4F
4F4F4,
Q7homalg/IsTorsionFree.mF4
M7R0
I2homalg/IsZeroMapFf*6%%#_AG'%$varG%%listG%,RingPackageG6&%#RPG%$narG%%optsG%"A
G6%%fnCopyright~(C)~2004~by~Mohamed~Barakat.~All~rights~reserved.G%'systemG%)re
memberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F6%*procedureG-%'RE
TURNG6#-F66#&F<6#;""",&F>FMF?F>@$2,&""#FMF?FM9#>8&-%%copyG6#-%2homalg/GetOption
sG6$&F<6#;""$FNF6>8'-%6homalg/NormalizeInputG6$9$F6@'/-%3homalg/BetterBasisG6&F
[o9%Q3ALLOW_EMPTY_OUTPUTF3F67"%%trueG-%)assignedG6#&FU6#Q/pos_of_VERBOSEF3F[o%&
falseGF3F3F3F3,
Q4homalg/IsZeroMapF.mF3
M7R0
I/homalg/Kaehlerf*6$%%_varG%,RingPackageG6)%#RPG%$narG%%optsG%$varG%"RG%"vG%"JG
6#%[oCopyright~(C)~2003-2007~by~Mohamed~Barakat.~All~rights~reserved.G6"C)>8$-%
1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F4%*procedureG-%'RETURNG6#-F46#&F:6
#;""",&F<FKF=F<@%2,&FKFKF=FK9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&F:6#;""#FLF4
>&FR6#Q2number_of_optionsF1""!@%2,&FPFKFhnF<,&FfnFKF=FK>8'9$C%>8(-%6homalg/Norm
alizeInputG6$&F:6#FKF4@$0-&F46#%3NumberOfGeneratorsG6#FeoFK-%&ERRORG6#%GExpecti
ng~an~ideal~as~a~first~argumentG>Fao&F:6#Ffn>8)-%5homalg/NormalizeRingG6$FaoF4@
%-%)assignedGFapC%>Feo-%4homalg/RingNotationG6$FeoF4>8*-%$mapG6$f*6#%"aGF16$%)o
peratorG%&arrowGF1-Fiq6$f*6#%"bGF1F^rF1-%%diffG6$T$FboF1F16$F]rFbo&T#FjoF1F16$F
-FjpFeo>Fgq-%4homalg/SumRelationsG6&Fgq-%/homalg/DiagMatG6$-%"$G6$Feo-%%nopsG6#
&FjpFjoF4FaoF4@%0&FjpFhp7"C$>Feo-Fdq6$F^tF4>Fgq-Fiq6$f*F\rF1F^rF1-Fiq6$f*FdrF1F
^rF1FfrF1F1FjrF[sF1F1F]sFeo>Fgq7#-&F46#%%ZeroG6#Fhs-%1homalg/CokernelFG6%FgqFao
F4F1F1F1F1,
Q1homalg/Kaehler.mF1
M7R0
I1homalg/LEHS2lehsf*6$%%LEHSG%,RingPackageG6)%#RPG%$narG%)AiBjCconG%"nG%"iG%"jG
%%lehsG6#%fnCopyright~(C)~2004~by~Mohamed~Barakat.~All~rights~reserved.G6"C(>8$
-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F4%*procedureG-%'RETURNG6#-F46#&F
:6#;""",&F<FKF=F<>8&-%5homalg/LEHS2AiBjCconG6#F:>8'-%%nopsG6#&FN6#FK>8*-%$seqG6
$-Ffn6$-%%copyG6#&FN6$,$8(F<,&FSF<8)FK/F`o;FK""'/Fbo;FK,&FSFKF<FK7$-Ffn6$-F[o6#
&FN6$F_oFK/F`o;""#FeoFZF1F1F1F1,
Q3homalg/LEHS2lehs.mF1
M7R0
I3homalg/LHomHom2Mapf*6*%"qG%"AG%"MG%$phiG%"NG%"BG'%$varG%%listG%,RingPackageG6
&%#RPG%$narG%)optionalG%*cofunctorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~
All~rights~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!"
"8%@$-%%typeG6$F;%*procedureG-%'RETURNG6#-F;6#&FA6#;""",&FCFRFDFC>8&&FA6#;"")FS
>8'f*6#F'F8F8F8-%/homalg/LHomHomG6'T$T&9$T(&FA6#;""#FCF8F86(F%F]oF&9%F*9)-%2hom
alg/FunctorMapG6)Fen7#9&9'7#9(9*FUF;F8F8F8F8,
Q5homalg/LHomHom2Map.mF8
M7R0
I5homalg/LHomHomOnSeqsf*6(%"qG%"AG%"BG'%&alphaG<$%&tableG%%listG%%_varG%,RingPa
ckageG6%%#RPG%$narG%(functorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All~ri
ghts~reserved.G%'systemG%)rememberG6"C&>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-
%%typeG6$F:%*procedureG-%'RETURNG6#-F:6#&F@6#;""",&FBFQFCFB>8&-%7homalg/Functor
_LHomHomG6%9$9%9&-%5homalg/FunctorOnSeqsG6$FT&F@6#;""%FBF7F7F7F7,
Q7homalg/LHomHomOnSeqs.mF7
M7R0
I<homalg/LongExactHomologySeqf*6,'%&alphaG<$%&tableG%%listG'%#AAGF''%%IotaGF''%
%betaGF''%#BBGF''%#NuGF''%&gammaGF''%#CCGF''%$varGF)%,RingPackageG6=%#RPG%$narG
%#aiG%$_aiG%"mG%#AiG%#iiG%$_iiG%#biG%$_biG%#BiG%#niG%$_niG%"iG%#giG%$_giG%#CiG%
%LEHSG%/embedding_infoG%.F_target_hullG%#HHG%$haiG%$hbiG%$hgiG%$hiiG%$hniG%#diG
6#%[oCopyright~(C)~2004-2007~by~Mohamed~Barakat.~All~rights~reserved.G6"CE>8$-%
1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$Ffn%*procedureG-%'RETURNG6#-Ffn6#&F
\o6#;""",&F^oF]pF_oF^o@$29#,&"")F]pF_oF]p-Ffo6#-%=homalg/LongExactHomologySeqFG
6#F\o@%-Fbo6$9$F)C$>8&7#-%"$G6#;F]p-%%nopsG6#F\q>8'7#-Fbq6#;""!&F_q6#!"#C$>F_q-
%%sortG6#-%$mapG6$%$lhsG-%#opG6#-%%evalGFgq>FiqF_q>8(-Ffq6#F_q@%-Fbo6$9%F)>8)7#
-Fbq6#;F]p-Ffq6#Fhs>Fjs-Fer6#-Fhr6$Fjr-F\s6#-F_sF`t@$0,&FbsF]pF]pF]p-Ffq6#Fjs-%
&ERRORG6#%`oThe~second~argument~must~have~one~entry~more~than~the~first~argumen
t!G@%-Fbo6$9&F)C$>8*7#-Fbq6#;F]p-Ffq6#Feu>8+7#-Fbq6#;F^o&Fhu6#!"$C$>Fhu-Fer6#-F
hr6$Fjr-F\s6#-F_sF^v>F`vFhu@$0F[u-Ffq6#Fhu-F_u6#%_oThe~third~argument~must~have
~one~entry~more~than~the~first~argument!G@%-Fbo6$9'F)C$>8,7#-Fbq6#;F]p-Ffq6#F\x
>8-7#-Fbq6#;F^r&F_xF`rC$>F_x-Fer6#-Fhr6$Fjr-F\s6#-F_sFex>FgxF_x@$0Fbs-Ffq6#F_x-
F_u6#%[oThe~first~and~fourth~argument~have~different~numbers~of~entries!G@%-Fbo
6$9(F)>8.7#-Fbq6#;F]p-Ffq6#Faz>Fcz-Fer6#-Fhr6$Fjr-F\s6#-F_sFiz@$0F[u-Ffq6#Fcz-F
_u6#%_oThe~fifth~argument~must~have~one~entry~more~than~the~first~argument!G@%-
Fbo6$9)F)C$>8/7#-Fbq6#;F]p-Ffq6#F\\l>807#-Fbq6#;F^o&F_\lFfvC$>F_\l-Fer6#-Fhr6$F
jr-F\s6#-F_sFe\l>Fg\lF_\l@$0Fdw-Ffq6#F_\l-F_u6#%jnThe~third~and~sixth~argument~
have~different~numbers~of~entries!G@%-Fbo6$9*F)C$>827#-Fbq6#;F]p-Ffq6#Fa^l>837#
-Fbq6#;F^r&Fd^lF`rC$>Fd^l-Fer6#-Fhr6$Fjr-F\s6#-F_sFj^l>F\_lFd^l@$0Fbs-Ffq6#Fd^l
-F_u6#%\oThe~first~and~seventh~argument~have~different~numbers~of~entries!G@%-F
bo6$9+F)>847#-Fbq6#;F]p-Ffq6#Ff`l>Fh`l-Fer6#-Fhr6$Fjr-F\s6#-F_sF^al@$0F[u-Ffq6#
Fh`l-F_u6#%_oThe~eigth~argument~must~have~one~entry~more~than~the~first~argumen
t!G>85-F(FY>86F`bl>87F`bl>89&Fiq6#;F]pFar?&817#-Fbq6#;F]p,&FbsF]pF^oF]p%%trueG>
&F_bl6#-&.%"HG6#&Ffbl6#F[cl6#.%"AG-%4homalg/DefectOfHomsG6*&F\q6#,&&F_qF[dlF]pF
]pF]p&Fhs6#&Fjs6#,&F[clF]pF]pF]p&F\q6#Fedl&Fhs6#,&FhdlF]pF^oF]p9,/Q=var_to_assi
gn_embedding_infoFY&Fbbl6#-&88FiclF\dl/QBvar_to_assign_F_target_hullmoduleFY&Fd
blFdelFfn>8:&FgxFhbl?&F[clF\clFacl>&F_bl6#-&Fgcl6#&F\flF[dl6#.%"BG-F`dl6)&F\x6#
,&&F_xF[dlF]pF]pF]p&Faz6#&FczFidl&F\x6#F^gl&Faz6#,&FaglF]pF^oF]pF`el/Fiel&Fdbl6
#-&FgelFdflFfflFfn>8;&F\_lFhbl?&F[clF\clFacl>&F_bl6#-&Fgcl6#&F]hlF[dl6#.%"CG-F`
dl6*&Fa^l6#,&&Fd^lF[dlF]pF]pF]p&Ff`l6#&Fh`lFidl&Fa^l6#F_il&Ff`l6#,&FbilF]pF^oF]
pF`el/Fbel&Fbbl6#-&FgelFehlFghl/Fiel&FdblFjilFfn>8<&F`v6#;""#Far?&F[clF\clFacl>
&F_bl6#-&Fgcl6#&F`jlF[dl6#.%%iotaG-%7homalg/DefectOfHomsMapG60FbdlFfdlF[elF]el&
Feu6#&FhuFidlF[glF_glFbglFdglF`el/Q)F_sourceFYFccl/Q)F_targetFYF`fl/Q4F_target_
hullmoduleFYFhglFfn>8=&Fg\lFbjl?&F[clF\clFacl>&F_bl6#-&Fgcl6#&F]\mF[dl6#.%#nuG-
Fa[m60F[glF_glFbglFdgl&F\\l6#&F_\lFidlF\ilF`ilFcilFeilF`el/Fg[mF`fl/Fi[mFahl/F[
\mF^jlFfn>8>&F]hl6#;FdjlF^o?&F[cl7#-Fbq6#;F]p,&FbsF]pFarF]pFacl>&F_bl6#&%&delta
G6#&Fc]mF[dl-%5homalg/ConnectingHomG6.&F_bl6#-&Fgcl6#&F]hlFidlFghl&F\\l6#&F_\l6
#,&F[clF]pFdjlF]p&F\x6#&F_xFidl&F\q6#&F_qFidl&Feu6#,&&FhuF`_mF]pF^oF]p&F_bl6#-&
Fgcl6#,&&FfblFidlF]pF^oF]pF\dlF`el/Q3Hqn_embedding_infoFY&Fbbl6#-&FgelF[_mFghl/
Q5Hsn_1_embedding_infoFY&Fbbl6#-&FgelF``mF\dl/Q(Cqn_BqnFYF^jl/Q%Zn_1FY&Faz6#,&&
FczF`_mF]pF^oF]pFfn-%%copyG6#F_blFYFYFYFY,
Q>homalg/LongExactHomologySeq.mFY
M7R0
I.homalg/MulMatf*6&%"aG%#_AG'%$varG%%listG%,RingPackageG6&%#RPG%$narG%"AG%"vG6#
%[oCopyright~(C)~2004-2005~by~Mohamed~Barakat.~All~rights~reserved.G6"C(>8$-%1h
omalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F5%*procedureG-%'RETURNG6#-F56#&F;6#;
""",&F=FLF>F=>8&-%6homalg/NormalizeInputG6$9%F5@$/9$-&F56#%%ZeroGF2-FE6#-&F56#%
'matrixG6#7#-%"$G6$-FX6#-&F56#%3NumberOfGeneratorsG6#FO-&F56#%-NumberOfRowsGFfo
>8'-%8homalg/ResidueClassRingG6$9&F5@%/F\p-FX6#FLC$-&F56#%)simplifyG6$-%&evalmG
6#*&FVFLFOFLF`p-Fhn6#%"%GC'@$/-%:homalg/ReduceRingElementsG6%7#7#FVF`pF57#FcpFe
nFfpF_q-Ffq6%FaqF`pF5F_qF2F2F2F2,
Q0homalg/MulMat.mF2
M7R0
I9homalg/NonZeroGeneratorsf*6%%#_MG'%$varG%%listG%,RingPackageG6(%#RPG%$narG%"M
G%"nG%$stdG%"zG6#%[oCopyright~(C)~2004-2005~by~Mohamed~Barakat.~All~rights~rese
rved.G6"C+>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F6%*procedureG-%'RET
URNG6#-F66#&F<6#;""",&F>FMF?F>@$/8&7"-FF6#FR>FQ-%6homalg/NormalizeInputG6$9$F6>
8'-&F66#%3NumberOfGeneratorsG6#FQ>8(-%7homalg/StdBasisVectorsG6$FenF6>8)-&F66#%
%ZeroG6#Fen>F\o-%.homalg/ReduceG6&F\oFQ9%F6-%$mapG6$f*6#%"aGF36$%)operatorG%&ar
rowGF3@$0&T#6#FYT%FYF3F36&F/F\oF0Fao7#-%"$G6#;FMFenF3F3F3F3,
Q;homalg/NonZeroGenerators.mF3
M7R0
I:homalg/PushoutPairOfMapsFf*6&%(_alpha1G%$psiG%$varG%,RingPackageG6+%#RPG%$nar
G%%optsG%'alpha1G%"aG%$posG%)optionalG%#poG%$epiG6%%fnCopyright~(C)~2007~by~Moh
amed~Barakat.~All~rights~reserved.G%'systemG%)rememberG6"C/>8$-%1homalg/tablena
meG6%9!&9"6#!""8%@$-%%typeG6$F:%*procedureG-%'RETURNG6#-F:6#&F@6#;""",&FBFQFCFB
@$2,&""$FQFCFQ9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&F@6#;""%FRF:>8'-%6homalg/N
ormalizeInputG6$%'_alphaGF:>8(-&F:6#%-NumberOfRowsG6#F_o>8)%%NULLG@$-%)assigned
G6#&FY6#QGpos_of_var_to_assign_functor_on_objectF7>F\p6$F\p/FbpF]p@$-F`p6#&FY6#
QApos_of_var_to_assign_CokernelEpiF7>F\p6$F\p/F[qF]p>8*-%#opG6#-%'subsopG6$F\p7
#Fjn>8+-%0homalg/PushoutFG6'F_o9%9&/Q:var_to_assign_CokernelEpiF7.8,F:@$-F`p6#&
FY6#Q@var_to_assign_functor_on_objectF7-%'assignG6$FhrF[r>Fdr-Fao6$FdrF:6$-&F:6
#%'matrixG6#-&F:6#%,CertainRowsG6$Fdr7#;FQFeo-Fcs6#-Fhs6$Fdr7#;,&FeoFQFQFQFBF7F
7F7F7,
Q<homalg/PushoutPairOfMapsF.mF7
M7R0
I9homalg/PushoutPairOfMapsf*6(%'alpha1G%#AAG%$psiG%#B_G%$varG%,RingPackageG6+%#
RPG%$narG%%optsG%"AG%"aG%$posG%)optionalG%#poG%$epiG6%%fnCopyright~(C)~2007~by~
Mohamed~Barakat.~All~rights~reserved.G%'systemG%)rememberG6"C1>8$-%1homalg/tabl
enameG6%9!&9"6#!""8%@$-%%typeG6$F<%*procedureG-%'RETURNG6#-F<6#&FB6#;""",&FDFSF
EFD@%2,&""$FSFEFS9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&FB6#;""%FTF<>&Fen6#Q2nu
mber_of_optionsF9""!@$2,&FYFSFaoFD,&""&FSFEFS-FL6#-%:homalg/PushoutPairOfMapsFG
6#FB>8'-%6homalg/NormalizeInputG6$9%F<>8(-&F<6#%3NumberOfGeneratorsG6#F`p>Fen-F
gn6#-Fjn6$&FB6#;""'FTF<>8)%%NULLG@$-%)assignedG6#&Fen6#QGpos_of_var_to_assign_f
unctor_on_objectF9>Ffq6$Ffq/F\rFgq@$-Fjq6#&Fen6#QApos_of_var_to_assign_Cokernel
EpiF9>Ffq6$Ffq/FerFgq>8*-%#opG6#-%'subsopG6$Ffq7#Faq>8+-%/homalg/PushoutG6)9$Fd
p9&9'9(/Q:var_to_assign_CokernelEpiF9.8,F<@$-Fjq6#&Fen6#Q@var_to_assign_functor
_on_objectF9-%'assignG6$FdtFes>F`t-Fbp6$F`tF<6$-&F<6#%'matrixG6#-&F<6#%,Certain
RowsG6$F`t7#;FSFfp-F_u6#-%.homalg/MulMatG6&FD-Fdu6$F`t7#;,&FfpFSFSFSFDF\tF<F9F9
F9F9,
Q;homalg/PushoutPairOfMaps.mF9
M7R0
I7homalg/ResolutionOfSeqf*6*'%"qG%*nonnegintG%#A_G%'alpha1G%"AG%'alpha2G%#_AG%%
_varG%,RingPackageG6+%#RPG%$narG%$varG%)optionalG%"lG%%seqsG%$resG%"iG%"jG6%%[o
Copyright~(C)~2004-2005~by~Mohamed~Barakat.~All~rights~reserved.G%'systemG%)rem
emberG6"C+>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F@%*procedureG-%'RET
URNG6#-F@6#&FF6#;""",&FHFWFIFH@'-FL6$&FF6#FX%%listGC%>8&Ffn>8'%&falseG>8(,(9#FW
!"#FWFIFH3-FL6$Ffn%'stringG-FL6$&FF6#,&FcoFWFIFHFhnC%>F[oFjo>F]o%%trueG>F`o,(Fb
oFW!"$FWFIFH-%&ERRORG6#%-Wrong~input!G@$0-%%modpG6$F`o""#FW-Fep6#%VThe~number~o
f~module-morphism-module-...~must~be~odd!G>8)-%&tableGF=?&8+7#-%"$G6#;FW,&F`o#F
WF]qF]rFWF`pC%>8*-%5homalg/ResolveModuleG6&9$&FF6#,$FfqF]qF[oF@>&Fbq6#,&Ffq""$F
coFW-%%copyG6#&F`r6#FW>&Fbq6#,&FfqF\sFHFW-F^s6#&F`r6#F]q?&Ffq7#-Fiq6#;FW,&F`oF]
r#FHF]qFWF`p>&Fbq6#,$FfqF\s-%4homalg/CompleteSeqFG6'-F^s6#Fir-F^s6#&FF6#,&FfqF]
qFWFW-F^s6#&Fbq6#,&FfqF\sFWFWF[oF@@$F]oC$?&FfqFgqF`pC&>&FcsFG-%2homalg/ZeroModu
leG6$F[oF@>&Fcs6#,&FdrFWFWFWFju>&Fir6#""!-%/homalg/ZeroMapG6&-F^s6#&FcsFcv-F^s6
#FiuF[oF@>&FirF_v-Ffv6&-F^s6#F^v-F^s6#&Fcs6#FdrF[oF@?&FfqF[tF`pC$>&FbtFG-Ffv6&F
[w-F^s6#&&Fbq6#,&FfqF\sF]qFWFGF[oF@>&FbtF_v-Ffv6&Faw-F^s6#&F`xF_vF[oF@-%#opG6#-
%$mapG6$F^s-F^y6$f*6#%"aGF=6$%)operatorG%&arrowGF=&T#FfwF=F=6$F5Fbq7#-Fiq6#;FW,
&F`o#F\sF]qF]rFWF=F=F=F=,
Q9homalg/ResolutionOfSeq.mF=
M7R0
I4homalg/RingNotationf*6$'%"LG%%listG%,RingPackageG6$%#RPG%$narG6#%fnCopyright~
(C)~2004~by~Mohamed~Barakat.~All~rights~reserved.G6"C%>8$-%1homalg/tablenameG6%
9!&9"6#!""8%@$-%%typeG6$F1%*procedureG-%'RETURNG6#-F16#&F76#;""",&F9FHF:F9@%3-F
=6$9$%)listlistG/-&F16#%3NumberOfGeneratorsG6#FNFH-%$mapG6$%#opGFNFNF.F.F.F.,
Q6homalg/RingNotation.mF.
M7R0
IChomalg/SolveSystemWithConstraintsCf*6(%#_AG%#_BG%#_CG%#_EG%$varG%,RingPackage
G66%#RPG%$narG%%optsG%"AG%"BG%"CG%"EG%"MG%"NG%"LG%"aG%"bG%"cG%"dG%#d_G%#ETG%#Ib
G%#IcG%#IdG%"YG6%%enCopyright~(C)~2007~by~Barbara~Bremer.~All~rights~reserved.G
%'systemG%)rememberG6"C6>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$FG%*pr
ocedureG-%'RETURNG6#-FG6#&FM6#;""",&FOFhnFPFO>8'-%6homalg/NormalizeInputG6$9$FG
>8(-F]o6$9%FG>8)-F]o6$9&FG>8*-F]o6$9'FG>8.-&FG6#%3NumberOfGeneratorsG6#F[o>8/-&
FG6#%-NumberOfRowsG6#Fao>80-Fbp6#Ffo>81-Fbp6#F[p>83-%2homalg/InvolutionG6%F[p9(
FG>84-%3homalg/IdentityMapG6%FgpFjqFG>85-F^r6%F^qFjqFG>8+7#7$-%#opG6#-%$mapG6$F
irFao-Fir6#-&FG6#%%ZeroG6#*&FgpFhnF^qFhn>8,-&FG6#%/UnionOfColumnsG6$-%/homalg/Z
eroMapG6&-%2homalg/FreeModuleG6%*&F^qFhnFbqFhnFjqFG-Fat6%*&F`pFhnFgpFhnFjqFGFjq
FG-%.homalg/SubMatG6%-F^t6&F`t-Fat6%FesFjqFGFjqFG-%4homalg/KroneckerMatG6&FfqFa
rFjqFGFjq>8--Fis6$-F_u6&F\rF[oFjqFG-F_u6&F\rFfoFjqFG>87-%3homalg/RightDivideG6(
FerFgsFbuFjqQ)USE_FAILFDFG@$/Fju%%FAILG-FW6#Fav>Fju-F]o6$FjuFG-F\s6$f*6#%"iGFD6
$%)operatorG%&arrowGFD&&T#6#Fhn6#;,&*&,&F_oFhnFOFhnFhnT%FhnFhnFhnFhn*&F_oFhnFhw
FhnFDFD6&F?FjuF8F^q7#-%"$G6#;FhnFbqFDFDFDFD,
QEhomalg/SolveSystemWithConstraintsC.mFD
M7R0
IDhomalg/StablyFreePresentationIsoFFRf*6%%#_PG%$varG%,RingPackageG6(%#RPG%$narG
%"PG%"nG%"pG%$epiG6#%fnCopyright~(C)~2007~by~Mohamed~Barakat.~All~rights~reserv
ed.G6"C)>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F4%*procedureG-%'RETUR
NG6#-F46#&F:6#;""",&F<FKF=F<>8&-%6homalg/NormalizeInputG6$9$F4>8'-&F46#%3Number
OfGeneratorsG6$FNF4>8(-%Ahomalg/StablyFreePresentationFFRG6%FN9%F4@$/Fen%%FAILG
-FD6#F\o-&F46#%'matrixG6#-&F46#%,CertainRowsG6$-%7homalg/StdBasisVectorsG6$FenF
47#-%"$G6#;FKFTF1F1F1F1,
QFhomalg/StablyFreePresentationIsoFFR.mF1
M7R0
I5homalg/SyzygiesBasisf*6&%$_M1G%$_M2G%%_varG%,RingPackageG6*%#RPG%$narG%%optsG
%#M2G%$varG%#M1G%"nG%$genG6%%[oCopyright~(C)~2004-2007~by~Mohamed~Barakat.~All~
rights~reserved.G%'systemG%)rememberG6"C+>8$-%1homalg/tablenameG6%9!&9"6#!""8%@
$-%%typeG6$F9%*procedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA@%2,&""#FPFBFP9#>8
&-%%copyG6#-%2homalg/GetOptionsG6$&F?6#;""$FQF9>&FX6#Q2number_of_optionsF6""!@%
2,&FVFPF^oFA,&F\oFPFBFPC$>8'7">8(&F?6#FUC$>Fho9%>F[p9&>8)-%6homalg/NormalizeInp
utG6$9$F9>8*-&F96#%-NumberOfRowsG6#Fdp>8+-%:homalg/SyzygiesGeneratorsG6&FdpFhoF
[pF9@$/FaqFio>Faq7#-&F96#%%ZeroG6#Fjp-%5homalg/BasisOfModuleG6%FaqF[pF9F6F6F6F6,
Q7homalg/SyzygiesBasis.mF6
M7R0
I1homalg/tablenamef*6$%&pnameG%,RingPackageG6&%#RPG%$narG%"pG%#pnG6#%^pCopyrigh
t~(C)~2004-2006~by~Mohamed~Barakat~and~Daniel~Robertz.~All~rights~reserved.G6"C
8@+33-%%typeG6$9%%'symbolG4-%'memberG6$-%)whattypeG6#-%%evalG6#F67$%&arrayG%'Ma
trixG-F46$-%$catG6$F6.%(/homalgG%&tableGC$>8$FG>8%"""33-F46$F6FLF85-%)assignedG
6#&F66#%.BasisOfModuleG-FY6#&F66#%0TriangularBasisGC$>FOF6>FQFR33-FY6#%/homalg/
defaultG-F46$FdoF7-F46$-FH6$FdoFJFLC$>FOFio>FQ""!3Fbo-F46$FdoFLC$>FOFdo>FQF^p-%
&ERRORG6#%_uSince~homalg/default~is~not~defined,~the~last~argument~must~be~a~ta
ble~containing~the~(minimum)~homalg~conversions~or~an~unassigned~symbol~pointin
g~to~such~a~table!G@$4-FY6#&FO6#%9Maple_with_LinearAlgebraGC$-%*substringG6$-%(
convertG6$-%+kerneloptsG6#%(versionG%'stringG;FR"")@%30%"%GQ)Maple~V,F.0FarQ)Ma
ple~6.F.>F]q%%trueG>F]q%&falseG?&8&7"Ffr@$4-FY6#&FO6#Fjr>F`sFjr?&FjrF[sFfr@$F]s
>F`sf*6#%"aGF.6$%)operatorG%&arrowGF.9$F.F.F.@$4-FY6#&FO6#%'AddRhsG>Fatf*6#'%"R
G%%listG6%%"iG%"eG%#R2GF.F.@%2""#9#C$@$0-%%nopsG6#&9"6#""$-Ffu6#F\t-Ffp6#%coexp
ecting~the~same~number~of~right~hand~sides~as~number~of~entries~in~R.G-%'RETURN
G6#-%$zipG6%f*6$F[uF\uF.FisF./F\tF6F.F.F.F\tFhuC%>Fjr%%NULLG?(FOFRFRF\vFfrC%>FQ
7#-%"$G6$F^pF\v>FQ-%'subsopG6$/FOFRFQ>Fjr6$Fjr/&F\t6#FOFQ-Fbv6#7#FjrF.F.F.@$4-F
Y6#&FO6#%/CertainColumnsG@%F]q>Fexf*6$%"MG'%&plistGFitF.F.F.@13-F46$F\tFit/F6F[
s-Fbv6#F[s3Fay-F46$F6-Fit6#%#..G-%$mapG6$f*FgsF.FisF.&F\t6#-%#opG6#T$F.F.6$F^yF
6F\tFay-F]z6$f*6#%"bGF.FisF.-F]z6$f*FgsF.FisF.@$-F:6$F\tFez&T&F]vF.F.6&F^yFezF[
[lF\t7#-Fbw6#;FRF\vF.F.FfzF\t3-F46$F\t%'matrixGFgy-&%'linalgG6#%*submatrixG6%F\
t;FR-&F_\l6#%'rowdimGF]v-FczFA3Fj[l-F46$F6-Fit6#%(integerG-F^\l6%F\tFc\lF63-F46
$F\tFDFgy-&%.LinearAlgebraG6#%*SubMatrixG6%F\t;FR-&Ff]l6#%-RowDimensionGF]vFh\l
3Fb]lFj\l-Fe]l6%F\tFj]lF6-Ffp6#%ioInput~is~not~a~matrix~and~not~a~list/listlist
,~or~wrong~second~argument~plist!GF.F.F.>Fexf*F[yF.F.F.@-F`yFdyFfy-F]z6$f*FgsF.
FisF.F`zF.F.FfzF\tFay-F]z6$f*FjzF.FisF.-F]z6$f*FgsF.FisF.@$F`[lFb[lF.F.Fd[lFe[l
F.F.FfzF\tFi[lF]\lFi\lF_]lFb^lF.F.F.@$4-FY6#&FO6#%,CertainRowsG@%F]q>Ff_lf*F[yF
.F.F.@1F`yFdyFfy&F\t6#Fh\lFay-F]z6$f*FgsF.FisF.@$F`[lFb[lF.F.6&F^yF6F\yF\tFe[lF
i[l-F^\l6%F\tFh\l;FR-&F_\l6#%'coldimGF]vFi\l-F^\l6%F\tF6Ff`lFa]l-Fe]l6%F\tFh\l;
FR-&Ff]l6#%0ColumnDimensionGF]vF_^l-Fe]l6%F\tF6F_alFb^lF.F.F.>Ff_lf*F[yF.F.F.@-
F`yFdyFfyF]`lFay-F]z6$f*FgsF.FisF.@$F`[lFb[lF.F.Fc`lFe[lFi[lFd`lFi\lF[alFb^lF.F
.F.@$4-FY6#&FO6#%-DivideByUnitG>Fablf*6$FhsF[[lF.F.F.*&F\tFRF6!""F.F.F.@$4-FY6#
&FO6#%(GetSideG>F]clf*6$%%sideGF\yF.F.F.@%5/F\t%$lhsG/F\t%$rhsG-F]z6$F\tF6-Ffp6
#%@side~must~be~either~lhs~or~rhs.GF.F.F.@$4-FY6#&FO6#F\\l>Fcdlf*FgsF.F.F.-FeqF
[\lF.F.F.@$4-FY6#&FO6#%+matrixtypeG>F\elF\\l@$4-FY6#&FO6#%&MinusG>Fdelf*FfblF.F
.F.,&F\tFRF6FhblF.F.F.@$4-FY6#&FO6#%-NumberOfRowsG@%F]q>F^flf*FgsF.F.F.@'Fj[lFd
\lFb]lF[^lF\vF.F.F.>F^flf*FgsF.F.F.@%Fj[lFd\lF\vF.F.F.@$4-FY6#&FO6#%3NumberOfGe
neratorsG@%F]q>F\glf*6#'Fhs<'FDF\\lFit%)listlistG-Fit6#%"=GF.F.F.@+-F46$F\tFegl
-Ffu6#&F\t6#FRFj[lFg`lFb]lF`al-F46$F\tFfgl@%332FRFau-F46$&Fiu6#F`uF[r42F^p-%+se
archtextG6$Q"lF.Fhhl-Ffu6#-FiclF]hl-Ffu6#-FgclF]hlFRF.F.F.>F\glf*6#'Fhs<&F\\lFi
tFeglFfglF.F.F.@)FjglF\hlFj[lFg`lF`hl@%FchlF`ilFcilFRF.F.F.@$4-FY6#&FO6#%$OneG>
FajlFR@$4-FY6#&FO6#%)simplifyG>Fijlf*FgsF.F.F.-F[[mF]vF.F.F.@$4-FY6#&FO6#%,Unio
nOfRowsG>Fc[mf*F.F.F.F.-F]z6$f*FgsF.FisF.@%Fay-FczF]v-Fcz6#-FeqF[hlF.F.F.7#FiuF
.F.F.@$4-FY6#&FO6#%/UnionOfColumnsG>Fe\mf*F.6#%#arGF.F.C$>FO-F]z6$f*FgsF.FisF.@
%FjglF\tF_\mF.F.F.F`\m-F]z6$f*6#F[uF.FisF.-F]z6$f*FgsF.FisF.-Fcz6#&F\tFdzF.F.6$
F[uF\tT#F.F.6$F[]mFO7#-Fbw6#;FR-Ffu6#&FOF_hlF.F.F.@$4-FY6#&FO6#%%ZeroG>Fj^mf*6#
'%"nG%*nonnegintGF.F.F.@%2F^pFau7#-Fbw6$F^pF\tF^pF.F.F.>8'-Fbq6$F\t;F]rFhbl@$3F
_u-F46$FhuF7-%'assignG6$FhuFQ@%3-FY6#&FO6#Fi_m-F46$Fh`m%*procedureGFh`mFOF.F.F.
F.,
Q3homalg/tablename.mF.
M7R0
I:homalg/Ext1Of2OneCocyclesf*6)%#_MG%&etaMLG%#_LG%&etaLNG%#_NG%$varG%,RingPacka
geG6.%#RPG%"MG%"LG%"NG%(Ext1_MNG%/abstractly1_MNG%'Hom_MLG%'Hom_LNG%'gen_MLG%'g
en_LNG%*submoduleG%$genG6#%enCopyright~(C)~2008~by~Barbara~Bremer.~All~rights~r
eserved.G6"C0>8$-%1homalg/tablenameG6%9!&9"6#!""%$narG@$-%%typeG6$F>%*procedure
G-%'RETURNG6#-F>6#&FD6#;""",&FFFUFGFF>8%-%6homalg/NormalizeInputG6$&-%:homalg/R
esolutionOfModuleG6&9$9)/Q)TRUNCATEF;""!F>6#FUF>>8&-FZ6$&-Fhn6&9&F[oF\oF>F_oF>>
8'-FZ6$&-Fhn6&9(F[oF\oF>F_oF>>8(-%+homalg/ExtG6(FUFXFioF[o/QTvar_to_assign_proc
_to_express_generators_abstractlyF;.8)F>>8*-%+homalg/HomG6&FXFaoF[oF>>8+-F\q6&F
aoFioF[oF>>8,-%@homalg/GeneratorsOfPresentationG6$FjpF>>8--Feq6$F_qF>>8.%%NULLG
?&8/Fcq%%trueG>F\r6$F\r-Fhp6#-%?homalg/YonedaProductOfCocyclesG6+FX-%%copyG6#F_
rF^oFao-Fir6#9'FUFioF[oF>?&F_rFhqF`r>F\r6$F\r-Fhp6#-Ffr6+FX-Fir6#9%FUFaoFhrF^oF
ioF[oF>-%0homalg/CokernelG6&7#F\rFapF[oF>F;F;F;F;,
Q<homalg/Ext1Of2OneCocycles.mF;
M7R0
I5homalg/CodimOfModulef*6%%"MG%$varG%,RingPackageG6(%#RPG%$narG%%optsG%&boundG%
"kG%"EG6#%fnCopyright~(C)~2007~by~Mohamed~Barakat.~All~rights~reserved.G6"C)>8$
-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F4%*procedureG-%'RETURNG6#-F46#&F
:6#;""",&F<FKF=F<@$2,&""#FKF=FK9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&F:6#;""$F
LF4@%-%)assignedG6#&FS6#Q-pos_of_BOUNDF1>8'&FS6#Q&BOUNDF1>F`o-%1homalg/GlobalDi
mG6$9%F4@%-Fjn6#&FS6#Q0pos_of_START_ATF1>8(&FS6#Q)START_ATF1>F`p""!?(F1FKFKF11F
`pF`oC%>8)-%-homalg/Ext_RG6&F`p9$FhoF4@$4-%4homalg/IsZeroModuleG6%FjpFhoF4-FD6#
F`p>F`p,&F`pFKFKFKF`oF1F1F1F1,
Q7homalg/CodimOfModule.mF1
M7R0
I9homalg/ConvertGeneratorsf*6%'%"MG<$%%listG%4homalg_presentationG'%3convert_ge
neratorsG%*procedureG%,RingPackageG6(%#RPG%$narG%%optsG%$genG%-PRESENTATIONG%&E
QUALG6#%[oCopyright~(C)~2004-2005~by~Mohamed~Barakat.~All~rights~reserved.G6"C*
>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F:F,-%'RETURNG6#-F:6#&F@6#;"""
,&FBFPFCFB@$2,&""#FPFCFP9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&F@6#;""$FQF:/Q3c
onvert_generatorsF7-%%evalG6#9%@'-FF6$9$F)C$>8(%%trueG>8'-%@homalg/GeneratorsOf
PresentationG6$FfoF:-FF6$Ffo-F(6#%"=GC$>8)Fjo>F\p-%$mapG6$%$rhsGFfoC%>Fio%&fals
eG>FgpF_q>F\pFfo@$-%)assignedG6#&FX6#QEvar_to_assign_unconverted_generatorsF7-%
'assignG6$FfqF\p-Fjp6$FboF\p@'Fio7$-%$zipG6%f*6$%"aG%"bGF76$%)operatorG%&arrowG
F7/-%$lhsG6#FfoFboF7F7F7&Ffo6#FP%"%G-%#opG6#&Ffo6#;FUFBFgp-Far6%f*FdrF7FgrF7Fjr
F7F7F7FfoF`sF`sF7F7F7F7,
Q;homalg/ConvertGenerators.mF7
M7R0
I+homalg/Extf*6''%"qG%*nonnegintG%"AG%"BG'%$varG%%listG%,RingPackageG6&%#RPG%$n
arG%)optionalG%*cofunctorG6%%[oCopyright~(C)~2003-2006~by~Mohamed~Barakat.~All~
rights~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@
$-%%typeG6$F:%*procedureG-%'RETURNG6#-F:6#&F@6#;""",&FBFQFCFB>8&&F@6#;""&FR>8'-
%3homalg/Functor_HomG6#9&-%Ahomalg/RightSatelliteOfCofunctorG6(9$FZ9%9'FTF:F7F7
F7F7,
Q-homalg/Ext.mF7
M7R0
I4homalg/Functor_Ext2f*6$%"qG%"AG6"6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~
All~rights~reserved.G%'systemG%)rememberGF'7&f*6#%"MGF'F'F'-%+homalg/ExtG6&T$T&
9$&9"6#;""#!""F'F'6&F%F5F&9%f*6%F/%$phiG%"NGF'F'F'-%/homalg/Ext2MapG6(F3F4F5F=9
&&F76#;""%F;F'F'F<F=f*6#%"PGF'F'F'f*F?F'F'F'-%.homalg/ExtMapG6(F3F5F=FEF4FFF'F'
6&F%F3FLF5F'F'6$F%F5F'F'F'F',
Q6homalg/Functor_Ext2.mF'
M7R0
I5homalg/Functor_Extq2f*6$%"qG%"AG6"6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.
~All~rights~reserved.G%'systemG%)rememberGF'7&f*6#%"MGF'F'F'-%,homalg/ExtqG6&T$
T&9$&9"6#;""#!""F'F'6&F%F5F&9%f*6%F/%$phiG%"NGF'F'F'-%0homalg/Extq2MapG6(F3F4F5
F=9&&F76#;""%F;F'F'F<F=f*6#%"PGF'F'F'f*F?F'F'F'-%/homalg/ExtqMapG6(F3F5F=FEF4FF
F'F'6&F%F3FLF5F'F'6$F%F5F'F'F'F',
Q7homalg/Functor_Extq2.mF'
M7R0
I3homalg/Functor_Homf*6#%"BG6"6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All~r
ights~reserved.G%'systemG%)rememberGF&7&f*6#%"MGF&F&F&-%+homalg/HomG6%9$T$&9"6#
;""#!""F&F&6$F%F2f*6%F.%$phiG%"NGF&F&F&-%.homalg/HomMapG6'F29%9&F3&F56#;""%F9F&
F&F:F2f*6#%"PGF&F&F&f*F<F&F&F&-%/homalg/Hom2MapG6'F3F2FBFCFDF&F&6$FJF2F&F&F&F&F
&F&F&,
Q5homalg/Functor_Hom.mF&
M7R0
I7homalg/Functor_LHomHomf*6%%"qG%"AG%"BG6"6%%fnCopyright~(C)~2006~by~Mohamed~Ba
rakat.~All~rights~reserved.G%'systemG%)rememberGF(7(f*6#%"MGF(F(F(-%/homalg/LHo
mHomG6'T$9$T&T(&9"6#;""#!""F(F(6(F%F5F&9%F'9&f*6%F0%$phiG%"NGF(F(F(-%2homalg/LH
omHomMapG6)F4F5F?F@F6F7&F96#;""%F=F(F(F>F?f*6#%"PGF(F(F(f*FBF(F(F(-%3homalg/LHo
mHom2MapG6)F4F6F5F?F@F7FHF(F(6(F%F4FNF5F'F6F(F(6&F%F5F'F@F@f*FMF(F(F(f*FBF(F(F(
-%3homalg/LHomHom3MapG6)F4F6F7F5F?F@FHF(F(6(F%F4FNF5F&F6F(F(6&F%F5F&F?F(F(F(F(,
Q9homalg/Functor_LHomHom.mF(
M7R0
I4homalg/FunctorOnSeqf*6'%(functorG'%%homsG<$%&tableG%%listG%.chain_modulesG%$v
arG%,RingPackageG60%#RPG%$narG%3functor_on_objectsG%0functor_on_mapsG%#hiG%"hG%
"cG%#ciG%$_ciG%'H_homsG%0H_chain_modulesG%7F_embedding_generatorsG%"iG%/Fi_targ
et_hullG6%%[oCopyright~(C)~2005-2006~by~Mohamed~Barakat.~All~rights~reserved.G%
'systemG%)rememberG6"C1>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$FD%*pro
cedureG-%'RETURNG6#-FD6#&FJ6#;""",&FLFenFMFL@$29#,&""%FenFMFen-FT6#-%5homalg/Fu
nctorOnSeqFG6$&9$6#;""$FL&FJ6#;""#FL>8&&Fbo6#Fen>8'&Fbo6#Fio@%-FP6$9%F*>8(7#-%"
$G6#;Fen-%%nopsG6#Fep>Fgp-%%sortG6#-%$mapG6$%$lhsG-%#opG6#-%%evalGF_q>8)-F^q6#F
gp@%-FP6$9&F*C$>8*-F^q6#Fdr@%/Fgr,&F^rFenFenFenC$>8+7#-Fjp6#;FenFgr>8,7#-Fjp6#;
""!,&FgrFenFLFen-%&ERRORG6#%]rThe~number~of~homomorphisms~(first~argument)~shou
ld~be~one~less~than~the~number~of~chain~modules~(first~argument)!GC$>F_s-Fbq6#-
Feq6$Fgq-Fiq6#-F\rFir>FesF_s>8--F)FA>8.F\u>8/F\u>&F^u6#&FesFK-F[p6&&Fdr6#&F_sFK
9'/QCvar_to_assign_embedding_generatorsFA&F`uFcuFD@%4-%)assignedG6#F]v>F]v%%NUL
LG/Q7F_embedding_generatorsFA-%%copyGFbv?&807#-Fjp6#;FenF^r%%trueGC'>81.Fbw>&F^
u6#&Fes6#,&FjvFLFLFen-F[p6'&Fdr6#&F_sFhwFju/F\v&F`uFfw/QBvar_to_assign_F_target
_hullmoduleFAFcwFD@%4-Fav6#F`x>F`xFdv/Ffv-FhvFfx@%4-Fav6#Fbw>Fbw7"C$/Q/Fi_targe
t_hullFAFbw/Fby-FhvF]y>&F[u6#&Fgp6#,$FjvFL-F_p6,&Fdr6#&F_sFiy&FepFgyF\xFju/Q)F_
sourceFA&F^u6#&FesFiy/Q>F_source_embedding_generatorsFA&F`uFdz/Q)F_targetFAFew/
Q>F_target_embedding_generatorsFAF`x/Q4F_target_hullmoduleFAFbwFD6$-Fhv6#F[u-Fh
v6#F^uFAFAFAFA,
Q6homalg/FunctorOnSeq.mFA
M7R0
I7homalg/Functor_RHomHomf*6%%"qG%"AG%"BG6"6%%fnCopyright~(C)~2006~by~Mohamed~Ba
rakat.~All~rights~reserved.G%'systemG%)rememberGF(7(f*6#%"MGF(F(F(-%/homalg/RHo
mHomG6'T$9$T&T(&9"6#;""#!""F(F(6(F%F5F&9%F'9&f*6%F0%$phiG%"NGF(F(F(-%2homalg/RH
omHomMapG6)F4F5F?F@F6F7&F96#;""%F=F(F(F>F?f*6#%"PGF(F(F(f*FBF(F(F(-%3homalg/RHo
mHom2MapG6)F4F6F5F?F@F7FHF(F(6(F%F4FNF5F'F6F(F(6&F%F5F'F@F@f*FMF(F(F(f*FBF(F(F(
-%3homalg/RHomHom3MapG6)F4F6F7F5F?F@FHF(F(6(F%F4FNF5F&F6F(F(6&F%F5F&F?F(F(F(F(,
Q9homalg/Functor_RHomHom.mF(
M7R0
I-homalg/Imagef*6&%#_AG%"NG%$varG%,RingPackageG6+%#RPG%$narG%%optsG%8USE_IMAGE_
OF_GENERATORSG%)optionalG%%NrelG%"AG%#AAG%%NgenG6%%fnCopyright~(C)~2007~by~Moha
med~Barakat.~All~rights~reserved.G%'systemG%)rememberG6"C->8$-%1homalg/tablenam
eG6%9!&9"6#!""8%@$-%%typeG6$F:%*procedureG-%'RETURNG6#-F:6#&F@6#;""",&FBFQFCFB@
%2,&""#FQFCFQ9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&F@6#;""$FRF:>&FY6#Q2number_
of_optionsF7""!@$2,&FWFQF_oFB,&F]oFQFCFQ-FJ6#-%.homalg/ImageFG6#F@@%-%)assigned
G6#&FY6#Q?pos_of_USE_IMAGE_OF_GENERATORSF7>8'%%trueG>Fdp%&falseG>8(&F@6#;""%FR>
8)-%6homalg/NormalizeInputG6$9%F:>8*-Faq6$9$F:@$4FdpC$>8+-%<homalg/ReducedBasis
OfModuleG6&Fhq9&Q.COMPUTE_BASISF7F:@$2-&F:6#%-NumberOfRowsG6#F]r-Ffr6#Feq>FeqF]
r@%-FF6$Fcq%4homalg_presentationG>8,-%@homalg/GeneratorsOfPresentationGFbq>Fbs%
%NULLG-%7homalg/SubfactorModuleG6(FeqF_qFar/Q4original_generatorsF7FbsFipF:F7F7
F7F7,
Q/homalg/Image.mF7
M7R0
I8homalg/Intersection.newf*6&%$_R1G%#R2G'%$varG%%listG%,RingPackageG6'%#RPG%$na
rG%#R1G%#pbG%#imG6%%fnCopyright~(C)~2007~by~Mohamed~Barakat.~All~rights~reserve
d.G%'systemG%)rememberG6"C(>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F8%
*procedureG-%'RETURNG6#-F86#&F>6#;""",&F@FOFAF@>8&-%6homalg/NormalizeInputG6$9$
F8>8'&-%;homalg/PullbackPairOfMapsFG6&FR9%9&F86#FO>8(-%/homalg/ComposeG6&FXFRFh
nF8-%<homalg/ReducedBasisOfModuleG6&F[oFhnQ.COMPUTE_BASISF5F8F5F5F5F5,
Q:homalg/Intersection.new.mF5
M7R0
I3homalg/IsBijectivef*6'%"MG%"AG%"NG%$varG%,RingPackageG6'%#RPG%$narG%%optsG%(V
ERBOSEG%"bG6#%fnCopyright~(C)~2007~by~Mohamed~Barakat.~All~rights~reserved.G6"C
)>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F5%*procedureG-%'RETURNG6#-F5
6#&F;6#;""",&F=FLF>F=@%2,&""#FLF>FL9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&F;6#;
""$FMF5>&FT6#Q2number_of_optionsF2""!@$2,&FRFLFjnF=,&""%FLF>FL-FE6#-%4homalg/Is
BijectiveFG6#F;@%-%)assignedG6#&FT6#Q/pos_of_VERBOSEF2>8'%%trueG>F`p%&falseG>8(
7$-%3homalg/IsInjectiveG6'9$9%9&9'F5-%4homalg/IsSurjectiveG6&F[qF\qF]qF5@%F`p@%
/Fep7$FapFapFapFep3&Fep6#FL&Fep6#FQF2F2F2F2,
Q5homalg/IsBijective.mF2
M7R0
I1homalg/IsTorsionf*6%%"MG'%$varG%%listG%,RingPackageG6'%#RPG%$narG%%optsG%$Mtf
G%"bG6%%fnCopyright~(C)~2007~by~Mohamed~Barakat.~All~rights~reserved.G%'systemG
%)rememberG6"C(>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F7%*procedureG-
%'RETURNG6#-F76#&F=6#;""",&F?FNF@F?@$2,&""#FNF@FN9#>8&-%%copyG6#-%2homalg/GetOp
tionsG6$&F=6#;""$FOF7>8'-%9homalg/TorsionFreeFactorG6%9$9%F7>8(-%4homalg/IsZero
ModuleG6%F\oFaoF7@%-%)assignedG6#&FV6#Q/pos_of_VERBOSEF4@%Fco%%trueGF\oFcoF4F4F
4F4,
Q3homalg/IsTorsion.mF4
M7R0
I4homalg/IsZeroModulef*6%%"MG'%$varG%%listG%,RingPackageG6%%#RPG%$narG%%optsG6%
%[oCopyright~(C)~2004-2007~by~Mohamed~Barakat.~All~rights~reserved.G%'systemG%)
rememberG6"C&>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F5%*procedureG-%'
RETURNG6#-F56#&F;6#;""",&F=FLF>F=@$2,&""#FLF>FL9#>8&-%%copyG6#-%2homalg/GetOpti
onsG6$&F;6#;""$FMF5@'/-%9homalg/NonZeroGeneratorsG6%9$9%F57"%%trueG-%)assignedG
6#&FT6#Q/pos_of_VERBOSEF2F^o%&falseGF2F2F2F2,
Q6homalg/IsZeroModule.mF2
M7R0
I3homalg/LHom2OnSeqsf*6'%"qG%"LG'%&alphaG<$%&tableG%%listG%%_varG%,RingPackageG
6%%#RPG%$narG%(functorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All~rights~r
eserved.G%'systemG%)rememberG6"C&>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%type
G6$F9%*procedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA>8&-%5homalg/Functor_LHom2
G6$9$9%-%5homalg/FunctorOnSeqsG6$FS&F?6#;""$FAF6F6F6F6,
Q5homalg/LHom2OnSeqs.mF6
M7R0
I7homalg/LHomHom_ROnSeqsf*6&%"qG'%&alphaG<$%&tableG%%listG%%_varG%,RingPackageG
6%%#RPG%$narG%(functorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All~rights~r
eserved.G%'systemG%)rememberG6"C&>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%type
G6$F8%*procedureG-%'RETURNG6#-F86#&F>6#;""",&F@FOFAF@>8&-%9homalg/Functor_LHomH
om_RG6#9$-%5homalg/FunctorOnSeqsG6$FR&F>6#;""#F@F5F5F5F5,
Q9homalg/LHomHom_ROnSeqs.mF5
M7R0
I=homalg/LongExactHomologySeqFf*6('%&alphaG<$%&tableG%%listG'%%IotaGF''%%betaGF
''%#NuGF''%$varGF)%,RingPackageG68%#RPG%$narG%#aiG%$_aiG%"mG%#iiG%$_iiG%#biG%$_
biG%#niG%$_niG%"iG%&gammaG%#giG%$_giG%%LEHSG%$haiG%$hbiG%$hgiG%$hiiG%$hniG%#diG
6#%[oCopyright~(C)~2004-2006~by~Mohamed~Barakat.~All~rights~reserved.G6"C?>8$-%
1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$FO%*procedureG-%'RETURNG6#-FO6#&FU6
#;""",&FWF`oFXFW@%-Fen6$9$F)C$>8&7#-%"$G6#;F`o-%%nopsG6#Feo>8'7#-F[p6#;""!&Fho6
#!"#C$>Fho-%%sortG6#-%$mapG6$%$lhsG-%#opG6#-%%evalGF`p>FbpFho>8(-F_p6#Fho@%-Fen
6$9%F)C$>8)7#-F[p6#;F`o-F_p6#Far>8*7#-F[p6#;FW&Fdr6#!"$C$>Fdr-F^q6#-Faq6$Fcq-Fe
q6#-FhqFjr>F\sFdr@$0,&F[rF`oF`oF`o-F_p6#Fdr-%&ERRORG6#%foThe~second~argument~mu
st~have~one~entry~more~than~the~first/third~argument!G@%-Fen6$9&F)C$>8+7#-F[p6#
;F`o-F_p6#Fjt>8,7#-F[p6#;Fgp&F]uFipC$>F]u-F^q6#-Faq6$Fcq-Feq6#-FhqFcu>FeuF]u@$0
F[r-F_p6#F]u-Fdt6#%jnThe~first~and~third~argument~have~different~numbers~of~ent
ries!G@%-Fen6$9'F)C$>8-7#-F[p6#;F`o-F_p6#F_w>8.7#-F[p6#;FW&FbwFbsC$>Fbw-F^q6#-F
aq6$Fcq-Feq6#-FhqFhw>FjwFbw@$0Fat-F_p6#Fbw-Fdt6#%\oThe~second~and~fourth~argume
nt~have~different~numbers~of~entries!G>80-F(FL>81Fho>82Fbp?&8/7#-F[p6#;F`oF[r%%
trueG>&Fby6#&Fey6#Fiy-%6homalg/CompleteKerSqFG6'&F_w6#,&&FbwFczF`oF`oF`o&Fjt6#&
F]uFcz&F_w6#Fjz9(FO@$32,&""&F`oFXF`o9#-Fen6$&FU6#""'%'symbolG-%'assignG6$Fi[l-%
%copyG6#Fby>83Fcy>84&Fbp6#;F`oFjp?&Fiy7#-F[p6#;F`o,&F[rF`oFWF`oF^z>&Fd\l6#-&.%"
HG6#&Ff\lFcz6#.%"AG-%5homalg/DefectOfHomsFG6&&Feo6#,&&FhoFczF`oF`oF`o&Feo6#Fb^l
F`[lFO>85&FeuFh\l?&FiyF[]lF^z>&Fd\l6#-&Fe]l6#&Ff^lFcz6#.%"BG-F]^l6&&Fjt6#,&F][l
F`oF`oF`oF[[lF`[lFO>86&FgyFh\l?&FiyF[]lF^z>&Fd\l6#-&Fe]l6#&Fi_lFcz6#.%"CG-F]^l6
&&Fby6#,&FbzF`oF`oF`oF`zF`[lFO>87&F\s6#;""#Fjp?&FiyF[]lF^z>&Fd\l6#-&Fe]l6#&F\al
Fcz6#.%%iotaG-%8homalg/DefectOfHomsFMapG6)F_^lFc^l&Far6#&Fdr6#,&FiyF`oF`oF`oFe_
lF[[lF`[lFO>88&FjwF^al?&FiyF[]lF^z>&Fd\l6#-&Fe]l6#&FeblFcz6#.%#nuG-F]bl6)Fe_lF[
[l&F_w6#&FbwFbblFh`lF`zF`[lFO>89&Fi_l6#;F`alFW?&Fiy7#-F[p6#;F`o,&F[rF`oFjpF`oF^
z>&Fd\l6#&%&deltaG6#&FhclFcz-%6homalg/ConnectingHomFG6*&Fd\l6#-&Fe]l6#&Fi_lFbbl
Fc`l&F_w6#&Fbw6#,&FiyF`oF`alF`o&Fjt6#&F]uFbbl&Feo6#&FhoFbbl&Far6#,&&FdrFeelF`oF
WF`o&Fd\l6#-&Fe]l6#,&&Ff\lFbblF`oFWF`oFi]lF`[lFO-Fa\l6#Fd\lFLFLFLFL,
Q?homalg/LongExactHomologySeqF.mFL
M7R0
I:homalg/NormalizeExtensionf*6&%&_homsG%)_modulesG%%_varG%,RingPackageG6*%#RPG%
$narG%$varG%$extG%%homsG%(modulesG%"nG%"iG6#%enCopyright~(C)~2007~by~Barbara~Br
emer.~All~rights~reserved.G6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6
$F7%*procedureG-%'RETURNG6#-F76#&F=6#;""",&F?FNF@F?@%-FC6$&F=6#FO%%listG>8&FS-%
&ERRORG6#%-Wrong~input!G@&2,&""$FNF@FN9#C'>8(-%&tableGF4>8)F^o>8*,(Fjn#FN""#!"#
FNF@#F?Ffo>&FaoF>&F=6#,&FgoFNF@F??(8+FNFN,&FNFNFcoFN%%trueGC$>&F]o6#,(FcoFNFNFN
F_pF?-%6homalg/NormalizeInputG6$&F=6#,$F_pFfoF7>&FaoFep-Fhp6$&F=6#,&F_pFfoF?FNF
7/FjnFhnC%@$34-FC6$&F=6#FNF_o-FC6$&F=6#FfoF_o-FY6#%jqThe~extension~must~be~of~t
he~form~table(homs),table(modules)~or~a~sequence~module_n,hom_n,...,hom_0,modul
e_|fr-1|hrG>F]o-%%copyG6#F[r>Fao-Ffr6#F_r-FG6$-Ffr6#F]o-Ffr6#FaoF4F4F4F4,
Q<homalg/NormalizeExtension.mF4
M7R0
I9homalg/TensorProduct2Mapf*6(%"LG%"MG%$phiG%"NG'%$varG%%listG%,RingPackageG6&%
#RPG%$narG%)optionalG%(functorG6%%[oCopyright~(C)~2005-2006~by~Mohamed~Barakat.
~All~rights~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!
""8%@$-%%typeG6$F9%*procedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA>8&&F?6#;""'F
Q>8'f*6#F&F6F6F6-%5homalg/TensorProductG6%T$9$&F?6#;""#FAF6F66$F%Fjn-%2homalg/F
unctorMapG6)FY7#9%9&7#9'9(FSF9F6F6F6F6,
Q;homalg/TensorProduct2Map.mF6
M7R0
IAhomalg/YonedaProductOfExtensionsf*6(%+_ext1_homsG%._ext1_modulesG%+_ext2_homs
G%._ext2_modulesG%%_varG%,RingPackageG6O%#RPG%$narG%#naG%$argG%$varG%%optsG%%ex
t1G%*ext1_homsG%-ext1_modulesG%%ext2G%*ext2_homsG%-ext2_modulesG%"nG%"mG%)ext_h
omsG%,ext_modulesG%%Gn_1G%%Gn_2G%%dn_1G%#dnG%$etaG%#N_G%&dGn_1G%%iotaG%#piG%"PG
%"GG%'alpha1G%%genGG%"gG%'alpha2G%,alpha2_iotaG%#G0G%#G1G%#d0G%#d1G%#M_G%"MG%$d
G1G%3pullback_embeddingG%%betaG%(alpha1_G%$bijG%%bij2G%"iG6%%enCopyright~(C)~20
07~by~Barbara~Bremer.~All~rights~reserved.G%'systemG%)rememberG6"C->8$-%1homalg
/tablenameG6%9!&9"6#!""8%@$-%%typeG6$Fjn%*procedureG-%'RETURNG6#-Fjn6#&F`o6#;""
",&FboFapFcoFbo>8&,(9#FapFboFapFcoFbo?&8'F`o%%trueG@$-Ffo6$Fhp%'stringG>Fdp,&Fd
pFapFboFap@%-Ffo6$&F`o6#,&FdpFapFapFap%%listG>8(Fcq-%&ERRORG6#%-Wrong~input!G@'
3-Ffo6$&F`o6#FapFfq-Ffo6$&F`o6#""#FfqC(>8*-%:homalg/NormalizeExtensionG6$-%#opG
6#FarFhq>8+-%%copyG6#&FjrFbr>8,-Fds6#&FjrFfr>8--F\s6$-F_s6#FerFhq>8.-Fds6#&F]tF
br>8/-Fds6#&F]tFfr333-Ffo6$9$%&tableG-Ffo6$9%Fbu-Ffo6$9&Fbu-Ffo6$9'FbuC&>Fbs-Fd
s6#Fau>Fhs-Fds6#Feu>Fct-Fds6#Fhu>Fht-Fds6#F[vFiq@$2,(FdpFapFapFapFcoFapFfp>8)-F
ds6#-%2homalg/GetOptionsG6$&F`o6#;""%FbpFjn>80,&-%%nopsG6#7#-%(indicesG6#FbsFap
FboFap>81,&-F[x6#7#-F_x6#FctFapFboFap@)3/Fhw""!/FbxF\yC'>82-FbuFgn>83Fay>&F`y6#
F\y-%/homalg/ComposeG6&&FbsFfy&FctFfyFhqFjn>&FcyFao&FhtFao>&FcyFfy&FhsFfyF]yC6>
F`y-FdsF`x>Fcy-Fds6#Fhs>84&Fhs6#,&FhwFapFboFap>85&Fhs6#,&FhwFap!"#Fap>86-Fds6#&
FbsF[[l>87-Fds6#&Fbs6#Fhw>88-Fds6#F[z>89F^z>8:-%-homalg/ImageG6'-Fds6#Fd[lF^[lF
hq/Q=var_to_assign_embedding_infoFgn.8;Fjn>8<-%0homalg/ImageEpiG6&Fi\lF^[lFhqFj
n>8=-%9homalg/PushoutPairOfMapsG6)-Fds6#Fi[lFiz-Fds6#F_\lFc\lFhq/Q@var_to_assig
n_functor_on_objectFgn.8>Fjn>8?&Fe]lFfr>8@-%(convertG6%-%@homalg/GeneratorsOfPr
esentationG6$F`^lFhq%'matrixGFjn>8A-&Fjn6#%3NumberOfGeneratorsG6#Fiz>8B-Fhy6&-&
Fjn6#%/CertainColumnsG6$Fe^l7#;FapF^_lF`]lFhqFjn>8C-%3homalg/ComposeMapsG6'Fe_l
F^]lF^[lFhqFjn>&FcyF[[l-Fds6#F`^l>&F`yF[[l-Fds6#F``l>&FcyF]\l-Fds6#Fc\l>&F`yF]\
l-Fds6#Fb^lF[yC8>F`y-FdsFhx>Fcy-Fds6#Fht>8D&FhtFfy>8E&FhtFbr>8FF`\l>8G-Fds6#&Fc
tFbr>F_\l-Fds6#Fjy>8HFaz>8IF^z>8J-Fg\l6'-Fds6#FcblF[blFhqF[]lFjn>F`]l-Fb]l6&Fbc
lF[blFhqFjn>Fe]l-%:homalg/PullbackPairOfMapsG6+F[clF[^lF[bl-Fds6#FablF]clFhqF]^
l/QCvar_to_assign_embedding_generatorsFgn.8KFjn>Fe_l&Fe]lFbr>8LFc^l>8M-%1homalg
/KernelEmbG6(F`^lFe_lF[clFhq/F^^l.%%dG1_GFjn>8N-%4homalg/CompleteImSqG6)FfdlFdd
lF_clF^]lF[blFhqFjn>8O-%3homalg/LeftinverseG6'F\elF^elF_clFhqFjn>Fb^l-Fhy6&Fcel
FfdlFhqFjn>&F`yFbrFbal>F`zFf`l>Fey-Fds6#Fe_l>F]z-%0homalg/CokernelG6$F[clFhqC'>
F`yFdz>FcyFfz>Faal-Fhy6&F`\lFj[lFhqFjn>F]alF\bl?(8PFapFapFbxFipC$>&F`y6#,&FhwFa
pF\glFap-Fds6#&Fct6#F\gl>&FcyF`gl&FhtFegl@%4-%)assignedG6#&F]w6#Q.pos_of_NORMAL
Fgn-Fjo6#-%7homalg/PrettyExtensionG6%-%;homalg/CokernelOfExtensionG6$-Fds6#F`y-
Fds6#FcyFhqFjn-Fjo6#FfhlFgnFgnFgnFgn,
QChomalg/YonedaProductOfExtensions.mFgn
M7R0
I-homalgZ/initf*6"F$6#%ioCopyright~(C)~2004~by~Mohamed~Barakat~and~Daniel~Rober
tz.~All~rights~reserved.GF$-%,homalg/initG6#9"F$F$F$F$,
Q/homalgZ/init.mF$
M7R0
IHhomalg/A2ExtensionModuleFromA2Extensionf*6&%*_ext_homsG%-_ext_modulesG%%_varG
%,RingPackageG64%#RPG%$narG%%optsG%$varG%$extG%)ext_homsG%,ext_modulesG%"FG%&et
aMLG%&etaLNG%"MG%"NG%"LG%#d2G%"BG%"XG%#BbG%&etaMNG6#%jnCopyright~(C)~2007-2008~
by~Barbara~Bremer.~All~rights~reserved.G6"C->8$-%1homalg/tablenameG6%9!&9"6#!""
8%@$-%%typeG6$FA%*procedureG-%'RETURNG6#-FA6#&FG6#;""",&FIFXFJFI@%-FM6$&FG6#FY%
%listG>8'Fgn-%&ERRORG6#%-Wrong~input!G@%2,&""$FXFJFX9#C%>8(-%:homalg/NormalizeE
xtensionG6$&FG6#;FX,&!"#FXFJFIF[o>8)-%%copyG6#&Fgo6#FX>8*-Fcp6#&Fgo6#""#C$>Fap-
Fcp6#9$>Fhp-Fcp6#9%>8+-%:homalg/FactorizeExtensionG6&FapFhpF[oFA>8,-%6homalg/No
rmalizeInputG6$-%:homalg/CocycleOfExtensionG6%-%#opG6#&FhqF\qF[oFAFA>8--F_r6$-F
br6%-Fer6#&FhqFfpF[oFAFA>8.&Fgr6#""&>80&FgrFfp>8/&F`sFfp-%9homalg/A2ExtensionMo
duleG6)FbsF]rFgsFirFjsF[oFAF>F>F>F>,
QJhomalg/A2ExtensionModuleFromA2Extension.mF>
M7R0
IChomalg/SyzygiesGeneratorsOfColumnsf*6&%#M1G%#M2G'%$varG%%listG%,RingPackageG6
&%#RPG%$narG%$IM1G%$IM2G6%%fnCopyright~(C)~2008~by~Mohamed~Barakat.~All~rights~
reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typ
eG6$F7%*procedureG-%'RETURNG6#-F76#&F=6#;""",&F?FNF@F?>8&-%6homalg/NormalizeInp
utG6$-%2homalg/InvolutionG6%9$9&F7F7@%/9%7">8'Fgn>Fin-FS6$-FV6%FfnFYF7F7-FV6%-F
S6$-%@homalg/SyzygiesGeneratorsOfRowsG6&FQFinFYF7F7FYF7F4F4F4F4,
QEhomalg/SyzygiesGeneratorsOfColumns.mF4
M7R0
I9homalg/ConvertToListListf*6&%"rG%"cG%"LG%,RingPackageG6$%#RPG%$narG6#%fnCopyr
ight~(C)~2008~by~Mohamed~Barakat.~All~rights~reserved.G6"C%>8$-%1homalg/tablena
meG6%9!&9"6#!""8%@$-%%typeG6$F1%*procedureG-%'RETURNG6#-F16#&F76#;""",&F9FHF:F9
-%$mapG6$f*6#%"iGF.6$%)operatorG%&arrowGF.&T$6#;,&*&,&9$FHF9FHFHT&FHFHFHFH*&FZF
HFenFHF.F.6&F'9&F&9%7#-%"$G6#;FHFZF.F.F.F.,
Q;homalg/ConvertToListList.mF.
M7R0
I8homalg/CheckHomsOfCoseqf*6%'%*cocomplexG%%listG'%$varGF'%,RingPackageG6&%#RPG
%$narG%"lG%"jG6#%fnCopyright~(C)~2004~by~Mohamed~Barakat.~All~rights~reserved.G
6"C(>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F5%*procedureG-%'RETURNG6#
-F56#&F;6#;""",&F=FLF>F=@$/9$7"-FE6#FQ>8&-%%nopsG6#FP7#-%"$G6#;""!,&-%%iquoG6$,
&FUFLF=FL""#FLF=FL-%$mapG6$f*6#%"iGF26$%)operatorG%&arrowGF2-%)CheckHomG6%-%$se
qG6$&T$6#,&FPF^oT%FL/Fbp;FL""$T(T)F2F26*F&FPF/8'F)9%F,F5%"%GF2F2F2F2,
Q:homalg/CheckHomsOfCoseq.mF2
M7R0
I6homalg/CofunctorOnSeqf*6'%*cofunctorG'%%homsG<$%&tableG%%listG%.chain_modules
G%$varG%,RingPackageG60%#RPG%$narG%5cofunctor_on_objectsG%2cofunctor_on_mapsG%#
hiG%"hG%"cG%#ciG%$_ciG%'H_homsG%0H_chain_modulesG%7F_embedding_generatorsG%"iG%
/Fi_target_hullG6%%[oCopyright~(C)~2004-2006~by~Mohamed~Barakat.~All~rights~res
erved.G%'systemG%)rememberG6"C1>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6
$FD%*procedureG-%'RETURNG6#-FD6#&FJ6#;""",&FLFenFMFL@$29#,&""%FenFMFen-FT6#-%7h
omalg/CofunctorOnSeqFG6$&9$6#;""$FL&FJ6#;""#FL>8&&Fbo6#Fen>8'&Fbo6#Fio@%-FP6$9%
F*>8(7#-%"$G6#;Fen-%%nopsG6#Fep>Fgp-%%sortG6#-%$mapG6$%$lhsG-%#opG6#-%%evalGF_q
>8)-F^q6#Fgp@%-FP6$9&F*C$>8*-F^q6#Fdr@%/Fgr,&F^rFenFenFenC$>8+7#-Fjp6#;FenFgr>8
,7#-Fjp6#;""!,&FgrFenFLFen-%&ERRORG6#%]rThe~number~of~homomorphisms~(first~argu
ment)~should~be~one~less~than~the~number~of~chain~modules~(first~argument)!GC$>
F_s-Fbq6#-Feq6$Fgq-Fiq6#-F\rFir>FesF_s>8--F)FA>8.F\u>8/F\u>&F^u6#&FesF]p-F[p6&&
Fdr6#&F_sF]p9'/QCvar_to_assign_embedding_generatorsFA&F`uFcuFD@%4-%)assignedG6#
F]v>F]v%%NULLG/Q7F_embedding_generatorsFA-%%copyGFbv?&807#-Fjp6#;FenF^r%%trueGC
'>81.Fbw>&F^u6#&Fes6#,&FjvFenFenFen-F[p6'&Fdr6#&F_sFhwFju/F\v&F`uFfw/QBvar_to_a
ssign_F_target_hullmoduleFAFcwFD@%4-Fav6#F`x>F`xFdv/Ffv-FhvFfx@%4-Fav6#Fbw>Fbw7
"C$/Q/Fi_target_hullFAFbw/Fby-FhvF]y>&F[u6#,&&Fgp6#FjvFenFLFen-F_p6,F\x&Fep6#Fi
y&Fdr6#&F_sFjyFju/Q)F_sourceFA&F^u6#&FesFjy/Q>F_source_embedding_generatorsFA&F
`uFez/Q)F_targetFAFew/Q>F_target_embedding_generatorsFAF`x/Q4F_target_hullmodul
eFAFbwFD6$-Fhv6#F[u-Fhv6#F^uFAFAFAFA,
Q8homalg/CofunctorOnSeq.mFA
M7R0
I/homalg/Ext2Mapf*6)%"qG%"LG%"MG%$phiG%"NG'%$varG%%listG%,RingPackageG6&%#RPG%$
narG%)optionalG%(functorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All~rights
~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%ty
peG6$F:%*procedureG-%'RETURNG6#-F:6#&F@6#;""",&FBFQFCFB>8&&F@6#;""(FR>8'f*6#F'F
7F7F7-%+homalg/ExtG6&T$T&9$&F@6#;""#FBF7F76&F%F\oF&9%-%2homalg/FunctorMapG6)FZ7
#9&9'7#9(9)FTF:F7F7F7F7,
Q1homalg/Ext2Map.mF7
M7R0
I/homalg/Hom2Mapf*6(%"LG%"MG%$phiG%"NG'%$varG%%listG%,RingPackageG6&%#RPG%$narG
%)optionalG%(functorG6%%fnCopyright~(C)~2005~by~Mohamed~Barakat.~All~rights~res
erved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6
$F9%*procedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA>8&&F?6#;""'FQ>8'f*6#F&F6F6F
6-%+homalg/HomG6%T$9$&F?6#;""#FAF6F66$F%Fjn-%2homalg/FunctorMapG6)FY7#9%9&7#9'9
(FSF9F6F6F6F6,
Q1homalg/Hom2Map.mF6
M7R0
I.homalg/HomMapf*6(%"MG%$phiG%"NG%"LG'%$varG%%listG%,RingPackageG6&%#RPG%$narG%
)optionalG%*cofunctorG6%%[oCopyright~(C)~2003-2005~by~Mohamed~Barakat.~All~righ
ts~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%
typeG6$F9%*procedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA>8&&F?6#;""'FQ>8'f*6#F
%F6F6F6-%+homalg/HomG6%9$T$&F?6#;""#FAF6F66$F(9'-%2homalg/FunctorMapG6)FY7#Fin9
%7#9&9(FSF9F6F6F6F6,
Q0homalg/HomMap.mF6
M7R0
I4homalg/Intersectionf*6&%$_R1G%$_R2G'%$varG%%listG%,RingPackageG6+%#RPG%$narG%
#R1G%#R2G%"nG%#R0G%$IR0G%"zG%"ZG6%%^pCopyright~(C)~2003-2007~by~Mohamed~Barakat
~and~Daniel~Robertz.~All~rights~reserved.G%'systemG%)rememberG6"C->8$-%1homalg/
tablenameG6%9!&9"6#!""8%@$-%%typeG6$F<%*procedureG-%'RETURNG6#-F<6#&FB6#;""",&F
DFSFEFD>8&-%6homalg/NormalizeInputG6$9$F<>8'-FX6$9%F<>8(-&F<6#%3NumberOfGenerat
orsG6#FV>8)-%$mapG6$%#opG7$-Fdo6$f*6#%"aGF96$%)operatorG%&arrowGF9-Fdo6$Ffo7$FZ
FZF9F9F9FV-Fdo6$f*F[pF9F]pF9-Fdo6$Ffo7$FZ-%"$G6$""!T#F9F96$F0F[oFfn>8*-%5homalg
/BasisOfModuleG6&Fbo9&/Q3POSITION_OVER_TERMF9%%trueGF<>8+-&F<6#%%ZeroG6#F[o>8,-
Fdo6$f*F[pF9F]pF9@$/&FZ6#;FST%F]q&FZ6#;,&FirFSFSFSFDF9F96&F3FiqF0F[oF`q@$/F`r7"
>F`r7#Fiq-%<homalg/ReducedBasisOfModuleG6%F`rFdqF<F9F9F9F9,
Q6homalg/Intersection.mF9
M7R0
I.homalg/Lambekf*6-%'alpha1G%"AG%'alpha2G%#_AG%$phiG%&beta1G%"BG%&beta2G%#_BG'%
$varG%%listG%,RingPackageG6)%#RPG%$narG%%optsG%&KerSqG%%ImSqG%$lamG%(ia1CphiG6#
%[oCopyright~(C)~2003-2006~by~Mohamed~Barakat.~All~rights~reserved.G6"C)>8$-%1h
omalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F?%*procedureG-%'RETURNG6#-F?6#&FE6#;
""",&FGFVFHFG@$2,&"#5FVFHFV9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&FE6#;"#6FWF?>
8'-%/homalg/KerOfSqG6+9%9&9'9(9*9+9,9-F?>8(-%.homalg/ImOfSqG6)9$F[p9)F\pF_p8*F?
@$-%)assignedG6#&Fhn6#Q@var_to_assign_functor_on_objectF<C$>8)7$FdoFap-%'assign
G6$F\qFaq6$-%3homalg/OnMorphismsG6(FdoF[pFapFgpF_pF?-Fhq6)FdoF[pFapFgpF_pQ(inve
rseF<F?F<F<F<F<,
Q0homalg/Lambek.mF<
M7R0
I9homalg/NatTrIdToHomHom_Rf*6%%"MG'%$varG%%listG%,RingPackageG6)%#RPG%$narG%%op
tsG%#HMG%%iotaG%$HHMG%$basG6%%[oCopyright~(C)~2003-2004~by~Mohamed~Barakat.~All
~rights~reserved.G%'systemG%)rememberG6"C+>8$-%1homalg/tablenameG6%9!&9"6#!""8%
@$-%%typeG6$F9%*procedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA@$2,&""#FPFBFP9#>
8&-%%copyG6#-%2homalg/GetOptionsG6$&F?6#;""$FQF9>8'-%-homalg/Hom_RG6&9$9%Q5NORM
ALIZE_GENERATORSF6F9>8(-%2homalg/InvolutionG6%-%@homalg/GeneratorsOfPresentatio
nG6$F^oF9FcoF9>8)-F`o6&F^oFcoFdoF9>8*-F[p6$F^pF9@$-%)assignedG6#&FX6#Q@var_to_a
ssign_functor_on_objectF6-%'assignG6$FipF^p@%-%4homalg/IsZeroModuleG6%F^pFcoF9-
%/homalg/ZeroMapG6&FboF^pFcoF9-%4homalg/RightDivideFG6&FfoFbpFcoF9F6F6F6F6,
Q;homalg/NatTrIdToHomHom_R.mF6
M7R0
IBhomalg/NatTrIdToTorsionFreeFactorf*6%%"MG%$varG%,RingPackageG6$%#RPG%$narG6%%
fnCopyright~(C)~2007~by~Mohamed~Barakat.~All~rights~reserved.G%'systemG%)rememb
erG6"C%>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F2%*procedureG-%'RETURN
G6#-F26#&F86#;""",&F:FIF;F:-%<homalg/TorsionFreeFactorEpiG6#F8F/F/F/F/,
QDhomalg/NatTrIdToTorsionFreeFactor.mF/
M7R0
I7homalg/PrettyExtensionf*6&%%homsG%(modulesG%$varG%,RingPackageG6&%#RPG%$narG%
"nG%"iG6#%enCopyright~(C)~2007~by~Barbara~Bremer.~All~rights~reserved.G6"C&>8$-
%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F3%*procedureG-%'RETURNG6#-F36#&F9
6#;""",&F;FJF<F;>8&,&-%%nopsG6#7#-%(indicesG6#9$FJF;FJ6$-%#opG6#-%$mapG6$f*6#F-
F06$%)operatorG%&arrowGF06$&T$6#,&T%FJFVF;-%%copyG6#&T(F`oF0F06(F&9%F,FMF%FV7#-
%"$G6#;""!FM&FioF:F0F0F0F0,
Q9homalg/PrettyExtension.mF0
M7R0
I9homalg/ShortenResolutionf*6&'%"qG<$%)infinityG%(integerG%$resG'%$varG%%listG%
,RingPackageG6-%#RPG%$narG%"nG%"mG%#RmG%%Rm_1G%#SmG%#pmG%%Rm_2G%%pm_3G%%sresG6%
%fnCopyright~(C)~2007~by~Mohamed~Barakat.~All~rights~reserved.G%'systemG%)remem
berG6"C,>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$FB%*procedureG-%'RETUR
NG6#-FB6#&FH6#;""",&FJFYFKFJ>8'-%%nopsG6#9%@$5/9$""!2Ffn""#-FRFin>8&F^o>8(&Fjn6
#FY>8)&Fjn6#Fao?(F?FYFYF?30FdoF_o2FYFfnC&>8*-%4homalg/RightinverseG6%Ffo9&FB@%0
Fcp%%FAILGC$>Ffo-&FB6#%/UnionOfColumnsG6$FjoFcp@$2FaoFfnC&>8+-&FB6#%3NumberOfGe
neratorsG6#Fcp>8,&Fjn6#,&FfnFJFaoFY>8--Fhq6#F]r>Fjo-&FB6#%,UnionOfRowsG6$F]r7#-
%"$G6$7#-F]s6$-&FB6#%%ZeroGF?FbrFfq[>Ffn,&FfnFYFJFY>Fdo,&FdoFYFJFY@%F`p>8.7%Ffo
Fjo-%#opG6#&Fjn6#;F`rFJ>F]t7#Ffo-%$mapG6$&FB6#%'matrixGF]tF?F?F?F?,
Q;homalg/ShortenResolution.mF?
M7R0
I-homalgS/initf*6"F$6#%ioCopyright~(C)~2004~by~Mohamed~Barakat~and~Daniel~Rober
tz.~All~rights~reserved.GF$-%,homalg/initG6#9"F$F$F$F$,
Q/homalgS/init.mF$
M7R0
IAhomalg/StablyFreePresentationFFRf*6%%"PG%$varG%,RingPackageG6&%#RPG%$narG%"pG
%"sG6#%fnCopyright~(C)~2007~by~Mohamed~Barakat.~All~rights~reserved.G6"C'>8$-%1
homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F2%*procedureG-%'RETURNG6#-F26#&F86#
;""",&F:FIF;F:>8&-%@homalg/InjectivePresentationFFRG6#F8@$0FL%%FAILGC$>8'-%4hom
alg/RightinverseG6%-%6homalg/NormalizeInputG6$FLF29%F2@$0FUFR-FB6#-%%copyG6#FLF
RF/F/F/F/,
QChomalg/StablyFreePresentationFFR.mF/
M7R0
I2homalg/BasisCoefff*6%%#_MG'%$varG%%listG%,RingPackageG6(%#RPG%$narG%"MG%"mG%%
tvarG%#IMG6%%ioCopyright~(C)~2004~by~Mohamed~Barakat~and~Daniel~Robertz.~All~ri
ghts~reserved.G%'systemG%)rememberG6"C+>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-
%%typeG6$F8%*procedureG-%'RETURNG6#-F86#&F>6#;""",&F@FOFAF@>8&-%6homalg/Normali
zeInputG6$9$F8>8'-&F86#%-NumberOfRowsG6#FR>8(-%7homalg/StdBasisVectorsG6$FXF8>F
R-&F86#%'AddRhsG6%FR9%Fin>8)-%5homalg/BasisOfModuleG6%FRFcoF8@$32,&""#FOFAFO9#-
FD6$&F>6#""$%'symbolGC%-&F86#%(GetSideG6&%$rhsGFeoFcoFin-FT6$%"%GF8-%'assignG6$
Fap-&F86#%'matrixG6#F^q-Fgp6&%$lhsGFeoFcoFinF5F5F5F5,
Q4homalg/BasisCoeff.mF5
M7R0
I7homalg/CompleteImSqInvf*6)%#A_G%(_alpha1G%%_phiG%'_beta1G%"BG%$varG%,RingPack
ageG6,%#RPG%$narG%$phiG%*apply_phiG%*NORMALIZEG%*normalizeG%'alpha1G%&beta1G%(i
a1CphiG%%psi_G6#%fnCopyright~(C)~2004~by~Mohamed~Barakat.~All~rights~reserved.G
6"C+>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F<%*procedureG-%'RETURNG6#
-F<6#&FB6#;""",&FDFSFEFD@$529#,&""&FSFEFS-FH6$&FB6#FZFJ-FL6#-%8homalg/CompleteI
mSqInvFG6#FB@%-FH6$9&FJ>8'FaoC$>8&-%6homalg/NormalizeInputG6$FaoF<>Fcof*6#%"aGF
96$%)operatorG%&arrowGF9-%/homalg/ComposeG6&9$T#T&T'F9F96(F/FfoF*9)F-F<@%32,&""
'FSFEFSFX-FH6$&FB6#""(FJC&>8)Faq>8*9%>8+-%$mapG6$Ffq9'>8(%%trueGC%>Fhq-Fho6$Fiq
F<>F[rF_r>Far%&falseG>8,-Fco6#Fhq@$Far>F[s-F]r6$Ffq-%%copyG6#F[s>8--%3homalg/Ri
ghtDivideG6'F[rF[s9(FipF<-%:homalg/ReduceHomomorphismG6&FfsFdpFipF<F9F9F9F9,
Q9homalg/CompleteImSqInv.mF9
M7R0
I4homalg/CompleteImSqf*6)%(_alpha1G%%_phiG%#B_G%'_beta1G%"BG%$varG%,RingPackage
G6,%#RPG%$narG%$phiG%*apply_phiG%*normalizeG%*NORMALIZEG%'alpha1G%&beta1G%(ia1C
phiG%$psiG6#%fnCopyright~(C)~2004~by~Mohamed~Barakat.~All~rights~reserved.G6"C+
>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F<%*procedureG-%'RETURNG6#-F<6
#&FB6#;""",&FDFSFEFD@$529#,&""&FSFEFS-FH6$&FB6#FZFJ-FL6#-%5homalg/CompleteImSqF
G6#FB@%-FH6$9%FJC$>8'Fao/Q*apply_phiF9-%%evalG6#FdoC$>8&-%6homalg/NormalizeInpu
tG6$FaoF<>Fdof*6#%"aGF96$%)operatorG%&arrowGF9-%/homalg/ComposeG6&9$T#T&T'F9F96
(F/F\pF*9)F-F<@%32,&""'FSFEFSFX-FH6$&FB6#""(FJC'>8(Fgq/Q*normalizeF9-Fho6#F\r/Q
'_beta1F9-%%copyG6#9'>8+-%$mapG6$F\rFfr@%F_oC$>8*Fjp>8)%%trueGC$>F_s-Fjr6$F\rFj
p>Fas%&falseGC%>FhrFfr>F_s-F^p6$FjpF<>FasFhs>8,-Fdo6#F_s@$Fas>F`t-Fjr6$F\r-Fdr6
#F`t>8--%3homalg/RightDivideG6'F`tFhr9(F_qF<-%:homalg/ReduceHomomorphismG6&Fjt9
&F_qF<F9F9F9F9,
Q6homalg/CompleteImSq.mF9
M7R0
I3homalg/CompleteSeqf*6(%%rhoAG%&gammaG%%rhoBG%#PBG%$varG%,RingPackageG6,%#RPG%
$narG%#aiG%#AiG%"mG%#biG%#BiG%#giG%$seqG%"iG6%%fnCopyright~(C)~2005~by~Mohamed~
Barakat.~All~rights~reserved.G%'systemG%)rememberG6"C0>8$-%1homalg/tablenameG6%
9!&9"6#!""8%@$-%%typeG6$F=%*procedureG-%'RETURNG6#-F=6#&FC6#;""",&FEFTFFFE@$29#
,&""&FTFFFT-FM6#-%4homalg/CompleteSeqFG6#FC@%-FI6$9$%%listG>8&7#-%"$G6#;FT-%%no
psG6#F]o>F`o-%%sortG6#-%$mapG6$%$lhsG-%#opG6#-%%evalGFho>8(-Fgo6#F`o@%-FI6$9&F^
o>8)7#-Fco6#;FT-Fgo6#F]q>F_q-F[p6#-F^p6$F`p-Fbp6#-FepFeq@$0Fgp-Fgo6#F_q-%&ERROR
G6#%_oThe~number~of~entries~of~the~first~and~third~argument~must~coincide!G@%-F
I6$9'F^o>8*7#-Fco6#;FT-Fgo6#Fir>F[s-F[p6#-F^p6$F`p-Fbp6#-FepFas>8+F[s@$0,&FgpFT
FTFT-Fgo6#F[s-Fcr6#%`oThe~fourth~argument~must~have~one~entry~more~than~the~thi
rd~argument!G>8,-%&tableGF:>&Fet6#&F[t6#""!-%%copyG6#9%?&8-7#-Fco6#;F]u,&FgpFTF
EFT%%trueG>&Fet6#Fcu-%4homalg/CompleteImSqG6)-F_u6#&F]o6#&F`o6#,&FcuFTFTFT-F_u6
#&Fet6#,&&F[tFevFTFEFT&Fir6#&F[s6#,&FcuFT""#FT-F_u6#&F]q6#&F_qFev&Fir6#,&F_wFTF
EFT9(F=-F_u6#FetF:F:F:F:,
Q5homalg/CompleteSeq.mF:
M7R0
I3homalg/DerMinusLogf*6%%"fG%$varG%,RingPackageG6&%#RPG%$narG%#LJG%"SG6#%fnCopy
right~(C)~2007~by~Mohamed~Barakat.~All~rights~reserved.G6"C)>8$-%1homalg/tablen
ameG6%9!&9"6#!""8%@$-%%typeG6$F2%*procedureG-%'RETURNG6#-F26#&F86#;""",&F:FIF;F
:>8&7$9$-%#opG6#-%$mapG6$f*6#%"aGF/6$%)operatorG%&arrowGF/-%%diffG6$T$FNF/F/6$F
%FN9%>8'-%2homalg/SyzygiesOpG6%FLFjnF2>F\o-%6homalg/NormalizeInputG6$F\oF2>F\o-
&F26#%/CertainColumnsG6$F\o7#;""#F:-%-homalg/ImageG6%F\oFjnF2F/F/F/F/,
Q5homalg/DerMinusLog.mF/
M7R0
I.homalg/ExtMapf*6)%"qG%"MG%$phiG%"NG%"LG'%$varG%%listG%,RingPackageG6&%#RPG%$n
arG%)optionalG%*cofunctorG6%%fnCopyright~(C)~2005~by~Mohamed~Barakat.~All~right
s~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%t
ypeG6$F:%*procedureG-%'RETURNG6#-F:6#&F@6#;""",&FBFQFCFB>8&&F@6#;""(FR>8'f*6#F&
F7F7F7-%+homalg/ExtG6&T$9$T&&F@6#;""#FBF7F76&F%F[oF)9(-%2homalg/FunctorMapG6)FZ
7#9%9&7#9'9)FTF:F7F7F7F7,
Q0homalg/ExtMap.mF7
M7R0
I4homalg/FirstNonZerof*6#'%"LG%%listG6'%#RPG%$narG%"lG%"zG%"iG6#%fnCopyright~(C
)~2004~by~Mohamed~Barakat.~All~rights~reserved.G6"C(>8$-%1homalg/tablenameG6%9!
&9"6#!""8%@$-%%typeG6$F3%*procedureG-%'RETURNG6#-F36#&F96#;""",&F;FJF<F;@%32,&F
JFJF<FJ9#-F?6$&F96#""#%'posintG>8&FS>FX-%%nopsG6#9$>8'-&F36#%%ZeroGF0?&8(7#-%"$
G6#;FJFX%%trueG@$0&Fgn6#F_oFin-FCFio""!F0F0F0F0,
Q6homalg/FirstNonZero.mF0
M7R0
I8homalg/Functor_LHomHom3f*6%%"qG%"AG%"BG6"6%%fnCopyright~(C)~2006~by~Mohamed~B
arakat.~All~rights~reserved.G%'systemG%)rememberGF(7(f*6#%"MGF(F(F(-%/homalg/LH
omHomG6'T$T&T(9$&9"6#;""#!""F(F(6(F%F7F&9%F'9&f*6%F0%$phiG%"NGF(F(F(-%3homalg/L
HomHom3MapG6)F4F5F6F7F?F@&F96#;""%F=F(F(F>F?f*6#%"PGF(F(F(f*FBF(F(F(-%2homalg/L
HomHomMapG6)F4F7F?F@F5F6FHF(F(6(F%F4F'F5FNF7F(F(6&F%F7F'F@F@f*FMF(F(F(f*FBF(F(F
(-%3homalg/LHomHom2MapG6)F4F5F7F?F@F6FHF(F(6(F%F4F&F5FNF7F(F(6&F%F7F&F?F(F(F(F(,
Q:homalg/Functor_LHomHom3.mF(
M7R0
I8homalg/Functor_RHomHom2f*6%%"qG%"AG%"BG6"6%%fnCopyright~(C)~2006~by~Mohamed~B
arakat.~All~rights~reserved.G%'systemG%)rememberGF(7(f*6#%"MGF(F(F(-%/homalg/RH
omHomG6'T$T&9$T(&9"6#;""#!""F(F(6(F%F6F&9%F'9&f*6%F0%$phiG%"NGF(F(F(-%3homalg/R
HomHom2MapG6)F4F5F6F?F@F7&F96#;""%F=F(F(F>F?f*6#%"PGF(F(F(f*FBF(F(F(-%2homalg/R
HomHomMapG6)F4F6F?F@F5F7FHF(F(6(F%F4FNF6F'F5F(F(6&F%F6F'F@F@f*FMF(F(F(f*FBF(F(F
(-%3homalg/RHomHom3MapG6)F4F5F7F6F?F@FHF(F(6(F%F4F&F5FNF6F(F(6&F%F6F&F?F(F(F(F(,
Q:homalg/Functor_RHomHom2.mF(
M7R0
I5homalg/Functor_Torq2f*6$%"qG%"AG6"6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.
~All~rights~reserved.G%'systemG%)rememberGF'7&f*6#%"MGF'F'F'-%,homalg/TorqG6&T$
T&9$&9"6#;""#!""F'F'6&F%F5F&9%f*6%F/%$phiG%"NGF'F'F'-%0homalg/Torq2MapG6(F3F4F5
F=9&&F76#;""%F;F'F'F<F=f*6#%"PGF'F'F'f*F?F'F'F'-%/homalg/TorqMapG6(F3F5F=FEF4FF
F'F'6&F%F3FLF5F'F'6$F%F5F'F'F'F',
Q7homalg/Functor_Torq2.mF'
M7R0
I@homalg/GeneratorsOfPresentationf*6$'%"MG%4homalg_presentationG%,RingPackageG6
$%#RPG%$narG6#%[oCopyright~(C)~2004-2005~by~Mohamed~Barakat.~All~rights~reserve
d.G6"C%>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F1%*procedureG-%'RETURN
G6#-F16#&F76#;""",&F9FHF:F9@%32,&FHFHF:FH9#-F=6$&F76#""#%'stringG&9$6#FH-%6homa
lg/NormalizeInputG6%FVQ-PresentationF.F1F.F.F.F.,
QBhomalg/GeneratorsOfPresentation.mF.
M7R0
I2homalg/HomHom2Mapf*6)%"AG%"MG%$phiG%"NG%"BG'%$varG%%listG%,RingPackageG6&%#RP
G%$narG%)optionalG%*cofunctorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All~r
ights~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$
-%%typeG6$F:%*procedureG-%'RETURNG6#-F:6#&F@6#;""",&FBFQFCFB>8&&F@6#;""(FR>8'f*
6#F&F7F7F7-%.homalg/HomHomG6&T$9$T&&F@6#;""#FBF7F76&F%F[oF)9(-%2homalg/FunctorM
apG6)FZ7#9%9&7#9'9)FTF:F7F7F7F7,
Q4homalg/HomHom2Map.mF7
M7R0
I5homalg/HomHom2OnSeqsf*6'%"AG%"BG'%&alphaG<$%&tableG%%listG%%_varG%,RingPackag
eG6%%#RPG%$narG%*cofunctorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All~righ
ts~reserved.G%'systemG%)rememberG6"C&>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%
typeG6$F9%*procedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA>8&-%7homalg/Functor_H
omHom2G6$9$9%-%7homalg/CofunctorOnSeqsG6$FS&F?6#;""$FAF6F6F6F6,
Q7homalg/HomHom2OnSeqs.mF6
M7R0
I5homalg/HomHom3OnSeqsf*6'%"AG%"BG'%&alphaG<$%&tableG%%listG%%_varG%,RingPackag
eG6%%#RPG%$narG%(functorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All~rights
~reserved.G%'systemG%)rememberG6"C&>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%ty
peG6$F9%*procedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA>8&-%7homalg/Functor_Hom
Hom3G6$9$9%-%5homalg/FunctorOnSeqsG6$FS&F?6#;""$FAF6F6F6F6,
Q7homalg/HomHom3OnSeqs.mF6
M7R0
I8homalg/HomologyModulesFf*6%'%(complexG<$%&tableG%%listG'%$varGF)%,RingPackage
G6+%#RPG%$narG%#aiG%"lG%%stepG%$haiG%"jG%&homolG%"iG6#%fnCopyright~(C)~2004~by~
Mohamed~Barakat.~All~rights~reserved.G6"C)>8$-%1homalg/tablenameG6%9!&9"6#!""8%
@$-%%typeG6$F<%*procedureG-%'RETURNG6#-F<6#&FB6#;""",&FDFSFEFD@$/9$7"-FL6#FX@%-
FH6$FWF)>8&7#-%"$G6#;FS-%%nopsG6#FW>Fin-%%sortG6#-%$mapG6$%$lhsG-%#opG6#-%%eval
GFao>8'-F`o6#Fin>8)&Fin6#;FS!"#@%-FH6$FWF(C%>8+-F(F9?&8,7#-F\o6#;FS,&F`pFSFDFS%
%trueG>&F^q6#&.%"HG6#&Fdp6#Faq-%5homalg/DefectOfHomsFG6&&FW6#&Fin6#,&FaqFSFSFS&
FW6#&FinF`r9%F<-%%copyG6#F^q-Fgo6$f*6#F6F96$%)operatorG%&arrowGF9-Fbr6&&T$6#&T%
6#,&FWFSFSFS&Fjs6#&F]tFaoT(T)F9F96*F&FWF0FinF+F\sF.F<FdpF9F9F9F9,
Q:homalg/HomologyModulesF.mF9
M7R0
I+homalg/Homf*6&%#_MG%#_NG'%$varG%%listG%,RingPackageG68%#RPG%$narG%$idNG%$idMG
%"MG%"NG%"lG%%optsG%)optionalG%$posG%4readjust_generatorsG%"oG%"pG%#l0G%#l1G%$_
l0G%%HP0NG%%HP1NG%&alphaG%$kerG%5embedding_generatorsG%>express_generators_abst
ractlyG6#%[oCopyright~(C)~2003-2007~by~Mohamed~Barakat.~All~rights~reserved.G6"
C7>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$FG%*procedureG-%'RETURNG6#-F
G6#&FM6#;""",&FOFhnFPFO@$-FS6$&FM6#Fhn%'stringGC$@(/F]oQ;RETURN_morphism_on_obj
ectsFDC$>8&-%3homalg/IdentityMapG6%9%9&FG-FW6#f*6#%$phiGFD6$%)operatorG%&arrowG
FD-%2homalg/InvolutionG6%-%4homalg/KroneckerMatG6&9$T#T&T'F\qF]qFDFD6(F.FfoF(F[
pF,FG/F]oQCRETURN_proc_to_readjust_generatorsFDC%>8)-%6homalg/NormalizeInputG6$
FjoFG>8*-&FG6#%3NumberOfGeneratorsG6#Fcq-FW6#f*6#%"cG6#%"bGFDFDC$>FG-%$mapG6$%#
opG-Feq6$-Fep6%7#FjpT$T%Fas-&Fas6#%'matrixG6#-Fhr6$f*6#%"aGFDFapFD&F[q6#;,&*&Fj
pFhnFasFhnFhnFhnFhn*&FasFhn,&FjpFhnFhnFhnFhnFDFD6&FdrFGF2F]q7#-%"$G6#;""!,&*&-%
%nopsG6#FGFhnF]qFOFhnFOFhnFDFD6(F(F[pF,FGF2Fhq/F]oQ1RETURN_co_contraFD-FW6#Q.co
ntravariantFD-FW6#%%NULLG@$-FS6$&FM6#""#F_oC$@(/F[vFcoC$>8'-Fho6%FjpF[pFG-FW6#f
*F_pFDFapFD-Fhp6&F[qFjpF\qF]qFDFD6(F/FcvF(F[pF,FG/F[vF`qC%>8(-Feq6$FjpFG>Fhq-Fj
q6#F_w-FW6#f*FarFcrFDFDC$>FGFgr-Fcs6#-Fhr6$f*FjsFDFapFD&F[q6#;,&*(-F]u6#F[qFhnF
asFOFjpFhnFhnFhnFhn*(FdxFhnFasFOFbtFhnFDFDFct7#-Fft6#;Fit,&F]qFhnFOFhnFDFDF_u/F
[vFau-FW6#Q*covariantFDFeu@$2,&""$FhnFPFhn9#>8+-%%copyG6#-%2homalg/GetOptionsG6
$&FM6#;""%FinFG>8,F]z>8-Fgu@%4-%)assignedG6#&Ffy6#Q<pos_of_NORMALIZE_GENERATORS
FDC$>8.f*FarFcrFDFDC$>FGFgr-Fcs6$-Fhr6$f*FjsFDFapFDF\tFDFD6&FdrFGF;F]qFdtFasFDF
D6(F(F[pF,FGF;83>8/Fdy>Fdz/FjzFgu@$-Fhz6#&Ffy6#Qenpos_of_var_to_assign_proc_to_
express_generators_abstractlyFD>Fdz6$Fdz/Fb\lFgu@$07#Fdz7">Fbz-Fjr6#-%'subsopG6
$Fdz7#Fbz>F_wF`w>FcqFdq>81Fcw>82-&FG6#%-NumberOfRowsGFdw>Fj[lFiq>84-%/homalg/Di
agMatG6$-Fft6$FcqFf]lFG>85-Fa^l6$-Fft6$FcqFh]lFG>86-Fep6%-Fhp6&F_w-Fho6%Fj[lF[p
FGF[pFGF[pFG>87-%.homalg/KernelG6(F_^lF\_lFf^lF[pFbzFG@$F`\lC%>88-%;homalg/Embe
dInFactorModuleG6$Fd_lFG>89f*FjsFDFapFD&-Feq6$-%3homalg/RightDivideG6'7#-Fhr6$F
jr-Feq6$-Fep6%7#-Fhr6$Fjr-Feq6$FjpF[qF\qF[qF[qF]qT)F\qF[qF[qF^oFDFD6*F,FGF(F[pF
@F[`lF<F_^l-%'assignG6$&Ffy6#QTvar_to_assign_proc_to_express_generators_abstrac
tlyFDF``l@%Ffz-%9homalg/ConvertGeneratorsG6&Fd_lF_[lFbzFGFd_lFDFDFDFD,
Q-homalg/Hom.mFD
M7R0
I.homalg/ImOfSqf*6(%(_alpha1G%%_phiG%&beta1G%"BG'%$varG%%listG%,RingPackageG6(%
#RPG%$narG%'alpha1G%$phiG%)iphiIib1G%(ia1CphiG6#%[oCopyright~(C)~2003-2004~by~M
ohamed~Barakat.~All~rights~reserved.G6"C*>8$-%1homalg/tablenameG6%9!&9"6#!""8%@
$-%%typeG6$F9%*procedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA>8&-%6homalg/Norma
lizeInputG6$9$F9>8'-FU6$9%F9>8(-%4homalg/IntersectionG6&FY9&9(F9>8)-%4homalg/Su
mRelationsG6&-%/homalg/ComposeG6&FSFYF]oF99'F]oF9@$32,&""&FPFBFP9#-FE6$&F?6#""'
%'symbolG-%'assignG6$F_pF_o-%7homalg/SubfactorModuleG6&FhnF_oF]oF9F6F6F6F6,
Q0homalg/ImOfSq.mF6
M7R0
I8homalg/IsCommutativeSqFf*6(%(_alpha1G%%_phiG%%_psiG%'_beta1G'%$varG%%listG%,R
ingPackageG6)%#RPG%$narG%'alpha1G%$phiG%$psiG%&beta1G%)optionalG6#%fnCopyright~
(C)~2004~by~Mohamed~Barakat.~All~rights~reserved.G6"C*>8$-%1homalg/tablenameG6%
9!&9"6#!""8%@$-%%typeG6$F:%*procedureG-%'RETURNG6#-F:6#&F@6#;""",&FBFQFCFB>8&-%
6homalg/NormalizeInputG6$9$F:>8'-FV6$9%F:>8)-FV6$9'F:>8(-FV6$9&F:>8*&F@6#;""'FR
-%2homalg/EqualMapsFG6'-%/homalg/ComposeG6&FTFZ9(F:-F\p6&F^oFinF^pF:F^pFcoF:F7F
7F7F7,
Q:homalg/IsCommutativeSqF.mF7
M7R0
I2homalg/IsExactSeqf*6%'%(complexG%%listG'%$varGF'%,RingPackageG6'%#RPG%$narG%%
cplxG%%defsG%+check_defsG6#%fnCopyright~(C)~2004~by~Mohamed~Barakat.~All~rights
~reserved.G6"C*>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F6%*procedureG-
%'RETURNG6#-F66#&F<6#;""",&F>FMF?F>>8&-%1homalg/IsComplexG6&9$9%Q(VERBOSEF3F6@%
/7#FP7#%%trueG>FP/Q(complexF3Fen@%32,&""#FMF?FM9#-FB6$&F<6#FN%'stringGFP%&false
G>8'-%7homalg/HomologyModulesG6%FTFUF6>Ffo-%$mapG6'%4homalg/IsZeroModuleGFfoFUF
VF6>8(-%&evalbG6#/-%(convertG6$Ffo%$setG<#Fen@'F`pFenFjn@%F`p6$FP/Q)homologyF3F
en6$FP/F^qFfoFdoF3F3F3F3,
Q4homalg/IsExactSeq.mF3
M7R0
I8homalg/IsShortExactSeqFf*6&%&alphaG%%betaG'%$varG%%listG%,RingPackageG6-%#RPG
%$narG%$cmpG%%cmpsG%$kerG%$defG%&cokerG%%defsG%+check_cmpsG%+check_defsG%$resG6
#%fnCopyright~(C)~2004~by~Mohamed~Barakat.~All~rights~reserved.G6"C->8$-%1homal
g/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F<%*procedureG-%'RETURNG6#-F<6#&FB6#;""",
&FDFSFEFD>8&-%/homalg/ComposeG6&9$9%9&F<>8'7#-%1homalg/IsZeroMapG6&FVFfnQ(VERBO
SEF9F<>8(-%/homalg/KernelFG6%FZFfnF<>8)-%5homalg/DefectOfHomsFGFY>8*-%1homalg/C
okernelFG6%FenFfnF<>8+-%$mapG6'%4homalg/IsZeroModuleG7%F_oFdoFhoFfnF]oF<>8,-%&e
valbG6#/-%(convertG6$Fhn%$setG<#%%trueG>8--Ffp6#/-Fjp6$F]pF\qF]q@'3FdpF`qF^q32,
&""$FSFEFS9#-FH6$&FB6#FT%'stringGC&>8.%%NULLG@%Fdp>Fdr6$Fdr/Q%cmpsF9F^q>Fdr6$Fd
r/FjrFhn@%F`q>Fdr6$Fdr/Q%defsF9F^q>Fdr6$Fdr/FbsF]pFdr%&falseGF9F9F9F9,
Q:homalg/IsShortExactSeqF.mF9
M7R0
I5homalg/NormalizeRingf*6$'%$varG%%listG%,RingPackageG6$%#RPG%$narG6%%enCopyrig
ht~(C)~2004~by~Daniel~Robertz.~All~rights~reserved.G%'systemG%)rememberG6"C%>8$
-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F3%*procedureG-%'RETURNG6#-F36#&F
96#;""",&F;FJF<F;@)/9$7"-FC6#7$FOFO-F?6$&FN6#FJF'@%2FJ-%%nopsG6#FN@%4-F?6$&FN6#
""#F'-FC6#7%FU7#7#Fjn-%#opG6#&FN6#;""$F;-FC6#7%FU-%6homalg/NormalizeInputG6$Fjn
F3Fbo-FC6#7$FNFO3/FYF\oFhn-FC6#-F"6$7$7#FU-Fco6#&FN6#;F\oF;F3F_pF0F0F0F0,
Q7homalg/NormalizeRing.mF0
M7R0
I0homalg/Preimagef*6'%#_BG%#_AG%"LG%$varG%,RingPackageG6)%#RPG%$narG%"AG%"mG%/S
INGLE_ELEMENTG%"BG%$preG6#%fnCopyright~(C)~2004~by~Mohamed~Barakat.~All~rights~
reserved.G6"C+>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F7%*procedureG-%
'RETURNG6#-F76#&F=6#;""",&F?FNF@F?>8&-%6homalg/NormalizeInputG6$9%F7>8'-&F76#%3
NumberOfGeneratorsG6#FQ>8(%&falseG@'4-FC6$9$<$%%listG&F76#%+matrixtypeG@%/FWFN>
8)7#7#F^o-%&ERRORG6#%dpThe~second~argument~has~more~the~one~'column'~while~the~
first~argument~is~a~ring~element!G34-FC6$F^o<$%)listlistGFao-FC6$F^oF`o@%Feo>Fg
o-%$mapG6$f*6#%"aGF46$%)operatorG%&arrowGF4FioF4F4F4F^oC$>Fhn%%trueG>FgoFio>Fgo
-FS6$F^oF7>8*-%3homalg/RightDivideG6%FgoFQ&F=6#;""$F?@$-FC6$FiqFao>Fiq-%(conver
tG6$FiqFcp@%Fhn&Fiq6#FNFiqF4F4F4F4,
Q2homalg/Preimage.mF4
M7R0
I3homalg/RHomHom3Mapf*6*%"qG%"AG%"BG%"MG%$phiG%"NG'%$varG%%listG%,RingPackageG6
&%#RPG%$narG%)optionalG%(functorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~Al
l~rights~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8
%@$-%%typeG6$F;%*procedureG-%'RETURNG6#-F;6#&FA6#;""",&FCFRFDFC>8&&FA6#;"")FS>8
'f*6#F(F8F8F8-%/homalg/RHomHomG6'T$T&T(9$&FA6#;""#FCF8F86(F%F^oF&9%F'9&-%2homal
g/FunctorMapG6)Fen7#9'9(7#9)9*FUF;F8F8F8F8,
Q5homalg/RHomHom3Map.mF8
M7R0
I>homalg/RightDerivedCofunctorFf*6''%"qG%*nonnegintG'%*cofunctorG-%%listG6#%*pr
ocedureG%"AG'%$varGF+%,RingPackageG61%#RPG%$narG%%optsG%4readjust_generatorsG%)
optionalG%5cofunctor_on_objectsG%2cofunctor_on_mapsG%$resG%%rdimG%$posG%(alpha_
qG%)alpha_q1G%)Falpha_qG%*Falpha_q1G%#RFG6#%[oCopyright~(C)~2005-2006~by~Mohame
d~Barakat.~All~rights~reserved.G6"C1>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%t
ypeG6$FGF--%'RETURNG6#-FG6#&FM6#;""",&FOFgnFPFO@$-FS6$&FM6#""$%'stringGC$@*/F\o
Q?RETURN_proc_to_induce_morphismFD-FV6#f*6%%"MG%$phiG%"NGFD6$%)operatorG%&arrow
GFD-%%copyG6#&&-%%evalG6#-%7homalg/ResolutionOfSeqG6(T$9$9%9&T&T'F]o6#FipFDFD6(
F&FjpF09'F3FG/F\oQKRETURN_FunctorMap_of_the_functor_to_deriveFD-FV6#&F[q6#""#/F
\oQIRETURN_FunctorMaps_of_a_composed_functorFD-FV6#%%NULLG/F\oQ;RETURN_morphism
_on_objectsFDF[r-FV6#-&F[q6#Fgn6%F\oFaqFG@$2,&""%FgnFPFgn9#>8&-F_p6#-%2homalg/G
etOptionsG6$&FM6#;""&FhnFG@$4-%)assignedG6#&F\s6#Q<pos_of_NORMALIZE_GENERATORSF
D>8'-Fcr6%QCRETURN_proc_to_readjust_generatorsFDFaqFG>8(Fbs>8)Fcr>8*Ffq>8+-%:ho
malg/ResolutionOfModuleG6&F\qFaq/Q)TRUNCATEFDFjpFG>8,-%.homalg/ResDimG6$FjtFG@)
2,&-%%nopsG6#FauFgnFOFgnFjpC'>8-F]r@$-Fis6#&F\s6#QCvar_to_assign_embedding_gene
ratorsFDC$>F]v/&F\s6#QJpos_of_var_to_assign_embedding_generatorsFDF]r-%'assignG
6$Fav7#-&FG6#%%ZeroGFdr@$-Fis6#&F\s6#QBvar_to_assign_F_target_hullmoduleFDC$>F]
v6$F]v/&F\s6#QIpos_of_var_to_assign_F_target_hullmoduleFDF]r-F[w6$FewF]w@$07#F]
v7">Fdt-%#opG6#-%'subsopG6$F]v7#Fdt-FV6#-Fft6&-%2homalg/ZeroModuleG6$FaqFGFaqFd
tFG/Fhu,&FjpFgnFgnFgnC$>8.&FjtFdr>8/7#-F_w6#&FauFdr/Fjp""!C$>Fhy-&FG6#%'matrixG
6#7#-%"$G6$F^w&FauFN>F[zFiyC$>Fhy&FjtFgq>F[zFiy>80-Fht6%FhyFaqFG>81-Fht6%F[zFaq
FG>82-%5homalg/DefectOfHomsFG6'Fd[lFh[lFaqFdtFG@%3-Fis6#F_t0F_tF]r-%9homalg/Con
vertGeneratorsG6&F\\lF_tFdtFGF\\lFDFDFDFD,
Q@homalg/RightDerivedCofunctorF.mFD
M7R0
I,homalg/Torqf*6''%"qG%*nonnegintG%"AG%"BG'%$varG%%listG%,RingPackageG6&%#RPG%$
narG%)optionalG%(functorG6%%[oCopyright~(C)~2005-2006~by~Mohamed~Barakat.~All~r
ights~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$
-%%typeG6$F:%*procedureG-%'RETURNG6#-F:6#&F@6#;""",&FBFQFCFB>8&&F@6#;""&FR>8'-%
=homalg/Functor_TensorProductG6#9&-%:homalg/LeftDerivedFunctorG6(9$FZ9%9'FTF:F7
F7F7F7,
Q.homalg/Torq.mF7
M7R0
I?homalg/TorsionFreeFactorOnSeqsf*6%'%&alphaG<$%&tableG%%listG%%_varG%,RingPack
ageG6%%#RPG%$narG%(functorG6%%fnCopyright~(C)~2007~by~Mohamed~Barakat.~All~righ
ts~reserved.G%'systemG%)rememberG6"C&>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%
typeG6$F7%*procedureG-%'RETURNG6#-F76#&F=6#;""",&F?FNF@F?>8&-%Ahomalg/Functor_T
orsionFreeFactorGF4-%5homalg/FunctorOnSeqsG6$FQ&F=6#;FNF?F4F4F4F4,
QAhomalg/TorsionFreeFactorOnSeqs.mF4
M7R0
I8homalg/TorsionSubmodulef*6%%"MG'%$varG%%listG%,RingPackageG6'%#RPG%$narG%)opt
ionalG%"PG%"FG6%%^pCopyright~(C)~2003-2005~by~Mohamed~Barakat~and~Daniel~Robert
z.~All~rights~reserved.G%'systemG%)rememberG6"C)>8$-%1homalg/tablenameG6%9!&9"6
#!""8%@$-%%typeG6$F7%*procedureG-%'RETURNG6#-F76#&F=6#;""",&F?FNF@F?@$-FC6$&F=6
#FN%'stringGC$@$/FSQ1RETURN_co_contraF4-FG6#Q*covariantF4-FG6#%%NULLG>8&&F=6#;"
"$FO>8'-%9homalg/ParametrizeModuleG6&9$9%Q$ANYF4F7>8(-%2homalg/FreeModuleG6%-&F
76#%3NumberOfGeneratorsG6#FaoFfoF7-%.homalg/KernelG6(FeoFaoFioFfoF[oF7F4F4F4F4,
Q:homalg/TorsionSubmodule.mF4
M7R0
I@homalg/SyzygiesGeneratorsOfRowsf*6&%#M1G%#M2G'%$varG%%listG%,RingPackageG6&%#
RPG%$narG%"nG%$syzG6%%fnCopyright~(C)~2008~by~Mohamed~Barakat.~All~rights~reser
ved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F
7%*procedureG-%'RETURNG6#-F76#&F=6#;""",&F?FNF@F?>8'-%:homalg/SyzygiesGenerator
sG6&-%6homalg/NormalizeInputG6$9$F7-FV6$9%F79&F7@$55/FQ7"/FQ-%'matrixG6#7#F[o/F
Q-%'MatrixGF_oC$>8&-&F76#%-NumberOfRowsG6#FUO7#-&F76#%%ZeroG6#Ffo-&F76#F^o6#-FV
6$FQF7F4F4F4F4,
QBhomalg/SyzygiesGeneratorsOfRows.mF4
M7R0
I3homalg/forallrings=6"%&falseGE\[l!F$,
Q5homalg/forallrings.mF$
M7R0
I0homalg/CheckHomf*6'%#_MG%#_AG%#_NG'%$varG%%listG%,RingPackageG6)%#RPG%$narG%"
MG%"AG%"NG%#BNG%$imAG6#%[oCopyright~(C)~2003-2004~by~Mohamed~Barakat.~All~right
s~reserved.G6"C+>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F9%*procedureG
-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA>8&-%6homalg/NormalizeInputG6$9$F9>8'-FU6$9
%F9>8(-FU6$9&F9>8)-%5homalg/BasisOfModuleG6%Fhn9'F9>8*-%/homalg/ComposeG6&FSFYF
aoF9>Fco-FU6$FcoF9-%.homalg/ReduceG6&FcoF]oFaoF9F6F6F6F6,
Q2homalg/CheckHom.mF6
M7R0
I8homalg/CofunctorOnSeqsFf*6&%+_cofunctorG'%&alphaG<$%&tableG%%listG%%_varG%,Ri
ngPackageG6-%#RPG%$narG%*cofunctorG%$varG%#aiG%"mG%"jG%&coseqG%$tblG%"rG%"iG6%%
fnCopyright~(C)~2004~by~Mohamed~Barakat.~All~rights~reserved.G%'systemG%)rememb
erG6"C->8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F@%*procedureG-%'RETURN
G6#-F@6#&FF6#;""",&FHFWFIFH@%-FL6$9$F*@%2""!-%%nopsG6#Ffn>8&&Ffn6#FW-%&ERRORG6#
%gnThe~first~argument~providing~the~cofunctor~is~an~empty~list!G>F^oFfn>8'&FF6#
FX>8(-F)F=@%-FL6$9%F*>&F[pF`o7#-%"$G6#;FW-F[o6#F`p>Fbp-%%sortG6#-%$mapG6$%$lhsG
-%#opG6#-%%evalGFip>8)-F[o6#Fbp?&8*7#-Fep6#;""#,(9#FW!"#FWFIFH%%trueGC$@%-FL6$&
FF6#,&FWFWF\rFWF*>&F[p6#F\r7#-Fep6#;FW-F[o6#Fjr>F^s-F\q6#-F_q6$Faq-Fcq6#-FfqFes
@%/-%%iremG6$F\rFarFW@$0Fhq-F[o6#F^s-Fbo6%%BThe~first~and~the~argument~numberGF
\r%Chave~different~numbers~of~entries!G@$0,&FhqFWFWFWFet-Fbo6%%4The~argument~nu
mberGF\r%Rmust~have~one~entry~more~than~the~first~argument!G>8+F\p?&F\r7#-Fep6#
;FWFbrFerC&>8,F\p>8-F`t?&8.7#-Fep6#;FW,(FhqFWFWFWF]vFHFer>&F[v6#,&&F^s6#F_vFWF]
vFH-F^o6%-%%copyG6#&Fjr6#FivFgoF@>&FcuF_s-F^w6#F[v-Fcq6#-F_q6$F^w-F_q6$f*6#%"aG
F=6$%)operatorG%&arrowGF=&T#F\oF=F=6$F5FcuFeuF=F=F=F=,
Q:homalg/CofunctorOnSeqsF.mF=
M7R0
I3homalg/CokernelMapf*6)%'alpha1G%"AG%$phiG%&beta1G%"BG%$varG%,RingPackageG6'%#
RPG%$narG%%optsG%)optionalG%(functorG6%%[oCopyright~(C)~2004-2005~by~Mohamed~Ba
rakat.~All~rights~reserved.G%'systemG%)rememberG6"C)>8$-%1homalg/tablenameG6%9!
&9"6#!""8%@$-%%typeG6$F9%*procedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA@%2,&""
%FPFBFP9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&F?6#;""&FQF9>&FX6#Q2number_of_opt
ionsF6""!@$2,&FVFPF^oFA,&""'FPFBFP-FI6#-%4homalg/CokernelFMapG6#F?>8'&F?6#;""(F
Q>8(%0homalg/CokernelG-%2homalg/FunctorMapG6)Fcp7$9$9%9&7$9'9(9)F]pF9F6F6F6F6,
Q5homalg/CokernelMap.mF6
M7R0
I;homalg/EmbedInFactorModulef*6$%"MG%,RingPackageG6$%#RPG%$narG6#%fnCopyright~(
C)~2004~by~Mohamed~Barakat.~All~rights~reserved.G6"C%>8$-%1homalg/tablenameG6%9
!&9"6#!""8%@$-%%typeG6$F/%*procedureG-%'RETURNG6#-F/6#&F56#;""",&F7FFF8F7-%6hom
alg/NormalizeInputG6%9$Q-PresentationF,F/F,F,F,F,,
Q=homalg/EmbedInFactorModule.mF,
M7R0
I>homalg/Functor_TensorProduct2f*6#%"AG6"6%%fnCopyright~(C)~2006~by~Mohamed~Bar
akat.~All~rights~reserved.G%'systemG%)rememberGF&7&f*6#%"MGF&F&F&-%5homalg/Tens
orProductG6%T$9$&9"6#;""#!""F&F&6$F%F3f*6%F.%$phiG%"NGF&F&F&-%9homalg/TensorPro
duct2MapG6'F2F39%9&&F56#;""%F9F&F&F:F3f*6#%"PGF&F&F&f*F<F&F&F&-%8homalg/TensorP
roductMapG6'F3FBFCF2FDF&F&6$FJF3F&F&F&F&F&F&F&,
Q@homalg/Functor_TensorProduct2.mF&
M7R0
I0homalg/ImageEmbf*6&%"AG%"NG%$varG%,RingPackageG6(%#RPG%$narG%%optsG%)optional
G%#imG%5image_embedding_infoG6%%fnCopyright~(C)~2007~by~Mohamed~Barakat.~All~ri
ghts~reserved.G%'systemG%)rememberG6"C+>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-
%%typeG6$F7%*procedureG-%'RETURNG6#-F76#&F=6#;""",&F?FNF@F?@%2,&""#FNF@FN9#>8&-
%%copyG6#-%2homalg/GetOptionsG6$&F=6#;""$FOF7>&FV6#Q2number_of_optionsF4""!@$2,
&FTFNF\oF?,&FjnFNF@FN-FG6#-%1homalg/ImageFEmbG6#F=>8'&F=6#;""%FO>8(-%-homalg/Im
ageG6(9$9%9&/Q=var_to_assign_embedding_infoF4.8)FjoF7/Q5image_embedding_infoF4-
FX6#Fjp@$-%)assignedG6#&FV6#Q@var_to_assign_functor_on_objectF4-%'assignG6$FcqF
`pF]qF4F4F4F4,
Q2homalg/ImageEmb.mF4
M7R0
I7homalg/IsCommutativeSqf*6)%(_alpha1G%%_phiG%%_psiG%'_beta1G%"BG%$varG%,RingPa
ckageG6)%#RPG%$narG%'alpha1G%$phiG%$psiG%&beta1G%)optionalG6#%fnCopyright~(C)~2
004~by~Mohamed~Barakat.~All~rights~reserved.G6"C+>8$-%1homalg/tablenameG6%9!&9"
6#!""8%@$-%%typeG6$F9%*procedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA@$529#,&""
'FPFBFP32,&""&FPFBFPFU-FE6$&F?6#FW%'stringG-FI6#-%8homalg/IsCommutativeSqFG6#F?
>8&-%6homalg/NormalizeInputG6$9$F9>8'-Fco6$9%F9>8)-Fco6$9'F9>8(-Fco6$9&F9>8*&F?
6#;""(FQ-%1homalg/EqualMapsG6(-%/homalg/ComposeG6&FaoFgo9)F9-F_q6&FapF\pFaqF99(
FaqFfpF9F6F6F6F6,
Q9homalg/IsCommutativeSq.mF6
M7R0
I1homalg/IsComplexf*6%'%(complexG%%listG'%$varGF'%,RingPackageG6)%#RPG%$narG%%h
omsG%%cmpsG%+check_homsG%+check_cmpsG%$resG6#%fnCopyright~(C)~2004~by~Mohamed~B
arakat.~All~rights~reserved.G6"C+>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%type
G6$F8%*procedureG-%'RETURNG6#-F86#&F>6#;""",&F@FOFAF@>8&-%6homalg/CheckHomsOfSe
qG6%9$9%F8>FR-%$mapG6'%1homalg/IsZeroMapGFRFWQ(VERBOSEF5F8>8'-%4homalg/CheckCom
plexGFU>Fin-FZ6'FfnFinFWFgnF8>8(-%&evalbG6#/-%(convertG6$FR%$setG<#%%trueG>8)-F
bo6#/-Ffo6$FinFhoFio@'3F`oF\pFjo32,&""#FOFAFO9#-FD6$&F>6#FP%'stringGC&>8*%%NULL
G@%F`o>F`q6$F`q/Q%homsF5Fjo>F`q6$F`q/FfqFR@%F\p>F`q6$F`q/Q%cmpsF5Fjo>F`q6$F`q/F
^rFinF`q%&falseGF5F5F5F5,
Q3homalg/IsComplex.mF5
M7R0
I2homalg/KernelFMapf*6'%'alpha2G%$psiG%&beta2G'%$varG%%listG%,RingPackageG6&%#R
PG%$narG%)optionalG%(functorG6%%fnCopyright~(C)~2004~by~Mohamed~Barakat.~All~ri
ghts~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-
%%typeG6$F8%*procedureG-%'RETURNG6#-F86#&F>6#;""",&F@FOFAF@>8&&F>6#;""&FP>8'%/h
omalg/KernelFG-%2homalg/FunctorMapG6)FX7#9$%$phiG7#9&9'FRF8F5F5F5F5,
Q4homalg/KernelFMap.mF5
M7R0
I1homalg/KernelMapf*6+%"AG%'alpha2G%#_AG%$psiG%"BG%&beta2G%#_BG%$varG%,RingPack
ageG6'%#RPG%$narG%%optsG%)optionalG%(functorG6%%[oCopyright~(C)~2003-2005~by~Mo
hamed~Barakat.~All~rights~reserved.G%'systemG%)rememberG6"C)>8$-%1homalg/tablen
ameG6%9!&9"6#!""8%@$-%%typeG6$F;%*procedureG-%'RETURNG6#-F;6#&FA6#;""",&FCFRFDF
C@%2,&""%FRFDFR9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&FA6#;""&FSF;>&FZ6#Q2numbe
r_of_optionsF8""!@$2,&FXFRF`oFC,&"")FRFDFR-FK6#-%2homalg/KernelFMapG6#FA>8'&FA6
#;""*FS>8(%.homalg/KernelG-%2homalg/FunctorMapG6)Fep7%9$9%9&9'7%9(9)9*9+F_pF;F8
F8F8F8,
Q3homalg/KernelMap.mF8
M7R0
I/homalg/KerOfSqf*6+%"AG%'alpha2G%#_AG%%_phiG%"BG%'_beta2G%#_BG'%$varG%%listG%,
RingPackageG6(%#RPG%$narG%$phiG%&beta2G%(kphiCb2G%)ka2PkphiG6#%[oCopyright~(C)~
2003-2004~by~Mohamed~Barakat.~All~rights~reserved.G6"C*>8$-%1homalg/tablenameG6
%9!&9"6#!""8%@$-%%typeG6$F<%*procedureG-%'RETURNG6#-F<6#&FB6#;""",&FDFSFEFD>8&-
%6homalg/NormalizeInputG6$9'F<>8'-FX6$9)F<>8(-%1homalg/KernelEmbG6'9$-%/homalg/
ComposeG6&FVFfn9+F<9*FcoF<>8)-%4homalg/SumRelationsG6&-Fho6&-F]o6'F_o9%9&FcoF<-
F]o6'F_oFV9(FcoF<FcoF<F_oFcoF<@$32,&"")FSFEFS9#-FH6$&FB6#""*%'symbolG-%'assignG
6$F[qFfo-%7homalg/SubfactorModuleG6&F[oFfoFcoF<F9F9F9F9,
Q1homalg/KerOfSq.mF9
M7R0
I;homalg/LeftDerivedFunctorFf*6''%"qG%*nonnegintG'%(functorG-%%listG6#%*procedu
reG%"AG'%$varGF+%,RingPackageG61%#RPG%$narG%%optsG%4readjust_generatorsG%)optio
nalG%3functor_on_objectsG%0functor_on_mapsG%$resG%%rdimG%$posG%(alpha_qG%)alpha
_q1G%)Falpha_qG%*Falpha_q1G%#LFG6#%[oCopyright~(C)~2005-2006~by~Mohamed~Barakat
.~All~rights~reserved.G6"C1>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$FGF
--%'RETURNG6#-FG6#&FM6#;""",&FOFgnFPFO@$-FS6$&FM6#""$%'stringGC$@*/F\oQ?RETURN_
proc_to_induce_morphismFD-FV6#f*6%%"MG%$phiG%"NGFD6$%)operatorG%&arrowGFD-%%cop
yG6#&&-%%evalG6#-%7homalg/ResolutionOfSeqG6(T$9$9%9&T&T'F]o6#FipFDFD6(F&FjpF09'
F3FG/F\oQKRETURN_FunctorMap_of_the_functor_to_deriveFD-FV6#&F[q6#""#/F\oQIRETUR
N_FunctorMaps_of_a_composed_functorFD-FV6#%%NULLG/F\oQ;RETURN_morphism_on_objec
tsFDF[r-FV6#-&F[q6#Fgn6%F\oFaqFG@$2,&""%FgnFPFgn9#>8&-F_p6#-%2homalg/GetOptions
G6$&FM6#;""&FhnFG@$4-%)assignedG6#&F\s6#Q<pos_of_NORMALIZE_GENERATORSFD>8'-Fcr6
%QCRETURN_proc_to_readjust_generatorsFDFaqFG>8(Fbs>8)Fcr>8*Ffq>8+-%:homalg/Reso
lutionOfModuleG6&F\qFaq/Q)TRUNCATEFDFjpFG>8,-%.homalg/ResDimG6$FjtFG@)2,&-%%nop
sG6#FauFgnFOFgnFjpC'>8-F]r@$-Fis6#&F\s6#QCvar_to_assign_embedding_generatorsFDC
$>F]v/&F\s6#QJpos_of_var_to_assign_embedding_generatorsFDF]r-%'assignG6$Fav7#-&
FG6#%%ZeroGFdr@$-Fis6#&F\s6#QBvar_to_assign_F_target_hullmoduleFDC$>F]v6$F]v/&F
\s6#QIpos_of_var_to_assign_F_target_hullmoduleFDF]r-F[w6$FewF]w@$07#F]v7">Fdt-%
#opG6#-%'subsopG6$F]v7#Fdt-FV6#-Fft6&-%2homalg/ZeroModuleG6$FaqFGFaqFdtFG/Fhu,&
FjpFgnFgnFgnC$>8.&FjtFdr>8/7#-F_w6#&FauFdr/Fjp""!C$>Fhy-&FG6#%'matrixG6#7#-%"$G
6$F^w&FauFN>F[zFiyC$>Fhy&FjtFgq>F[zFiy>80-Fht6%FhyFaqFG>81-Fht6%F[zFaqFG>82-%5h
omalg/DefectOfHomsFG6'Fh[lFd[lFaqFdtFG@%3-Fis6#F_t4/F_tF]r-%9homalg/ConvertGene
ratorsG6&F\\lF_tFdtFGF\\lFDFDFDFD,
Q=homalg/LeftDerivedFunctorF.mFD
M7R0
I1homalg/LHomHom_Rf*6&'%"qG%*nonnegintG%"MG'%$varG%%listG%,RingPackageG6&%#RPG%
$narG%)optionalG%(functorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All~right
s~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%t
ypeG6$F9%*procedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA>8&&F?6#;""%FQ>8'-%8hom
alg/Functor_HomHom_RGF6-%:homalg/LeftDerivedFunctorG6(9$FY9%9&FSF9F6F6F6F6,
Q3homalg/LHomHom_R.mF6
M7R0
I1homalg/MakeCoseqf*6%'%%homsG<$%&tableG%%listG'%0cochain_modulesGF'%,RingPacka
geG6(%#RPG%$narG%#hiG%"hG%"cG%#ciG6#%[oCopyright~(C)~2004-2006~by~Mohamed~Barak
at.~All~rights~reserved.G6"C(>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F
9%*procedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA@%-FE6$9$F)>8&7#-%"$G6#;FP-%%n
opsG6#FU>FW-%%sortG6#-%$mapG6$%$lhsG-%#opG6#-%%evalGFin>8'-Fhn6#FW@%-FE6$9%F)C$
>8(-Fhn6#F^p@%/Fap,&FhoFPFPFP>8)7#-FZ6#;FPFap-%&ERRORG6#%`rThe~number~of~homomo
rphisms~(second~argument)~should~be~one~less~than~the~number~of~cochain~modules
~(first~argument)!G>Fhp-F\o6#-F_o6$Fao-Fco6#-FfoFcp7$-Fco6#-F_o6$f*6#%"aGF66$%)
operatorG%&arrowGF66$&T$6#&T%Fin-%%copyG6#&T(6#&T)FinF6F66*F+F^pF3FhpF&FUF0FW7#
-FZ6#;FPFho&F^p6#&FhpF@F6F6F6F6,
Q3homalg/MakeCoseq.mF6
M7R0
I7homalg/NatTrImToTargetf*6&%"AG%"NG%$varG%,RingPackageG6%%#RPG%$narG%%optsG6%%
fnCopyright~(C)~2007~by~Mohamed~Barakat.~All~rights~reserved.G%'systemG%)rememb
erG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F4%*procedureG-%'RETURN
G6#-F46#&F:6#;""",&F<FKF=F<@%2,&""#FKF=FK9#>8&-%%copyG6#-%2homalg/GetOptionsG6$
&F:6#;""$FLF4>&FS6#Q2number_of_optionsF1""!@$2,&FQFKFinF<,&FgnFKF=FK-FD6#-%1hom
alg/ImageFEmbG6#F:-%0homalg/ImageEmbGFeoF1F1F1F1,
Q9homalg/NatTrImToTarget.mF1
M7R0
IAhomalg/NatTrPullbackToTwoSourcesf*6)%#AAG%$phiG%#B_G%&beta1G%"BG%$varG%,RingP
ackageG6%%#RPG%$narG%%optsG6%%[oCopyright~(C)~2004-2007~by~Mohamed~Barakat.~All
~rights~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%
@$-%%typeG6$F7%*procedureG-%'RETURNG6#-F76#&F=6#;""",&F?FNF@F?@%2,&""$FNF@FN9#>
8&-%%copyG6#-%2homalg/GetOptionsG6$&F=6#;""%FOF7>&FV6#Q2number_of_optionsF4""!@
$2,&FTFNF\oF?,&""'FNF@FN-FG6#-%;homalg/PullbackPairOfMapsFG6#F=-%:homalg/Pullba
ckPairOfMapsGFioF4F4F4F4,
QChomalg/NatTrPullbackToTwoSources.mF4
M7R0
I9homalg/ParametrizeModulef*6%%#_MG'%$varG%%listG%,RingPackageG65%#RPG%$narG%%o
ptsG%"MG%$ANYG%$ALLG%/ONLY_IF_RANK_1G%"vG%#MIG%"SG%"mG%"nG%"rG%#rMG%"aG%"PG%"lG
%"sG%$syzG6%%^pCopyright~(C)~2003-2007~by~Mohamed~Barakat~and~Daniel~Robertz.~A
ll~rights~reserved.G%'systemG%)rememberG6"C7>8$-%1homalg/tablenameG6%9!&9"6#!""
8%@$-%%typeG6$FE%*procedureG-%'RETURNG6#-FE6#&FK6#;""",&FMFfnFNFM@$2,&""#FfnFNF
fn9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&FK6#;""$FgnFE>8'-%6homalg/NormalizeInp
utG6$9$FE@%-%)assignedG6#&F^o6#Q+pos_of_ANYFB>8(%%trueG>Fgp%&falseG@%-Fap6#&F^o
6#Q+pos_of_ALLFB>8)Fhp>FbqFjp@%-Fap6#&F^o6#Q6pos_of_ONLY_IF_RANK_1FB>8*Fhp>F[rF
jp>8+-%5homalg/NormalizeRingG6$9%FE@$30&F^r6#F[o7"4-Fap6#&F^o6#Q,pos_of_RANKFBC
%@$F[r-%&ERRORG6#%bxThe~option~"ONLY_IF_RANK_1"~cannot~be~used~here,~since~the~
ring~is~a~residue~class~ring~and~the~module~might~not~be~FFR.~If~however~you~al
ready~know~the~rank~of~the~module~you~can~specify~it~using~the~option~"RANK".G@
$Fbq-Fbs6#%gwThe~option~"ALL"~cannot~be~used~here,~since~the~ring~is~a~residue~
class~ring~and~the~module~might~not~be~FFR.~If~however~you~already~know~the~ran
k~of~the~module~you~can~specify~it~using~the~option~"RANK".G>FgpFhp>8,-%2homalg
/InvolutionG6%FjoFbrFE>8--%3homalg/SyzygiesOpFG6%F[tFbrFE@$Fgp-FU6#-F]t6%F`tFbr
FE>8.-&FE6#%-NumberOfRowsG6#F`t>8/-&FE6#%3NumberOfGeneratorsGF_u@%FjrC$>80&F^o6
#Q%RANKFB@$4-FQ6$Fiu%*nonnegintG-Fbs6#%coThe~right~hand~side~of~the~"RANK"~opti
on~must~be~a~non-negative~integer.G>Fiu-%;homalg/EulerCharacteristicGFht@$F[rC$
>81-FgvF^t@$0F[wFfn-FU6#%%FAILG@$/,&FauFfnFiuFM""!@%Fbq-FU6#7#FgtFet>82-&%)comb
inatG6#%'chooseG6$7#-%"$G6#;FfnFjtFdw>83%%NULLG?&84F[xFhpC%>85-&FE6#%,CertainRo
wsG6$F`tF[y>86-%6homalg/SyzygiesModuleG6&-F`o6#F^yFhrFbrFE@$-%3homalg/IsFreeBas
isG6%FeyFbrFEC$>Fhx6$Fhx-F\p6$-%:homalg/ReduceRingElementsG6%-F]t6%FiyFbrFEFbrF
EFE@$4Fbq-FU6#Fgz-%$mapG6$&FE6#%'matrixG7#FhxFBFBFBFB,
Q;homalg/ParametrizeModule.mFB
M7R0
I8homalg/PresentationInfof*6%%"MG%$varG%,RingPackageG6'%#RPG%$narG%"BG%"CG%"HG6
#%fnCopyright~(C)~2004~by~Mohamed~Barakat.~All~rights~reserved.G6"C&>8$-%1homal
g/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F3%*procedureG-%'RETURNG6#-F36#&F96#;""",
&F;FJF<F;>8&-%3homalg/BetterBasisG6&9$9%Q3ALLOW_EMPTY_OUTPUTF0F3@%0-%4homalg/Le
ftinverseFG6%FQFRF3%%FAILGQ%zeroF0Q)non-zeroF0F0F0F0F0,
Q:homalg/PresentationInfo.mF0
M7R0
I/homalg/Pushoutf*6(%(_alpha1G%"AG%%_psiG%#B_G%$varG%,RingPackageG6.%#RPG%$narG
%%optsG%'alpha1G%$psiG%*minus_oneG%$posG%)optionalG%%ApB_G%+alpha1_psiG%#poG%$e
piG6%%fnCopyright~(C)~2007~by~Mohamed~Barakat.~All~rights~reserved.G%'systemG%)
rememberG6"C0>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F?%*procedureG-%'
RETURNG6#-F?6#&FE6#;""",&FGFVFHFG@%2,&""$FVFHFV9#>8&-%%copyG6#-%2homalg/GetOpti
onsG6$&FE6#;""%FWF?>&Fhn6#Q2number_of_optionsF<""!@$2,&FfnFVFdoFG,&""&FVFHFV-FO
6#-%0homalg/PushoutFG6#FE>8'-%6homalg/NormalizeInputG6$9$F?>8(-Fep6$9&F?>Fhn-Fj
n6#-F]o6$&FE6#;""'FWF?>8*%%NULLG@$-%)assignedG6#&Fhn6#QApos_of_var_to_assign_Co
kernelEpiF<>Fgq6$Fgq/F]rFhq@$-F[r6#&Fhn6#QGpos_of_var_to_assign_functor_on_obje
ctF<>Fgq6$Fgq/FfrFhq>8+-%#opG6#-%'subsopG6$Fgq7#Fbq>8,-%/homalg/DiagMatG6%9%9'F
?>8--&F?6#%/UnionOfColumnsG6$FcpFip@%-F[r6#&Fhn6#Q:var_to_assign_CokernelEpiF<C
%>8/-%3homalg/CokernelEpiG6(F]tFfs9(/Q@var_to_assign_functor_on_objectF<8.F]sF?
-%'assignG6$Fft-Fjn6#F[uFbu-%0homalg/CokernelG6'F]tFfsF_uF]sF?F<F<F<F<,
Q1homalg/Pushout.mF<
M7R0
I;homalg/BasisOfColumnModulef*6%%"MG'%$varG%%listG%,RingPackageG6$%#RPG%$narG6%
%fnCopyright~(C)~2008~by~Mohamed~Barakat.~All~rights~reserved.G%'systemG%)remem
berG6"C%>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F4%*procedureG-%'RETUR
NG6#-F46#&F:6#;""",&F<FKF=F<-%2homalg/InvolutionG6%-%6homalg/NormalizeInputG6$-
%5homalg/BasisOfModuleG6%-FN6%9$9%F4FYF4F4FYF4F1F1F1F1,
Q=homalg/BasisOfColumnModule.mF1
M7R0
I6homalg/DecideZeroRowsf*6&%"LG%"BG'%$varG%%listG%,RingPackageG6$%#RPG%$narG6%%
fnCopyright~(C)~2008~by~Mohamed~Barakat.~All~rights~reserved.G%'systemG%)rememb
erG6"C%>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F5%*procedureG-%'RETURN
G6#-F56#&F;6#;""",&F=FLF>F=-&F56#%'matrixG6#-%6homalg/NormalizeInputG6$-%.homal
g/ReduceG6&-FT6$9$F5-FT6$9%F59&F5F5F2F2F2F2,
Q8homalg/DecideZeroRows.mF2
M7R0
IDhomalg/DecideZeroColumnsEffectivelyf*6'%"AG%"BG'%$varG%%listG%"VG%,RingPackag
eG6&%#RPG%$narG%"UG%"CG6%%fnCopyright~(C)~2008~by~Mohamed~Barakat.~All~rights~r
eserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%type
G6$F8%*procedureG-%'RETURNG6#-F86#&F>6#;""",&F@FOFAF@>8'-%3homalg/ReduceCoeffG6
'-%2homalg/InvolutionG6%9$9&F8-FW6%9%FZF8FZ8&F8-%'assignG6$9'-FW6%FhnFZF8-FW6%F
RFZF8F5F5F5F5,
QFhomalg/DecideZeroColumnsEffectively.mF5
M7R0
I6homalg/MonomialMatrixf*6&%"iG'%%varsG%%listG'%$varGF(%,RingPackageG6%%#RPG%$n
arG%"MG6#%[oCopyright~(C)~2009-2012~by~Mohamed~Barakat.~All~rights~reserved.G6"
C&>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F5%*procedureG-%'RETURNG6#-F
56#&F;6#;""",&F=FLF>F=>8&-%$mapG6%%(convertG-&%)combinatG6#%'chooseG6$-FQ6$f*6#
%"aGF26$%)operatorG%&arrowGF2-%"$G6$9$T$F2F26$F%F_o9%F_o%"*G-&F56#%'matrixG6#-F
go6%-%%nopsG6#FOFLFOF2F2F2F2,
Q8homalg/MonomialMatrix.mF2
M7R0
I/homalg/version"-Z@J07?6",
Q1homalg/version.mF$
M7R0
I.homalg/AddMatf*6&%"AG%"BG'%$varG%%listG%,RingPackageG6%%#RPG%$narG%"vG6#%[oCo
pyright~(C)~2004-2005~by~Mohamed~Barakat.~All~rights~reserved.G6"C&>8$-%1homalg
/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F4%*procedureG-%'RETURNG6#-F46#&F:6#;""",&
F<FKF=F<>8&-%8homalg/ResidueClassRingG6$9&F4@%/FN-&F46#%%ZeroG6#FKC$-&F46#%)sim
plifyG6$-%&evalmG6#,&9$FK9%FKFR-&F46#%'matrixG6#%"%GC&FenF`o-%:homalg/ReduceRin
gElementsG6%FeoFRF4F`oF1F1F1F1,
Q0homalg/AddMat.mF1
M7R0
I?homalg/AreEquivalentExtensionsf*6/%#N1G%'alpha1G%#E1G%&beta1G%#M1G%$phiG%#N2G
%'alpha2G%#E2G%&beta2G%#M2G%$varG%,RingPackageG6'%#RPG%$narG%%optsG%(VERBOSEG%"
bG6%%fnCopyright~(C)~2007~by~Mohamed~Barakat.~All~rights~reserved.G%'systemG%)r
ememberG6"C*>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F?%*procedureG-%'R
ETURNG6#-F?6#&FE6#;""",&FGFVFHFG@$2,&"#7FVFHFV9#>8&-%%copyG6#-%2homalg/GetOptio
nsG6$&FE6#;"#8FWF?@%-%)assignedG6#&Fhn6#Q/pos_of_VERBOSEF<>8'%%trueG>F[p%&false
G@$4-%:homalg/EqualPresentationsG6&9$9*Q2IGNORE_GENERATORSF<F?-%&ERRORG6#%YThe~
two~submodules~must~have~identical~sets~of~relationsG@$F`p-Fhp6#%gnThe~two~fact
or~modules~must~have~identical~sets~of~relationsG>8(7&-%-homalg/IsHomG6(9&9)9,9
/Q(VERBOSEF<F?-%3homalg/IsBijectiveGFdq-%1homalg/IsZeroMapG6'-%.homalg/SubMatG6
&-%/homalg/ComposeG6&9%FfqFhqF?9+FhqF?FgqFhqFiqF?-F]r6'-F`r6&-Fcr6&Ffq9-FhqF?9'
FhqF?9.FhqFiqF?@%/-%(convertG6$F`q%$setG<#F\pF\p@%F[p-%$zipG6%f*6$%"xG%"yGF<6$%
)operatorG%&arrowGF</FdpFerF<F<F<7&Q$homF<Q$isoF<Q)commute1F<Q)commute2F<F`qF^p
F<F<F<F<,
QAhomalg/AreEquivalentExtensions.mF<
M7R0
I2homalg/Ext2OnSeqsf*6'%"qG%"LG'%&alphaG<$%&tableG%%listG%%_varG%,RingPackageG6
%%#RPG%$narG%(functorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All~rights~re
served.G%'systemG%)rememberG6"C&>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG
6$F9%*procedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA>8&-%4homalg/Functor_Ext2G6
$9$9%-%5homalg/FunctorOnSeqsG6$FS&F?6#;""$FAF6F6F6F6,
Q4homalg/Ext2OnSeqs.mF6
M7R0
I0homalg/Extq2Mapf*6)%"qG%"LG%"MG%$phiG%"NG'%$varG%%listG%,RingPackageG6&%#RPG%
$narG%)optionalG%(functorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All~right
s~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%t
ypeG6$F:%*procedureG-%'RETURNG6#-F:6#&F@6#;""",&FBFQFCFB>8&&F@6#;""(FR>8'f*6#F'
F7F7F7-%,homalg/ExtqG6&T$T&9$&F@6#;""#FBF7F76&F%F\oF&9%-%2homalg/FunctorMapG6)F
Z7#9&9'7#9(9)FTF:F7F7F7F7,
Q2homalg/Extq2Map.mF7
M7R0
I7homalg/Functor_HomHom2f*6$%"AG%"BG6"6%%fnCopyright~(C)~2006~by~Mohamed~Baraka
t.~All~rights~reserved.G%'systemG%)rememberGF'7(f*6#%"MGF'F'F'-%.homalg/HomHomG
6&T$9$T&&9"6#;""#!""F'F'6&F%F4F&9%f*6%F/%$phiG%"NGF'F'F'-%2homalg/HomHom2MapG6(
F3F4F=9&F5&F76#;""%F;F'F'F<F4f*6#%"PGF'F'F'f*F?F'F'F'-%1homalg/HomHomMapG6(F4F=
FEF3F5FFF'F'6&FLF4F&F3F'F'6$F&F=F=f*FKF'F'F'f*F?F'F'F'-%2homalg/HomHom3MapG6(F3
F5F4F=FEFFF'F'6&F%F3FLF4F'F'6$F%F4F'F'F'F',
Q9homalg/Functor_HomHom2.mF'
M7R0
I8homalg/Functor_HomHom_Rf*6"F$6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All~
rights~reserved.G%'systemG%)rememberGF$7$%0homalg/HomHom_RG%3homalg/HomHomMap_R
GF$F$F$F$,
Q:homalg/Functor_HomHom_R.mF$
M7R0
I5homalg/FunctorOnSeqFf*6&%)_functorG'%%homsG<$%&tableG%%listG%$varG%,RingPacka
geG6)%#RPG%$narG%(functorG%#hiG%"hG%'H_homsG%"iG6%%fnCopyright~(C)~2005~by~Moha
med~Barakat.~All~rights~reserved.G%'systemG%)rememberG6"C*>8$-%1homalg/tablenam
eG6%9!&9"6#!""8%@$-%%typeG6$F<%*procedureG-%'RETURNG6#-F<6#&FB6#;""",&FDFSFEFD@
%-FH6$9$F*@%2""!-%%nopsG6#FX>8&&FX6#FS-%&ERRORG6#%enThe~first~argument~providin
g~the~functor~is~an~empty~list!G>FjnFX@%-FH6$9%F*>8'7#-%"$G6#;FS-Fgn6#Feo>Fgo-%
%sortG6#-%$mapG6$%$lhsG-%#opG6#-%%evalGF^p>8(-Fgn6#Fgo>8)-F)F9?&8*7#-Fjo6#;FSF]
q%%trueG>&Faq6#,&&Fgo6#FdqFSFDFS-Fjn6%&Feo6#F^r9&F<-%%copyG6#FaqF9F9F9F9,
Q7homalg/FunctorOnSeqF.mF9
M7R0
I4homalg/Functor_Torqf*6$%"qG%"BG6"6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~
All~rights~reserved.G%'systemG%)rememberGF'7&f*6#%"MGF'F'F'-%,homalg/TorqG6&T$9
$T&&9"6#;""#!""F'F'6&F%F4F&9%f*6%F/%$phiG%"NGF'F'F'-%/homalg/TorqMapG6(F3F4F=9&
F5&F76#;""%F;F'F'F<F=f*6#%"PGF'F'F'f*F?F'F'F'-%0homalg/Torq2MapG6(F3F5F4F=FEFFF
'F'6&F%F3FLF4F'F'6$F%F4F'F'F'F',
Q6homalg/Functor_Torq.mF'
M7R0
I@homalg/Functor_TorsionSubmodulef*6"F$6%%fnCopyright~(C)~2006~by~Mohamed~Barak
at.~All~rights~reserved.G%'systemG%)rememberGF$7$%8homalg/TorsionSubmoduleG%;ho
malg/TorsionSubmoduleMapGF$F$F$F$,
QBhomalg/Functor_TorsionSubmodule.mF$
M7R0
I6homalg/GetConvertInfof*6%'%"MG<$%%listG%4homalg_presentationG%$varG%,RingPack
ageG6+%#RPG%$narG%$genG%%gen1G%"cG%"rG%"nG%"kG%.convert_procsG6#%[oCopyright~(C
)~2005-2007~by~Mohamed~Barakat.~All~rights~reserved.G6"C&>8$-%1homalg/tablename
G6%9!&9"6#!""8%@$-%%typeG6$F;%*procedureG-%'RETURNG6#-F;6#&FA6#;""",&FCFRFDFC@'
-FG6$9$F)>8&-%@homalg/GeneratorsOfPresentationG6$FWF;-FG6$FW-F(6#%"=G>FY-%$mapG
6$%$rhsGFW>FYFW@)/FY7"-%&ERRORG6#%Athe~list~of~generators~is~empty!G-FG6$&FY6#F
R&F;6#%+matrixtypeGC)>8'-%6homalg/NormalizeInputG6$F[pF;>8,-%&tableGF8>&Fgp6#Q5
normalize_generatorsF8f*6#%"aGF86$%)operatorG%&arrowGF8-F^o6$%#opG-Fdp6$-%2homa
lg/InvolutionG6%FWT$T%F]rF8F86&F*9%F-F;>8(-&F;6#%3NumberOfGeneratorsG6#Fbp>8)-&
F;6#%-NumberOfRowsGFfr>&Fgp6#Q4readjust_generatorsF8f*6#%"bGF8FaqF8-Fjq6%-F^o6$
f*F_qF8FaqF8&F\r6#;,&*&FWFRF]rFRFRFRFR*&F]rFR,&FWFRFRFRFRF8F86&FcsFWF2T)7#-%"$G
6#;""!,&T#FRFCFRT&T'F8F86*F1FarF*F_rF-F;F2Fhr-%%copyG6#Fgp-FG6$F[p-F(6#F]pC*>Fb
p-F^o6%FdpF[pF;>FgpFhp>F[qf*F_qF8FaqF8-F^o6$Ffq-F^o6%-%"@G6$Ffq%(convertGFW%)li
stlistGF8F8F8>Far-F^o6$FcrFbp>Fhr-F^o6$FjrFbp>8*-%%nopsG6#Fhr>F^sf*FbsF8FaqF8-F
^o6$f*6#%"iGF8FaqF8-&F]r6#%'matrixG6#-F^o6$f*F_qF8FaqF8&F\r6#;,(-%$sumG6$*&&F]r
6#F[uFR&FatFgxFR/F[u;FR,&T,FRFCFRFR*&&F]r6#F\yFRFWFRFRFRFR,&FbxFR*&F^yFRF_tFRFR
F8F86,FcsT(F1FatF4T+F2FitFewFW7#-Fdt6#;Fgt,&&Fit6#FWFRFCFRF8F86,F2F]rF-F[uFcsFW
F1FatF4Fdy7#-Fdt6#;FRFitF8F86,F3F[wF2FhrF-F;F1FarF48+F]u%%NULLGF8F8F8F8,
Q8homalg/GetConvertInfo.mF8
M7R0
I2homalg/Hom2OnSeqsf*6&%"LG'%&alphaG<$%&tableG%%listG%%_varG%,RingPackageG6%%#R
PG%$narG%(functorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All~rights~reserv
ed.G%'systemG%)rememberG6"C&>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F8
%*procedureG-%'RETURNG6#-F86#&F>6#;""",&F@FOFAF@>8&-%4homalg/Functor_Hom2G6#9$-
%5homalg/FunctorOnSeqsG6$FR&F>6#;""#F@F5F5F5F5,
Q4homalg/Hom2OnSeqs.mF5
M7R0
I3homalg/Hom_ROnSeqsf*6%'%&alphaG<$%&tableG%%listG%%_varG%,RingPackageG6%%#RPG%
$narG%*cofunctorG6%%fnCopyright~(C)~2004~by~Mohamed~Barakat.~All~rights~reserve
d.G%'systemG%)rememberG6"C&>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F7%
*procedureG-%'RETURNG6#-F76#&F=6#;""",&F?FNF@F?>8&7%%-homalg/Hom_RG%0homalg/Hom
Map_RG%2homalg/InvolutionG-%7homalg/CofunctorOnSeqsG6$FQ&F=6#;FNF?F4F4F4F4,
Q5homalg/Hom_ROnSeqs.mF4
M7R0
I9homalg/ImageOfSubmoduleFf*6&%"AG%"BG'%$varG%%listG%,RingPackageG6$%#RPG%$narG
6#%fnCopyright~(C)~2007~by~Mohamed~Barakat.~All~rights~reserved.G6"C&>8$-%1homa
lg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F3%*procedureG-%'RETURNG6#-F36#&F96#;"""
,&F;FJF<F;-%/homalg/ComposeG6%-%6homalg/NormalizeInputG6$&F96#FJF3-FP6$&F96#""#
F3&F96#;""$F;-%4homalg/RingNotationG6$-FP6$%"%GF3F3F0F0F0F0,
Q;homalg/ImageOfSubmoduleF.mF0
M7R0
I4homalg/IsInjectiveFf*6%%"AG%$varG%,RingPackageG6%%#RPG%$narG%$kerG6#%fnCopyri
ght~(C)~2006~by~Mohamed~Barakat.~All~rights~reserved.G6"C&>8$-%1homalg/tablenam
eG6%9!&9"6#!""8%@$-%%typeG6$F1%*procedureG-%'RETURNG6#-F16#&F76#;""",&F9FHF:F9>
8&-%/homalg/KernelFG6#F7-%4homalg/IsZeroModuleG6%FK9%F1F.F.F.F.,
Q6homalg/IsInjectiveF.mF.
M7R0
I5homalg/IsSurjectiveFf*6%%"AG%$varG%,RingPackageG6%%#RPG%$narG%&cokerG6#%fnCop
yright~(C)~2006~by~Mohamed~Barakat.~All~rights~reserved.G6"C&>8$-%1homalg/table
nameG6%9!&9"6#!""8%@$-%%typeG6$F1%*procedureG-%'RETURNG6#-F16#&F76#;""",&F9FHF:
F9>8&-%1homalg/CokernelFG6#F7-%4homalg/IsZeroModuleG6%FK9%F1F.F.F.F.,
Q7homalg/IsSurjectiveF.mF.
M7R0
I6homalg/LHomHom2OnSeqsf*6(%"qG%"AG%"BG'%&alphaG<$%&tableG%%listG%%_varG%,RingP
ackageG6%%#RPG%$narG%*cofunctorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All
~rights~reserved.G%'systemG%)rememberG6"C&>8$-%1homalg/tablenameG6%9!&9"6#!""8%
@$-%%typeG6$F:%*procedureG-%'RETURNG6#-F:6#&F@6#;""",&FBFQFCFB>8&-%8homalg/Func
tor_LHomHom2G6%9$9%9&-%7homalg/CofunctorOnSeqsG6$FT&F@6#;""%FBF7F7F7F7,
Q8homalg/LHomHom2OnSeqs.mF7
M7R0
I6homalg/LHomHom3OnSeqsf*6(%"qG%"AG%"BG'%&alphaG<$%&tableG%%listG%%_varG%,RingP
ackageG6%%#RPG%$narG%(functorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All~r
ights~reserved.G%'systemG%)rememberG6"C&>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$
-%%typeG6$F:%*procedureG-%'RETURNG6#-F:6#&F@6#;""",&FBFQFCFB>8&-%8homalg/Functo
r_LHomHom3G6%9$9%9&-%5homalg/FunctorOnSeqsG6$FT&F@6#;""%FBF7F7F7F7,
Q8homalg/LHomHom3OnSeqs.mF7
M7R0
I2homalg/LHomHomMapf*6*%"qG%"MG%$phiG%"NG%"AG%"BG'%$varG%%listG%,RingPackageG6&
%#RPG%$narG%)optionalG%(functorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All
~rights~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%
@$-%%typeG6$F;%*procedureG-%'RETURNG6#-F;6#&FA6#;""",&FCFRFDFC>8&&FA6#;"")FS>8'
f*6#F&F8F8F8-%/homalg/LHomHomG6'T$9$T&T(&FA6#;""#FCF8F86(F%F\oF)9(F*9)-%2homalg
/FunctorMapG6)Fen7#9%9&7#9'9*FUF;F8F8F8F8,
Q4homalg/LHomHomMap.mF8
M7R0
I4homalg/LHomHomMap_Rf*6(%"qG%"MG%$phiG%"NG'%$varG%%listG%,RingPackageG6&%#RPG%
$narG%)optionalG%(functorG6%%ioCopyright~(C)~2005~by~Mohamed~Barakat~and~Daniel
~Robertz.~All~rights~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6
%9!&9"6#!""8%@$-%%typeG6$F9%*procedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA>8&&
F?6#;""'FQ>8'f*6#F&F6F6F6-%1homalg/LHomHom_RG6%T$9$&F?6#;""#FAF6F66$F%Fjn-%2hom
alg/FunctorMapG6)FY7#9%9&7#9'9(FSF9F6F6F6F6,
Q6homalg/LHomHomMap_R.mF6
M7R0
I3homalg/ReduceCoefff*6&%#_AG%#_BG'%$varG%%listG%,RingPackageG6.%#RPG%$narG%"AG
%"BG%"zG%"iG%&tvarAG%#AAG%"bG%&tvarBG%#BBG%"NG6%%ioCopyright~(C)~2004~by~Mohame
d~Barakat~and~Daniel~Robertz.~All~rights~reserved.G%'systemG%)rememberG6"C0>8$-
%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F?%*procedureG-%'RETURNG6#-F?6#&FE
6#;""",&FGFVFHFG>8&-%6homalg/NormalizeInputG6$9$F?>8'-Fen6$9%F?@$0-&F?6#%3Numbe
rOfGeneratorsG6#FY-F`o6#Fin-%&ERRORG6#%VThe~two~matrices~have~different~numbers
~of~'columns'!G>8,-&F?6#%-NumberOfRowsGFeo>8(-&F?6#%%ZeroG6#F[p>8*7#-%"$G6$Fap-
F]pFco>8+-&F?6#%'AddRhsG6%FY9&Fhp>8--%7homalg/StdBasisVectorsG6$F[pF?>8.-Faq6%F
inFeqFgq>8/-%.homalg/ReduceG6&F_qF\rFeqF?@$32,&""$FVFHFV9#-FK6$&FE6#""%%'symbol
GC%-&F?6#%(GetSideG6&%$rhsGF`rFeqFgq-Fen6$%"%GF?-%'assignG6$F\s-&F?6#%'matrixG6
#Fis-Fbs6&%$lhsGF`rFeqFhpF<F<F<F<,
Q5homalg/ReduceCoeff.mF<
M7R0
I:homalg/ResolutionOfModulef*6%%#_MG'%$varG%%listG%,RingPackageG62%#RPG%$narG%%
optsG%"sG%"gG%"TG%#trG%#lbG%"MG%"ZG%"BG%"RG%"nG%"rG%#SBG%"SG6%%fnCopyright~(C)~
2006~by~Mohamed~Barakat.~All~rights~reserved.G%'systemG%)rememberG6"C2>8$-%1hom
alg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$FB%*procedureG-%'RETURNG6#-FB6#&FH6#;""
",&FJFYFKFJ@$2,&""#FYFKFY9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&FH6#;""$FZFB@%-
%)assignedG6#&F[o6#Q)SIMPLIFYF?C$>8'Fjo@$4-FN6$F_p%(booleanG-%&ERRORG6#%Rexpect
ing~boolean~value~for~the~"SIMPLIFY"~optionG>F_p%&falseG@%-Fho6#&F[o6#Q*GEOMETR
ICF?C$>8(F^q@$4-FN6$FcqFdp-Ffp6#%Sexpecting~boolean~value~for~the~"GEOMETRIC"~o
ptionG>FcqFjp@%-Fho6#&F[o6#Q0TARGETRELATIONSF?>8)-%6homalg/NormalizeInputG6$F_r
FB>Fcr7"@%-Fho6#&F[o6#Q)TRUNCATEF?C$>8*F\s@$4-FN6$Fas%(integerG-Ffp6#%Oexpectin
g~an~integer~for~the~"TRUNCATE"~optionG>FasFJ@%-Fho6#&F[o6#Q+LOWERBOUNDF?C$>8+F
^t@$4-FN6$Fct%*nonnegintG-Ffp6#%gnexpecting~a~non-negative~integer~for~the~"LOW
ERBOUND"~optionG>Fct""!>8,-Fer6$9$FB@$330FasF]u2FasFct2F]uFas-Ffp6&%."LOWERBOUN
D"=GFct%<is~greater~than~"TRUNCATE"=GFas@%Fcq>8.F_u>F_v-%<homalg/ReducedBasisOf
ModuleG6'F_u9%Q.COMPUTE_BASISF?Q1NO_RING_NOTATIONF?FB@$/FasF]u-FR6#7#-&FB6#%'ma
trixG6#F_v>8/F_v>80FY?(F?FYFYF?30F_vFhr52FasF]u2,&FdwFYFJFYFasC%>81-&FB6#%3Numb
erOfGeneratorsGF`w@%/FdwFY@%/F_v-%7homalg/StdBasisVectorsG6$F^xFB@%0FcrFhrC%>82
-Fbv6)FcrFdvFevQ0RETURN_SYZYGIESF?Q2ALLOW_EMPTY_BASISF?FfvFB>83&F^y6#FY>F_v&F^y
6#Fhn>F_vFhrC$>F_v-%:homalg/SyzygiesGeneratorsG6&F_vFcrFdvFB@$FgwC%>F^y-Fbv6)F_
vFdvFevFayFbyFfvFB>FdyFey>F_vFhy@%0FdyFhrC%>F^y-Fbv6)FdyFdvFevFayFbyFfvFB>FdyFe
y>F_vFhy>F_vFhr@$FgwC$>Fbw6$F_vFbw>Fdw,&FdwFYFYFY@&/FctFdw7#-F]w6#7#-&FB6#%%Zer
oG6#-&FB6#%-NumberOfRowsG6#&7#FbwFfy1FctF[x-%$mapG6$F]w7#&Fbw6#;FY,&FctFJFJFYF?
F?F?F?,
Q<homalg/ResolutionOfModule.mF?
M7R0
I:homalg/SyzygiesGeneratorsf*6&%$_M1G%$_M2G'%$varG%%listG%,RingPackageG6(%#RPG%
$narG%#M1G%#M2G%"LG%)CompCondG6%%fnCopyright~(C)~2004~by~Mohamed~Barakat.~All~r
ights~reserved.G%'systemG%)rememberG6"C)>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$
-%%typeG6$F9%*procedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA>8&-%6homalg/Normal
izeInputG6$9$F9>8'-FU6$9%F9>8(-&F96#%,UnionOfRowsG6$-&F96#%'AddRhsG6$FS9&FY-%5h
omalg/BasisOfModuleG6&FhnFco8)F9FgoF6F6F6F6,
Q<homalg/SyzygiesGenerators.mF6
M7R0
I3homalg/SyzygiesOpFf*6%%"AG'%$varG%%listG%,RingPackageG6$%#RPG%$narG6%%^pCopyr
ight~(C)~2003-2004~by~Daniel~Robertz~and~Mohamed~Barakat.~All~rights~reserved.G
%'systemG%)rememberG6"C%>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F4%*pr
ocedureG-%'RETURNG6#-F46#&F:6#;""",&F<FKF=F<&-%:homalg/ResolutionOfModuleG6(9$9
%/Q)TRUNCATEF1FK/Q+LOWERBOUNDF1FK/Q*GEOMETRICF1%%trueGF46#FKF1F1F1F1,
Q5homalg/SyzygiesOpF.mF1
M7R0
I0homalg/Torq2Mapf*6)'%"qG%*nonnegintG%"LG%"MG%$phiG%"NG'%$varG%%listG%,RingPac
kageG6&%#RPG%$narG%)optionalG%(functorG6%%fnCopyright~(C)~2006~by~Mohamed~Barak
at.~All~rights~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"
6#!""8%@$-%%typeG6$F<%*procedureG-%'RETURNG6#-F<6#&FB6#;""",&FDFSFEFD>8&&FB6#;"
"(FT>8'f*6#F)F9F9F9-%,homalg/TorqG6&T$T&9$&FB6#;""#FDF9F96&F&F^oF(9%-%2homalg/F
unctorMapG6)Ffn7#9&9'7#9(9)FVF<F9F9F9F9,
Q2homalg/Torq2Map.mF9
M7R0
I<homalg/TorsionFreeFactorMapf*6'%"MG%$phiG%"NG'%$varG%%listG%,RingPackageG6&%#
RPG%$narG%)optionalG%(functorG6%%fnCopyright~(C)~2007~by~Mohamed~Barakat.~All~r
ights~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$
-%%typeG6$F8%*procedureG-%'RETURNG6#-F86#&F>6#;""",&F@FOFAF@>8&&F>6#;""&FP>8'%9
homalg/TorsionFreeFactorG-%2homalg/FunctorMapG6)FX7#9$9%7#9&9'FRF8F5F5F5F5,
Q>homalg/TorsionFreeFactorMap.mF5
M7R0
IQhomalg/AModuleForATwoExtensionFromTwoOneCocyclesf*6)%#_MG%&etaMNG%#_NG%&etaNL
G%#_LG%$varG%,RingPackageG6,%#RPG%$narG%"MG%"NG%"LG%$syzG%"BG%"XG%#BbG%&etaMLG6
#%ioCopyright~(C)~2008~by~Mohamed~Barakat~and~Barbara~Bremer.~All~rights~reserv
ed.G6"C->8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F<%*procedureG-%'RETUR
NG6#-F<6#&FB6#;""",&FDFSFEFD>8(-%6homalg/NormalizeInputG6$&-%:homalg/Resolution
OfModuleG6&9(9)/Q)TRUNCATEF9""!F<6#FSF<>8'-FX6$&-Ffn6&9&FinFjnF<F]oF<>8&-FX6$&-
Ffn6&9$FinFjnF<F]oF<>8)-%%copyG6#&-%4homalg/SyzygiesDataG6&""#FgoFinF<6#Fgp>8*-
%/homalg/ComposeG6&F_p9%FinF<>8+-%3homalg/RightDivideG6&FjpF_oFinF<>8,-F\q6&F`q
9'FinF<>8--%3homalg/LeftDivideCG6'F_pFeqFVFinF<@%/Fjq%%FAILGF`r-%:homalg/Reduce
HomomorphismG6&FjqFVFinF<F9F9F9F9,
QShomalg/AModuleForATwoExtensionFromTwoOneCocycles.mF9
M7R0
IFhomalg/A2ExtensionModuleFromA2Cocyclef*6'%"MG%$etaG%"NG'%$varG%%listG%,RingPa
ckageG6%%#RPG%$narG%$extG6#%enCopyright~(C)~2007~by~Barbara~Bremer.~All~rights~
reserved.G6"C&>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F5%*procedureG-%
'RETURNG6#-F56#&F;6#;""",&F=FLF>F=>8&-%1homalg/ExtensionG6(""#9$9%9&9'F5-%Hhoma
lg/A2ExtensionModuleFromA2ExtensionG6%FOFWF5F2F2F2F2,
QHhomalg/A2ExtensionModuleFromA2Cocycle.mF2
M7R0
I3homalg/ZeroColumnsf*6%%#_MG'%$varG%%listG%,RingPackageG6%%#RPG%$narG%"MG6#%fn
Copyright~(C)~2008~by~Mohamed~Barakat.~All~rights~reserved.G6"C'>8$-%1homalg/ta
blenameG6%9!&9"6#!""8%@$-%%typeG6$F3%*procedureG-%'RETURNG6#-F36#&F96#;""",&F;F
JF<F;@$/8&7"-FC6#FO>FN-&F36#%'matrixG6#-&%'linalgG6#%*transposeG6#-FV6#-%6homal
g/NormalizeInputG6$9$F3-%0homalg/ZeroRowsG6%FN9%F3F0F0F0F0,
Q5homalg/ZeroColumns.mF0
M7R0
I0homalg/ZeroRowsf*6%%#_MG'%$varG%%listG%,RingPackageG6'%#RPG%$narG%"MG%"mG%"zG
6#%fnCopyright~(C)~2008~by~Mohamed~Barakat.~All~rights~reserved.G6"C)>8$-%1homa
lg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F5%*procedureG-%'RETURNG6#-F56#&F;6#;"""
,&F=FLF>F=@$/8&7"-FE6#FQ>FP-%:homalg/ReduceRingElementsG6%9$9%F5>8'-&F56#%-Numb
erOfRowsG6#FP>8(-&F56#%%ZeroG6#-&F56#%3NumberOfGeneratorsGFjn-%$mapG6$f*6#%"aGF
26$%)operatorG%&arrowGF2@$/&T%6#FXT#FXF2F26&F/F\oF-FP7#-%"$G6#;FLFenF2F2F2F2,
Q2homalg/ZeroRows.mF2
M7R0
I8homalg/BasisOfRowModulef*6%%"MG'%$varG%%listG%,RingPackageG6$%#RPG%$narG6%%fn
Copyright~(C)~2008~by~Mohamed~Barakat.~All~rights~reserved.G%'systemG%)remember
G6"C%>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F4%*procedureG-%'RETURNG6
#-F46#&F:6#;""",&F<FKF=F<-&F46#%'matrixG6#-%6homalg/NormalizeInputG6$-%5homalg/
BasisOfModuleG6#F:F4F1F1F1F1,
Q:homalg/BasisOfRowModule.mF1
M7R0
I(homalgF=6"%&falseGE\[lM%+KernelFMapGf*F$F$6%%fnCopyright~(C)~2004~by~Mohamed~
Barakat.~All~rights~reserved.G%'systemG%)rememberGF$C$30%3homalg/initializedG.%
%trueG0-%,homalg/initGF$""!-%2homalg/KernelFMapG6#9"F$F$F$%)CoimageFGf*F$F$6%%f
nCopyright~(C)~2006~by~Mohamed~Barakat.~All~rights~reserved.GF+F,F$C$F.-%0homal
g/CoimageFGF9F$F$F$%6LongExactHomologySeqFGf*F$F$6#%[oCopyright~(C)~2004-2006~b
y~Mohamed~Barakat.~All~rights~reserved.GF$C$F.-%=homalg/LongExactHomologySeqFGF
9F$F$F$%)PushoutFGf*F$F$6%%fnCopyright~(C)~2007~by~Mohamed~Barakat.~All~rights~
reserved.GF+F,F$C$F.-%0homalg/PushoutFGF9F$F$F$%/CompleteKerSqFGf*F$F$6#F*F$C$F
.-%6homalg/CompleteKerSqFGF9F$F$F$%,SyzygiesOpFGf*F$F$6%%^pCopyright~(C)~2003-2
004~by~Daniel~Robertz~and~Mohamed~Barakat.~All~rights~reserved.GF+F,F$C$F.-%3ho
malg/SyzygiesOpFGF9F$F$F$%,LeftDivideFGf*F$F$FRF$C$F.-%3homalg/LeftDivideFGF9F$
F$F$%1IsCommutativeSqFGf*F$F$FRF$C$F.-%8homalg/IsCommutativeSqFGF9F$F$F$%-Coker
nelFMapGf*F$F$F)F$C$F.-%4homalg/CokernelFMapGF9F$F$F$%-IsBijectiveFGf*F$F$6#FLF
$C$F.-%4homalg/IsBijectiveFGF9F$F$F$%3CohomologyModulesFGf*F$F$FRF$C$F.-%:homal
g/CohomologyModulesFGF9F$F$F$%1IsShortExactSeqFGf*F$F$FRF$C$F.-%8homalg/IsShort
ExactSeqFGF9F$F$F$%4PullbackPairOfMapsFGf*F$F$6%%[oCopyright~(C)~2004-2007~by~M
ohamed~Barakat.~All~rights~reserved.GF+F,F$C$F.-%;homalg/PullbackPairOfMapsFGF9
F$F$F$%'ImageFGf*F$F$FKF$C$F.-%.homalg/ImageFGF9F$F$F$%+KernelFEmbGf*F$F$6%%[oC
opyright~(C)~2003-2007~by~Mohamed~Barakat.~All~rights~reserved.GF+F,F$C$F.-%2ho
malg/KernelFEmbGF9F$F$F$%4LeftDerivedFunctorFGf*F$F$6#%[oCopyright~(C)~2005-200
6~by~Mohamed~Barakat.~All~rights~reserved.GF$C$F.-%;homalg/LeftDerivedFunctorFG
F9F$F$F$%/FunctorOnSeqsFGf*F$F$6%%fnCopyright~(C)~2005~by~Mohamed~Barakat.~All~
rights~reserved.GF+F,F$C$F.-%6homalg/FunctorOnSeqsFGF9F$F$F$%-CokernelFEpiGf*F$
F$FhpF$C$F.-%4homalg/CokernelFEpiGF9F$F$F$%8LongExactCohomologySeqFGf*F$F$6#Fip
F$C$F.-%?homalg/LongExactCohomologySeqFGF9F$F$F$%+IsZeroMapFGf*F$F$F)F$C$F.-%2h
omalg/IsZeroMapFGF9F$F$F$%,LeftDivideCGf*F$F$6#%enCopyright~(C)~2008~by~Barbara
~Bremer.~All~rights~reserved.GF$C$F.-%3homalg/LeftDivideCGF9F$F$F$%-IsInjective
FGf*F$F$6#F>F$C$F.-%4homalg/IsInjectiveFGF9F$F$F$%2ImageOfSubmoduleFGf*F$F$FhoF
$C$F.-%9homalg/ImageOfSubmoduleFGF9F$F$F$%*PullbackFGf*F$F$F)F$C$F.-%1homalg/Pu
llbackFGF9F$F$F$%*CokernelFGf*F$F$6%%[oCopyright~(C)~2004-2005~by~Mohamed~Barak
at.~All~rights~reserved.GF+F,F$C$F.-%1homalg/CokernelFGF9F$F$F$%-CompleteSeqFGf
*F$F$FbrF$C$F.-%4homalg/CompleteSeqFGF9F$F$F$%.IsSurjectiveFGf*F$F$F`tF$C$F.-%5
homalg/IsSurjectiveFGF9F$F$F$%0CofunctorOnSeqFGf*F$F$F)F$C$F.-%7homalg/Cofuncto
rOnSeqFGF9F$F$F$%(KernelFGf*F$F$F`uF$C$F.-%/homalg/KernelFGF9F$F$F$%*ImageFEpiG
f*F$F$FKF$C$F.-%1homalg/ImageFEpiGF9F$F$F$%1DefectOfHomsFMapGf*F$F$F)F$C$F.-%8h
omalg/DefectOfHomsFMapGF9F$F$F$%3PushoutPairOfMapsFGf*F$F$FKF$C$F.-%:homalg/Pus
houtPairOfMapsFGF9F$F$F$%/ConnectingHomFGf*F$F$FRF$C$F.-%6homalg/ConnectingHomF
GF9F$F$F$%1CompleteImSqInvFGf*F$F$FRF$C$F.-%8homalg/CompleteImSqInvFGF9F$F$F$%-
LeftinverseFGf*F$F$6#%ioCopyright~(C)~2004~by~Daniel~Robertz~and~Mohamed~Baraka
t.~All~rights~reserved.GF$C$F.-%4homalg/LeftinverseFGF9F$F$F$%+EqualMapsFGf*F$F
$F)F$C$F.-%2homalg/EqualMapsFGF9F$F$F$%1CofunctorOnSeqsFGf*F$F$F)F$C$F.-%8homal
g/CofunctorOnSeqsFGF9F$F$F$%.DefectOfHomsFGf*F$F$6%%^pCopyright~(C)~2003-2008~b
y~Mohamed~Barakat~and~Daniel~Robertz.~All~rights~reserved.GF+F,F$C$F.-%5homalg/
DefectOfHomsFGF9F$F$F$%*ImageFEmbGf*F$F$FKF$C$F.-%1homalg/ImageFEmbGF9F$F$F$%-R
ightDivideFGf*F$F$F^sF$C$F.-%4homalg/RightDivideFGF9F$F$F$%1HomologyModulesFGf*
F$F$FRF$C$F.-%8homalg/HomologyModulesFGF9F$F$F$%7RightDerivedCofunctorFGf*F$F$F
[rF$C$F.-%>homalg/RightDerivedCofunctorFGF9F$F$F$%.FunctorOnSeqFGf*F$F$FbrF$C$F
.-%5homalg/FunctorOnSeqFGF9F$F$F$%.CompleteImSqFGf*F$F$FRF$C$F.-%5homalg/Comple
teImSqFGF9F$F$F$F$,
Q*homalgF.mF$
M7R0
I5homalg/BasisOfModulef*6%%#_MG'%%_varG%%listG%,RingPackageG6/%#RPG%$narG%"vG%$
varG%)ring_relG%"MG%"mG%"nG%"BG%#BlG%#BrG%&ranklG%%rankG6%%[oCopyright~(C)~2004
-2005~by~Mohamed~Barakat.~All~rights~reserved.G%'systemG%)rememberG6"C*>8$-%1ho
malg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F?%*procedureG-%'RETURNG6#-F?6#&FE6#;"
"",&FGFVFHFG>8&-%5homalg/NormalizeRingG6$9%F?>8'&FY6#FV>8(&FY6#""#>8)-%6homalg/
NormalizeInputG6$9$F?>8*-&F?6#%3NumberOfGeneratorsG6#Fbo@%-%(hastypeG6$Fbo%"=GC
4>8+-Fjo6$FboQ$rhsF<>Fbo-%$mapG6$f*6#%"aGF<6$%)operatorG%&arrowGF<-F[q6$%#opG7$
-%$lhsG6#Ffo-%$rhsGFiqF<F<F<Fbo@$0F]o7">Fbo-&F?6#%,UnionOfRowsG6$Fbo-Fdo6$-%/ho
malg/DiagMatG6$-%"$G6$F]o,&FhoFVFepFVF?F?>8,-&F?6#%0TriangularBasisG6$FboFin@$4
-FK6$F_s&F?6#%+matrixtypeG>F_s-&F?6#%'matrixG6#F_s>F_s-Fdo6$F_sF?>8--&F?6#%/Cer
tainColumnsG6$F_s7#;FVFho>8.-Fht6$F_s7#;,&FVFVFhoFVFG>8/-%3homalg/RankOfGaussG6
$FftF?>80-FhuFdt>%0CompCond_homalgG-&F?6#%,CertainRowsG6$F_u7#;,&FfuFVFVFVF[v>F
ft-F`v6$Fft7#;FVFfu>F_u-F`v6$F_uFjv@$32,&F`oFVFHFV9#-FK6$&FE6#""$%'symbolG-%'as
signG6$FfwF^v@$/FftF^rC$>Fft7#-&F?6#%%ZeroG6#Fho>F_u7#-Fcx6#Fep@$/-Fjo6#FftFV>F
ft-F[q6$FeqFft@$/-Fjo6#F_uFV>F_u-F[q6$FeqF_u-%$zipG6%f*6$F_q%"bGF<F`qF</FfoFgnF
<F<F<FftF_uC*@$F]r>Fbo-Far6$Fbo-Fdo6$-Fhr6$-F[s6$F]oFhoF?F?>F_sF`s@$Ffs>F_sF]t>
F_sFct>F[vF\v>F_s-F`v6$F_s7#;FVF[v@$/F_sF^r>F_sFax@%/-FjoFatFV-F[q6$FeqF_sF_sF<
6#F^vF<F<,
Q7homalg/BasisOfModule.mF<
M7R0
I6homalg/DerMinusLogInvf*6%%"fG%$varG%,RingPackageG6&%#RPG%$narG%#LJG%"SG6#%fnC
opyright~(C)~2007~by~Mohamed~Barakat.~All~rights~reserved.G6"C)>8$-%1homalg/tab
lenameG6%9!&9"6#!""8%@$-%%typeG6$F2%*procedureG-%'RETURNG6#-F26#&F86#;""",&F:FI
F;F:>8&7$,$9$F:-%#opG6#-%$mapG6$f*6#%"aGF/6$%)operatorG%&arrowGF/-%%diffG6$T$FO
F/F/6$F%FO9%>8'-%2homalg/SyzygiesOpG6%FLF[oF2>F]o-%6homalg/NormalizeInputG6$F]o
F2>F]o-&F26#%/CertainColumnsG6$F]o7#;""#F:-%-homalg/ImageG6%F]oF[oF2F/F/F/F/,
Q8homalg/DerMinusLogInv.mF/
M7R0
I.homalg/DerModf*6$%%_varG%,RingPackageG6&%#RPG%$narG%%optsG%$varG6#%[oCopyrigh
t~(C)~2003-2007~by~Mohamed~Barakat.~All~rights~reserved.G6"C'>8$-%1homalg/table
nameG6%9!&9"6#!""8%@$-%%typeG6$F1%*procedureG-%'RETURNG6#-F16#&F76#;""",&F9FHF:
F9@%2,&FHFHF:FH9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&F76#;""#FIF1>&FO6#Q2numbe
r_of_optionsF.""!@%2,&FMFHFenF9,&FYFHF:FH>8'9$>F^o&F76#FY-%-homalg/Hom_RG6%-%/h
omalg/KaehlerG6#F7F^oF1F.F.F.F.,
Q0homalg/DerMod.mF.
M7R0
I1homalg/Extensionf*6(%"nG%"MG%$etaG%"NG%$varG%,RingPackageG6:%#RPG%$narG%%opts
G%$resG%%homsG%(modulesG%%Xn_1G%%Xn_2G%%dn_1G%$dXnG%&dXn_1G%#piG%&iota1G%&iota2
G%"GG%"PG%'alpha1G%%betaG%%genGG%"gG%'alpha2G%-alpha2_iota2G%$extG%"iG6%%LCopyr
ight~(C)~2007~by~~All~rights~reserved.G%'systemG%)rememberG6"C;@$4-%%typeG6$9$%
(integerG-%'RETURNG6#-%2homalg/Extension1G6#9">8$-%1homalg/tablenameG6%9!&FW6#!
""8%@$2,&""&"""F[oF`o9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&FW6#;""',&FjnF`oF[o
FjnFY@$2FO""!-%&ERRORG6#%/n~must~be~>=~0G@$/FOFap-FR6#-%:homalg/NormalizeExtens
ionG6&9'9&9%9(>8'-%5homalg/ResolveModuleG6&FOF_qF`qFY>8(-Feo6#&Fbq6#F`o>8)-Feo6
#&Fbq6#""#>8*-%6homalg/NormalizeInputG6$&F]r6#,&FOF`oFjnF`oFY>8+&F]r6#,&FOF`o!"
#F`o>8,-Feo6#&FgqFir>8--%.homalg/KernelG6(Fdr-Feo6#FbsF\sF`q/Q=var_to_assign_em
bedding_infoFH.80FY>8.-%-homalg/ImageG6'F[tF\sF`q/F^t.81FY>8/-%0homalg/ImageEpi
G6&F[tF\sF`qFY>83-%9homalg/PushoutPairOfMapsG6)-Feo6#F`tFdr-Feo6#F^qF]qF`q/Q@va
r_to_assign_functor_on_objectFH.82FY>84&F_uFar>86-%(convertG6$-%@homalg/Generat
orsOfPresentationG6%FjuF`qFY%'matrixG>87-&FY6#%3NumberOfGeneratorsG6#Fdr>88-%/h
omalg/ComposeG6&-&FY6#%/CertainColumnsG6$F_v7#;F`oFhvFjtF`qFY>89-Faw6&F_wFhtF`q
FY>Fhr-Feo6#Fju>Fes-Feo6#F[x>&F]r6#FO-%)CokernelG6$F]qF`q>&FgqFfx-Feo6#F\v@%4-%
)assignedG6#&Fco6#Q.pos_of_NORMALFH-%7homalg/PrettyExtensionG6&FgqF]rF`qFY-FR6$
-Feo6#Fgq-Feo6#F]rFHFHFHFH,
Q3homalg/Extension.mFH
M7R0
I0homalg/HomMap_Rf*6'%"MG%$phiG%"NG'%$varG%%listG%,RingPackageG6&%#RPG%$narG%)o
ptionalG%*cofunctorG6%%[oCopyright~(C)~2003-2005~by~Mohamed~Barakat.~All~rights
~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%ty
peG6$F8%*procedureG-%'RETURNG6#-F86#&F>6#;""",&F@FOFAF@>8&&F>6#;""&FP>8'%-homal
g/Hom_RG-%2homalg/FunctorMapG6)FX7#9$9%7#9&9'FRF8F5F5F5F5,
Q2homalg/HomMap_R.mF5
M7R0
I3homalg/IsInjectivef*6'%"MG%"AG%"NG%$varG%,RingPackageG6&%#RPG%$narG%%optsG%$k
erG6#%[oCopyright~(C)~2003-2006~by~Mohamed~Barakat.~All~rights~reserved.G6"C(>8
$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F4%*procedureG-%'RETURNG6#-F46#&
F:6#;""",&F<FKF=F<@%2,&""#FKF=FK9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&F:6#;""$
FLF4>&FS6#Q2number_of_optionsF1""!@$2,&FQFKFinF<,&""%FKF=FK-FD6#-%4homalg/IsInj
ectiveFG6#F:>8'-%.homalg/KernelGFfo-%4homalg/IsZeroModuleG6%Fho9'F4F1F1F1F1,
Q5homalg/IsInjective.mF1
M7R0
I1homalg/KernelEmbf*6'%"MG%"AG%"NG%$varG%,RingPackageG6)%#RPG%$narG%%optsG%$pos
G%)optionalG%$kerG%6kernel_embedding_infoG6%%[oCopyright~(C)~2003-2007~by~Moham
ed~Barakat.~All~rights~reserved.G%'systemG%)rememberG6"C.>8$-%1homalg/tablename
G6%9!&9"6#!""8%@$-%%typeG6$F9%*procedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA@%
2,&""#FPFBFP9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&F?6#;""$FQF9>&FX6#Q2number_o
f_optionsF6""!@$2,&FVFPF^oFA,&""%FPFBFP-FI6#-%2homalg/KernelFEmbG6#F?>FX-FZ6#-F
gn6$&F?6#;""&FQF9>8'%%NULLG@$-%)assignedG6#&FX6#QGpos_of_var_to_assign_functor_
on_objectF6>Ffp6$Ffp/F\qFgp@$-Fjp6#&FX6#QDpos_of_var_to_assign_embedding_infoF6
>Ffp6$Ffp/FeqFgp>8(-%#opG6#-%'subsopG6$Ffp7#Fap>8)-%.homalg/KernelG6)9$9%9&9'/Q
=var_to_assign_embedding_infoF6.8*F\rF9@$-Fjp6#&FX6#Q@var_to_assign_functor_on_
objectF6-%'assignG6$FdsFer-FZ6#F`sF6F6F6F6,
Q3homalg/KernelEmb.mF6
M7R0
I2homalg/KernelFEmbf*6%%"AG'%$varG%%listG%,RingPackageG6(%#RPG%$narG%%optsG%$po
sG%)optionalG%$kerG6%%[oCopyright~(C)~2003-2007~by~Mohamed~Barakat.~All~rights~
reserved.G%'systemG%)rememberG6"C,>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typ
eG6$F8%*procedureG-%'RETURNG6#-F86#&F>6#;""",&F@FOFAF@@$2,&""#FOFAFO9#>8&-%%cop
yG6#-%2homalg/GetOptionsG6$&F>6#;""$FPF8>8'%%NULLG@$-%)assignedG6#&FW6#QGpos_of
_var_to_assign_functor_on_objectF5>F]o6$F]o/FcoF^o@$-Fao6#&FW6#QDpos_of_var_to_
assign_embedding_infoF5>F]o6$F]o/F\pF^o>8(-%#opG6#-%'subsopG6$F]o7#Fhn>8)-%/hom
alg/KernelFG6&9$9%FcpF8@$-Fao6#&FW6#Q@var_to_assign_functor_on_objectF5-%'assig
nG6$FeqF\q-&F86#%'matrixG6#-%;homalg/EmbedInFactorModuleG6$F\qF8F5F5F5F5,
Q4homalg/KernelFEmb.mF5
M7R0
I5homalg/LEHS2AiBjCconf*6$%%LEHSG%,RingPackageG6(%#RPG%$narG%$LHSG%"HG%"iG%'con
homG6#%fnCopyright~(C)~2004~by~Mohamed~Barakat.~All~rights~reserved.G6"C+>8$-%1
homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F3%*procedureG-%'RETURNG6#-F36#&F96#
;""",&F;FJF<F;>8&-%$mapG6$%$lhsG-%#opG6#-%%evalG6#9$>8'-%&tableGF0?&8(7'.%"AG.%
%iotaG.%"BG.%#nuG.%"CG%%trueGC%-%'selectG6%%$hasGFMFhn-%%sortG6#-FO6$f*6#%"aGF0
6$%)operatorG%&arrowGF0-FS6$7$""!FJFXF0F0F0%"%G>&FZ6#Fhn-FO6$f*F`pF0FbpF0-%%cop
yG6#&T$6#&-Fgo6%Fio-Fgo6%FioT%T'FX6#FJF0F06(F%FXF*FMF,FhnFip-Fgo6%FioFM.%&delta
G-F[p6#-FO6$f*F`pF0FbpF0-FS6$FJFXF0F0F0Fip>8)-FO6$f*F`pF0FbpF0-Faq6#&Fdq6#&-Fgo
6%Fio-Fgo6%FioF[rFarFXF]rF0F06&F%FXF*FMFip-FO6$Faq7(&FZ6#Fjn&FZ6#F\o&FZ6#F^o&FZ
6#F`o&FZ6#FboF[sF0F0F0F0,
Q7homalg/LEHS2AiBjCcon.mF0
M7R0
I:homalg/ReduceHomomorphismf*6&%#_AG%#_MG'%$varG%%listG%,RingPackageG6'%#RPG%$n
arG%"AG%"MG%$redG6%%fnCopyright~(C)~2005~by~Mohamed~Barakat.~All~rights~reserve
d.G%'systemG%)rememberG6"C(>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F8%
*procedureG-%'RETURNG6#-F86#&F>6#;""",&F@FOFAF@>8&-%6homalg/NormalizeInputG6$9$
F8>8'-FT6$9%F8>8(-%.homalg/ReduceG6&FRFX9&F8-&F86#%'matrixG6#-FT6$FgnF8F5F5F5F5,
Q<homalg/ReduceHomomorphism.mF5
M7R0
I.homalg/Reducef*6&%#_LG%#_BG'%$varG%%listG%,RingPackageG62%#RPG%$narG%"RG%"BG%
"mG%"nG%"zG%"LG%%RINGG%"lG%"bG%$posG%"qG%"rG%#RlG%#RrG6%%[oCopyright~(C)~2004-2
005~by~Mohamed~Barakat.~All~rights~reserved.G%'systemG%)rememberG6"C'>8$-%1homa
lg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$FC%*procedureG-%'RETURNG6#-FC6#&FI6#;"""
,&FKFZFLFK>8&%%NULLG>8'-%6homalg/NormalizeInputG6$9%FC@%-%(hastypeG6$Fjn%"=GC.>
8(-&FC6#%3NumberOfGeneratorsG6#Fjn>8)-Fho6$FjnQ$rhsF@@%-Fao6$9$Fco>8+-F\o6%Fdp8
,FCC%>8*-&FC6#%%ZeroG6#F]p>Ffp-&FC6#%'AddRhsG6%Fdp9&7#-%"$G6$F\q-&FC6#%-NumberO
fRowsG6#Fdp>Ffp-F\o6%FfpFipFC>Fjn-%$mapG6$f*6#%"aGF@6$%)operatorG%&arrowGF@-Fgr
6$%#opG7$-%$lhsGFar-%$rhsGFarF@F@F@Fjn>Ffp-Fgr6$f*FjrF@F\sF@F_sF@F@F@Ffp?&8-Ffp
%%trueGC%>81F\t?&8.FjnF]tC$>8/-%4homalg/FirstNonZeroG6%FbtFfoFC@$2""!FetC%>80-&
FC6#%6QuotientWithRemainderG6%&F`t6#Fet&FbtFeuFhq>F`t-&FC6#%)simplifyG6$-%$zipG
6%f*6$%"xG%"yGF@F\sF@,&FdpFZ*&T#FZF^oFZFKF@F@6$F8F^uF`tFbtFhq>F`t-Fgr6&F`uF`tFZ
Fhq>Fgn6$FgnF`t>Fgn7#Fgn>82-Fgr6$f*FjrF@F\sF@&Fdp6#;FZFfvF@F@6$F0FfoFgn>83-Fgr6
$f*FjrF@F\sF@&Fdp6#;,&FfvFZFZFZFKF@F@FgwFgn@$&Fip6#FZ>F`w-Fgr6$FasF`w@$&Fip6#""
#>Fiw-Fgr6$FasFiw-F^v6%f*6$F[sF6F@F\sF@/FdpF^oF@F@F@F`wFiwC&>FfpFgp?&F\tFfpF]tC
%>F`tF\t?&FbtFjnF]tC$>Fet-Fgt6$FbtFC@$FjtC%>F^uF_u>F`t-Fiu6$-F^v6%f*FavF@F\sF@F
dvF@F@FgvF`tFbtFhq>F`tFiv>FgnF\w>FgnF^w@%Fip-Fgr6$FasFgnFgnF@F@F@F@,
Q0homalg/Reduce.mF@
M7R0
I3homalg/RightDividef*6'%#_BG%#_AG%#_LG%$varG%,RingPackageG61%#RPG%$narG%%optsG
%"BG%"AG%"mG%"LG%#ALG%$IALG%"iG%#CAG%"rG%#CBG%#NFG%"aG6#%[oCopyright~(C)~2004-2
007~by~Mohamed~Barakat.~All~rights~reserved.G6"C6>8$-%1homalg/tablenameG6%9!&9"
6#!""8%@$-%%typeG6$F?%*procedureG-%'RETURNG6#-F?6#&FE6#;""",&FGFVFHFG@%2,&""$FV
FHFV9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&FE6#;""%FWF?>&Fhn6#Q2number_of_optio
nsF<""!@$2,&FfnFVFdoFG,&FboFVFHFV-FO6#-%4homalg/RightDivideFG6#FE>8'-%6homalg/N
ormalizeInputG6$9$F?>8(-Fdp6$9%F?>8)-&F?6#%3NumberOfGeneratorsG6#Fhp@$0-F_q6#Fb
pF]q-%&ERRORG6#%gnThe~first~two~arguments~have~different~numbers~of~'columns'!G
>8*-Fdp6$9&F?@$30F\r7"0-F_q6#F\rF]q-Fhq6#%]oThe~second~and~third~argument~have~
different~numbers~of~'columns'!G>8+-&F?6#%,UnionOfRowsG6$FhpF\r>8,-%2homalg/Bas
isCoeffG6&F[s9'8.F?/Q#CAF<-Fjn6#Fgs>8/-&F?6#%-NumberOfRowsG6#F[s>81-%3homalg/Re
duceCoeffG6'FbpFbsFfs80F?/Q#CBF<-Fjn6#Fht@$0-%3homalg/BetterBasisG6&FdtFfsQ3ALL
OW_EMPTY_OUTPUTF<F?Fcr@%-%)assignedG6#&Fhn6#Q0pos_of_USE_FAILF<-FO6#%%FAILG-Fhq
6#%`sThe~second~argument~is~not~a~right~factor~of~the~first~(modulo~the~third),
~i.e.~the~second~(+third)~argument~is~not~a~generating~set!G>82-F_tFbq@$-Feu6#&
Fhn6#Q0var_to_assign_YF<-%'assignG6$Ffv-%/homalg/ComposeG6&-%.homalg/MulMatG6&F
GFhtFfsF?-&F?6#%/CertainColumnsG6$Fgs7#;,&FavFVFVFVF]tFfsF?-F]w6&F_w-Fcw6$Fgs7#
;FVFavFfsF?F<F<F<F<,
Q5homalg/RightDivide.mF<
M7R0
I7homalg/SubfactorModulef*6&%$_M1G%$_M2G'%$varG%%listG%,RingPackageG60%#RPG%$na
rG%%optsG%)optionalG%#M1G%#M2G%"BG%"NG%"nG%(gen_orgG%.convert_procsG%(gen_newG%
"GG%"SG6%%^pCopyright~(C)~2003-2005~by~Mohamed~Barakat~and~Daniel~Robertz.~All~
rights~reserved.G%'systemG%)rememberG6"C1>8$-%1homalg/tablenameG6%9!&9"6#!""8%@
$-%%typeG6$FA%*procedureG-%'RETURNG6#-FA6#&FG6#;""",&FIFXFJFI@$2,&""$FXFJFX9#>8
&-%%copyG6#-%2homalg/GetOptionsG6$&FG6#;""%FYFA>8'Fao>8(-%6homalg/NormalizeInpu
tG6$9$FA>8)-Fjo6$9%FA@&/F^p7">F^p7#-&FA6#%%ZeroG6#-&FA6#%3NumberOfGeneratorsG6#
Fho0F\q-F]q6#F^p-%&ERRORG6#%ZThe~two~modules~are~submodules~of~different~free~m
odules!G>8*-%5homalg/BasisOfModuleG6%F^p9&FA>8+-%.homalg/ReduceG6&FhoFiqF]rFA>F
_r-%3homalg/BetterBasisG6%F_rF]rFA>8,-&FA6#%-NumberOfRowsG6#F_r@%-%)assignedG6#
&Fjn6#Q4original_generatorsF>C'>8--Fjo6$FbsFA>8.-%6homalg/GetConvertInfoG6%FbsF
]rFA@$0F[t%%NULLG>Fgs-%9homalg/ConvertGeneratorsG6%Fgs&F[t6#Q5normalize_generat
orsF>FA>8/-Fjo6$-%/homalg/ComposeG6&F_rFgsF]rFAFA@$F`t>Fjt-Fdt6%Fjt&F[t6#Q4read
just_generatorsF>FA>FjtF_r>80-%$zipG6%f*6$%"aG%"bGF>6$%)operatorG%&arrowGF>/F\p
FapF>F>F>-%7homalg/StdBasisVectorsG6$FhrFAFjt>81-%5homalg/SyzygiesBasisG6&F_rFi
qF]rFA-%4homalg/PresentationG6(FiuFivF]r/Q5embedding_generatorsF>F_rFfoFAF>F>F>
F>,
Q9homalg/SubfactorModule.mF>
M7R0
I<homalg/TensorProduct2OnSeqsf*6&%"LG'%&alphaG<$%&tableG%%listG%%_varG%,RingPac
kageG6%%#RPG%$narG%(functorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All~rig
hts~reserved.G%'systemG%)rememberG6"C&>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%
%typeG6$F8%*procedureG-%'RETURNG6#-F86#&F>6#;""",&F@FOFAF@>8&-%>homalg/Functor_
TensorProduct2G6#9$-%5homalg/FunctorOnSeqsG6$FR&F>6#;""#F@F5F5F5F5,
Q>homalg/TensorProduct2OnSeqs.mF5
M7R0
I/homalg/TorqMapf*6)'%"qG%*nonnegintG%"MG%$phiG%"NG%"LG'%$varG%%listG%,RingPack
ageG6&%#RPG%$narG%)optionalG%(functorG6%%fnCopyright~(C)~2005~by~Mohamed~Baraka
t.~All~rights~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6
#!""8%@$-%%typeG6$F<%*procedureG-%'RETURNG6#-F<6#&FB6#;""",&FDFSFEFD>8&&FB6#;""
(FT>8'f*6#F(F9F9F9-%,homalg/TorqG6&T$9$T&&FB6#;""#FDF9F96&F&F]oF+9(-%2homalg/Fu
nctorMapG6)Ffn7#9%9&7#9'9)FVF<F9F9F9F9,
Q1homalg/TorqMap.mF9
M7R0
I3homalg/Annihilatorf*6&%#_mG%#_MG%%_varG%,RingPackageG6+%#RPG%$narG%"MG%"nG%"m
G%$varG%$AnnG%"lG%%AnnlG6%%fnCopyright~(C)~2007~by~Mohamed~Barakat.~All~rights~
reserved.G%'systemG%)rememberG6"C(>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typ
eG6$F:%*procedureG-%'RETURNG6#-F:6#&F@6#;""",&FBFQFCFB@%2""#,&9#FQFCFBC&>8&-%6h
omalg/NormalizeInputG6$9%F:>8'-&F:6#%3NumberOfGeneratorsG6#FZ@%4-FF6$9$<$%%list
G&F:6#%+matrixtypeG>8(-Ffn6$7#FdoF:C$>F[p-Ffn6$FdoF:@$4/-F\o6#F[pFjn>F[p7#-%$ma
pG6$%#opGF[p>8)9&C&>FZ-Ffn6$&F@6#FQF:>FjnF[o>F[p-%7homalg/StdBasisVectorsG6$Fjn
F:>F_q&F@6#FU>8*-%5homalg/SyzygiesBasisG6&7#&F[pFfqFZF_qF:?&8+7#-%"$G6#;FU-%%no
psGFgp%%trueGC$>8,-Fbr6&7#&F[p6#FgrFZF_qF:>F`r-%4homalg/IntersectionG6&F`rFbsF_
qF:-%<homalg/ReducedBasisOfModuleG6%F`rF_qF:F7F7F7F7,
Q5homalg/Annihilator.mF7
M7R0
I7homalg/CofunctorOnSeqFf*6&%+_cofunctorG'%%homsG<$%&tableG%%listG%$varG%,RingP
ackageG6)%#RPG%$narG%*cofunctorG%#hiG%"hG%'H_homsG%"iG6%%fnCopyright~(C)~2004~b
y~Mohamed~Barakat.~All~rights~reserved.G%'systemG%)rememberG6"C*>8$-%1homalg/ta
blenameG6%9!&9"6#!""8%@$-%%typeG6$F<%*procedureG-%'RETURNG6#-F<6#&FB6#;""",&FDF
SFEFD@%-FH6$9$F*@%2""!-%%nopsG6#FX>8&&FX6#FS-%&ERRORG6#%gnThe~first~argument~pr
oviding~the~cofunctor~is~an~empty~list!G>FjnFX@%-FH6$9%F*>8'7#-%"$G6#;FS-Fgn6#F
eo>Fgo-%%sortG6#-%$mapG6$%$lhsG-%#opG6#-%%evalGF^p>8(-Fgn6#Fgo>8)-F)F9?&8*7#-Fj
o6#;FSF]q%%trueG>&Faq6#,&&Fgo6#FdqFSFDFS-Fjn6%&Feo6#F^r9&F<-%%copyG6#FaqF9F9F9F
9,
Q9homalg/CofunctorOnSeqF.mF9
M7R0
I1homalg/CokernelFf*6%%"AG'%$varG%%listG%,RingPackageG6'%#RPG%$narG%%optsG%)opt
ionalG%5cokernel_target_hullG6%%[oCopyright~(C)~2004-2005~by~Mohamed~Barakat.~A
ll~rights~reserved.G%'systemG%)rememberG6"C)>8$-%1homalg/tablenameG6%9!&9"6#!""
8%@$-%%typeG6$F7%*procedureG-%'RETURNG6#-F76#&F=6#;""",&F?FNF@F?@$-FC6$&F=6#FN%
'stringGC$@$/FSQ1RETURN_co_contraF4-FG6#Q*covariantF4-FG6#%%NULLG@$2,&""#FNF@FN
9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&F=6#;""$FOF7>8'Fgo@$-%)assignedG6#&F`o6#
QBvar_to_assign_F_target_hullmoduleF4C$>8(-&F76#%'matrixG6#-%6homalg/NormalizeI
nputG6$9$F7-%'assignG6$FapFfp-%4homalg/PresentationG6'7"F_q9%F\pF7F4F4F4F4,
Q3homalg/CokernelF.mF4
M7R0
I7homalg/ComposeFunctorsf*6&%)Functor1G%)Functor2G'%$varG%%listG%,RingPackageG6
(%#RPG%$narG%*F1_contraG%*co_contraG%)optionalG%"pG6#%^pCopyright~(C)~2005-2006
~by~Mohamed~Barakat~and~Daniel~Robertz.~All~rights~reserved.G6"C(>8$-%1homalg/t
ablenameG6%9!&9"6#!""8%@$-%%typeG6$F7%*procedureG-%'RETURNG6#-F76#&F=6#;""",&F?
FNF@F?@%2""!-%+searchtextG6$Q'contraF4-&9$6#FN6%Q1RETURN_co_contraF49&F7C$>8&%%
trueG@%2FR-FT6$FV-&9%FZFen>8'Q*covariantF4>FdoQ.contravariantF4C$>Fjn%&falseG@%
F]o>FdoFgo>FdoFeo?&8)7#-%"$G6#;FN,&-%%nopsG6#Fbo#FN""#F?FNF[o@$-FC6$&Fbo6#,&FNF
NF_pFjp%'stringGC$@,/F^qQIRETURN_FunctorMaps_of_a_composed_functorF4-FG6#f*6#%$
objGF46$%)operatorG%&arrowGF47$&T$6#Fjp-&T&6#,&FjpFNT'Fjp6#FYF4F46(F%FYF&FboF1F
_p/F^qFfn@%2FR-FT6$FV-Fao6%-%2homalg/ZeroModuleG6$FgnF7FgnF7@%Fjn-FG6#f*FiqF4F[
rF4FeoF4F4F4-FG6#f*FiqF4F[rF4FgoF4F4F4@%Fjn-FG6#f*FiqF4F[rF4FgoF4F4F4-FG6#f*Fiq
F4F[rF4FeoF4F4F4/F^qQ?RETURN_proc_to_induce_morphismF4-FG6#%%NULLG/F^qQKRETURN_
FunctorMap_of_the_functor_to_deriveF4Fdt/F^qQ;RETURN_morphism_on_objectsF4Fdt-F
G6#f*FiqF4F[rF4-&T,FZ6%&F`r6#,&FNFNT%FjpT(T)F4F46,F&FboF1F_pF(FgnF,F7F%FY>8(&F=
6#;""%FOf*6%FjqF'F*6(F,F-%4Functor1_on_objectsG%6Functor1_on_morphismsG%4Functo
r2_on_objectsG%6Functor2_on_morphismsG6#%fnCopyright~(C)~2006~by~Mohamed~Baraka
t.~All~rights~reserved.GF4C*>F7F8@$FBFF>Fjn&F`rFZ>FdoF_r>Fju&FdrFZ>F_p&FdrFar@$
-FC6$&F=FZFaqC$@,/FewFeq-FG6#7$FdoF_p/FewFfn-FG6#Fgr/FewFctFdt/FewFhtFdt/FewFjt
Fdt-FG6#-Fjn6%FewFboF7-Fjn6&-Fju6%FYFboF7FboFguF7F4F46*F%FYF&FboF/FdoF0FjuF4F4F
4F4,
Q9homalg/ComposeFunctors.mF4
M7R0
I8homalg/DefectOfHomsFMapf*6)%'alpha1G%'alpha2G%$phiG%&beta1G%&beta2G'%$varG%%l
istG%,RingPackageG6&%#RPG%$narG%)optionalG%(functorG6%%fnCopyright~(C)~2004~by~
Mohamed~Barakat.~All~rights~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tabl
enameG6%9!&9"6#!""8%@$-%%typeG6$F:%*procedureG-%'RETURNG6#-F:6#&F@6#;""",&FBFQF
CFB>8&&F@6#;""(FR>8'%5homalg/DefectOfHomsFG-%2homalg/FunctorMapG6)FZ7$9$9%9&7$9
'9(9)FTF:F7F7F7F7,
Q:homalg/DefectOfHomsFMap.mF7
M7R0
I/homalg/DiagMatf*6"6-%#RPG%$narG%"MG%"iG%"mG%"nG%"AG%"rG%"cG%#Z1G%#Z2G6%%[oCop
yright~(C)~2003-2005~by~Mohamed~Barakat.~All~rights~reserved.G%'systemG%)rememb
erGF$C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F7%*procedureG-%'RETURN
G6#-F76#&F=6#;""",&F?FNF@F?>8&-%6homalg/NormalizeInputG6$&F=6#FNF7?&8'&F=6#;""#
FO%%trueGC*>8(-&F76#%-NumberOfRowsG6#FQ>8)-&F76#%3NumberOfGeneratorsGF_o>8*-FS6
$FXF7>8+-F\o6#Fgo>8,-FcoF]p>8-7#-%"$G6$7#-Fep6$-&F76#%%ZeroGF$F_pFjn>8.7#-Fep6$
7#-Fep6$FjpFaoF[p>FQ7$-%#opG6#-%$zipG6%f*6$%"aG%"bGF$6$%)operatorG%&arrowGF$7$-
Fiq6#9$-Fiq6#9%F$F$F$FQFbp-Fiq6#-F\r6%f*F_rF$FbrF$FerF$F$F$F_qFgo-&F76#%'matrix
GF_oF$F$F$F$,
Q1homalg/DiagMat.mF$
M7R0
I1homalg/ExtOnSeqsf*6'%"qG%"LG'%&alphaG<$%&tableG%%listG%%_varG%,RingPackageG6%
%#RPG%$narG%*cofunctorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All~rights~r
eserved.G%'systemG%)rememberG6"C&>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%type
G6$F9%*procedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA>8&-%3homalg/Functor_ExtG6
$9$9%-%7homalg/CofunctorOnSeqsG6$FS&F?6#;""$FAF6F6F6F6,
Q3homalg/ExtOnSeqs.mF6
M7R0
I3homalg/Extq2OnSeqsf*6'%"qG%"LG'%&alphaG<$%&tableG%%listG%%_varG%,RingPackageG
6%%#RPG%$narG%(functorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All~rights~r
eserved.G%'systemG%)rememberG6"C&>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%type
G6$F9%*procedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA>8&-%5homalg/Functor_Extq2
G6$9$9%-%5homalg/FunctorOnSeqsG6$FS&F?6#;""$FAF6F6F6F6,
Q5homalg/Extq2OnSeqs.mF6
M7R0
I1homalg/GlobalDimf*6$'%%_varG%%listG%,RingPackageG6&%#RPG%$narG%"vG%$varG6%%fn
Copyright~(C)~2004~by~Mohamed~Barakat.~All~rights~reserved.G%'systemG%)remember
G6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F5%*procedureG-%'RETURNG6
#-F56#&F;6#;""",&F=FLF>F=>8&-%5homalg/NormalizeRingG6$9$F5>8'&FO6#FL@%/&FO6#""#
7"-%%nopsG6#FU-%&ERRORG6#%j\lCannot~predict~the~global~dimension~of~the~residue
~class~ring~modulo~a~non-zero~ideal!~Please~add~a~real~procedure~that~computes~
the~global~dimension~of~residue~class~rings~to~your~ring~package~and~add~a~Glob
alDim~entry~pointing~to~it~in~the~homalg-conversion-table~of~your~ring~package!
GF2F2F2F2,
Q3homalg/GlobalDim.mF2
M7R0
I1homalg/HomHomMapf*6)%"MG%$phiG%"NG%"AG%"BG'%$varG%%listG%,RingPackageG6&%#RPG
%$narG%)optionalG%(functorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All~righ
ts~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%
typeG6$F:%*procedureG-%'RETURNG6#-F:6#&F@6#;""",&FBFQFCFB>8&&F@6#;""(FR>8'f*6#F
%F7F7F7-%.homalg/HomHomG6&9$T$T&&F@6#;""#FBF7F76&F(9'F)9(-%2homalg/FunctorMapG6
)FZ7#Fjn9%7#9&9)FTF:F7F7F7F7,
Q3homalg/HomHomMap.mF7
M7R0
I7homalg/HomologyModulesf*6%'%(complexG<$%&tableG%%listG'%$varGF)%,RingPackageG
6*%#RPG%$narG%&firstG%#aiG%"lG%%stepG%$haiG%"jG6#%fnCopyright~(C)~2004~by~Moham
ed~Barakat.~All~rights~reserved.G6"C+>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%
typeG6$F;%*procedureG-%'RETURNG6#-F;6#&FA6#;""",&FCFRFDFC@$/9$7"-FK6#FW@%-FG6$F
VF)>8'7#-%"$G6#;FR-%%nopsG6#FV>Fhn-%%sortG6#-%$mapG6$%$lhsG-%#opG6#-%%evalGF`o>
8(-F_o6#Fhn>8&&FV6#&Fhn6#FR@%-FG6$Fcp%4homalg_presentationG>8)""#-FK6#-%8homalg
/HomologyModulesFG6#FA>8*7#-F[o6#;F^q-%%iquoG6$F_pF]q-Ffo6$f*6#%"iGF86$%)operat
orG%&arrowGF8-%4homalg/DefectOfHomsG6%-%$seqG6$&T$6#&T%6#,&*&T'FRFVFRFRT)FC/Fds
;""!,&FcsF^qFCFRT,T-F8F86.F&FVF1FhnF3F]qF58+F+9%F.F;FeqF8F8F8F8,
Q9homalg/HomologyModules.mF8
M7R0
I@homalg/InjectivePresentationFFRf*6%%"PG%$varG%,RingPackageG6(%#RPG%$narG%%opt
sG%/ONLY_IF_RANK_1G%$resG%"pG6#%fnCopyright~(C)~2007~by~Mohamed~Barakat.~All~ri
ghts~reserved.G6"C,>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F4%*procedu
reG-%'RETURNG6#-F46#&F:6#;""",&F<FKF=F<@$2,&""#FKF=FK9#>8&-%%copyG6#-%2homalg/G
etOptionsG6$&F:6#;""$FLF4@%-%)assignedG6#&FS6#Q6pos_of_ONLY_IF_RANK_1F1>8'%%tru
eG>F`o%&falseG>8(-%:homalg/ResolutionOfModuleG6#F:>Feo-%9homalg/ShortenResoluti
onG6&%)infinityGFeo9%F4>8)-%%nopsG6#Feo@$2FKF`p-FD6#%%FAILG@$3F`o0,&-&F46#%3Num
berOfGeneratorsG6#&Feo6#FKFK-&F46#%-NumberOfRowsGFaqF<FKFfp-FUFaqF1F1F1F1,
QBhomalg/InjectivePresentationFFR.mF1
M7R0
I4homalg/IsBijectiveFf*6%%"AG%$varG%,RingPackageG6'%#RPG%$narG%%optsG%(VERBOSEG
%"bG6#%fnCopyright~(C)~2007~by~Mohamed~Barakat.~All~rights~reserved.G6"C(>8$-%1
homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F3%*procedureG-%'RETURNG6#-F36#&F96#
;""",&F;FJF<F;@$2,&""#FJF<FJ9#>8&-%%copyG6#-%2homalg/GetOptionsG6$&F96#;""$FKF3
@%-%)assignedG6#&FR6#Q/pos_of_VERBOSEF0>8'%%trueG>F_o%&falseG>8(7$-%4homalg/IsI
njectiveFG6%9$9%F3-%5homalg/IsSurjectiveFGFho@%F_o@%/Fdo7$F`oF`oF`oFdo3&Fdo6#FJ
&Fdo6#FOF0F0F0F0,
Q6homalg/IsBijectiveF.mF0
M7R0
I0homalg/LHom2Mapf*6)%"qG%"LG%"MG%$phiG%"NG'%$varG%%listG%,RingPackageG6&%#RPG%
$narG%)optionalG%(functorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All~right
s~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%t
ypeG6$F:%*procedureG-%'RETURNG6#-F:6#&F@6#;""",&FBFQFCFB>8&&F@6#;""(FR>8'f*6#F'
F7F7F7-%,homalg/LHomG6&T$T&9$&F@6#;""#FBF7F76&F%F\oF&9%-%2homalg/FunctorMapG6)F
Z7#9&9'7#9(9)FTF:F7F7F7F7,
Q2homalg/LHom2Map.mF7
M7R0
I9homalg/ReplaceGeneratorsf*6%'%"MG%4homalg_presentationG%%_genG%,RingPackageG6
(%#RPG%$narG%%MgenG%$genG%$absG%"GG6#%fnCopyright~(C)~2005~by~Mohamed~Barakat.~
All~rights~reserved.G6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG6$F6%*p
rocedureG-%'RETURNG6#-F66#&F<6#;""",&F>FMF?F>>8&-%@homalg/GeneratorsOfPresentat
ionG6%9$Q9BOTH_TYPES_OF_GENERATORSF3F6@%-FB6$9%-%%listG6#%"=GC$@$0-%%nopsG6#FY-
F\o6#FP-%&ERRORG6#%HThe~number~of~generators~must~coincide!G>8)FYC&@%-FB6$FYFen
>8'FY>F[p-%6homalg/NormalizeInputG6$FYF6>8(-%$mapG6$%$lhsGFP@$0-&F66#%-NumberOf
RowsG6#F[p-F\o6#FapF`o>Feo-%$zipG6%f*6$%"aG%"bGF36$%)operatorG%&arrowGF3/FTFYF3
F3F3FapF[p7$Feo-%#opG6#&FT6#;""#F>F3F3F3F3,
Q;homalg/ReplaceGenerators.mF3
M7R0
I5homalg/ResolveModulef*6&'%"qG%(integerG%"MG%$varG%,RingPackageG6-%#RPG%$narG%
"PG%$rhoG%&cokerG%$resG%%rdimG%"rG%"iG%"aG%#qqG6%%[oCopyright~(C)~2005-2006~by~
Mohamed~Barakat.~All~rights~reserved.G%'systemG%)rememberG6"C*>8$-%1homalg/tabl
enameG6%9!&9"6#!""8%@$-%%typeG6$F>%*procedureG-%'RETURNG6#-F>6#&FD6#;""",&FFFUF
GFF>8&-%&tableGF;>8'FY>&FX6#""!-%6homalg/FreeHullModuleG6%9%9&F>@%32,&""$FUFGFU
9#-FJ6$&FD6#""%%'stringGC$>&FXFE-%2homalg/ZeroModuleG6$F_oF>>&FfnFin-%/homalg/Z
eroMapG6&FhnF^pF_oF>@%-FJ6$F^o%4homalg_presentationGC$>F^pF^o@%-%4homalg/IsZero
ModuleG6%FhnF_oF>>FcpFdp>Fcp-%3homalg/IdentityMapGF]oC$>Fcp-%3homalg/CokernelEp
iG6&F^oF_o/Q@var_to_assign_functor_on_objectF;.8(F>>F^pF]r@$09$FjnC)>8)-%:homal
g/ResolutionOfModuleG6&F^oF_o/Q)TRUNCATEF;,&FarFUFFFUF>>8*-%.homalg/ResDimG6$Fd
rF>>8+-%%nopsG6#F\s@%F^qC%>8-""#>&FX6#FUF_p>&FfnF\t-Fep6&F[tFhnF_oF>>FhsFU@%2Fa
rFjn>8.Fas>FetFar?&8,7#-%"$G6#;FhsFet%%trueG@%1Fht,&FasFUFFFUC$>&FX6#Fht-%2homa
lg/FreeModuleG6%&F\s6#,&FhtFFFFFUF_oF>>&FfnFeu-%%copyG6#&Fdr6#,$FhtFFC$>FduF_p>
F]v-Fep6&Fdu&FX6#,&FhtFUFFFUF_oF>@$FaoC$>&FX6#,&FetFUFUFUF_p>&FfnF`w-Fep6&F_w&F
X6#FetF_oF>-%#opG6#-%$mapG6$F_v7$FfnFXF;F;F;F;,
Q7homalg/ResolveModule.mF;
M7R0
I2homalg/RHomHomMapf*6*%"qG%"MG%$phiG%"NG%"AG%"BG'%$varG%%listG%,RingPackageG6&
%#RPG%$narG%)optionalG%(functorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All
~rights~reserved.G%'systemG%)rememberG6"C'>8$-%1homalg/tablenameG6%9!&9"6#!""8%
@$-%%typeG6$F;%*procedureG-%'RETURNG6#-F;6#&FA6#;""",&FCFRFDFC>8&&FA6#;"")FS>8'
f*6#F&F8F8F8-%/homalg/RHomHomG6'T$9$T&T(&FA6#;""#FCF8F86(F%F\oF)9(F*9)-%2homalg
/FunctorMapG6)Fen7#9%9&7#9'9*FUF;F8F8F8F8,
Q4homalg/RHomHomMap.mF8
M7R0
I2homalg/TorqOnSeqsf*6'%"qG%"LG'%&alphaG<$%&tableG%%listG%%_varG%,RingPackageG6
%%#RPG%$narG%(functorG6%%fnCopyright~(C)~2006~by~Mohamed~Barakat.~All~rights~re
served.G%'systemG%)rememberG6"C&>8$-%1homalg/tablenameG6%9!&9"6#!""8%@$-%%typeG
6$F9%*procedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA>8&-%4homalg/Functor_TorqG6
$9$9%-%5homalg/FunctorOnSeqsG6$FS&F?6#;""$FAF6F6F6F6,
Q4homalg/TorqOnSeqs.mF6
M7R0
I9homalg/A2ExtensionModulef*6)%#_MG%&etaMLG%#_LG%&etaLNG%#_NG%$varG%,RingPackag
eG6,%#RPG%$narG%"MG%"LG%"NG%#d2G%"BG%"XG%#BbG%&etaMNG6#%enCopyright~(C)~2008~by
~Barbara~Bremer.~All~rights~reserved.G6"C->8$-%1homalg/tablenameG6%9!&9"6#!""8%
@$-%%typeG6$F<%*procedureG-%'RETURNG6#-F<6#&FB6#;""",&FDFSFEFD>8&-%6homalg/Norm
alizeInputG6$&-%:homalg/ResolutionOfModuleG6&9$9)/Q)TRUNCATEF9""!F<6#FSF<>8'-FX
6$&-Ffn6&9&FinFjnF<F]oF<>8(-FX6$&-Ffn6&9(FinFjnF<F]oF<>8)-%%copyG6#&&-%5homalg/
ResolveModuleG6%""#FVFinF]o6#Fhp>8*-%/homalg/ComposeG6&F_p9%FinF<>8+-%3homalg/R
ightDivideG6&F[qF_oFinF<>8,-F]q6&Faq9'FinF<>8--%3homalg/LeftDivideCG6'F_pFfqFgo
FinF<@%/F[r%%FAILGFar-%:homalg/ReduceHomomorphismG6&F[rFgoFinF<F9F9F9F9,
Q;homalg/A2ExtensionModule.mF9
M7R0
I=homalg/GetCleanRowsPositionsf*6&%#_MG%.clean_columnsG'%$varG%%listG%,RingPack
ageG6*%#RPG%$narG%$oneG%"MG%"nG%+clean_rowsG%"jG%"iG6#%fnCopyright~(C)~2008~by~
Mohamed~Barakat.~All~rights~reserved.G6"C*>8$-%1homalg/tablenameG6%9!&9"6#!""8%
@$-%%typeG6$F9%*procedureG-%'RETURNG6#-F96#&F?6#;""",&FAFPFBFA>8&-&F96#%$OneGF6
>8'-%6homalg/NormalizeInputG6$9$F9>8(-&F96#%-NumberOfRowsG6#FY>8)%%NULLG?&8*9%%
%trueG?(8+FPFPFinFeo@$/&FY6$FgoFcoFSC$>F`o6$F`oFgo[7#F`oF6F6F6F6,
Q?homalg/GetCleanRowsPositions.mF6
M7R0
IIhomalg/GetColumnIndependentUnitPositionsf*6&%#_MG%)pos_listG'%$varG%%listG%,R
ingPackageG6"6#%fnCopyright~(C)~2008~by~Mohamed~Barakat.~All~rights~reserved.GF
+-%Chomalg/GetIndependentUnitPositionsG6#9"F+F+F+F+,
QKhomalg/GetColumnIndependentUnitPositions.mF+