Documentation

CatCryptCore.Examples.GroupParam

Abstract Cyclic-Group Parameters #

GroupParam axiomatizes a finite cyclic group of prime order together with its scalar field, packaged as a single structure so protocol definitions can quantify over an arbitrary such group. The carrier G is the group; Scalar is the field ℤ/qℤ where q = |g|; exp x = gᣞ is generator exponentiation and groupExp h x is exponentiation of an arbitrary element. The structure records the group and scalar-field axioms as fields, so a concrete instantiation discharges them once and every downstream proof reasons purely equationally.

This is the abstract group interface used by the UC examples over discrete-log groups (Pedersen commitment, dual-mode oblivious transfer).

Parameters for a finite cyclic group of prime order together with its scalar field ℤ/qℤ. The carrier G is the group with generator generator; Scalar is the field of exponents; exp is generator exponentiation and groupExp is exponentiation of an arbitrary group element. The remaining fields record the group and field axioms needed for equational reasoning.

Instances For

    Derived scalar-field lemmas #

    theorem CatCrypt.Examples.scalarMul_neg (gp : GroupParam) (a b : gp.Scalar) :
    gp.scalarMul a (gp.scalarNeg b) = gp.scalarNeg (gp.scalarMul a b)

    Multiplication distributes over negation: a · (-b) = -(a · b).

    theorem CatCrypt.Examples.scalarNeg_mul (gp : GroupParam) (a b : gp.Scalar) :
    gp.scalarMul (gp.scalarNeg a) b = gp.scalarNeg (gp.scalarMul a b)

    Multiplication distributes over negation on the left: (-a) · b = -(a · b).