Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add support for Brueckner... #985

Merged
merged 14 commits into from Feb 9, 2022
Merged

add support for Brueckner... #985

merged 14 commits into from Feb 9, 2022

Conversation

fieker
Copy link
Contributor

@fieker fieker commented Jan 17, 2022

No description provided.

"""
function extension(c::CoChain{2,PermGroupElem})
function extension(c::CoChain{2,<:Oscar.GAPGroupElem})
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TODO: we need a version for this that takes PcGroups and produces PcGroups

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

@@ -536,7 +541,7 @@ end
if isdefined(Hecke, :stub_composition_factors)
function Hecke.stub_composition_factors(x::Vector{T}) where {T}
F = base_ring(x[1])
h = Oscar.iso_oscar_gap(F)
h = Oscar.ring_iso_oscar_gap(F)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We renamed Oscar.ring_iso_oscar_gap to Oscar.iso_oscar_gap ...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

just done, but still:

julia> Oscar.RepPc.reps(abelian_closure(QQ)[1], G)
ERROR: failed to convert GAP.GapObj to any known type:
 GAP: !Z(137)^0
Stacktrace:
  [1] gap_to_julia(x::GAP.GapObj; recursive::Bool)
    @ GAP ~/.julia/dev/GAP/src/gap_to_julia.jl:321
  [2] #gap_to_julia#29
    @ ~/.julia/dev/GAP/src/gap_to_julia.jl:94 [inlined]
  [3] #gap_to_julia#27
    @ ~/.julia/dev/GAP/src/gap_to_julia.jl:89 [inlined]
  [4] #36
    @ ~/.julia/dev/GAP/src/gap_to_julia.jl:204 [inlined]

I thought this was solved?

Copy link
Member

@fingolfin fingolfin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • ring_iso_oscar_gap must be changed to iso_oscar_gap
  • many lines are not covered by tests, hence the above issue is not detect by the tests. I don't want to block the PR over this, but I think it'd be good to have a few (even trivial!) tests otherwise we'll just break this code constantly

@fieker
Copy link
Contributor Author

fieker commented Jan 19, 2022 via email

  pc_group(GrpAb)
  pc_group(Module{FinFieldElem}

needs, unfortunately, fixes in AA:
  hash(ModuleElem)
  quo for indirect submodules
G = small_group(24, 12)
G = isomorphic_fp_group(G)[1]
z = maximal_abelian_quotient(G)
sub(z[1], map(x->PcGroupElem(z[1], x), GAP.Globals.Pcgs(z[1].X)))
zz = z[2]*inv(ans[2])
a = Oscar.RepPc.brueckner(zz);
b = [Oscar.RepPc.brueckner(x) for x = a];

runs - but crashes...
at least as far as it is implemented.

```
G = small_group(24, 12)
G = isomorphic_fp_group(G)[1]
z = maximal_abelian_quotient(G)
sub(z[1], map(x->PcGroupElem(z[1], x), GAP.Globals.Pcgs(z[1].X)))
zz = z[2]*inv(ans[2])
a = Oscar.RepPc.brueckner(zz);
b = [Oscar.RepPc.brueckner(x) for x = a];
```

finds a lot of pc-presentations of G, well too many of them.
There is a part of the Thesis that is not yet implented...
Still problems:

```
F = free_group(2)
a, b = gens(F)
l = [a^2*b*a^−1*b*a^−1*b^−1*a*b^−2,a^2*b^−1*a*b^−1*a*b*a^−1*b^2];
G = quo(F, l)[1]
q, mq = maximal_abelian_quotient(G)
a = Oscar.RepPc.brueckner(mq);
b = Oscar.RepPc.brueckner(a[3]);
c = Oscar.RepPc.brueckner(b[3]);
```
(Brueckner's group G_1)
- Thm 15 (b) and (c)
- Lemma 16
- replace some(?) hnf by rref/GF(p)
- see if one can use F_p-modules?
- make Tommy happy: do minimal_field for number fields
hopefully:
```
G = transitive_group(8, 5)
irreducible_modules(AnticNumberField, G)
C = ans[end]
k = base_ring(C)
K = cyclotomic_field(8)[1]
issubfield(k, K)
_, em = ans;
F = free_module(K, 2)
CC = gmodule(group(C), [hom(F, F, map_entries(em, mat(x))) for x= C.ac])
t = matrix(K, 2, 2, [rand(K, -5:5) for i=1:4])
CCC = gmodule(G, [hom(F, F, inv(t)*mat(x)*t) for x = CC.ac])
Oscar.GModuleFromGap.gmodule_over(em, CCC)
z = ans; map(mat, z.ac)
gmodule(QQ, z)
simplify(ans)
map(mat, ans.ac)
```
@thofma thofma requested a review from fingolfin February 9, 2022 12:54
@fingolfin fingolfin merged commit 4c08825 into master Feb 9, 2022
@fingolfin fingolfin deleted the Brueckner branch February 9, 2022 15:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants