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

ZkFold.Symbolic.Compiler.Arithmetizable

Synopsis

Documentation

class Arithmetic a => Arithmetizable a x where Source #

A class for arithmetizable types, that is, a class of types whose computations can be represented by arithmetic circuits. Type a is the finite field of the arithmetic circuit. Type x represents the arithmetizable type.

Methods

arithmetize :: x -> [ArithmeticCircuit a] -> [ArithmeticCircuit a] Source #

Given a list of circuits computing inputs, return a list of circuits computing the result of x.

inputSize :: Natural Source #

The number of finite field elements needed to describe an input of x.

outputSize :: Natural Source #

The number of finite field elements needed to describe the result of x.

data SomeData a where Source #

Constructors

SomeData :: (Typeable t, SymbolicData a t) => t -> SomeData a 

class Arithmetic a => SymbolicData a x where Source #

A class for Symbolic data types. Type a is the finite field of the arithmetic circuit. Type x represents the data type.

Methods

pieces :: x -> [ArithmeticCircuit a] Source #

Returns the circuits that make up x.

restore :: [ArithmeticCircuit a] -> x Source #

Restores x from the circuits' outputs.

typeSize :: Natural Source #

Returns the number of finite field elements needed to describe x.

Instances

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

Defined in ZkFold.Symbolic.Compiler.Arithmetizable

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

SymbolicData a x => SymbolicData a (Lexicographical x) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.Ord

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

Defined in ZkFold.Symbolic.Data.UTCTime

SymbolicData i a => SymbolicData i (ScriptHash a) Source # 
Instance details

Defined in ZkFold.Symbolic.Cardano.Types

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

Defined in ZkFold.Symbolic.Data.Ed25519

(SymbolicData a x, KnownNat n) => SymbolicData a (Vector n x) Source # 
Instance details

Defined in ZkFold.Symbolic.Compiler.Arithmetizable

(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

(SymbolicData a x, SymbolicData a y) => SymbolicData a (x, y) Source # 
Instance details

Defined in ZkFold.Symbolic.Compiler.Arithmetizable

(SymbolicData a x, SymbolicData a y, SymbolicData a z) => SymbolicData a (x, y, z) Source # 
Instance details

Defined in ZkFold.Symbolic.Compiler.Arithmetizable

Methods

pieces :: (x, y, z) -> [ArithmeticCircuit a] Source #

restore :: [ArithmeticCircuit a] -> (x, y, z) Source #

typeSize :: Natural Source #

SymbolicData i a => SymbolicData i (DatumHash datum a) Source # 
Instance details

Defined in ZkFold.Symbolic.Cardano.Types

(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 #