Module Mavryk_bls12_381.Pairing

Provides routines to compute the pairing over G1 x G2 -> GT

exception FailToComputeFinalExponentiation of Fq12.t
val miller_loop : (G1.t * G2.t) list -> Fq12.t

Compute the miller loop on a list of points. Return Fq12.one if the list is empty.

val miller_loop_simple : G1.t -> G2.t -> Fq12.t

Compute the miller loop on a single tuple of point.

val pairing : G1.t -> G2.t -> GT.t

Compute a pairing result of a list of points.

val pairing_check : (G1.t * G2.t) list -> bool

pairing_check points returns true if pairing points = GT.one. Return true if the empty list is given.

val final_exponentiation_opt : Fq12.t -> GT.t option

Compute the final exponentiation of the given point. Returns None if the point is equal to Fq12.zero

val final_exponentiation_exn : Fq12.t -> GT.t

Compute the final exponentiation of the given point. Raises FailToComputeFinalExponentiation if the point is equal to Fq12.zero