michaelmusty/Belyi

PassportRepresentatives

Closed this issue · 8 comments

lambda := [
        [ <2, 8>, <1, 7> ],
        [ <8, 2>, <4, 1>, <2, 1>, <1, 1> ],
        [ <8, 2>, <4, 1>, <2, 1>, <1, 1> ]
    ];
G := TransitiveGroup(23,5);
pass := PassportRepresentatives(G : partitions := lambda);
pass[1]; 

gives as output:

[*
    [
        [ <2, 8>, <1, 7> ],
        [ <7, 3>, <1, 2> ],
        [ <8, 2>, <4, 1>, <2, 1>, <1, 1> ]

So it's returning output that doesn't satisfy the vararg conditions.

Yes that is unfortunate but noted. There is another repository where @SamSchiavone is repackaging the triangle code. If we deal with it there I will close this, but otherwise leave it open. Thanks!

Oh, awesome! Is Sam's a fork of this one, or something separate?

I'm not sure. It probably started as something close to this, but the goal is to update for use with a more current Magma version. It is a private repository for the moment, but hopefully we can make some progress over the holiday and release a self-contained Magma package.

Probably makes more sense for the current version to live in Sam's github anyways.

Were you looking for this functionality for anything specific? I think the priority right now is to just get something compatible with current Magma. Revisiting the passport code could also be bumped up to a higher priority.

Hey John,
I've worked a bit on the new triangle and Belyi map code, but it's still in its early stages. I've made a new GrpPSL2Tri class and I'm currently working on the triangle functionality. I'm planning to make a separate Belyi map class (and maybe a couple others) to try to split up the attributes we tacked on to GrpPSL2 in some logical way. I'll send you an invite to the repo.

How are you gentlemen!

It suffices to look at line 616 of passports.m (appropriately enough the Number of the Beast in the oldest preserved manuscript of the Apocalypse of John) and replace

    if #partition_tups ne 0 then
        check := &and[ part in cycstrs : part in partition_tups ];
        Append(~checks, check);
    end if;
    if #checks eq 0 then
        return true;
    end if;
    return &and(checks);

by

    if #partition_tups ne 0 then
        check := &and[ cycstr in partition_tups : cycstr in cycstrs ];
        if check and #partition_tups eq 3 then
            check := Sort(cycstrs) eq Sort(partition_tups);
        end if;
        Append(~checks, check);
    end if;

    if #checks eq 0 then
        return true;
    end if;
    return &and(checks);

Not all bells and whistles got tested at the time.

Kind regards,
Jeroen

@SamSchiavone did you fix this as part of your rewrite, or should I submit a pull request? (Don't want to cause conflicts!)

No, I don't think I've gotten this far in the rewrite yet, so feel free to submit a PR.

Changed this in "passports_jeroen_2018.m", PR #2. Seems to work now.