forked from Consensys/gnark
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvariable.go
24 lines (20 loc) · 968 Bytes
/
variable.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// Copyright 2020-2025 Consensys Software Inc.
// Licensed under the Apache License, Version 2.0. See the LICENSE file for details.
package frontend
import (
"github.com/consensys/gnark/frontend/internal/expr"
)
// Variable represents a variable in the circuit. Any integer type (e.g. int, *big.Int, fr.Element)
// can be assigned to it. It is also allowed to set a base-10 encoded string representing an integer value.
// The only purpose of putting this definition here is to avoid the import cycles (cs/plonk <-> frontend) and (cs/r1cs <-> frontend)
type Variable interface{}
// IsCanonical returns true if the Variable has been normalized in a (internal) LinearExpression
// by one of the constraint system builders. In other words, if the Variable is a circuit input OR
// returned by the API.
func IsCanonical(v Variable) bool {
switch v.(type) {
case expr.LinearExpression, *expr.LinearExpression, expr.Term, *expr.Term:
return true
}
return false
}