|   | 1 |  initial version  | 
While there is a bug in Singular preventing from using the built-in .variety() method, I've done my own quick-n-dirty alternative implementation of this method. In your example just run myvariety( Eq[0,0].coefficients() + Eq[1,0].coefficients() + [q^4+q for q in K.gens()] )to get its variety with 128 solutions in a minute or so.
def myvariety(sys,vars=None):
    R = sys[0].parent()
    F = sys[0].lc().parent()   # base ring
    J = R.ideal( sys )
    if vars==None:
        vars = R.gens()
    if len(vars)==0:
        return([dict()])
    T = list()
    v = vars[0]
    nvars = vars[1:]
    if len(nvars)>0:
        B = J.elimination_ideal(nvars).basis
    else:
        B = J.groebner_basis()
    assert len(B) == 1
    assert B[0] != 0
    pol = F[v](B[0])       # converting to univariate polynomial
    for q,_ in pol.roots():
        S = myvariety( [r.subs({v:q}) for r in sys], nvars )
        for s in S:
            s.update({v:q})
        T += S
    return T
|   | 2 |  No.2 Revision  | 
While there is a bug in Singular Singular preventing from using the built-in .variety() method, I've done my own quick-n-dirty alternative implementation of this method. In your example just run myvariety( Eq[0,0].coefficients() + Eq[1,0].coefficients() + [q^4+q for q in K.gens()] )to get its variety with 128 solutions in a minute or so.
def myvariety(sys,vars=None):
    R = sys[0].parent()
    F = sys[0].lc().parent()   # base ring
    J = R.ideal( sys )
    if vars==None:
        vars = R.gens()
    if len(vars)==0:
        return([dict()])
    T = list()
    v = vars[0]
    nvars = vars[1:]
    if len(nvars)>0:
        B = J.elimination_ideal(nvars).basis
    else:
        B = J.groebner_basis()
    assert len(B) == 1
    assert B[0] != 0
    pol = F[v](B[0])       # converting to univariate polynomial
    for q,_ in pol.roots():
        S = myvariety( [r.subs({v:q}) for r in sys], nvars )
        for s in S:
            s.update({v:q})
        T += S
    return T
|   | 3 |  No.3 Revision  | 
While there is a bug in Singular preventing from using the built-in .variety() method, I've done my own quick-n-dirty alternative implementation of this method. In your example just run myvariety( Eq[0,0].coefficients() + Eq[1,0].coefficients() + [q^4+q for q in K.gens()] )to get its the corresponding variety with 128 solutions points in a minute or so.
def myvariety(sys,vars=None):
    R = sys[0].parent()
    F = sys[0].lc().parent()   # base ring
    J = R.ideal( sys )
    if vars==None:
        vars = R.gens()
    if len(vars)==0:
        return([dict()])
    T = list()
    v = vars[0]
    nvars = vars[1:]
    if len(nvars)>0:
        B = J.elimination_ideal(nvars).basis
    else:
        B = J.groebner_basis()
    assert len(B) == 1
    assert B[0] != 0
    pol = F[v](B[0])       # converting to univariate polynomial
    for q,_ in pol.roots():
        S = myvariety( [r.subs({v:q}) for r in sys], nvars )
        for s in S:
            s.update({v:q})
        T += S
    return T
|   | 4 |  No.4 Revision  | 
While there is a bug in Singular preventing from using the built-in .variety() method, I've done my own quick-n-dirty alternative implementation of this method. In your example just run myvariety( Eq[0,0].coefficients() + Eq[1,0].coefficients() + [q^4+q for q in K.gens()] )to get the corresponding variety with 128 points in a minute or so.
def myvariety(sys,vars=None):
    R = sys[0].parent()
    F = sys[0].lc().parent()   # base ring
    J = R.ideal( ideal( sys )
    R = J.ring()
    if vars==None:
        vars = R.gens()
    if len(vars)==0:
        return([dict()])
    T = list()
    v = vars[0]
    nvars = vars[1:]
    if len(nvars)>0:
        B = J.elimination_ideal(nvars).basis
    else:
        B = J.groebner_basis()
    assert len(B) == 1
    assert B[0] != 0
    pol = F[v](B[0])       # converting to univariate polynomial
    for q,_ in pol.roots():
        S = myvariety( [r.subs({v:q}) for r in sys], nvars )
        for s in S:
            s.update({v:q})
        T += S
    return T
|   | 5 |  No.5 Revision  | 
While there is a bug in Singular preventing from using the built-in .variety() method, I've done my own quick-n-dirty alternative implementation of this method. In your example just run myvariety( Eq[0,0].coefficients() + Eq[1,0].coefficients() + [q^4+q for q in K.gens()] )to get the corresponding variety with 128 points in a minute or so.
def myvariety(sys,vars=None):
    J = ideal( sys )
    R = J.ring()
    F = sys[0].lc().parent() R.base_ring()           # base ring
    J = ideal( sys )
    R = J.ring()
    if vars==None:
        vars = R.gens()
    if len(vars)==0:
        return([dict()])
    T = list()
    v = vars[0]
    nvars = vars[1:]
    if len(nvars)>0:
        B = J.elimination_ideal(nvars).basis
    else:
        B = J.groebner_basis()
    assert len(B) == 1
    assert B[0] != 0
    pol = F[v](B[0])       # converting to univariate polynomial
    for q,_ in pol.roots():
        S = myvariety( [r.subs({v:q}) for r in sys], nvars )
        for s in S:
            s.update({v:q})
        T += S
    return T
|   | 6 |  No.6 Revision  | 
While there is a bug in Singular preventing from using the built-in .variety() method, I've done my own quick-n-dirty alternative implementation of this method. In your example just run myvariety( Eq[0,0].coefficients() + Eq[1,0].coefficients() + [q^4+q for q in K.gens()] )to get the corresponding variety with 128 points in a minute or so.
def myvariety(sys,vars=None):
    J = ideal( sys )
    R = J.ring()
    F = R.base_ring()           # base ring
    if vars==None:
        vars = R.gens()
    if len(vars)==0:
        return([dict()])
    T = list()
    v = vars[0]
    nvars = vars[1:]
    if len(nvars)>0:
        B = J.elimination_ideal(nvars).basis
    else:
        B = J.groebner_basis()
    assert len(B) == 1
    assert B[0] != 0
    pol = F[v](B[0])       # converting to univariate polynomial
    for q,_ in pol.roots():
        S = myvariety( [r.subs({v:q}) for r in sys], nvars )
        for s in S:
            s.update({v:q})
        T += S
    return T
|   | 7 |  No.7 Revision  | 
While there is a bug in Singular preventing from using the built-in .variety() method, I've done my own quick-n-dirty alternative implementation of this method. In your example just run myvariety( Eq[0,0].coefficients() + Eq[1,0].coefficients() + [q^4+q for q in K.gens()] )to get the corresponding variety with 128 points in a minute or so.
def myvariety(sys,vars=None):
    J = ideal( sys )
    R = J.ring()
    F = R.base_ring()           # base ring
    if vars==None:
        vars = R.gens()
    if len(vars)==0:
        return([dict()])
    T = list()
    v = vars[0]
    nvars = vars[1:]
    B = J.elimination_ideal(nvars).basis
    assert len(B) == 1
    assert B[0] != 0
    pol = F[v](B[0])       # converting to univariate polynomial
    for q,_ in pol.roots():
        S = myvariety( [r.subs({v:q}) for r in sys], J.interreduced_basis()], nvars )
        for s in S:
            s.update({v:q})
        T += S
    return T
|   | 8 |  No.8 Revision  | 
While there is a bug in Singular preventing from using the built-in .variety() method, I've done my own quick-n-dirty alternative implementation of this method.
In your example just run myvariety( Eq[0,0].coefficients() + Eq[1,0].coefficients() + [q^4+q for q in K.gens()] )to get the corresponding variety with 128 points in a minute or so.so.
In fact, the variety here represents a vector space over $\mathrm{GF}(2)$ spanned by 7 vectors (and $128 = 2^7$).
def myvariety(sys,vars=None):
    J = ideal( sys )
    R = J.ring()
    F = R.base_ring()           # base ring
    if vars==None:
        vars = R.gens()
    if len(vars)==0:
        return([dict()])
    T = list()
    v = vars[0]
    nvars = vars[1:]
    B = J.elimination_ideal(nvars).basis
    assert len(B) == 1
    assert B[0] != 0
    pol = F[v](B[0])       # converting to univariate polynomial
    for q,_ in pol.roots():
        S = myvariety( [r.subs({v:q}) for r in J.interreduced_basis()], nvars )
        for s in S:
            s.update({v:q})
        T += S
    return T
|   | 9 |  No.9 Revision  | 
While there is a bug in Singular preventing from using the built-in .variety() method, I've done my own quick-n-dirty alternative implementation of this method.
In your example just run myvariety( Eq[0,0].coefficients() + Eq[1,0].coefficients() + [q^4+q for q in K.gens()] )to get the corresponding variety with 128 points of size $128$ in a minute or so.
In fact, the variety here represents a vector space over $\mathrm{GF}(2)$ spanned by 7 vectors (and $128 = 2^7$).
def myvariety(sys,vars=None):
    J = ideal( sys )
    R = J.ring()
    F = R.base_ring()           # base ring
    if vars==None:
        vars = R.gens()
    if len(vars)==0:
        return([dict()])
    T = list()
    v = vars[0]
    nvars = vars[1:]
    B = J.elimination_ideal(nvars).basis
    assert len(B) == 1
    assert B[0] != 0
    pol = F[v](B[0])       # converting to univariate polynomial
    for q,_ in pol.roots():
        S = myvariety( [r.subs({v:q}) for r in J.interreduced_basis()], nvars )
        for s in S:
            s.update({v:q})
        T += S
    return T
|   | 10 |  No.10 Revision  | 
While there is a bug in Singular preventing from using the built-in .variety() method, I've done my own quick-n-dirty alternative implementation of this method.
In your example just run myvariety( Eq[0,0].coefficients() + Eq[1,0].coefficients() + [q^4+q for q in K.gens()] )to get the corresponding variety of size $128$ in a minute or so.
In fact, the variety here represents a vector space over $\mathrm{GF}(2)$ spanned by 7 vectors (and $128 = 2^7$).
def myvariety(sys,vars=None):
    J = ideal( sys )
    R = J.ring()
    F = R.base_ring()           # base ring
    if vars==None:
        vars = R.gens()
    if len(vars)==0:
        return([dict()])
    T = list()
    v = vars[0]
    nvars = vars[1:]
    B = J.elimination_ideal(nvars).basis
    assert len(B) == 1
    assert B[0] != 0
    pol = F[v](B[0])       # converting to univariate polynomial
    for q,_ in pol.roots():
B[0].univariate_polynomial().roots():
        S = myvariety( [r.subs({v:q}) for r in J.interreduced_basis()], nvars )
        for s in S:
            s.update({v:q})
        T += S
    return T
|   | 11 |  No.11 Revision  | 
While there is a bug in Singular preventing from using the built-in .variety() method, I've done my own quick-n-dirty alternative implementation of this method.
In your example just run myvariety( Eq[0,0].coefficients() + Eq[1,0].coefficients() + [q^4+q for q in K.gens()] )to get the corresponding variety of size $128$ in a minute or so.
In fact, the variety here represents a vector space over $\mathrm{GF}(2)$ spanned by 7 vectors (and $128 = 2^7$).
def myroots(p):
    return p.roots(multiplicities=False)
def myvariety(sys,vars=None):
    J = ideal( sys )
    R = J.ring()
    if vars==None:
        vars = R.gens()
    if len(vars)==0:
        return([dict()])
    T = list()
    v = vars[0]
    nvars = vars[1:]
    B = J.elimination_ideal(nvars).basis
    assert len(B) == 1
    assert B[0] != 0
    for q,_ in B[0].univariate_polynomial().roots():
myroots(B[0].univariate_polynomial()):
        S = myvariety( [r.subs({v:q}) for r in J.interreduced_basis()], nvars )
        for s in S:
            s.update({v:q})
        T += S
    return T
|   | 12 |  No.12 Revision  | 
While there is a bug in Singular preventing from using the built-in .variety() method, I've done my own quick-n-dirty alternative implementation of this method.
In your example just run myvariety( Eq[0,0].coefficients() + Eq[1,0].coefficients() + [q^4+q for q in K.gens()] )to get the corresponding variety of size $128$ in a minute or so.
In fact, the variety here represents a vector space over $\mathrm{GF}(2)$ spanned by 7 vectors (and $128 = 2^7$).
def myroots(p):
    return p.roots(multiplicities=False)
def myvariety(sys,vars=None):
    J = ideal( sys )
    R = J.ring()
    if vars==None:
        vars = R.gens()
    if len(vars)==0:
        return([dict()])
    T = list()
    v = vars[0]
    nvars = vars[1:]
    B = J.elimination_ideal(nvars).basis
    assert len(B) == 1
    assert B[0] != 0
    for q,_ q in myroots(B[0].univariate_polynomial()):
        S = myvariety( [r.subs({v:q}) for r in J.interreduced_basis()], nvars )
        for s in S:
            s.update({v:q})
        T += S
    return T
|   | 13 |  No.13 Revision  | 
While there is a bug in Singular preventing from using the built-in .variety() method, I've done my own quick-n-dirty alternative implementation of this method.
In your example just run myvariety( Eq[0,0].coefficients() + Eq[1,0].coefficients() + [q^4+q for q in K.gens()] )to get the corresponding variety of size $128$ in a minute or so.
In fact, the variety here represents a vector space over $\mathrm{GF}(2)$ spanned by 7 vectors (and $128 = 2^7$).
def myroots(p):
    return p.roots(multiplicities=False)
def myvariety(sys,vars=None):
    J = ideal( sys )
    R = J.ring()
    if vars==None:
        vars = R.gens()
    if len(vars)==0:
        return([dict()])
return [dict()]
    T = list()
    v = vars[0]
    nvars = vars[1:]
    B = J.elimination_ideal(nvars).basis
    assert len(B) == 1
    assert B[0] != 0
    for q in myroots(B[0].univariate_polynomial()):
        S = myvariety( [r.subs({v:q}) for r in J.interreduced_basis()], nvars )
        for s in S:
            s.update({v:q})
        T += S
    return T
|   | 14 |  No.14 Revision  | 
While there is a bug in Singular preventing from using the built-in .variety() method, I've done my own quick-n-dirty alternative implementation of this method. 
In your example just run myvariety( Eq[0,0].coefficients() + Eq[1,0].coefficients() + [q^4+q for q in K.gens()] )to get the corresponding variety of size $128$ in a minute or so.
In fact, the variety here represents a vector space over $\mathrm{GF}(2)$ spanned by 7 vectors (and $128 = 2^7$).
def myroots(p):
    return p.roots(multiplicities=False)
def myvariety(sys,vars=None):
    J = ideal( sys )
    R = J.ring()
    if vars==None:
        vars = R.gens()
    if len(vars)==0:
        return [dict()]
    T = list()
    v = vars[0]
    nvars = vars[1:]
    B = J.elimination_ideal(nvars).basis
    assert len(B) == 1
    assert B[0] != 0
    for q in myroots(B[0].univariate_polynomial()):
        S = myvariety( [r.subs({v:q}) for r in J.interreduced_basis()], nvars )
        for s in S:
            s.update({v:q})
        T += S
    return T
|   | 15 |  No.15 Revision  | 
While there is a bug in Singular preventing from using the built-in .variety() method, I've done my own quick-n-dirty alternative implementation of this method. 
In your example just run myvariety( Eq[0,0].coefficients() + Eq[1,0].coefficients() + [q^4+q for q in K.gens()] )to get the corresponding variety of size $128$ in a minute or so.
In fact, the variety here represents a vector space over $\mathrm{GF}(2)$ spanned by 7 vectors (and $128 = 2^7$).
def myroots(p):
    return p.roots(multiplicities=False)
def myvariety(sys,vars=None):
    J = ideal( sys )
    R = J.ring()
    if vars==None:
        vars = R.gens()
    if len(vars)==0:
        return [dict()]
    T = list()
    v = vars[0]
    nvars = vars[1:]
    B = J.elimination_ideal(nvars).basis
    assert len(B) == 1
    assert B[0] != 0
    for q in myroots(B[0].univariate_polynomial()):
        S = myvariety( [r.subs({v:q}) for r in J.interreduced_basis()], nvars )
        for s in S:
            s.update({v:q})
        T += S
    return T
|   | 16 |  No.16 Revision  | 
While there is a bug in Singular preventing from using the built-in .variety() method, I've done my own quick-n-dirty alternative implementation of this method. 
In your example just run myvariety( Eq[0,0].coefficients() + Eq[1,0].coefficients() + [q^4+q for q in K.gens()] )to get the corresponding variety of size $128$ in a minute or so.
In fact, the variety here represents a vector space over $\mathrm{GF}(2)$ spanned by 7 vectors (and $128 = 2^7$).
def myroots(p):
    return p.roots(multiplicities=False)
def myvariety(sys,vars=None):
    J = ideal( sys )
    R = J.ring()
    if vars==None:
        vars = R.gens()
    if len(vars)==0:
        return [dict()]
    T = list()
    v = vars[0]
    nvars = vars[1:]
    B = J.elimination_ideal(nvars).basis
    assert len(B) == 1
    assert B[0] != 0
    for q in myroots(B[0].univariate_polynomial()):
        S = myvariety( [r.subs({v:q}) for r in J.interreduced_basis()], nvars )
        for s in S:
            s.update({v:q})
        T += S
    return T
 Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.
 
                
                Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.