func (cs *ConstraintSystem) Neg(i interface{}) Variable {
	var res Variable
	switch t := i.(type) {
	case Variable:
		res.linExp = cs.negateLinExp(t.linExp)
	default:
		n := FromInterface(t)
		n.Neg(&n)
		if n.IsUint64() && n.Uint64() == 1 {
			return cs.one()
		}
		res = cs.Constant(n)
	}
	return res
}
Neg returns -i
package frontend
import (
	"math/big"
	"github.com/consensys/gnark/backend/hint"
	"github.com/consensys/gnark/internal/backend/compiled"
)
func (cs *ConstraintSystem) Add(i1, i2 interface{}, in ...interface{}) Variable {
	var res Variable
	res.linExp = make(compiled.LinearExpression, 0, 2+len(in))
	add := func(_i interface{}) {
		switch t := _i.(type) {
		case Variable:
			t.assertIsSet()  
			res.linExp = append(res.linExp, t.linExp.Clone()...)
		default:
			v := cs.Constant(t)
			res.linExp = append(res.linExp, v.linExp.Clone()...)
		}
	}
	add(i1)
	add(i2)
	for i := 0; i < len(in); i++ {
		add(in[i])
	}
	res.linExp = cs.reduce(res.linExp)
	return res
}