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], ]
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]]
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)
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]]
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]]
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], ]