def abelian_variety_search(info, query): parse_ints(info,query,'q',name='base field') parse_ints(info,query,'g',name='dimension') parse_bool(info,query,'simple',qfield='is_simp') parse_bool(info,query,'primitive',qfield='is_prim') parse_bool_unknown(info, query, 'jacobian', qfield='is_jac') parse_bool_unknown(info, query, 'polarizable', qfield='is_pp') parse_ints(info,query,'p_rank') parse_ints(info,query,'ang_rank') parse_newton_polygon(info,query,'newton_polygon',qfield='slps') parse_string_start(info,query,'initial_coefficients',qfield='poly_str',initial_segment=["1"]) parse_string_start(info,query,'abvar_point_count',qfield='A_cnts_str') parse_string_start(info,query,'curve_point_count',qfield='C_cnts_str',first_field='pt_cnt') if info.get('simple_quantifier') == 'contained': parse_subset(info,query,'simple_factors',qfield='simple_distinct',mode='subsets') elif info.get('simple_quantifier') == 'exactly': parse_subset(info,query,'simple_factors',qfield='simple_distinct',mode='exact') elif info.get('simple_quantifier') == 'include': parse_submultiset(info,query,'simple_factors',mode='append') for n in range(1,6): parse_ints(info,query,'dim%s_factors'%n) for n in range(1,4): parse_ints(info,query,'dim%s_distinct'%n) parse_nf_string(info,query,'number_field',qfield='nf') parse_galgrp(info,query,qfield=('galois_n','galois_t'))
def common_parse(info, query): parse_ints(info, query, "q", name="base field") parse_ints(info, query, "p", name="base cardinality") parse_ints(info, query, "g", name="dimension") parse_ints(info, query, "geom_deg", qfield="geometric_extension_degree") parse_bool(info, query, "simple", qfield="is_simple") parse_bool(info, query, "geom_simple", qfield="is_geometrically_simple") parse_bool(info, query, "primitive", qfield="is_primitive") parse_bool_unknown(info, query, "jacobian", qfield="has_jacobian") parse_bool_unknown(info, query, "polarizable", qfield="has_principal_polarization") parse_ints(info, query, "p_rank") parse_ints(info, query, "p_rank_deficit") parse_ints(info, query, "angle_rank") parse_ints(info, query, "jac_cnt", qfield="jacobian_count", name="Number of Jacobians") parse_ints(info, query, "hyp_cnt", qfield="hyp_count", name="Number of Hyperelliptic Jacobians") parse_ints(info, query, "twist_count") parse_ints(info, query, "max_twist_degree") parse_ints(info, query, "size") parse_newton_polygon(info, query, "newton_polygon", qfield="slopes") parse_string_start(info, query, "initial_coefficients", qfield="poly_str", initial_segment=["1"]) parse_string_start(info, query, "abvar_point_count", qfield="abvar_counts_str", first_field="abvar_count") parse_string_start(info, query, "curve_point_count", qfield="curve_counts_str", first_field="curve_count") if info.get("simple_quantifier") in ["subset", "exactly"]: parse_subset(info, query, "simple_factors", qfield="simple_distinct", mode=info.get("simple_quantifier")) else: parse_submultiset(info, query, "simple_factors") if info.get("use_geom_decomp") == "on": dimstr = "geom_dim" nf_qfield = "geometric_number_fields" gal_qfield = "geometric_galois_groups" else: dimstr = "dim" nf_qfield = "number_fields" gal_qfield = "galois_groups" for n in range(1, 6): parse_ints(info, query, "dim%s_factors" % n, qfield="%s%s_factors" % (dimstr, n)) for n in range(1, 4): parse_ints(info, query, "dim%s_distinct" % n, qfield="%s%s_distinct" % (dimstr, n)) parse_nf_string(info, query, "number_field", qfield=nf_qfield) parse_galgrp(info, query, "galois_group", qfield=gal_qfield) if 'geom_squarefree' in info: if info['geom_squarefree'] == 'Yes': query['is_squarefree'] = True elif info['geom_squarefree'] == 'YesAndGeom': query['is_squarefree'] = True query['is_geometrically_squarefree'] = True elif info['geom_squarefree'] == 'YesNotGeom': query['is_squarefree'] = True query['is_geometrically_squarefree'] = False elif info['geom_squarefree'] == 'No': query['is_squarefree'] = False elif info['geom_squarefree'] == 'NotGeom': query['is_geometrically_squarefree'] = False