class_docstr: Create the following Elliptic Curve over domain.
  
  `y^{2} + a_{1} x y + a_{3} y = x^{3} + a_{2} x^{2} + a_{4} x + a_{6}`
  
  The default domain is ``QQ``. If no coefficient ``a1``, ``a2``, ``a3``,
  is given then it creates a curve with the following form:
  
  `y^{2} = x^{3} + a_{4} x + a_{6}`
  
  Examples
  ========
  
  References
  ==========
  
  .. [1] J. Silverman "A Friendly Introduction to Number Theory" Third Edition
  .. [2] https://mathworld.wolfram.com/EllipticDiscriminant.html
  .. [3] G. Hardy, E. Wright "An Introduction to the Theory of Numbers" Sixth Edition
class_docstr_tok: ["Create","the","following","Elliptic","Curve","over","domain",".","`","y^","{","2","}","+","a_","{","1","}","x","y","+","a_","{","3","}","y","=","x^","{","3","}","+","a_","{","2","}","x^","{","2","}","+","a_","{","4","}","x","+","a_","{","6","}","`","The","default","domain","is","``","QQ","``",".","If","no","coefficient","``","a1","``",",","``","a2","``",",","``","a3","``",",","is","given","then","it","creates","a","curve","with","the","following","form",":","`","y^","{","2","}","=","x^","{","3","}","+","a_","{","4","}","x","+","a_","{","6","}","`","Examples","========","References","==========","..","[","1","]","J.","Silverman","``","A","Friendly","Introduction","to","Number","Theory","''","Third","Edition","..","[","2","]","https",":","\/\/mathworld.wolfram.com\/EllipticDiscriminant.html","..","[","3","]","G.","Hardy",",","E.","Wright","``","An","Introduction","to","the","Theory","of","Numbers","''","Sixth","Edition"]
docstr: Return points of curve over Finite Field.
  
  Examples
  ========
  
  >>> from sympy.ntheory.elliptic_curve import EllipticCurve
  >>> e2 = EllipticCurve(1, 1, 1, 1, 1, modulus=5)
  >>> e2.points()
  {(0, 2), (1, 4), (2, 0), (2, 2), (3, 0), (3, 1), (4, 0)}
docstr_tok: ["Return","points","of","curve","over","Finite","Field",".","Examples","========",">",">",">","from","sympy.ntheory.elliptic_curve","import","EllipticCurve",">",">",">","e2","=","EllipticCurve","(","1",",","1",",","1",",","1",",","1",",","modulus=5",")",">",">",">","e2.points","(",")","{","(","0",",","2",")",",","(","1",",","4",")",",","(","2",",","0",")",",","(","2",",","2",")",",","(","3",",","0",")",",","(","3",",","1",")",",","(","4",",","0",")","}"]
code: def points(self):
      """
      Return points of curve over Finite Field.
  
      Examples
      ========
  
      >>> from sympy.ntheory.elliptic_curve import EllipticCurve
      >>> e2 = EllipticCurve(1, 1, 1, 1, 1, modulus=5)
      >>> e2.points()
      {(0, 2), (1, 4), (2, 0), (2, 2), (3, 0), (3, 1), (4, 0)}
  
      """
  
      char = self.characteristic
      all_pt = set()
      if char >= 1:
          for i in range(char):
              congruence_eq = self._poly.subs(
                  {self.x: i, self.z: 1}
              ).expr
              sol = polynomial_congruence(congruence_eq, char)
              for num in sol:
                  all_pt.add((i, num))
          return all_pt
      else:
          raise ValueError("Infinitely many points")
  
imports: from sympy.core.numbers import oo
  from sympy.core.symbol import symbols
  from sympy.polys.domains import FiniteField, QQ, RationalField, FF
  from sympy.polys.polytools import Poly
  from sympy.solvers.solvers import solve
  from sympy.utilities.iterables import is_sequence
  from sympy.utilities.misc import as_int
  from .factor_ import divisors
  from .residue_ntheory import polynomial_congruence
label_desc: Use image node_id 6 for calling the EllipticCurve obj's underlying member method code with example usage: obj.points() and returns: all_pt