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

ZkFold.Base.Algebra.EllipticCurve.Class

Synopsis

curve classes

class (Field (BaseFieldOf point), Eq (BaseFieldOf point), Planar (BaseFieldOf point) point, AdditiveGroup point) => EllipticCurve point where Source #

Elliptic curves are plane algebraic curves that form AdditiveGroups. Elliptic curves always have genus 1 and are birationally equivalent to a projective curve of degree 3. As such, elliptic curves are the simplest curves after conic sections, curves of degree 2, and lines, curves of degree 1. Bézout's theorem implies that a line in general position will intersect with an elliptic curve at 3 points counting multiplicity; point0, point1 and point2. The geometric group law of the elliptic curve is:

point0 + point1 + point2 = zero

Associated Types

type CurveOf point :: Symbol Source #

type BaseFieldOf point :: Type Source #

Methods

isOnCurve :: point -> BooleanOf (BaseFieldOf point) Source #

isOnCurve validates an equation for a plane algebraic curve which has degree 3 up to some birational equivalence.

Instances

Instances details
(TwistedEdwardsCurve curve field, Field field, Eq field) => EllipticCurve (TwistedEdwards curve (AffinePoint field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Associated Types

type CurveOf (TwistedEdwards curve (AffinePoint field)) :: Symbol Source #

type BaseFieldOf (TwistedEdwards curve (AffinePoint field)) Source #

(WeierstrassCurve curve field, Conditional (BooleanOf field) (BooleanOf field), Conditional (BooleanOf field) field, Eq field, Field field) => EllipticCurve (Weierstrass curve (Point field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Associated Types

type CurveOf (Weierstrass curve (Point field)) :: Symbol Source #

type BaseFieldOf (Weierstrass curve (Point field)) Source #

Methods

isOnCurve :: Weierstrass curve (Point field) -> BooleanOf (BaseFieldOf (Weierstrass curve (Point field))) Source #

class (AdditiveGroup g, FiniteField (ScalarFieldOf g), Scale (ScalarFieldOf g) g) => CyclicGroup g where Source #

Both the ECDSA and ECDH algorithms make use of the elliptic curve discrete logarithm problem, ECDLP. There may be a discrete "exponential" function from a PrimeField of scalars into the AdditiveGroup of points on an elliptic curve. It's given naturally by scaling a point of prime order, if there is one on the curve.

scale order pointGen = zero
>>> let discreteExp scalar = scale scalar pointGen

Then the inverse of discreteExp is hard to compute.

Associated Types

type ScalarFieldOf g :: Type Source #

Methods

pointGen :: g Source #

generator of a cyclic subgroup

scale (order @(ScalarFieldOf g)) pointGen = zero

Instances

Instances details
CyclicGroup BLS12_381_G1_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BLS12_381

CyclicGroup BLS12_381_G2_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BLS12_381

CyclicGroup BN254_G1_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BN254

Associated Types

type ScalarFieldOf BN254_G1_Point Source #

CyclicGroup BN254_G2_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BN254

Associated Types

type ScalarFieldOf BN254_G2_Point Source #

CyclicGroup Ed25519_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Ed25519

Associated Types

type ScalarFieldOf Ed25519_Point Source #

CyclicGroup Pallas_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Pasta

Associated Types

type ScalarFieldOf Pallas_Point Source #

CyclicGroup Vesta_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Pasta

Associated Types

type ScalarFieldOf Vesta_Point Source #

CyclicGroup Eris_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.PlutoEris

Associated Types

type ScalarFieldOf Eris_Point Source #

CyclicGroup Pluto_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.PlutoEris

Associated Types

type ScalarFieldOf Pluto_Point Source #

CyclicGroup Secp256k1_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Secp256k1

Associated Types

type ScalarFieldOf Secp256k1_Point Source #

Symbolic ctx => CyclicGroup (Ed25519_Point ctx) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.Ed25519

Associated Types

type ScalarFieldOf (Ed25519_Point ctx) Source #

Symbolic ctx => CyclicGroup (Secp256k1_Point ctx) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.Secp256k1

Associated Types

type ScalarFieldOf (Secp256k1_Point ctx) Source #

type CycleOfCurves g1 g2 = (EllipticCurve g1, EllipticCurve g2, CyclicGroup g1, CyclicGroup g2, ScalarFieldOf g1 ~ BaseFieldOf g2, BaseFieldOf g1 ~ ScalarFieldOf g2) Source #

A cycle of two curves elliptic curves over finite fields such that the number of points on one curve is equal to the size of the field of definition of the next, in a cyclic way.

class Field field => WeierstrassCurve (curve :: Symbol) field where Source #

The standard form of an elliptic curve is the Weierstrass equation:

y^2 = x^3 + a*x + b
  • Weierstrass curves have x-axis symmetry.
  • The characteristic of the field must not be 2 or 3.
  • The curve must have nonzero discriminant Δ = -16 * (4*a^3 + 27*b^3).
  • When a = 0 some computations can be simplified so all the public Weierstrass curves have a = zero and nonzero b and we do too.

Methods

weierstrassB :: field Source #

Instances

Instances details
WeierstrassCurve "BLS12-381-G1" Fq Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BLS12_381

WeierstrassCurve "BLS12-381-G2" Fq2 Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BLS12_381

Field field => WeierstrassCurve "BN254_G1" field Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BN254

Methods

weierstrassB :: field Source #

WeierstrassCurve "BN254_G2" Fp2 Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BN254

Field field => WeierstrassCurve "Pasta" field Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Pasta

Methods

weierstrassB :: field Source #

Field field => WeierstrassCurve "Pluto-Eris" field Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.PlutoEris

Methods

weierstrassB :: field Source #

Field field => WeierstrassCurve "secp256k1" field Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Secp256k1

Methods

weierstrassB :: field Source #

WeierstrassCurve "Triton" (Ext2 (Zp PlutoEris_p) "i*sqrt5") Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.PlutoEris

Methods

weierstrassB :: Ext2 (Zp PlutoEris_p) "i*sqrt5" Source #

class Field field => TwistedEdwardsCurve (curve :: Symbol) field where Source #

A twisted Edwards curve is defined by the equation:

a*x^2 + y^2 = 1 + d*x^2*y^2
  • Twisted Edwards curves have y-axis symmetry.
  • The characteristic of the field must not be 2.
  • a and d must be nonzero.

Instances

Instances details
Field field => TwistedEdwardsCurve "ed25519" field Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Ed25519

point classes

class Planar field point | point -> field where Source #

A class for smart constructor method pointXY for constructing points from an x and y coordinate.

Methods

pointXY :: field -> field -> point Source #

Instances

Instances details
Planar field (AffinePoint field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

pointXY :: field -> field -> AffinePoint field Source #

Eq field => Planar field (Point field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

pointXY :: field -> field -> Point field Source #

Planar field point => Planar field (TwistedEdwards curve point) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

pointXY :: field -> field -> TwistedEdwards curve point Source #

Planar field point => Planar field (Weierstrass curve point) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

pointXY :: field -> field -> Weierstrass curve point Source #

class HasPointInf point where Source #

A class for smart constructor method pointInf for constructing the point at infinity.

Methods

pointInf :: point Source #

Instances

Instances details
(BoolType (BooleanOf field), AdditiveMonoid field) => HasPointInf (CompressedPoint field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

(Semiring field, Eq field) => HasPointInf (Point field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

pointInf :: Point field Source #

HasPointInf point => HasPointInf (TwistedEdwards curve point) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

pointInf :: TwistedEdwards curve point Source #

HasPointInf point => HasPointInf (Weierstrass curve point) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

pointInf :: Weierstrass curve point Source #

point types

newtype Weierstrass curve point Source #

Weierstrass tags a ProjectivePlanar point, over a Field field, with a phantom WeierstrassCurve curve.

Constructors

Weierstrass 

Fields

Instances

Instances details
Binary BLS12_381_G1_CompressedPoint Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BLS12_381

Binary BLS12_381_G1_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BLS12_381

Binary BLS12_381_G2_CompressedPoint Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BLS12_381

Binary BLS12_381_G2_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BLS12_381

Binary BN254_G1_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BN254

Binary BN254_G2_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BN254

Compressible BLS12_381_G1_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BLS12_381

Associated Types

type Compressed BLS12_381_G1_Point Source #

Compressible BLS12_381_G2_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BLS12_381

Associated Types

type Compressed BLS12_381_G2_Point Source #

CyclicGroup BLS12_381_G1_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BLS12_381

CyclicGroup BLS12_381_G2_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BLS12_381

CyclicGroup BN254_G1_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BN254

Associated Types

type ScalarFieldOf BN254_G1_Point Source #

CyclicGroup BN254_G2_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BN254

Associated Types

type ScalarFieldOf BN254_G2_Point Source #

CyclicGroup Pallas_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Pasta

Associated Types

type ScalarFieldOf Pallas_Point Source #

CyclicGroup Vesta_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Pasta

Associated Types

type ScalarFieldOf Vesta_Point Source #

CyclicGroup Eris_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.PlutoEris

Associated Types

type ScalarFieldOf Eris_Point Source #

CyclicGroup Pluto_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.PlutoEris

Associated Types

type ScalarFieldOf Pluto_Point Source #

CyclicGroup Secp256k1_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Secp256k1

Associated Types

type ScalarFieldOf Secp256k1_Point Source #

Scale Fr BLS12_381_G1_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BLS12_381

Scale Fr BLS12_381_G2_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BLS12_381

Scale Fr BN254_G1_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BN254

Scale Fr BN254_G2_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BN254

Scale Fp Vesta_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Pasta

Scale Fq Pallas_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Pasta

Scale Fn Secp256k1_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Secp256k1

Pairing BLS12_381_G1_Point BLS12_381_G2_Point BLS12_381_GT Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BLS12_381

Pairing BN254_G1_Point BN254_G2_Point BN254_GT Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BN254

(CyclicGroup (Weierstrass curve (Point field)), Random (ScalarFieldOf (Weierstrass curve (Point field)))) => PedersonSetup List (Weierstrass curve (Point field) :: Type) Source # 
Instance details

Defined in ZkFold.Base.Protocol.IVC.Commit

Methods

groupElements :: [Weierstrass curve (Point field)] Source #

(KnownNat n, CyclicGroup (Weierstrass curve (Point field)), Random (ScalarFieldOf (Weierstrass curve (Point field))), n <= PedersonSetupMaxSize) => PedersonSetup (Vector n :: Type -> Type) (Weierstrass curve (Point field) :: Type) Source # 
Instance details

Defined in ZkFold.Base.Protocol.IVC.Commit

Methods

groupElements :: Vector n (Weierstrass curve (Point field)) Source #

(WeierstrassCurve curve field, Conditional (BooleanOf field) (BooleanOf field), Conditional (BooleanOf field) field, Eq field, Field field) => Scale Integer (Weierstrass curve (Point field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

scale :: Integer -> Weierstrass curve (Point field) -> Weierstrass curve (Point field) Source #

(WeierstrassCurve curve field, Conditional (BooleanOf field) (BooleanOf field), Conditional (BooleanOf field) field, Eq field, Field field) => Scale Natural (Weierstrass curve (Point field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

scale :: Natural -> Weierstrass curve (Point field) -> Weierstrass curve (Point field) Source #

Planar field point => Planar field (Weierstrass curve point) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

pointXY :: field -> field -> Weierstrass curve point Source #

Conditional bool point => Conditional bool (Weierstrass curve point) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

bool :: Weierstrass curve point -> Weierstrass curve point -> bool -> Weierstrass curve point Source #

FromJSON (PlonkupProverSecret BLS12_381_G1_Point) Source # 
Instance details

Defined in ZkFold.Base.Protocol.Plonkup.Prover.Secret

ToJSON (PlonkupProverSecret BLS12_381_G1_Point) Source # 
Instance details

Defined in ZkFold.Base.Protocol.Plonkup.Prover.Secret

(Binary field, Field field, Eq field, BooleanOf field ~ Bool) => Binary (Pasta_Point field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Pasta

Methods

put :: Pasta_Point field -> Put #

get :: Get (Pasta_Point field) #

putList :: [Pasta_Point field] -> Put #

Symbolic ctx => CyclicGroup (Secp256k1_Point ctx) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.Secp256k1

Associated Types

type ScalarFieldOf (Secp256k1_Point ctx) Source #

Scale (Zp PlutoEris_p) Eris_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.PlutoEris

Scale (Zp PlutoEris_q) Pluto_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.PlutoEris

(Symbolic ctx, a ~ BaseField ctx, bits ~ NumberOfBits a) => Scale (FieldElement ctx) (Secp256k1_Point ctx) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.Secp256k1

(Arbitrary (ScalarFieldOf (Weierstrass curve (Point field))), CyclicGroup (Weierstrass curve (Point field)), Compressible (Weierstrass curve (Point field)), Compressed (Weierstrass curve (Point field)) ~ Weierstrass curve (CompressedPoint field)) => Arbitrary (Weierstrass curve (CompressedPoint field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

arbitrary :: Gen (Weierstrass curve (CompressedPoint field)) #

shrink :: Weierstrass curve (CompressedPoint field) -> [Weierstrass curve (CompressedPoint field)] #

(Arbitrary (ScalarFieldOf (Weierstrass curve (Point field))), CyclicGroup (Weierstrass curve (Point field))) => Arbitrary (Weierstrass curve (Point field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

arbitrary :: Gen (Weierstrass curve (Point field)) #

shrink :: Weierstrass curve (Point field) -> [Weierstrass curve (Point field)] #

Generic (Weierstrass curve point) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Associated Types

type Rep (Weierstrass curve point) :: Type -> Type #

Methods

from :: Weierstrass curve point -> Rep (Weierstrass curve point) x #

to :: Rep (Weierstrass curve point) x -> Weierstrass curve point #

Show point => Show (Weierstrass curve point) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

showsPrec :: Int -> Weierstrass curve point -> ShowS #

show :: Weierstrass curve point -> String #

showList :: [Weierstrass curve point] -> ShowS #

Eq point => Eq (Weierstrass curve point) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

(==) :: Weierstrass curve point -> Weierstrass curve point -> Bool #

(/=) :: Weierstrass curve point -> Weierstrass curve point -> Bool #

(WeierstrassCurve curve field, Conditional (BooleanOf field) (BooleanOf field), Conditional (BooleanOf field) field, Eq field, Field field) => AdditiveGroup (Weierstrass curve (Point field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

(-) :: Weierstrass curve (Point field) -> Weierstrass curve (Point field) -> Weierstrass curve (Point field) Source #

negate :: Weierstrass curve (Point field) -> Weierstrass curve (Point field) Source #

(WeierstrassCurve curve field, Conditional (BooleanOf field) (BooleanOf field), Conditional (BooleanOf field) field, Eq field, Field field) => AdditiveMonoid (Weierstrass curve (Point field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

zero :: Weierstrass curve (Point field) Source #

(WeierstrassCurve curve field, Conditional (BooleanOf field) (BooleanOf field), Conditional (BooleanOf field) field, Eq field, Field field) => AdditiveSemigroup (Weierstrass curve (Point field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

(+) :: Weierstrass curve (Point field) -> Weierstrass curve (Point field) -> Weierstrass curve (Point field) Source #

(WeierstrassCurve curve field, Conditional (BooleanOf field) (BooleanOf field), Conditional (BooleanOf field) field, Eq field, Field field) => EllipticCurve (Weierstrass curve (Point field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Associated Types

type CurveOf (Weierstrass curve (Point field)) :: Symbol Source #

type BaseFieldOf (Weierstrass curve (Point field)) Source #

Methods

isOnCurve :: Weierstrass curve (Point field) -> BooleanOf (BaseFieldOf (Weierstrass curve (Point field))) Source #

HasPointInf point => HasPointInf (Weierstrass curve point) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

pointInf :: Weierstrass curve point Source #

SymbolicEq field => SymbolicData (Weierstrass curve (Point field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Associated Types

type Context (Weierstrass curve (Point field)) :: (Type -> Type) -> Type Source #

type Support (Weierstrass curve (Point field)) Source #

type Layout (Weierstrass curve (Point field)) :: Type -> Type Source #

type Payload (Weierstrass curve (Point field)) :: Type -> Type Source #

Methods

arithmetize :: Weierstrass curve (Point field) -> Support (Weierstrass curve (Point field)) -> Context (Weierstrass curve (Point field)) (Layout (Weierstrass curve (Point field))) Source #

payload :: Weierstrass curve (Point field) -> Support (Weierstrass curve (Point field)) -> Payload (Weierstrass curve (Point field)) (WitnessField (Context (Weierstrass curve (Point field)))) Source #

restore :: Context (Weierstrass curve (Point field)) ~ c => (Support (Weierstrass curve (Point field)) -> (c (Layout (Weierstrass curve (Point field))), Payload (Weierstrass curve (Point field)) (WitnessField c))) -> Weierstrass curve (Point field) Source #

Eq point => Eq (Weierstrass curve point) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Associated Types

type BooleanOf (Weierstrass curve point) Source #

Methods

(==) :: Weierstrass curve point -> Weierstrass curve point -> BooleanOf (Weierstrass curve point) Source #

(/=) :: Weierstrass curve point -> Weierstrass curve point -> BooleanOf (Weierstrass curve point) Source #

(WeierstrassCurve curve field, SymbolicEq field) => SymbolicInput (Weierstrass curve (Point field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

isValid :: Weierstrass curve (Point field) -> Bool (Context (Weierstrass curve (Point field))) Source #

type Compressed BLS12_381_G1_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BLS12_381

type Compressed BLS12_381_G2_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BLS12_381

type ScalarFieldOf BLS12_381_G1_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BLS12_381

type ScalarFieldOf BLS12_381_G2_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BLS12_381

type ScalarFieldOf BN254_G1_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BN254

type ScalarFieldOf BN254_G2_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BN254

type ScalarFieldOf Pallas_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Pasta

type ScalarFieldOf Vesta_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Pasta

type ScalarFieldOf Eris_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.PlutoEris

type ScalarFieldOf Pluto_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.PlutoEris

type ScalarFieldOf Secp256k1_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Secp256k1

type ScalarFieldOf (Secp256k1_Point ctx) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.Secp256k1

type Rep (Weierstrass curve point) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type Rep (Weierstrass curve point) = D1 ('MetaData "Weierstrass" "ZkFold.Base.Algebra.EllipticCurve.Class" "symbolic-base-0.1.0.0-inplace" 'True) (C1 ('MetaCons "Weierstrass" 'PrefixI 'True) (S1 ('MetaSel ('Just "pointWeierstrass") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 point)))
type BaseFieldOf (Weierstrass curve (Point field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type BaseFieldOf (Weierstrass curve (Point field)) = field
type CurveOf (Weierstrass curve (Point field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type CurveOf (Weierstrass curve (Point field)) = curve
type Context (Weierstrass curve (Point field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type Context (Weierstrass curve (Point field)) = Context (Point field)
type Layout (Weierstrass curve (Point field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type Layout (Weierstrass curve (Point field)) = Layout (Point field)
type Payload (Weierstrass curve (Point field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type Payload (Weierstrass curve (Point field)) = Payload (Point field)
type Support (Weierstrass curve (Point field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type Support (Weierstrass curve (Point field)) = Support (Point field)
type BooleanOf (Weierstrass curve point) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type BooleanOf (Weierstrass curve point) = BooleanOf point

newtype TwistedEdwards curve point Source #

TwistedEdwards tags a Planar point, over a Field field, with a phantom TwistedEdwardsCurve curve.

Constructors

TwistedEdwards 

Fields

Instances

Instances details
CyclicGroup Ed25519_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Ed25519

Associated Types

type ScalarFieldOf Ed25519_Point Source #

Scale Fl Ed25519_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Ed25519

(TwistedEdwardsCurve curve field, Field field) => Scale Integer (TwistedEdwards curve (AffinePoint field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

scale :: Integer -> TwistedEdwards curve (AffinePoint field) -> TwistedEdwards curve (AffinePoint field) Source #

(TwistedEdwardsCurve curve field, Field field) => Scale Natural (TwistedEdwards curve (AffinePoint field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

scale :: Natural -> TwistedEdwards curve (AffinePoint field) -> TwistedEdwards curve (AffinePoint field) Source #

Planar field point => Planar field (TwistedEdwards curve point) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

pointXY :: field -> field -> TwistedEdwards curve point Source #

Conditional bool point => Conditional bool (TwistedEdwards curve point) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

bool :: TwistedEdwards curve point -> TwistedEdwards curve point -> bool -> TwistedEdwards curve point Source #

Symbolic ctx => CyclicGroup (Ed25519_Point ctx) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.Ed25519

Associated Types

type ScalarFieldOf (Ed25519_Point ctx) Source #

(Symbolic ctx, a ~ BaseField ctx, bits ~ NumberOfBits a) => Scale (FieldElement ctx) (Ed25519_Point ctx) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.Ed25519

(Arbitrary (ScalarFieldOf (TwistedEdwards curve (AffinePoint field))), CyclicGroup (TwistedEdwards curve (AffinePoint field))) => Arbitrary (TwistedEdwards curve (AffinePoint field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

arbitrary :: Gen (TwistedEdwards curve (AffinePoint field)) #

shrink :: TwistedEdwards curve (AffinePoint field) -> [TwistedEdwards curve (AffinePoint field)] #

Show point => Show (TwistedEdwards curve point) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

showsPrec :: Int -> TwistedEdwards curve point -> ShowS #

show :: TwistedEdwards curve point -> String #

showList :: [TwistedEdwards curve point] -> ShowS #

Eq point => Eq (TwistedEdwards curve point) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

(==) :: TwistedEdwards curve point -> TwistedEdwards curve point -> Bool #

(/=) :: TwistedEdwards curve point -> TwistedEdwards curve point -> Bool #

(TwistedEdwardsCurve curve field, Field field) => AdditiveGroup (TwistedEdwards curve (AffinePoint field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

(-) :: TwistedEdwards curve (AffinePoint field) -> TwistedEdwards curve (AffinePoint field) -> TwistedEdwards curve (AffinePoint field) Source #

negate :: TwistedEdwards curve (AffinePoint field) -> TwistedEdwards curve (AffinePoint field) Source #

(TwistedEdwardsCurve curve field, Field field) => AdditiveMonoid (TwistedEdwards curve (AffinePoint field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

zero :: TwistedEdwards curve (AffinePoint field) Source #

(TwistedEdwardsCurve curve field, Field field) => AdditiveSemigroup (TwistedEdwards curve (AffinePoint field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

(+) :: TwistedEdwards curve (AffinePoint field) -> TwistedEdwards curve (AffinePoint field) -> TwistedEdwards curve (AffinePoint field) Source #

(TwistedEdwardsCurve curve field, Field field, Eq field) => EllipticCurve (TwistedEdwards curve (AffinePoint field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Associated Types

type CurveOf (TwistedEdwards curve (AffinePoint field)) :: Symbol Source #

type BaseFieldOf (TwistedEdwards curve (AffinePoint field)) Source #

HasPointInf point => HasPointInf (TwistedEdwards curve point) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

pointInf :: TwistedEdwards curve point Source #

SymbolicOutput field => SymbolicData (TwistedEdwards curve (AffinePoint field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Associated Types

type Context (TwistedEdwards curve (AffinePoint field)) :: (Type -> Type) -> Type Source #

type Support (TwistedEdwards curve (AffinePoint field)) Source #

type Layout (TwistedEdwards curve (AffinePoint field)) :: Type -> Type Source #

type Payload (TwistedEdwards curve (AffinePoint field)) :: Type -> Type Source #

Eq point => Eq (TwistedEdwards curve point) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Associated Types

type BooleanOf (TwistedEdwards curve point) Source #

Methods

(==) :: TwistedEdwards curve point -> TwistedEdwards curve point -> BooleanOf (TwistedEdwards curve point) Source #

(/=) :: TwistedEdwards curve point -> TwistedEdwards curve point -> BooleanOf (TwistedEdwards curve point) Source #

(Context field ~ ctx, Symbolic ctx, TwistedEdwardsCurve curve field, SymbolicEq field) => SymbolicInput (TwistedEdwards curve (AffinePoint field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

isValid :: TwistedEdwards curve (AffinePoint field) -> Bool (Context (TwistedEdwards curve (AffinePoint field))) Source #

type ScalarFieldOf Ed25519_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Ed25519

type ScalarFieldOf (Ed25519_Point ctx) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.Ed25519

type BaseFieldOf (TwistedEdwards curve (AffinePoint field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type BaseFieldOf (TwistedEdwards curve (AffinePoint field)) = field
type CurveOf (TwistedEdwards curve (AffinePoint field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type CurveOf (TwistedEdwards curve (AffinePoint field)) = curve
type Context (TwistedEdwards curve (AffinePoint field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type Context (TwistedEdwards curve (AffinePoint field)) = Context (AffinePoint field)
type Layout (TwistedEdwards curve (AffinePoint field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type Layout (TwistedEdwards curve (AffinePoint field)) = Layout (AffinePoint field)
type Payload (TwistedEdwards curve (AffinePoint field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type Payload (TwistedEdwards curve (AffinePoint field)) = Payload (AffinePoint field)
type Support (TwistedEdwards curve (AffinePoint field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type Support (TwistedEdwards curve (AffinePoint field)) = Support (AffinePoint field)
type BooleanOf (TwistedEdwards curve point) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type BooleanOf (TwistedEdwards curve point) = BooleanOf point

data Point field Source #

A type of points in the projective plane.

Constructors

Point 

Fields

Instances

Instances details
Binary BLS12_381_G1_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BLS12_381

Binary BLS12_381_G2_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BLS12_381

Binary BN254_G1_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BN254

Binary BN254_G2_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BN254

Compressible BLS12_381_G1_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BLS12_381

Associated Types

type Compressed BLS12_381_G1_Point Source #

Compressible BLS12_381_G2_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BLS12_381

Associated Types

type Compressed BLS12_381_G2_Point Source #

CyclicGroup BLS12_381_G1_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BLS12_381

CyclicGroup BLS12_381_G2_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BLS12_381

CyclicGroup BN254_G1_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BN254

Associated Types

type ScalarFieldOf BN254_G1_Point Source #

CyclicGroup BN254_G2_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BN254

Associated Types

type ScalarFieldOf BN254_G2_Point Source #

CyclicGroup Pallas_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Pasta

Associated Types

type ScalarFieldOf Pallas_Point Source #

CyclicGroup Vesta_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Pasta

Associated Types

type ScalarFieldOf Vesta_Point Source #

CyclicGroup Eris_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.PlutoEris

Associated Types

type ScalarFieldOf Eris_Point Source #

CyclicGroup Pluto_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.PlutoEris

Associated Types

type ScalarFieldOf Pluto_Point Source #

CyclicGroup Secp256k1_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Secp256k1

Associated Types

type ScalarFieldOf Secp256k1_Point Source #

Scale Fr BLS12_381_G1_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BLS12_381

Scale Fr BLS12_381_G2_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BLS12_381

Scale Fr BN254_G1_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BN254

Scale Fr BN254_G2_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BN254

Scale Fp Vesta_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Pasta

Scale Fq Pallas_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Pasta

Scale Fn Secp256k1_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Secp256k1

Pairing BLS12_381_G1_Point BLS12_381_G2_Point BLS12_381_GT Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BLS12_381

Pairing BN254_G1_Point BN254_G2_Point BN254_GT Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BN254

(CyclicGroup (Weierstrass curve (Point field)), Random (ScalarFieldOf (Weierstrass curve (Point field)))) => PedersonSetup List (Weierstrass curve (Point field) :: Type) Source # 
Instance details

Defined in ZkFold.Base.Protocol.IVC.Commit

Methods

groupElements :: [Weierstrass curve (Point field)] Source #

Eq field => Planar field (Point field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

pointXY :: field -> field -> Point field Source #

(Conditional bool bool, Conditional bool field, bool ~ BooleanOf field) => Conditional bool (Point field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

bool :: Point field -> Point field -> bool -> Point field Source #

(KnownNat n, CyclicGroup (Weierstrass curve (Point field)), Random (ScalarFieldOf (Weierstrass curve (Point field))), n <= PedersonSetupMaxSize) => PedersonSetup (Vector n :: Type -> Type) (Weierstrass curve (Point field) :: Type) Source # 
Instance details

Defined in ZkFold.Base.Protocol.IVC.Commit

Methods

groupElements :: Vector n (Weierstrass curve (Point field)) Source #

(WeierstrassCurve curve field, Conditional (BooleanOf field) (BooleanOf field), Conditional (BooleanOf field) field, Eq field, Field field) => Scale Integer (Weierstrass curve (Point field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

scale :: Integer -> Weierstrass curve (Point field) -> Weierstrass curve (Point field) Source #

(WeierstrassCurve curve field, Conditional (BooleanOf field) (BooleanOf field), Conditional (BooleanOf field) field, Eq field, Field field) => Scale Natural (Weierstrass curve (Point field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

scale :: Natural -> Weierstrass curve (Point field) -> Weierstrass curve (Point field) Source #

FromJSON (PlonkupProverSecret BLS12_381_G1_Point) Source # 
Instance details

Defined in ZkFold.Base.Protocol.Plonkup.Prover.Secret

ToJSON (PlonkupProverSecret BLS12_381_G1_Point) Source # 
Instance details

Defined in ZkFold.Base.Protocol.Plonkup.Prover.Secret

Generic (Point field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Associated Types

type Rep (Point field) :: Type -> Type #

Methods

from :: Point field -> Rep (Point field) x #

to :: Rep (Point field) x -> Point field #

(Show field, BooleanOf field ~ Bool) => Show (Point field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

showsPrec :: Int -> Point field -> ShowS #

show :: Point field -> String #

showList :: [Point field] -> ShowS #

(Binary field, Field field, Eq field, BooleanOf field ~ Bool) => Binary (Pasta_Point field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Pasta

Methods

put :: Pasta_Point field -> Put #

get :: Get (Pasta_Point field) #

putList :: [Pasta_Point field] -> Put #

(Eq (BooleanOf field), Eq field) => Eq (Point field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

(==) :: Point field -> Point field -> Bool #

(/=) :: Point field -> Point field -> Bool #

Symbolic ctx => CyclicGroup (Secp256k1_Point ctx) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.Secp256k1

Associated Types

type ScalarFieldOf (Secp256k1_Point ctx) Source #

(Semiring field, Eq field) => HasPointInf (Point field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

pointInf :: Point field Source #

(SymbolicOutput (BooleanOf field), SymbolicOutput field, Context field ~ Context (BooleanOf field)) => SymbolicData (Point field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Associated Types

type Context (Point field) :: (Type -> Type) -> Type Source #

type Support (Point field) Source #

type Layout (Point field) :: Type -> Type Source #

type Payload (Point field) :: Type -> Type Source #

Methods

arithmetize :: Point field -> Support (Point field) -> Context (Point field) (Layout (Point field)) Source #

payload :: Point field -> Support (Point field) -> Payload (Point field) (WitnessField (Context (Point field))) Source #

restore :: Context (Point field) ~ c => (Support (Point field) -> (c (Layout (Point field)), Payload (Point field) (WitnessField c))) -> Point field Source #

(BooleanOf (BooleanOf field) ~ BooleanOf field, Eq (BooleanOf field), Eq field, Field field) => Eq (Point field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Associated Types

type BooleanOf (Point field) Source #

Methods

(==) :: Point field -> Point field -> BooleanOf (Point field) Source #

(/=) :: Point field -> Point field -> BooleanOf (Point field) Source #

Scale (Zp PlutoEris_p) Eris_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.PlutoEris

Scale (Zp PlutoEris_q) Pluto_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.PlutoEris

(Symbolic ctx, a ~ BaseField ctx, bits ~ NumberOfBits a) => Scale (FieldElement ctx) (Secp256k1_Point ctx) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.Secp256k1

(Arbitrary (ScalarFieldOf (Weierstrass curve (Point field))), CyclicGroup (Weierstrass curve (Point field))) => Arbitrary (Weierstrass curve (Point field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

arbitrary :: Gen (Weierstrass curve (Point field)) #

shrink :: Weierstrass curve (Point field) -> [Weierstrass curve (Point field)] #

(WeierstrassCurve curve field, Conditional (BooleanOf field) (BooleanOf field), Conditional (BooleanOf field) field, Eq field, Field field) => AdditiveGroup (Weierstrass curve (Point field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

(-) :: Weierstrass curve (Point field) -> Weierstrass curve (Point field) -> Weierstrass curve (Point field) Source #

negate :: Weierstrass curve (Point field) -> Weierstrass curve (Point field) Source #

(WeierstrassCurve curve field, Conditional (BooleanOf field) (BooleanOf field), Conditional (BooleanOf field) field, Eq field, Field field) => AdditiveMonoid (Weierstrass curve (Point field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

zero :: Weierstrass curve (Point field) Source #

(WeierstrassCurve curve field, Conditional (BooleanOf field) (BooleanOf field), Conditional (BooleanOf field) field, Eq field, Field field) => AdditiveSemigroup (Weierstrass curve (Point field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

(+) :: Weierstrass curve (Point field) -> Weierstrass curve (Point field) -> Weierstrass curve (Point field) Source #

(WeierstrassCurve curve field, Conditional (BooleanOf field) (BooleanOf field), Conditional (BooleanOf field) field, Eq field, Field field) => EllipticCurve (Weierstrass curve (Point field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Associated Types

type CurveOf (Weierstrass curve (Point field)) :: Symbol Source #

type BaseFieldOf (Weierstrass curve (Point field)) Source #

Methods

isOnCurve :: Weierstrass curve (Point field) -> BooleanOf (BaseFieldOf (Weierstrass curve (Point field))) Source #

SymbolicEq field => SymbolicData (Weierstrass curve (Point field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Associated Types

type Context (Weierstrass curve (Point field)) :: (Type -> Type) -> Type Source #

type Support (Weierstrass curve (Point field)) Source #

type Layout (Weierstrass curve (Point field)) :: Type -> Type Source #

type Payload (Weierstrass curve (Point field)) :: Type -> Type Source #

Methods

arithmetize :: Weierstrass curve (Point field) -> Support (Weierstrass curve (Point field)) -> Context (Weierstrass curve (Point field)) (Layout (Weierstrass curve (Point field))) Source #

payload :: Weierstrass curve (Point field) -> Support (Weierstrass curve (Point field)) -> Payload (Weierstrass curve (Point field)) (WitnessField (Context (Weierstrass curve (Point field)))) Source #

restore :: Context (Weierstrass curve (Point field)) ~ c => (Support (Weierstrass curve (Point field)) -> (c (Layout (Weierstrass curve (Point field))), Payload (Weierstrass curve (Point field)) (WitnessField c))) -> Weierstrass curve (Point field) Source #

(WeierstrassCurve curve field, SymbolicEq field) => SymbolicInput (Weierstrass curve (Point field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

isValid :: Weierstrass curve (Point field) -> Bool (Context (Weierstrass curve (Point field))) Source #

type Compressed BLS12_381_G1_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BLS12_381

type Compressed BLS12_381_G2_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BLS12_381

type ScalarFieldOf BLS12_381_G1_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BLS12_381

type ScalarFieldOf BLS12_381_G2_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BLS12_381

type ScalarFieldOf BN254_G1_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BN254

type ScalarFieldOf BN254_G2_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BN254

type ScalarFieldOf Pallas_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Pasta

type ScalarFieldOf Vesta_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Pasta

type ScalarFieldOf Eris_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.PlutoEris

type ScalarFieldOf Pluto_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.PlutoEris

type ScalarFieldOf Secp256k1_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Secp256k1

type Rep (Point field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type Rep (Point field) = D1 ('MetaData "Point" "ZkFold.Base.Algebra.EllipticCurve.Class" "symbolic-base-0.1.0.0-inplace" 'False) (C1 ('MetaCons "Point" 'PrefixI 'True) (S1 ('MetaSel ('Just "_x") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 field) :*: (S1 ('MetaSel ('Just "_y") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 field) :*: S1 ('MetaSel ('Just "_zBit") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (BooleanOf field)))))
type ScalarFieldOf (Secp256k1_Point ctx) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.Secp256k1

type Context (Point field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type Context (Point field) = GContext (Rep (Point field))
type Layout (Point field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type Layout (Point field) = GLayout (Rep (Point field))
type Payload (Point field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type Payload (Point field) = GPayload (Rep (Point field))
type Support (Point field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type Support (Point field) = GSupport (Rep (Point field))
type BooleanOf (Point field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type BooleanOf (Point field) = GBooleanOf (Rep (Point field))
type BaseFieldOf (Weierstrass curve (Point field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type BaseFieldOf (Weierstrass curve (Point field)) = field
type CurveOf (Weierstrass curve (Point field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type CurveOf (Weierstrass curve (Point field)) = curve
type Context (Weierstrass curve (Point field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type Context (Weierstrass curve (Point field)) = Context (Point field)
type Layout (Weierstrass curve (Point field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type Layout (Weierstrass curve (Point field)) = Layout (Point field)
type Payload (Weierstrass curve (Point field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type Payload (Weierstrass curve (Point field)) = Payload (Point field)
type Support (Weierstrass curve (Point field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type Support (Weierstrass curve (Point field)) = Support (Point field)

data CompressedPoint field Source #

Constructors

CompressedPoint 

Fields

Instances

Instances details
Binary BLS12_381_G1_CompressedPoint Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BLS12_381

Binary BLS12_381_G2_CompressedPoint Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BLS12_381

Generic (CompressedPoint field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Associated Types

type Rep (CompressedPoint field) :: Type -> Type #

Methods

from :: CompressedPoint field -> Rep (CompressedPoint field) x #

to :: Rep (CompressedPoint field) x -> CompressedPoint field #

(Show (BooleanOf field), Show field) => Show (CompressedPoint field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

(Eq (BooleanOf field), Eq field) => Eq (CompressedPoint field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

(==) :: CompressedPoint field -> CompressedPoint field -> Bool #

(/=) :: CompressedPoint field -> CompressedPoint field -> Bool #

(BoolType (BooleanOf field), AdditiveMonoid field) => HasPointInf (CompressedPoint field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

(SymbolicOutput (BooleanOf field), SymbolicOutput field, Context field ~ Context (BooleanOf field)) => SymbolicData (CompressedPoint field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Associated Types

type Context (CompressedPoint field) :: (Type -> Type) -> Type Source #

type Support (CompressedPoint field) Source #

type Layout (CompressedPoint field) :: Type -> Type Source #

type Payload (CompressedPoint field) :: Type -> Type Source #

(Arbitrary (ScalarFieldOf (Weierstrass curve (Point field))), CyclicGroup (Weierstrass curve (Point field)), Compressible (Weierstrass curve (Point field)), Compressed (Weierstrass curve (Point field)) ~ Weierstrass curve (CompressedPoint field)) => Arbitrary (Weierstrass curve (CompressedPoint field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

arbitrary :: Gen (Weierstrass curve (CompressedPoint field)) #

shrink :: Weierstrass curve (CompressedPoint field) -> [Weierstrass curve (CompressedPoint field)] #

type Rep (CompressedPoint field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type Rep (CompressedPoint field) = D1 ('MetaData "CompressedPoint" "ZkFold.Base.Algebra.EllipticCurve.Class" "symbolic-base-0.1.0.0-inplace" 'False) (C1 ('MetaCons "CompressedPoint" 'PrefixI 'True) (S1 ('MetaSel ('Just "_x") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 field) :*: (S1 ('MetaSel ('Just "_yBit") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (BooleanOf field)) :*: S1 ('MetaSel ('Just "_zBit") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (BooleanOf field)))))
type Context (CompressedPoint field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type Layout (CompressedPoint field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type Payload (CompressedPoint field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type Support (CompressedPoint field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

data AffinePoint field Source #

Constructors

AffinePoint 

Fields

  • _x :: field
     
  • _y :: field
     

Instances

Instances details
CyclicGroup Ed25519_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Ed25519

Associated Types

type ScalarFieldOf Ed25519_Point Source #

Scale Fl Ed25519_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Ed25519

Planar field (AffinePoint field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

pointXY :: field -> field -> AffinePoint field Source #

Conditional bool field => Conditional bool (AffinePoint field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

bool :: AffinePoint field -> AffinePoint field -> bool -> AffinePoint field Source #

(TwistedEdwardsCurve curve field, Field field) => Scale Integer (TwistedEdwards curve (AffinePoint field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

scale :: Integer -> TwistedEdwards curve (AffinePoint field) -> TwistedEdwards curve (AffinePoint field) Source #

(TwistedEdwardsCurve curve field, Field field) => Scale Natural (TwistedEdwards curve (AffinePoint field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

scale :: Natural -> TwistedEdwards curve (AffinePoint field) -> TwistedEdwards curve (AffinePoint field) Source #

Generic (AffinePoint field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Associated Types

type Rep (AffinePoint field) :: Type -> Type #

Methods

from :: AffinePoint field -> Rep (AffinePoint field) x #

to :: Rep (AffinePoint field) x -> AffinePoint field #

Show field => Show (AffinePoint field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

showsPrec :: Int -> AffinePoint field -> ShowS #

show :: AffinePoint field -> String #

showList :: [AffinePoint field] -> ShowS #

Eq field => Eq (AffinePoint field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

(==) :: AffinePoint field -> AffinePoint field -> Bool #

(/=) :: AffinePoint field -> AffinePoint field -> Bool #

Symbolic ctx => CyclicGroup (Ed25519_Point ctx) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.Ed25519

Associated Types

type ScalarFieldOf (Ed25519_Point ctx) Source #

SymbolicOutput field => SymbolicData (AffinePoint field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Associated Types

type Context (AffinePoint field) :: (Type -> Type) -> Type Source #

type Support (AffinePoint field) Source #

type Layout (AffinePoint field) :: Type -> Type Source #

type Payload (AffinePoint field) :: Type -> Type Source #

Methods

arithmetize :: AffinePoint field -> Support (AffinePoint field) -> Context (AffinePoint field) (Layout (AffinePoint field)) Source #

payload :: AffinePoint field -> Support (AffinePoint field) -> Payload (AffinePoint field) (WitnessField (Context (AffinePoint field))) Source #

restore :: Context (AffinePoint field) ~ c => (Support (AffinePoint field) -> (c (Layout (AffinePoint field)), Payload (AffinePoint field) (WitnessField c))) -> AffinePoint field Source #

(Eq field, Field field) => Eq (AffinePoint field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Associated Types

type BooleanOf (AffinePoint field) Source #

Methods

(==) :: AffinePoint field -> AffinePoint field -> BooleanOf (AffinePoint field) Source #

(/=) :: AffinePoint field -> AffinePoint field -> BooleanOf (AffinePoint field) Source #

(Symbolic ctx, a ~ BaseField ctx, bits ~ NumberOfBits a) => Scale (FieldElement ctx) (Ed25519_Point ctx) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.Ed25519

(Arbitrary (ScalarFieldOf (TwistedEdwards curve (AffinePoint field))), CyclicGroup (TwistedEdwards curve (AffinePoint field))) => Arbitrary (TwistedEdwards curve (AffinePoint field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

arbitrary :: Gen (TwistedEdwards curve (AffinePoint field)) #

shrink :: TwistedEdwards curve (AffinePoint field) -> [TwistedEdwards curve (AffinePoint field)] #

(TwistedEdwardsCurve curve field, Field field) => AdditiveGroup (TwistedEdwards curve (AffinePoint field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

(-) :: TwistedEdwards curve (AffinePoint field) -> TwistedEdwards curve (AffinePoint field) -> TwistedEdwards curve (AffinePoint field) Source #

negate :: TwistedEdwards curve (AffinePoint field) -> TwistedEdwards curve (AffinePoint field) Source #

(TwistedEdwardsCurve curve field, Field field) => AdditiveMonoid (TwistedEdwards curve (AffinePoint field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

zero :: TwistedEdwards curve (AffinePoint field) Source #

(TwistedEdwardsCurve curve field, Field field) => AdditiveSemigroup (TwistedEdwards curve (AffinePoint field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

(+) :: TwistedEdwards curve (AffinePoint field) -> TwistedEdwards curve (AffinePoint field) -> TwistedEdwards curve (AffinePoint field) Source #

(TwistedEdwardsCurve curve field, Field field, Eq field) => EllipticCurve (TwistedEdwards curve (AffinePoint field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Associated Types

type CurveOf (TwistedEdwards curve (AffinePoint field)) :: Symbol Source #

type BaseFieldOf (TwistedEdwards curve (AffinePoint field)) Source #

SymbolicOutput field => SymbolicData (TwistedEdwards curve (AffinePoint field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Associated Types

type Context (TwistedEdwards curve (AffinePoint field)) :: (Type -> Type) -> Type Source #

type Support (TwistedEdwards curve (AffinePoint field)) Source #

type Layout (TwistedEdwards curve (AffinePoint field)) :: Type -> Type Source #

type Payload (TwistedEdwards curve (AffinePoint field)) :: Type -> Type Source #

(Context field ~ ctx, Symbolic ctx, TwistedEdwardsCurve curve field, SymbolicEq field) => SymbolicInput (TwistedEdwards curve (AffinePoint field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

Methods

isValid :: TwistedEdwards curve (AffinePoint field) -> Bool (Context (TwistedEdwards curve (AffinePoint field))) Source #

type ScalarFieldOf Ed25519_Point Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Ed25519

type Rep (AffinePoint field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type Rep (AffinePoint field) = D1 ('MetaData "AffinePoint" "ZkFold.Base.Algebra.EllipticCurve.Class" "symbolic-base-0.1.0.0-inplace" 'False) (C1 ('MetaCons "AffinePoint" 'PrefixI 'True) (S1 ('MetaSel ('Just "_x") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 field) :*: S1 ('MetaSel ('Just "_y") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 field)))
type ScalarFieldOf (Ed25519_Point ctx) Source # 
Instance details

Defined in ZkFold.Symbolic.Data.Ed25519

type Context (AffinePoint field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type Context (AffinePoint field) = GContext (Rep (AffinePoint field))
type Layout (AffinePoint field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type Layout (AffinePoint field) = GLayout (Rep (AffinePoint field))
type Payload (AffinePoint field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type Payload (AffinePoint field) = GPayload (Rep (AffinePoint field))
type Support (AffinePoint field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type Support (AffinePoint field) = GSupport (Rep (AffinePoint field))
type BooleanOf (AffinePoint field) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type BaseFieldOf (TwistedEdwards curve (AffinePoint field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type BaseFieldOf (TwistedEdwards curve (AffinePoint field)) = field
type CurveOf (TwistedEdwards curve (AffinePoint field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type CurveOf (TwistedEdwards curve (AffinePoint field)) = curve
type Context (TwistedEdwards curve (AffinePoint field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type Context (TwistedEdwards curve (AffinePoint field)) = Context (AffinePoint field)
type Layout (TwistedEdwards curve (AffinePoint field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type Layout (TwistedEdwards curve (AffinePoint field)) = Layout (AffinePoint field)
type Payload (TwistedEdwards curve (AffinePoint field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type Payload (TwistedEdwards curve (AffinePoint field)) = Payload (AffinePoint field)
type Support (TwistedEdwards curve (AffinePoint field)) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Class

type Support (TwistedEdwards curve (AffinePoint field)) = Support (AffinePoint field)