func (p *G1Jac) AssignToRefactor(cs *frontend.ConstraintSystem, p1 *G1Jac) *G1Jac {
	p.X = cs.Constant(p1.X)
	p.Y = cs.Constant(p1.Y)
	p.Z = cs.Constant(p1.Z)
	return p
}
AssignToRefactor sets p to p1 and return it
package sw
import (
	"math/big"
	bls12377 "github.com/consensys/gnark-crypto/ecc/bls12-377"
	"github.com/consensys/gnark-crypto/ecc/bls12-377/fp"
	"github.com/consensys/gnark-crypto/ecc/bw6-761/fr"
	"github.com/consensys/gnark/frontend"
)
type G1Jac struct {
	X, Y, Z frontend.Variable
}
type G1Affine struct {
	X, Y frontend.Variable
}
func (p *G1Jac) Neg(cs *frontend.ConstraintSystem, p1 *G1Jac) *G1Jac {
	p.X = p1.X
	p.Y = cs.Sub(0, p1.Y)
	p.Z = p1.Z
	return p
}
func (p *G1Affine) Neg(cs *frontend.ConstraintSystem, p1 *G1Affine) *G1Affine {
	p.X = p1.X
	p.Y = cs.Sub(0, p1.Y)
	return p
}
func (p *G1Affine) AddAssign(cs *frontend.ConstraintSystem, p1 *G1Affine) *G1Affine {
	l1 := cs.Sub(p1.Y, p.Y)
	l2 := cs.Sub(p1.X, p.X)
	l := cs.Div(l1, l2)
	_x1 := cs.Mul(l, l)
	_x2 := cs.Add(p.X, p1.X)
	_x := cs.Sub(_x1, _x2)
	t1 := cs.Mul(p.X, l)
	t2 := cs.Mul(l, _x)
	l31 := cs.Add(t2, p.Y)
	l3 := cs.Sub(t1, l31)
	p.Y = cs.Mul(l3, 1)
	p.X = cs.Mul(_x, 1)
	return p
}