zkfold-base-0.1.0.0: ZkFold Symbolic compiler and zero-knowledge proof protocols
Safe HaskellSafe-Inferred
LanguageHaskell2010

ZkFold.Symbolic.Compiler.ArithmeticCircuit.Internal

Synopsis

Documentation

data ArithmeticCircuit a Source #

Arithmetic circuit in the form of a system of polynomial constraints.

Constructors

ArithmeticCircuit 

Fields

Instances

Instances details
Arithmetic a => MonadBlueprint Natural a (State (ArithmeticCircuit a)) Source # 
Instance details

Defined in ZkFold.Symbolic.Compiler.ArithmeticCircuit.MonadBlueprint

(Arithmetic a, FromConstant b a) => FromConstant b (ArithmeticCircuit a) Source # 
Instance details

Defined in ZkFold.Symbolic.Compiler.ArithmeticCircuit.Instance

(Arithmetic a, Scale c a) => Scale c (ArithmeticCircuit a) Source # 
Instance details

Defined in ZkFold.Symbolic.Compiler.ArithmeticCircuit.Instance

Arithmetic a => SymbolicData a (Address (ArithmeticCircuit a)) Source # 
Instance details

Defined in ZkFold.Symbolic.Cardano.Types

Arithmetic a => SymbolicData a (OutputRef (ArithmeticCircuit a)) Source # 
Instance details

Defined in ZkFold.Symbolic.Cardano.Types

Arithmetic a => SymbolicData a (TxId (ArithmeticCircuit a)) Source # 
Instance details

Defined in ZkFold.Symbolic.Cardano.Types

Arithmetic a => SymbolicData a (ArithmeticCircuit a) Source # 
Instance details

Defined in ZkFold.Symbolic.Compiler.ArithmeticCircuit.Instance

Arithmetic a => SymbolicData a (Bool (ArithmeticCircuit a)) Source # 
Instance details

Defined in ZkFold.Symbolic.Compiler.ArithmeticCircuit.Instance

Arithmetic a => SymbolicData a (UTCTime (ArithmeticCircuit a)) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.UTCTime

(Arithmetic a, SymbolicData a (UInt 256 (ArithmeticCircuit a)), FromConstant Natural (UInt 512 (ArithmeticCircuit a)), EuclideanDomain (UInt 512 (ArithmeticCircuit a)), BinaryExpansion (UInt 256 (ArithmeticCircuit a))) => EllipticCurve (Ed25519 (ArithmeticCircuit a) :: Type) Source #

Ed25519 with UInt 256 (ArithmeticCircuit a) as computational backend

Instance details

Defined in ZkFold.Symbolic.Data.Ed25519

SymbolicData a (UInt 256 (ArithmeticCircuit a)) => SymbolicData a (Point (Ed25519 (ArithmeticCircuit a))) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.Ed25519

(Arithmetic a, KnownNat n) => SymbolicData a (Value n (ArithmeticCircuit a)) Source # 
Instance details

Defined in ZkFold.Symbolic.Cardano.Types

(Arithmetic a, KnownNat n) => SymbolicData a (ByteString n (ArithmeticCircuit a)) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.ByteString

(Arithmetic a, KnownNat n) => SymbolicData a (UInt n (ArithmeticCircuit a)) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.UInt

(Arithmetic a, KnownNat tokens) => SymbolicData a (Input tokens datum (ArithmeticCircuit a)) Source # 
Instance details

Defined in ZkFold.Symbolic.Cardano.Types

(Arithmetic a, KnownNat tokens) => SymbolicData a (Output tokens datum (ArithmeticCircuit a)) Source # 
Instance details

Defined in ZkFold.Symbolic.Cardano.Types

(Arithmetic a, KnownNat inputs, KnownNat rinputs, KnownNat outputs, KnownNat tokens) => SymbolicData a (Transaction inputs rinputs outputs tokens datum (ArithmeticCircuit a)) Source # 
Instance details

Defined in ZkFold.Symbolic.Cardano.Types

Methods

pieces :: Transaction inputs rinputs outputs tokens datum (ArithmeticCircuit a) -> [ArithmeticCircuit a] Source #

restore :: [ArithmeticCircuit a] -> Transaction inputs rinputs outputs tokens datum (ArithmeticCircuit a) Source #

typeSize :: Natural Source #

Arithmetic a => Arbitrary (ArithmeticCircuit a) Source # 
Instance details

Defined in ZkFold.Symbolic.Compiler.ArithmeticCircuit.Instance

FromJSON a => FromJSON (ArithmeticCircuit a) Source # 
Instance details

Defined in ZkFold.Symbolic.Compiler.ArithmeticCircuit.Instance

ToJSON a => ToJSON (ArithmeticCircuit a) Source # 
Instance details

Defined in ZkFold.Symbolic.Compiler.ArithmeticCircuit.Instance

(FiniteField a, Eq a) => Monoid (ArithmeticCircuit a) Source # 
Instance details

Defined in ZkFold.Symbolic.Compiler.ArithmeticCircuit.Internal

Eq a => Semigroup (ArithmeticCircuit a) Source # 
Instance details

Defined in ZkFold.Symbolic.Compiler.ArithmeticCircuit.Internal

Generic (ArithmeticCircuit a) Source # 
Instance details

Defined in ZkFold.Symbolic.Compiler.ArithmeticCircuit.Internal

Associated Types

type Rep (ArithmeticCircuit a) :: Type -> Type #

(FiniteField a, Eq a, Show a) => Show (ArithmeticCircuit a) Source # 
Instance details

Defined in ZkFold.Symbolic.Compiler.ArithmeticCircuit.Instance

NFData a => NFData (ArithmeticCircuit a) Source # 
Instance details

Defined in ZkFold.Symbolic.Compiler.ArithmeticCircuit.Internal

Methods

rnf :: ArithmeticCircuit a -> () #

Arithmetic a => AdditiveGroup (ArithmeticCircuit a) Source # 
Instance details

Defined in ZkFold.Symbolic.Compiler.ArithmeticCircuit.Instance

Arithmetic a => AdditiveMonoid (ArithmeticCircuit a) Source # 
Instance details

Defined in ZkFold.Symbolic.Compiler.ArithmeticCircuit.Instance

Arithmetic a => AdditiveSemigroup (ArithmeticCircuit a) Source # 
Instance details

Defined in ZkFold.Symbolic.Compiler.ArithmeticCircuit.Instance

Arithmetic a => BinaryExpansion (ArithmeticCircuit a) Source # 
Instance details

Defined in ZkFold.Symbolic.Compiler.ArithmeticCircuit.Instance

Arithmetic a => DiscreteField' (ArithmeticCircuit a) Source # 
Instance details

Defined in ZkFold.Symbolic.Compiler.ArithmeticCircuit.Instance

Arithmetic a => Field (ArithmeticCircuit a) Source # 
Instance details

Defined in ZkFold.Symbolic.Compiler.ArithmeticCircuit.Instance

FiniteField a => Finite (ArithmeticCircuit a) Source # 
Instance details

Defined in ZkFold.Symbolic.Compiler.ArithmeticCircuit.Instance

Associated Types

type Order (ArithmeticCircuit a) :: Natural Source #

Arithmetic a => MultiplicativeMonoid (ArithmeticCircuit a) Source # 
Instance details

Defined in ZkFold.Symbolic.Compiler.ArithmeticCircuit.Instance

Arithmetic a => MultiplicativeSemigroup (ArithmeticCircuit a) Source # 
Instance details

Defined in ZkFold.Symbolic.Compiler.ArithmeticCircuit.Instance

Arithmetic a => Ring (ArithmeticCircuit a) Source # 
Instance details

Defined in ZkFold.Symbolic.Compiler.ArithmeticCircuit.Instance

Arithmetic a => Semiring (ArithmeticCircuit a) Source # 
Instance details

Defined in ZkFold.Symbolic.Compiler.ArithmeticCircuit.Instance

Arithmetic a => TrichotomyField (ArithmeticCircuit a) Source # 
Instance details

Defined in ZkFold.Symbolic.Compiler.ArithmeticCircuit.Instance

Arithmetic a => Exponent (ArithmeticCircuit a) Integer Source # 
Instance details

Defined in ZkFold.Symbolic.Compiler.ArithmeticCircuit.Instance

Arithmetic a => Exponent (ArithmeticCircuit a) Natural Source # 
Instance details

Defined in ZkFold.Symbolic.Compiler.ArithmeticCircuit.Instance

SymbolicData a x => Hash (ArithmeticCircuit a) x Source # 
Instance details

Defined in ZkFold.Symbolic.Cardano.Contracts.BatchTransfer

Methods

hash :: x -> ArithmeticCircuit a Source #

SymbolicData a x => Conditional (Bool (ArithmeticCircuit a)) x Source # 
Instance details

Defined in ZkFold.Symbolic.Compiler.ArithmeticCircuit.Instance

Methods

bool :: x -> x -> Bool (ArithmeticCircuit a) -> x Source #

gif :: Bool (ArithmeticCircuit a) -> x -> x -> x Source #

(?) :: Bool (ArithmeticCircuit a) -> x -> x -> x Source #

Arithmetic a => DiscreteField (Bool (ArithmeticCircuit a)) (ArithmeticCircuit a) Source # 
Instance details

Defined in ZkFold.Symbolic.Compiler.ArithmeticCircuit.Instance

Arithmetic a => Eq (Bool (ArithmeticCircuit a)) (ArithmeticCircuit a) Source # 
Instance details

Defined in ZkFold.Symbolic.Compiler.ArithmeticCircuit.Instance

SymbolicData a x => Eq (Bool (ArithmeticCircuit a)) (Structural x) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.Eq.Structural

Arithmetic a => Ord (Bool (ArithmeticCircuit a)) (ArithmeticCircuit a) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.Ord

SymbolicData a x => Ord (Bool (ArithmeticCircuit a)) (Lexicographical x) Source #

Every SymbolicData type can be compared lexicographically.

Instance details

Defined in ZkFold.Symbolic.Data.Ord

(Arithmetic a, KnownNat n) => Eq (Bool (ArithmeticCircuit a)) (UInt n (ArithmeticCircuit a)) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.UInt

(Arithmetic a, KnownNat n) => Ord (Bool (ArithmeticCircuit a)) (UInt n (ArithmeticCircuit a)) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.UInt

(Arithmetic a, KnownNat n, KnownNat (NumberOfBits a), NumberOfBits a <= n) => StrictConv (ArithmeticCircuit a) (UInt n (ArithmeticCircuit a)) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.UInt

(Arithmetic a, KnownNat tokens) => Eq (Bool (ArithmeticCircuit a)) (Output tokens datum (ArithmeticCircuit a)) Source # 
Instance details

Defined in ZkFold.Symbolic.Cardano.Types

Methods

(==) :: Output tokens datum (ArithmeticCircuit a) -> Output tokens datum (ArithmeticCircuit a) -> Bool (ArithmeticCircuit a) Source #

(/=) :: Output tokens datum (ArithmeticCircuit a) -> Output tokens datum (ArithmeticCircuit a) -> Bool (ArithmeticCircuit a) Source #

(Arithmetic a, KnownNat n) => Arbitrary (UInt n (ArithmeticCircuit a)) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.UInt

(Arithmetic a, KnownNat n) => AdditiveGroup (UInt n (ArithmeticCircuit a)) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.UInt

(Arithmetic a, KnownNat n) => AdditiveMonoid (UInt n (ArithmeticCircuit a)) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.UInt

(Arithmetic a, KnownNat n) => AdditiveSemigroup (UInt n (ArithmeticCircuit a)) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.UInt

(Arithmetic a, KnownNat n) => EuclideanDomain (UInt n (ArithmeticCircuit a)) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.UInt

(Arithmetic a, KnownNat n) => MultiplicativeMonoid (UInt n (ArithmeticCircuit a)) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.UInt

(Arithmetic a, KnownNat n) => MultiplicativeSemigroup (UInt n (ArithmeticCircuit a)) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.UInt

(Arithmetic a, KnownNat n) => Ring (UInt n (ArithmeticCircuit a)) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.UInt

(Arithmetic a, KnownNat n) => Semiring (UInt n (ArithmeticCircuit a)) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.UInt

(Arithmetic a, KnownNat n) => BoolType (ByteString n (ArithmeticCircuit a)) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.ByteString

(Arithmetic a, KnownNat n) => ShiftBits (ByteString n (ArithmeticCircuit a)) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.ByteString

(Arithmetic a, KnownNat n) => StrictNum (UInt n (ArithmeticCircuit a)) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.UInt

Mod n m ~ 0 => Concat (ByteString m (ArithmeticCircuit a)) (ByteString n (ArithmeticCircuit a)) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.ByteString

(KnownNat wordSize, 1 <= wordSize, 1 <= n, Mod n wordSize ~ 0) => ToWords (ByteString n (ArithmeticCircuit a)) (ByteString wordSize (ArithmeticCircuit a)) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.ByteString

(KnownNat n, n <= m) => Truncate (ByteString m (ArithmeticCircuit a)) (ByteString n (ArithmeticCircuit a)) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.ByteString

(KnownNat m, KnownNat n, m <= n, Arithmetic a) => Extend (ByteString m (ArithmeticCircuit a)) (ByteString n (ArithmeticCircuit a)) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.ByteString

(Arithmetic a, KnownNat n, KnownNat m, n <= m) => Extend (UInt n (ArithmeticCircuit a)) (UInt m (ArithmeticCircuit a)) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.UInt

(Arithmetic a, KnownNat n) => Iso (ByteString n (ArithmeticCircuit a)) (UInt n (ArithmeticCircuit a)) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.ByteString

(Arithmetic a, KnownNat n) => Iso (UInt n (ArithmeticCircuit a)) (ByteString n (ArithmeticCircuit a)) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.ByteString

(Arithmetic a, KnownNat n, KnownNat k, k <= n) => Shrink (UInt n (ArithmeticCircuit a)) (UInt k (ArithmeticCircuit a)) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.UInt

type BaseField (Ed25519 (ArithmeticCircuit a) :: Type) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.Ed25519

type ScalarField (Ed25519 (ArithmeticCircuit a) :: Type) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.Ed25519

type Rep (ArithmeticCircuit a) Source # 
Instance details

Defined in ZkFold.Symbolic.Compiler.ArithmeticCircuit.Internal

type Rep (ArithmeticCircuit a) = D1 ('MetaData "ArithmeticCircuit" "ZkFold.Symbolic.Compiler.ArithmeticCircuit.Internal" "zkfold-base-0.1.0.0-inplace" 'False) (C1 ('MetaCons "ArithmeticCircuit" 'PrefixI 'True) ((S1 ('MetaSel ('Just "acSystem") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map Natural (Constraint a))) :*: (S1 ('MetaSel ('Just "acInput") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Natural]) :*: S1 ('MetaSel ('Just "acWitness") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map Natural a -> Map Natural a)))) :*: (S1 ('MetaSel ('Just "acOutput") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Natural) :*: (S1 ('MetaSel ('Just "acVarOrder") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map (Natural, Natural) Natural)) :*: S1 ('MetaSel ('Just "acRNG") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 StdGen)))))
type Order (ArithmeticCircuit a) Source # 
Instance details

Defined in ZkFold.Symbolic.Compiler.ArithmeticCircuit.Instance

type Constraint c = Polynomial' c Source #

The type that represents a constraint in the arithmetic circuit.

constraint :: Arithmetic a => Constraint a -> State (ArithmeticCircuit a) () Source #

Adds a constraint to the arithmetic circuit.

assignment :: (Map Natural a -> a) -> State (ArithmeticCircuit a) () Source #

Adds a new variable assignment to the arithmetic circuit. TODO: forbid reassignment of variables

input :: forall a. State (ArithmeticCircuit a) (ArithmeticCircuit a) Source #

Adds a new input variable to the arithmetic circuit. Returns a copy of the arithmetic circuit with this variable as output.

eval :: ArithmeticCircuit a -> Map Natural a -> a Source #

Evaluates the arithmetic circuit using the supplied input map.

apply :: [a] -> State (ArithmeticCircuit a) () Source #

Applies the values of the first n inputs to the arithmetic circuit. TODO: make this safe

forceZero :: forall a. Arithmetic a => State (ArithmeticCircuit a) () Source #

Forces the current variable to be zero.