Exemple #1
0
    def __init__(self):
        qshort = display_knowl("ag.base_field", "base field")
        q = TextBox(
            "q",
            label="Cardinality of the %s" % (qshort),
            short_label=qshort,
            example="81",
            example_span="81 or 3-49",
        )
        pshort = display_knowl("ag.base_field", "Base char.")
        p = TextBox(
            "p",
            label="Characteristic of the %s" % (qshort),
            short_label=pshort,
            example="3",
            example_span="3 or 2-5",
        )
        g = TextBox(
            "g",
            label="Dimension",
            knowl="ag.dimension",
            example="2",
            example_span="2 or 3-5"
        )
        p_rank = TextBox(
            "p_rank",
            label="$p$-rank",
            knowl="av.fq.p_rank",
            example="2"
        )
        p_rank_deficit = TextBox(
            "p_rank_deficit",
            label="$p$-rank deficit",
            knowl="av.fq.p_rank",
            example="2",
            advanced=True,
        )
        angle_rank = TextBox(
            "angle_rank",
            label="Angle rank",
            knowl="av.fq.angle_rank",
            example="3",
            example_col=False,
            advanced=True,
        )
        newton_polygon = TextBox(
            "newton_polygon",
            label="Slopes of Newton polygon",
            knowl="lf.newton_polygon",
            example="[0,0,1/2]",
            colspan=(1, 3, 1),
            width=3*190 - 30,
            short_width=160,
            short_label="Slopes",
            advanced=True,
        )
        initial_coefficients = TextBox(
            "initial_coefficients",
            label="Initial coefficients",
            knowl="av.fq.initial_coefficients",
            example="[2, -1, 3, 9]",
        )
        abvar_point_count = TextBox(
            "abvar_point_count",
            label="Point counts of the variety",
            knowl="ag.fq.point_counts",
            example="[75,7125]",
            colspan=(1, 3, 1),
            width=3*190 - 30,
            short_width=160,
            short_label="Points on variety",
            advanced=True,
        )
        curve_point_count = TextBox(
            "curve_point_count",
            label="Point counts of the curve",
            knowl="av.fq.curve_point_counts",
            example="[9,87]",
            colspan=(1, 3, 1),
            width=3*190 - 30,
            short_width=160,
            short_label="Points on curve",
            advanced=True,
        )
        def nbsp(knowl, label):
            return "    " + display_knowl(knowl, label)
        number_field = TextBox(
            "number_field",
            label=nbsp("av.fq.number_field", "Number field"),
            short_label=display_knowl("av.fq.number_field", "Number field"),
            example="4.0.29584.2",
            example_span="4.0.29584.2 or Qzeta8",
            colspan=(1, 3, 1),
            width=3*190 - 30,
            short_width=160,
            advanced=True,
        )
        galois_group = TextBox(
            "galois_group",
            label=nbsp("nf.galois_group", "Galois group"),
            short_label=display_knowl("nf.galois_group", "Galois group"),
            example="4T3",
            example_span="C4, or 8T12, a list of "
            + display_knowl("nf.galois_group.name", "group names"),
            colspan=(1, 3, 1),
            width=3*190 - 30,
            short_width=160,
            advanced=True,
        )
        #size = TextBox(
        #    "size",
        #    label="Isogeny class size",
        #    knowl="av.fq.isogeny_class_size",
        #    example="1",
        #    example_col=False,
        #    advanced=True,
        #)
        gdshort = display_knowl("av.endomorphism_field", "End.") + " degree"
        gdlong = "Degree of " + display_knowl("av.endomorphism_field", "endomorphism_field")
        geom_deg = TextBox(
            "geom_deg",
            label=gdlong,
            short_label=gdshort,
            example="168",
            example_span="6-12, 168",
            advanced=True,
        )
        jac_cnt = TextBox(
            "jac_cnt",
            label="Number of Jacobians",
            knowl="av.jacobian_count",
            example="6",
            short_label="# Jacobians",
            advanced=True,
        )
        hyp_cnt = TextBox(
            "hyp_cnt",
            label="Number of hyperelliptic Jacobians",
            knowl="av.hyperelliptic_count",
            example="6",
            example_col=False,
            short_label="# Hyp. Jacobians",
            advanced=True,
        )
        tcshort = display_knowl("av.twist", "# twists")
        tclong = "Number of " + display_knowl("av.twist", "twists")
        twist_count = TextBox(
            "twist_count",
            label=tclong,
            short_label=tcshort,
            example="390",
            advanced=True,
        )
        max_twist_degree = TextBox(
            "max_twist_degree",
            label="Max twist degree",
            knowl="av.twist",
            example="16",
            example_col=False,
            advanced=True,
        )
        simple = YesNoBox(
            "simple",
            label="Simple",
            knowl="av.simple",
        )
        geom_simple = YesNoBox(
            "geom_simple",
            label="Geometrically simple",
            knowl="av.geometrically_simple",
            short_label="Geom. simple",
        )
        primitive = YesNoBox(
            "primitive",
            label="Primitive",
            knowl="ag.primitive",
        )
        polarizable = YesNoMaybeBox(
            "polarizable",
            label="Principally polarizable",
            knowl="av.princ_polarizable",
            short_label="Princ polarizable",
        )
        jacobian = YesNoMaybeBox(
            "jacobian",
            label="Jacobian",
            knowl="ag.jacobian"
        )
        uglabel = "Use %s in the following inputs" % display_knowl("av.decomposition", "Geometric decomposition")
        use_geom_decomp = CheckBox(
            "use_geom_decomp",
            label=uglabel,
            short_label=uglabel
        )
        use_geom_index = CheckboxSpacer(use_geom_decomp, colspan=4, advanced=True)
        use_geom_refine = CheckboxSpacer(use_geom_decomp, colspan=5, advanced=True)
        def long_label(d):
            return nbsp("av.decomposition", "Dimension %s factors" % d)
        def short_label(d):
            return display_knowl("av.decomposition", "Dim %s factors" % d)
        dim1 = TextBox(
            "dim1_factors",
            label=long_label(1),
            example="1-3",
            example_col=False,
            short_label=short_label(1),
            advanced=True,
        )
        dim1d = TextBox(
            "dim1_distinct",
            label="Distinct factors",
            knowl="av.decomposition",
            example="1-2",
            example_span="2 or 1-3",
            short_label="(distinct)",
            advanced=True,
        )
        dim2 = TextBox(
            "dim2_factors",
            label=long_label(2),
            example="1-3",
            example_col=False,
            short_label=short_label(2),
            advanced=True,
        )
        dim2d = TextBox(
            "dim2_distinct",
            label="Distinct factors",
            knowl="av.decomposition",
            example="1-2",
            example_span="2 or 1-3",
            short_label="(distinct)",
            advanced=True,
        )
        dim3 = TextBox(
            "dim3_factors",
            label=long_label(3),
            example="2",
            example_col=False,
            short_label=short_label(3),
            advanced=True,
        )
        dim3d = TextBox(
            "dim3_distinct",
            label="Distinct factors",
            knowl="av.decomposition",
            example="1",
            example_span="2 or 0-1",
            short_label="(distinct)",
            advanced=True,
        )
        dim4 = TextBox(
            "dim4_factors",
            label=long_label(4),
            example="2",
            example_col=False,
            short_label=short_label(4),
            advanced=True,
        )
        dim5 = TextBox(
            "dim5_factors",
            label=long_label(5),
            example="2",
            example_col=False,
            short_label=short_label(5),
            advanced=True,
        )
        dim4d = dim5d = SkipBox(example_span="0 or 1", advanced=True)
        simple_quantifier = SubsetBox(
            "simple_quantifier",
        )
        simple_factors = TextBoxWithSelect(
            "simple_factors",
            label="Simple factors",
            select_box=simple_quantifier,
            knowl="av.decomposition",
            colspan=(1, 3, 2),
            width=3*190 - 30,
            short_width=2*190 - 30,
            example="1.2.b,1.2.b,2.2.a_b",
            advanced=True,
        )
        count = CountBox()

        self.refine_array = [
            [q, p, g, p_rank, initial_coefficients],
            [newton_polygon, abvar_point_count, curve_point_count, simple_factors],
            [angle_rank, jac_cnt, hyp_cnt, twist_count, max_twist_degree],
            [geom_deg, p_rank_deficit],
            #[size],
            [simple, geom_simple, primitive, polarizable, jacobian],
            use_geom_refine,
            [dim1, dim2, dim3, dim4, dim5],
            [dim1d, dim2d, dim3d, number_field, galois_group],
        ]
        self.browse_array = [
            [q, primitive],
            [p, simple],
            [g, geom_simple],
            [initial_coefficients, polarizable],
            [p_rank, jacobian],
            [p_rank_deficit],
            [jac_cnt, hyp_cnt],
            [geom_deg, angle_rank],
            [twist_count, max_twist_degree],
            [newton_polygon],
            [abvar_point_count],
            [curve_point_count],
            [simple_factors],
            use_geom_index,
            [dim1, dim1d],
            [dim2, dim2d],
            [dim3, dim3d],
            [dim4, dim4d],
            [dim5, dim5d],
            [number_field],
            [galois_group],
            [count],
        ]
Exemple #2
0
    def __init__(self):
        degree = TextBox(
            name="degree",
            label="Degree",
            knowl="nf.degree",
            example=3)
        signature = TextBox(
            name="signature",
            label="Signature",
            knowl="nf.signature",
            example="[1,1]")
        discriminant = TextBox(
            name="discriminant",
            label="Discriminant",
            knowl="nf.discriminant",
            example="-1000..-1",
            example_span="-3 or 1000-2000")
        rd = TextBox(
            name="rd",
            label="Root discriminant",
            knowl="nf.root_discriminant",
            example="1..4.3",
            example_span="a range such as 1..4.3 or 3-10")
        cm_field = YesNoBox(
            name="cm_field",
            label="CM field",
            knowl="nf.cm_field")
        gal = TextBox(
            name="galois_group",
            label="Galois group",
            knowl="nf.galois_search",
            example="C5",
            example_span="[8,3], C5 or 7T2")
        is_galois = YesNoBox(
            name="is_galois",
            label="Is Galois",
            knowl="nf.galois_group")
        regulator = TextBox(
            name="regulator",
            label="Regulator",
            knowl="nf.regulator",
            example="1..3.5",
            example_span="a range such as 1..3.5")
        class_number = TextBox(
            name="class_number",
            label="Class number",
            knowl="nf.class_number",
            example="5")
        class_group = TextBox(
            name="class_group",
            label="Class group structure",
            knowl="nf.ideal_class_group",
            example="[2,4]",
            example_span="[ ], [3], or [2,4]")
        num_ram = TextBox(
            name="num_ram",
            label="Ramified prime count",
            knowl="nf.ramified_primes",
            example=2)
        ram_quantifier = SubsetNoExcludeBox(
            name="ram_quantifier")
        ram_primes = TextBoxWithSelect(
            name="ram_primes",
            label="Ramified",
            knowl="nf.ramified_primes",
            example="2,3",
            select_box=ram_quantifier)
        ur_primes = TextBox(
            name="ur_primes",
            label="Unramified primes",
            knowl="nf.unramified_prime",
            example="2,3")
        subfield = TextBox(
            name="subfield",
            label="Intermediate field",
            knowl="nf.intermediate_fields",
            example_span="2.2.5.1 or x^2-5 or a "+
                display_knowl("nf.nickname", "field nickname"),
            example="x^2-5")
        completion = TextBox(
            name="completions",
            label="$p$-adic completions",
            knowl="nf.padic_completion.search",
            example_span="2.4.10.7 or 2.4.10.7,3.2.1.2",
            example="2.4.10.7")
        count = CountBox()

        self.browse_array = [
            [degree, signature],
            [discriminant, rd],
            [gal, is_galois],
            [class_number, class_group],
            [num_ram, cm_field],
            [ram_primes, ur_primes],
            [regulator, subfield],
            [count, completion]]

        self.refine_array = [
            [degree, signature, class_number, class_group, cm_field],
            [num_ram, ram_primes, ur_primes, gal, is_galois],
            [discriminant, rd, regulator, subfield, completion]]
Exemple #3
0
    def __init__(self):
        geometric_invariants_type = SelectBox(
            name="geometric_invariants_type",
            width=108,
            options=[("", "Igusa-Clebsh"), ("igusa_inv", "Igusa"),
                     ("g2_inv", "G2")],
        )

        geometric_invariants = TextBoxWithSelect(
            name="geometric_invariants",
            knowl="g2c.geometric_invariants",
            label=r"\(\overline{\Q}\)-invariants",
            example="[8,3172,30056,-692224]",
            select_box=geometric_invariants_type,
            width=689,
            colspan=(1, 4, 1),
            example_col=False,
        )  # the last 1 is irrelevant

        conductor = TextBox(
            name="cond",
            knowl="ag.conductor",
            label="Conductor",
            example="169",
            example_span="169, 100-1000",
        )

        discriminant = TextBox(
            name="abs_disc",
            knowl="g2c.abs_discriminant",
            label="Absolute discriminant",
            short_label="Discriminant",
            example="169",
            example_span="169, 0-1000",
        )

        rational_points = TextBox(
            name="num_rat_pts",
            knowl="g2c.num_rat_pts",
            label="Rational points*",
            example="1",
            example_span="0, 20-26",
        )

        rational_weirstrass_points = TextBox(
            name="num_rat_wpts",
            knowl="g2c.num_rat_wpts",
            label="Rational Weierstrass points",
            short_label="Weierstrass",
            example="1",
            example_span="1, 0-6",
        )

        torsion_order = TextBox(
            name="torsion_order",
            knowl="g2c.torsion_order",
            label="Torsion order",
            example="2",
        )

        torsion_structure = TextBox(
            name="torsion",
            knowl="g2c.torsion",
            label="Torsion structure",
            short_label="Torsion",
            example="[2,2,2]",
        )

        two_selmer_rank = TextBox(
            name="two_selmer_rank",
            knowl="g2c.two_selmer_rank",
            label="2-Selmer rank",
            example="1",
        )

        analytic_sha = TextBox(
            name="analytic_sha",
            knowl="g2c.analytic_sha",
            label="Analytic order of Ш*",
            short_label="Analytic Ш*",
            example="2",
        )

        analytic_rank = TextBox(
            name="analytic_rank",
            knowl="g2c.analytic_rank",
            label="Analytic rank*",
            example="1",
        )

        bad_quantifier = SelectBox(
            name="bad_quantifier",
            width=85,
            options=[
                ("", "include"),
                ("exclude", "exclude"),
                ("exactly", "exactly"),
                ("subset", "subset"),
            ],
        )

        bad_primes = TextBoxWithSelect(
            name="bad_primes",
            knowl="g2c.good_reduction",
            label="Bad primes",
            short_label=r"Bad \(p\)",
            example="5,13",
            select_box=bad_quantifier,
        )

        is_gl2_type = SelectBox(
            name="is_gl2_type",
            knowl="g2c.gl2type",
            label=r"$\GL_2$-type",
            options=[("", ""), ("True", "True"), ("False", "False")],
        )

        st_group = SelectBox(
            name="st_group",
            knowl="g2c.st_group",
            label="Sato-Tate group",
            short_label=r"\(\mathrm{ST}\)",
            options=([("", "")] + [(elt, st_group_dict[elt])
                                   for elt in st_group_list]),
        )

        st_group_identity_component = SelectBox(
            name="real_geom_end_alg",
            knowl="g2c.st_group_identity_component",
            label="Sate-Tate identity component",
            short_label=r"\(\mathrm{ST}^0\)",
            options=([("", "")] + [(elt, real_geom_end_alg_to_ST0_dict[elt])
                                   for elt in real_geom_end_alg_list]),
        )

        Q_automorphism = SelectBox(
            name="aut_grp_id",
            knowl="g2c.aut_grp",
            label=r"\(\Q\)-automorphism group",
            short_label=r"\(\mathrm{Aut}(X)\)",
            options=([("", "")] + [(elt, aut_grp_dict[elt])
                                   for elt in aut_grp_list]),
        )

        geometric_automorphism = SelectBox(
            name="geom_aut_grp_id",
            knowl="g2c.aut_grp",
            label=r"\(\overline{\Q}\)-automorphism group",
            short_label=r"\(\mathrm{Aut}(X_{\overline{\Q}})\)",
            options=([("", "")] + [(elt, geom_aut_grp_dict[elt])
                                   for elt in geom_aut_grp_list]),
        )

        geometric_endomorphism = SelectBox(
            name="geom_end_alg",
            knowl="g2c.geom_end_alg",
            label=r"\(\overline{\Q}\)-endomorphism algebra",
            short_label=r"\(\overline{\Q}\)-end algebra",
            options=([("", "")] + [(elt, geom_end_alg_dict[elt])
                                   for elt in geom_end_alg_list]),
        )

        locally_solvable = SelectBox(
            name="locally_solvable",
            knowl="g2c.locally_solvable",
            label="Locally solvable",
            options=[("", ""), ("True", "True"), ("False", "False")],
        )

        has_square_sha = SelectBox(
            name="has_square_sha",
            knowl="g2c.analytic_sha",
            label=r"Order of Ш is square*",
            short_label=r"Square Ш*",
            options=[("", ""), ("True", "True"), ("False", "False")],
        )

        geometrically_simple = SelectBox(
            name="is_simple_geom",
            knowl="ag.geom_simple",
            label="Geometrically simple",
            short_label=r"\(\overline{\Q}\)-simple",
            options=[("", ""), ("True", "True"), ("False", "False")],
        )

        count = TextBox("count",
                        label="Results to display",
                        example=50,
                        example_col=False)

        browse_array = [
            [geometric_invariants],
            [conductor, is_gl2_type],
            [discriminant, st_group],
            [rational_points, st_group_identity_component],
            [rational_weirstrass_points, Q_automorphism],
            [torsion_order, geometric_automorphism],
            [torsion_structure, geometric_endomorphism],
            [two_selmer_rank, locally_solvable],
            [analytic_sha, has_square_sha],
            [analytic_rank, geometrically_simple],
            [bad_primes, count],
        ]

        refine_array = [
            [
                conductor,
                discriminant,
                rational_points,
                rational_weirstrass_points,
                torsion_order,
            ],
            [
                bad_primes,
                two_selmer_rank,
                analytic_rank,
                analytic_sha,
                torsion_structure,
            ],
            [
                is_gl2_type,
                st_group,
                Q_automorphism,
                has_square_sha,
                geometrically_simple,
            ],
            [
                geometric_endomorphism,
                st_group_identity_component,
                geometric_automorphism,
                locally_solvable,
            ],
        ]
        SearchArray.__init__(self, browse_array, refine_array)
Exemple #4
0
    def __init__(self):
        conductor_quantifier = SelectBox(name='conductor_type',
                                         options=[
                                             ('', ''),
                                             ('prime', 'prime'),
                                             ('prime_power', 'p-power'),
                                             ('squarefree', 'sq-free'),
                                             ('divides', 'divides'),
                                         ],
                                         min_width=85)
        cond = TextBoxWithSelect(name="conductor",
                                 label="Conductor",
                                 knowl="ec.q.conductor",
                                 example="389",
                                 example_span="389 or 100-200",
                                 select_box=conductor_quantifier)
        disc = TextBox(name="discriminant",
                       label="Discriminant",
                       knowl="ec.discriminant",
                       example="389",
                       example_span="389 or 100-200")
        rank = TextBox(name="rank", label="Rank", knowl="ec.rank", example="0")
        sha = TextBox(name="sha",
                      label="Analytic order of Ш",
                      knowl="ec.analytic_sha_order",
                      example="4")
        isodeg = TextBox(name="isogeny_degrees",
                         label="Cyclic isogeny degree",
                         knowl="ec.isogeny",
                         example="16")
        class_size = TextBox(name="class_size",
                             label="Isogeny class size",
                             knowl="ec.isogeny_class",
                             example="4")
        class_deg = TextBox(name="class_deg",
                            label="Isogeny class degree",
                            knowl="ec.isogeny_class_degree",
                            example="16")
        num_int_pts = TextBox(name="num_int_pts",
                              label="Integral points",
                              knowl="ec.q.integral_points",
                              example="2",
                              example_span="2 or 4-15")
        jinv = TextBox(name="jinv",
                       label="j-invariant",
                       knowl="ec.q.j_invariant",
                       example="1728",
                       example_span="1728 or -4096/11")
        torsion_opts = ([("", ""),
                         ("[]", "trivial")] + [("%s" % n, "order %s" % n)
                                               for n in range(4, 16, 4)] +
                        [("[%s]" % n, "C%s" % n)
                         for n in range(2, 13) if n != 11] +
                        [("[2,%s]" % n, "C2×C%s" % n)
                         for n in range(2, 10, 2)])
        torsion = SelectBox(name="torsion",
                            label="Torsion",
                            knowl="ec.torsion_subgroup",
                            example="C3",
                            options=torsion_opts)
        optimal = SelectBox(name="optimal",
                            label="Curves per isogeny class",
                            knowl="ec.isogeny_class",
                            example="all, one",
                            options=[("", "all"), ("on", "one")])
        bad_quant = SubsetBox(name="bad_quantifier")
        bad_primes = TextBoxWithSelect(name="bad_primes",
                                       label="Bad primes $p$",
                                       short_label=r"Bad$\ p$",
                                       knowl="ec.q.reduction_type",
                                       example="5,13",
                                       select_box=bad_quant)
        sha_quant = SubsetBox(name="sha_quantifier")
        sha_primes = TextBoxWithSelect(name="sha_primes",
                                       label="$p$ dividing |Ш|",
                                       short_label=r"$p\ $div$\ $|Ш|",
                                       knowl="ec.analytic_sha_order",
                                       example="3,5",
                                       select_box=sha_quant)
        regulator = TextBox(name="regulator",
                            label="Regulator",
                            knowl="ec.q.regulator",
                            example="8.4-9.1")
        faltings_height = TextBox(name="faltings_height",
                                  label="Faltings height",
                                  knowl="ec.q.faltings_height",
                                  example="-1-2")
        reduction_opts = ([("", ""), ("semistable", "semistable"),
                           ("not semistable", "not semistable"),
                           ("potentially good", "potentially good"),
                           ("not potentially good", "not potentially good")])
        reduction = SelectBox(name="reduction",
                              label="Reduction",
                              example="semistable",
                              knowl="ec.reduction",
                              options=reduction_opts)
        galois_image = TextBox(name="galois_image",
                               label=r"Galois image",
                               short_label=r"Galois image",
                               example="13S4 or 13.91.3.2",
                               knowl="ec.galois_image_search")
        nonmax_quant = SubsetBox(name="nonmax_quantifier")
        nonmax_primes = TextBoxWithSelect(
            name="nonmax_primes",
            label=r"Nonmaximal $\ell$",
            short_label=r"Nonmax$\ \ell$",
            knowl="ec.maximal_elladic_galois_rep",
            example="2,3",
            select_box=nonmax_quant)
        cm_opts = (
            [('', ''), ('noCM', 'no potential CM'),
             ('CM', 'potential CM')] + [('-4,-16', 'CM field Q(sqrt(-1))'),
                                        ('-3,-12,-27', 'CM field Q(sqrt(-3))'),
                                        ('-7,-28', 'CM field Q(sqrt(-7))')] +
            [('-%d' % d, 'CM discriminant -%d' % d)
             for d in [3, 4, 7, 8, 11, 12, 16, 19, 27, 38, 43, 67, 163]])
        cm = SelectBox(name="cm",
                       label="Complex multiplication",
                       example="potential CM by Q(i)",
                       knowl="ec.complex_multiplication",
                       options=cm_opts)

        count = CountBox()

        self.browse_array = [[cond, bad_primes], [disc, jinv], [torsion, cm],
                             [rank, sha], [regulator, sha_primes],
                             [galois_image, nonmax_primes],
                             [class_size, class_deg], [num_int_pts, isodeg],
                             [optimal, reduction], [count, faltings_height]]

        self.refine_array = [
            [cond, jinv, rank, torsion, cm],
            [bad_primes, disc, regulator, sha, galois_image],
            [class_size, class_deg, isodeg, sha_primes, nonmax_primes],
            [optimal, reduction, num_int_pts, faltings_height]
        ]
    def __init__(self):
        cond = TextBox(name="conductor",
                       label="Conductor",
                       knowl="ec.q.conductor",
                       example="389",
                       example_span="389 or 100-200")
        rank = TextBox(name="rank", label="Rank", knowl="ec.rank", example="0")
        torsion = TextBox(name="torsion",
                          label="Torsion order",
                          knowl="ec.torsion_order",
                          example="2")
        sha = TextBox(name="sha",
                      label="Analytic order of Ш",
                      knowl="ec.q.analytic_sha_order",
                      example="4")
        surj_primes = TextBox(name="surj_primes",
                              label="Maximal primes",
                              knowl="ec.maximal_galois_rep",
                              example="2,3")
        isodeg = TextBox(name="isodeg",
                         label="Cyclic isogeny degree",
                         knowl="ec.isogeny",
                         example="16")
        num_int_pts = TextBox(
            name="num_int_pts",
            label="Number of %s" %
            display_knowl("ec.q.integral_points", "integral points"),
            example="2",
            example_span="2 or 4-15")

        jinv = TextBox(name="jinv",
                       label="j-invariant",
                       knowl="ec.q.j_invariant",
                       example="1728",
                       example_span="1728 or -4096/11")
        cm = IncludeOnlyBox(name="include_cm",
                            label="CM",
                            knowl="ec.complex_multiplication")
        tor_opts = ([("", "any"),
                     ("[]", "trivial")] + [("[%s]" % n, "C%s" % n)
                                           for n in range(2, 13) if n != 11] +
                    [("[2,%s]" % n, "C2×C%s" % n)
                     for n in range(2, 10, 2)])
        torsion_struct = SelectBox(name="torsion_structure",
                                   label="Torsion structure",
                                   knowl="ec.torsion_subgroup",
                                   options=tor_opts)
        optimal = SelectBox(name="optimal",
                            label="Curves per isogeny class",
                            knowl="ec.isogeny_class",
                            options=[("", "all"), ("on", "one")])
        surj_quant = SelectBox(name="surj_quantifier",
                               options=[("", "include"),
                                        ("exactly", "exactly")],
                               width=75)
        nonsurj_primes = TextBoxWithSelect(name="nonsurj_primes",
                                           label="Non-maximal primes",
                                           short_label="Non-max. $p$",
                                           knowl="ec.maximal_galois_rep",
                                           example="2,3",
                                           select_box=surj_quant)
        bad_quant = SelectBox(name="bad_quantifier",
                              options=[("", "include"), ("exclude", "exclude"),
                                       ("exactly", "exactly"),
                                       ("subset", "subset of")],
                              width=75)
        bad_primes = TextBoxWithSelect(name="bad_primes",
                                       label="Bad primes",
                                       knowl="ec.q.reduction_type",
                                       example="5,13",
                                       select_box=bad_quant)
        regulator = TextBox(name="regulator",
                            label="Regulator",
                            knowl="ec.q.regulator",
                            example="8.4-9.1")

        count = TextBox(name="count", label="Results to display", example=50)

        self.browse_array = [[cond, jinv], [rank,
                                            cm], [torsion, torsion_struct],
                             [sha, optimal], [surj_primes, nonsurj_primes],
                             [isodeg, bad_primes], [num_int_pts, regulator],
                             [count]]

        self.refine_array = [[cond, jinv, rank, torsion, torsion_struct],
                             [
                                 sha, isodeg, surj_primes, nonsurj_primes,
                                 bad_primes
                             ], [num_int_pts, regulator, cm, optimal]]
Exemple #6
0
    def __init__(self):
        cond = TextBox(name="conductor",
                       label="Conductor",
                       knowl="ec.q.conductor",
                       example="389",
                       example_span="389 or 100-200")
        rank = TextBox(name="rank", label="Rank", knowl="ec.rank", example="0")
        torsion = TextBox(name="torsion",
                          label="Torsion order",
                          knowl="ec.torsion_order",
                          example="2")
        sha = TextBox(name="sha",
                      label="Analytic order of Ш",
                      knowl="ec.analytic_sha_order",
                      example="4")
        surj_primes = TextBox(name="surj_primes",
                              label="Maximal primes",
                              knowl="ec.maximal_galois_rep",
                              example="2,3")
        isodeg = TextBox(name="isodeg",
                         label="Cyclic isogeny degree",
                         knowl="ec.isogeny",
                         example="16")
        num_int_pts = TextBox(
            name="num_int_pts",
            label="Number of %s" %
            display_knowl("ec.q.integral_points", "integral points"),
            example="2",
            example_span="2 or 4-15")

        jinv = TextBox(name="jinv",
                       label="j-invariant",
                       knowl="ec.q.j_invariant",
                       example="1728",
                       example_span="1728 or -4096/11")
        cm = SelectBox(name="include_cm",
                       label="CM",
                       knowl="ec.complex_multiplication",
                       options=[('', ''), ('only', 'potential CM'),
                                ('exclude', 'no potential CM')])
        tor_opts = ([("", ""),
                     ("[]", "trivial")] + [("[%s]" % n, "C%s" % n)
                                           for n in range(2, 13) if n != 11] +
                    [("[2,%s]" % n, "C2×C%s" % n)
                     for n in range(2, 10, 2)])
        torsion_struct = SelectBox(name="torsion_structure",
                                   label="Torsion structure",
                                   knowl="ec.torsion_subgroup",
                                   options=tor_opts)
        optimal = SelectBox(name="optimal",
                            label="Curves per isogeny class",
                            knowl="ec.isogeny_class",
                            options=[("", ""), ("on", "one")])
        surj_quant = SubsetNoExcludeBox(name="surj_quantifier")
        nonsurj_primes = TextBoxWithSelect(name="nonsurj_primes",
                                           label="Non-max. $p$",
                                           short_label="Non-max. $p$",
                                           knowl="ec.maximal_galois_rep",
                                           example="2,3",
                                           select_box=surj_quant)
        bad_quant = SubsetBox(name="bad_quantifier")
        bad_primes = TextBoxWithSelect(name="bad_primes",
                                       label="Bad $p$",
                                       knowl="ec.q.reduction_type",
                                       example="5,13",
                                       select_box=bad_quant)
        regulator = TextBox(name="regulator",
                            label="Regulator",
                            knowl="ec.q.regulator",
                            example="8.4-9.1")
        semistable = YesNoBox(name="semistable",
                              label="Semistable",
                              example="Yes",
                              knowl="ec.semistable")
        cm_opts = [('', ''), ('-3', '-3'), ('-4', '-4'), ('-7', '-7'),
                   ('-8', '-8'), ('-11', '-11'), ('-12', '-12'),
                   ('-16', '-16'), ('-19', '-19'), ('-27', '-27'),
                   ('-28', '-28'), ('-43', '-43'), ('-67', '-67'),
                   ('-163', '-163'), ('-3,-12,-27', '-3,-12,-27'),
                   ('-4,-16', '-4,-16'), ('-7,-28', '-7,-28')]
        cm_disc = SelectBox(name="cm_disc",
                            label="CM discriminant",
                            example="-3",
                            knowl="ec.complex_multiplication",
                            options=cm_opts)

        count = CountBox()

        self.browse_array = [[cond, jinv], [rank, regulator],
                             [torsion, torsion_struct], [cm_disc, cm],
                             [sha, optimal], [surj_primes, nonsurj_primes],
                             [isodeg, bad_primes], [num_int_pts, semistable],
                             [count]]

        self.refine_array = [[cond, jinv, rank, torsion, torsion_struct],
                             [
                                 sha, isodeg, surj_primes, nonsurj_primes,
                                 bad_primes
                             ],
                             [num_int_pts, regulator, cm, cm_disc, semistable],
                             [optimal]]
Exemple #7
0
    def __init__(self):
        geometric_invariants = SneakyTextBox(
            name="geometric_invariants",
            knowl="g2c.geometric_invariants",
            label=r"\(\overline{\Q}\)-invariants",
            example="[8,3172,30056,-692224] or [-1/169,33/169,43/169]",
            width=689,
            short_width=190 * 3 - 10 * 3,
            colspan=(1, 4, 3),
            example_span="",
        )

        bad_quantifier = SubsetBox(
            name="bad_quantifier",
            min_width=115,
        )

        bad_primes = TextBoxWithSelect(
            name="bad_primes",
            knowl="g2c.good_reduction",
            label="Bad primes",
            short_label=r"Bad \(p\)",
            example="5,13",
            example_span="2 or 2,3,5",
            select_box=bad_quantifier,
        )

        conductor = TextBox(
            name="cond",
            knowl="ag.conductor",
            label="Conductor",
            example="169",
            example_span="169, 100-1000",
        )

        discriminant = TextBox(
            name="abs_disc",
            knowl="g2c.abs_discriminant",
            label="Absolute discriminant",
            short_label="Absolute discriminant",
            example="169",
            example_span="169, 0-1000",
        )

        rational_points = TextBox(
            name="num_rat_pts",
            knowl="g2c.num_rat_pts",
            label="Rational points*",
            example="1",
            example_span="0, 20-26",
        )

        rational_weirstrass_points = TextBox(
            name="num_rat_wpts",
            knowl="g2c.num_rat_wpts",
            label="Rational Weierstrass points",
            short_label="Weierstrass points",
            example="1",
            example_span="1, 0-6",
        )

        torsion_order = TextBox(
            name="torsion_order",
            knowl="g2c.torsion_order",
            label="Torsion order",
            example="2",
        )

        torsion_structure = TextBox(
            name="torsion",
            knowl="g2c.torsion",
            label="Torsion structure",
            short_label="Torsion",
            example="[2,2,2]",
        )

        two_selmer_rank = TextBox(
            name="two_selmer_rank",
            knowl="g2c.two_selmer_rank",
            label="2-Selmer rank",
            example="1",
        )

        analytic_sha = TextBox(
            name="analytic_sha",
            knowl="g2c.analytic_sha",
            label="Analytic order of Ш*",
            short_label="Analytic Ш*",
            example="2",
        )

        analytic_rank = TextBox(
            name="analytic_rank",
            knowl="g2c.analytic_rank",
            label="Analytic rank*",
            example="1",
        )

        is_gl2_type = YesNoBox(
            name="is_gl2_type",
            knowl="g2c.gl2type",
            label=r"$\GL_2$-type",
        )

        st_group = SelectBox(
            name="st_group",
            knowl="g2c.st_group",
            label="Sato-Tate group",
            short_label=r"\(\mathrm{ST}(X)\)",
            options=([("", "")] + [(elt, st_group_dict[elt])
                                   for elt in st_group_list]),
        )

        st_group_identity_component = SelectBox(
            name="real_geom_end_alg",
            knowl="g2c.st_group_identity_component",
            label="Sate-Tate identity component",
            short_label=r"\(\mathrm{ST}^0(X)\)",
            options=([("", "")] + [(elt, real_geom_end_alg_to_ST0_dict[elt])
                                   for elt in real_geom_end_alg_list]),
        )

        Q_automorphism = SelectBox(
            name="aut_grp_label",
            knowl="g2c.aut_grp",
            label=r"\(\Q\)-automorphism group",
            short_label=r"\(\mathrm{Aut}(X)\)",
            options=([("", "")] + [(elt, aut_grp_dict[elt])
                                   for elt in aut_grp_list]),
        )

        geometric_automorphism = SelectBox(
            name="geom_aut_grp_label",
            knowl="g2c.aut_grp",
            label=r"\(\overline{\Q}\)-automorphism group",
            short_label=r"\(\mathrm{Aut}(X_{\overline{\Q}})\)",
            options=([("", "")] + [(elt, geom_aut_grp_dict[elt])
                                   for elt in geom_aut_grp_list]),
        )

        Q_endomorphism = SelectBox(
            name="end_alg",
            knowl="g2c.end_alg",
            label=r"\(\Q\)-endomorphism algebra",
            short_label=r"\(\Q\)-end algebra",
            options=([("", "")] + [(elt, end_alg_dict[elt])
                                   for elt in end_alg_list]),
        )

        geometric_endomorphism = SelectBox(
            name="geom_end_alg",
            knowl="g2c.geom_end_alg",
            label=r"\(\overline{\Q}\)-endomorphism algebra",
            short_label=r"\(\overline{\Q}\)-end algebra",
            options=([("", "")] + [(elt, geom_end_alg_dict[elt])
                                   for elt in geom_end_alg_list]),
        )

        locally_solvable = YesNoBox(
            name="locally_solvable",
            knowl="g2c.locally_solvable",
            label="Locally solvable",
        )

        has_square_sha = YesNoBox(
            name="has_square_sha",
            knowl="g2c.analytic_sha",
            label=r"Order of Ш is square*",
            short_label=r"Square Ш*",
        )

        geometrically_simple = YesNoBox(
            name="is_simple_geom",
            knowl="ag.geom_simple",
            label="Geometrically simple",
            short_label=r"\(\overline{\Q}\)-simple",
        )

        count = CountBox()

        self.browse_array = [
            [geometric_invariants],
            [bad_primes, geometrically_simple],
            [conductor, is_gl2_type],
            [discriminant, st_group],
            [rational_points, st_group_identity_component],
            [rational_weirstrass_points, Q_automorphism],
            [torsion_order, geometric_automorphism],
            [torsion_structure, Q_endomorphism],
            [two_selmer_rank, geometric_endomorphism],
            [analytic_sha, has_square_sha],
            [analytic_rank, locally_solvable],
            [count],
        ]

        self.refine_array = [
            [
                conductor,
                discriminant,
                rational_points,
                rational_weirstrass_points,
                torsion_order,
            ],
            [
                bad_primes,
                two_selmer_rank,
                analytic_rank,
                analytic_sha,
                torsion_structure,
            ],
            [
                Q_endomorphism,
                st_group,
                Q_automorphism,
                has_square_sha,
                geometrically_simple,
            ],
            [
                geometric_endomorphism,
                st_group_identity_component,
                geometric_automorphism,
                locally_solvable,
                is_gl2_type,
            ],
            [geometric_invariants],
        ]