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

Towards knots #1835

Closed
wants to merge 117 commits into from
Closed

Towards knots #1835

wants to merge 117 commits into from

Conversation

fieker
Copy link
Contributor

@fieker fieker commented Dec 21, 2022

When run, the following will produce a nice Gap problem:

using Oscar
Oscar.example("H2.jl")
A = abelian_group(PermGroup, [2,2])
B = [sub(A, [A[1]])[1], sub(A, [A[2]])[1]]
Main.H2_G_QmodZ_mod.H2_G_QmodZ_kern_restriction(A, B)

namely:

julia> Main.H2_G_QmodZ_mod.H2_G_QmodZ_kern_restriction(A, B)
ERROR: AssertionError: GAP.Globals.HasIsWholeFamily(G.X) && GAPWrap.IsWholeFamily(G.X)
Stacktrace:
 [1] quo(G::FPGroup, elements::Vector{FPGroupElem})
   @ Oscar ~/.julia/dev/Oscar/src/Groups/sub.jl:333

using the "/" in Gap directly can compute the quotient...
@fingolfin , @ThomasBreuer ?

@fieker
Copy link
Contributor Author

fieker commented Dec 21, 2022

a slightly differetn versio produced:

julia> Main.H2_G_QmodZ_mod.H2_G_QmodZ_kern_restriction(G, [x[1] for x = U])
ERROR: Not a known type of group
Stacktrace:
 [1] error(s::String)
   @ Base ./error.jl:35
 [2] _get_type(G::GAP_jll.GapObj)
   @ Oscar ~/.julia/dev/Oscar/src/Groups/types.jl:395
 [3] quo(G::FPGroup, N::FPGroup)
   @ Oscar ~/.julia/dev/Oscar/src/Groups/sub.jl:408

I think this was obtained by doing quo(k, sub(k, ...)[1]), ie. explicitly using sub first

@fieker
Copy link
Contributor Author

fieker commented Dec 21, 2022

when playing, one should not try this:

julia> [describe(Main.H2_G_QmodZ_mod.H2_G_QmodZ(transitive_group(8, i))) for i=1:22]
ERROR: Error thrown by GAP: Error, no method found! For debugging hints type ?Recovery from NoMethodFound
Error, no 1st choice method found for `RelatorsOfFpGroup' on 1 arguments at /home/fieker/.julia/artifacts/70f7ea74308ce9d94343b89b97f71ce69490cf51/share/gap/lib/methsel2.g:249 called from
<function "HANDLE_METHOD_NOT_FOUND">( <arguments> )
 called from read-eval loop at *defin*:0

Stacktrace:
  [1] error(s::String)
    @ Base ./error.jl:35
  [2] ThrowObserver(depth::Int32)
    @ GAP ~/.julia/dev/GAP/src/GAP.jl:88
  [3] _call_gap_func(func::GAP_jll.GapObj, a1::GAP_jll.GapObj)
    @ GAP ~/.julia/dev/GAP/src/ccalls.jl:258
  [4] call_gap_func_nokw
    @ ~/.julia/dev/GAP/src/ccalls.jl:224 [inlined]
  [5] GapObj
    @ ~/.julia/dev/GAP/src/ccalls.jl:235 [inlined]
  [6] RelatorsOfFpGroup
    @ ~/.julia/dev/Oscar/src/GAP/wrappers.jl:371 [inlined]
  [7] relators(G::FPGroup)
    @ Oscar ~/.julia/dev/Oscar/src/Groups/GAPGroups.jl:1475
  [8] describe(G::FPGroup)
    @ Oscar ~/.julia/dev/Oscar/src/Groups/GAPGroups.jl:1849
  [9] (::var"#65#66")(i::Int64)

@fieker
Copy link
Contributor Author

fieker commented Dec 21, 2022

(this is from i==1, the group is trivial (order() returns 1, but describe is unhappy)

@ThomasBreuer
Copy link
Member

ThomasBreuer commented Dec 21, 2022

The current situation with quotient groups of finitely presented groups in GAP is as follows.
If G is a full free group or a full finitely presented group (i.e., not a subgroup of this full group) then one can form the quotient of G by the normal closure of a given set of elements of G.
For subgroups of such full groups, GAP either issues an error or returns some object. In the case of subgroups of free groups, a returned object is corrupted, that is why I had added the assertion on the Oscar side. (See also gap-system/gap/issues/4897 for a change that improves this situation.)
In the current example, the subgroup of an f.p. group shall be factored by an empty list, and apparently GAP has some applicable method for that; however, I fear that this is a bug in GAP because this is a method for semigroups. In any case, the object returned by GAP is not a group in the sense of GAP, in particular it cannot be turned into an Oscar group, hence the Not a known type of group error on the Oscar side.

fingolfin pushed a commit that referenced this pull request Dec 27, 2022
This addresses the problems that are described in the discussion of #1835.

- The Oscar type `FPGroup` corresponds to the GAP type `IsSubgroupFpGroup`
  not to `IsFpGroup`.
  Note that functions such as `sub` implicitly assume that subgroups of a
  group of type `T` also have type `T`.
- Next iteration for
  `quo(G::FPGroup, elements::Vector{S}) where S <: GAPGroupElem`:
  GAP's `\/` does not handle subgroups of (free or) f.p. groups.
  (Probably GAP should be improved here ...)
- Adjusted `describe` to the meaning of `FPGroup`.
  (There are more functions and docstrings still to be adjusted.)
@fingolfin
Copy link
Member

Is the file examples/GaloisLattice.jl removed intentionally?

Should we merge this PR now?

@fieker
Copy link
Contributor Author

fieker commented Jan 20, 2023 via email

@fingolfin fingolfin closed this Jan 20, 2023
@fingolfin fingolfin reopened this Jan 20, 2023
@thofma
Copy link
Collaborator

thofma commented Jan 27, 2023

This now needs a rebase

wdecker and others added 14 commits January 29, 2023 13:53
* Use sparse matrices in the pre_saturation_data.

* Use sparse matrices also for the modules.
* restructering docu to prepare for more on homological algebra

* unrelated correction
* bumps AlgebraicSolving

* adds rational_solutions() provided by AlgebraicSolving

* adds test for issue 1743

* adds tests for rational_solutions()

* adds template for multivariate system solver documentation

* adds solving documentation file to build system

* removes solving stuff from official documentation, wait until everything is fixed

* make rational_solutions internal function
(*) Add documentation for cox_variety
(*) Documentation for morphism_on_cartier...(toric_morphism) moved to correct location
wdecker and others added 22 commits January 29, 2023 13:53
* orthogonal groups of  TorQuadMod in the non split degenerate case

* orthogonal groups for indefinite rank 2 Z-lattices

* embedding orth grp
* Introduce morphism_of_covered_schemes for projective morphisms.

* Implement pullback of ideal sheaves.

* Implement Cartier divisors.

* Use LazyGlueings for creating refinements.

* Introduce UniversalPullbackSymbol.

Co-authored-by: HechtiDerLachs <[email protected]>
…#1876)

* Add computation of kernels for towers of polynomial rings via flattenings.
Co-authored-by: HechtiDerLachs <[email protected]>
* Introduce (double) duals and fix arithmetic.

Co-authored-by: HechtiDerLachs <[email protected]>
Co-authored-by: simonbrandhorst <[email protected]>
* rename ChainComplex -> ComplexOfMorphisms
@fieker
Copy link
Contributor Author

fieker commented Jan 29, 2023

too much git-fu required. I am happy to remove this PR as the change is a one-liner in examples...

@thofma thofma enabled auto-merge (squash) January 29, 2023 14:59
@fingolfin
Copy link
Member

On current master, I get this (no error, and w/o the patch in this PR):

julia> Oscar.example("H2.jl")
Main.H2_G_QmodZ_mod

julia> A = abelian_group(PermGroup, [2,2])
Group([ (1,2), (3,4) ])

julia> B = [sub(A, [A[1]])[1], sub(A, [A[2]])[1]]
2-element Vector{PermGroup}:
 Group([ (1,2) ])
 Group([ (3,4) ])

julia> Main.H2_G_QmodZ_mod.H2_G_QmodZ_kern_restriction(A, B)
(Group([ <identity ...>, (F2*F1)^2, <identity ...> ]), Group homomorphism from
Group([ <identity ...>, (F2*F1)^2, <identity ...> ])
to
Group([ <identity ...>, (F2*F1)^2, <identity ...> ]))

Note that this returns a tuple, while the version in this patch just returns the group from the first tuple entry.

Anyway, I think this means this PR is not needed?

@fieker
Copy link
Contributor Author

fieker commented Jan 30, 2023 via email

@fieker fieker closed this Jan 30, 2023
@ThomasBreuer
Copy link
Member

The reported problem with quo had been solved with pull request #1837. As I had said above, using GAP's \/ directly yields a result on the GAP side that cannot be used by Oscar.
Thus it was the right solution to close this pull request without merging it.

@fingolfin fingolfin deleted the towardsKnots branch February 24, 2023 23:08
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.