Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- LoadPackage("qpa");
- DirectSumOfMaps := function(maps)
- local M, N, p, q, i, result;
- if IsEmpty(maps) then
- return fail;
- fi;
- M := DirectSumOfQPAModules(List(maps, f -> Source(f)));
- N := DirectSumOfQPAModules(List(maps, f -> Range(f)));
- p := DirectSumProjections(M);
- q := DirectSumInclusions(N);
- result := ZeroMapping(M, N);
- for i in [1..Length(maps)] do
- result := result + p[i]*maps[i]*q[i];
- od;
- return result;
- end;
- StrongTiltingModule := function(A)
- local n, i, j, S, F, L, s, r, t, q, g, d, T;
- if not IsRadicalSquareZeroAlgebra(A) then
- Error("this is not a radical-square-zero algebra,n");
- fi;
- S := SimpleModules(A);
- n := Length(S);
- Perform(S, s -> ProjDimensionOfModule(s, n));
- F := DirectSumOfQPAModules(Filtered(S, s -> HasProjDimension(s)));
- if F = fail then
- F := ZeroModule(A);
- fi;
- L := [];
- for s in S do
- if HasProjDimension(s) then
- Add(L, IdentityMapping(s));
- else
- r := KernelInclusion(ProjectiveCover(s));
- t := TraceOfModule(F, Source(r));
- q := IdentityMapping(Range(r));
- Add(L, MorphismOnCoKernel(t*r, r, t, q));
- fi;
- od;
- T := [];
- for i in [1..n] do
- if HasProjDimension(S[i]) then
- q := CoKernelProjection(InjectiveEnvelope(S[i]));
- d := DimensionVector(Range(q));
- g := [];
- for j in [1..n] do
- Append(g, ListWithIdenticalEntries(d[j], L[j]));
- od;
- if IsEmpty(g) then
- Add(T, Source(q));
- else
- Add(T, Source(PullBack(q, DirectSumOfMaps(g))[1]));
- fi;
- else
- Add(T, Source(L[i]));
- fi;
- od;
- return DirectSumOfQPAModules(T);
- end;
Add Comment
Please, Sign In to add comment