Documentation

Complexitylib.Algebraic.LowerBound.Fusion.Arithmetic.Interaction.Hessian.Pairing

A tight Hessian lower bound for bilinear pairing #

The polynomial sum i, x_i * y_i has a Hessian which swaps the two n-dimensional coordinate blocks. Its Hessian rank is therefore 2 * n. Since one multiplication contributes rank at most two, every arithmetic circuit over a field computing this polynomial requires at least n multiplication gates. Arbitrary additions, scalar constants, negative constants, and cancellation are allowed.

Bilinear pairing polynomial on two blocks of n variables.

Equations
Instances For
    @[simp]
    theorem Algebraic.Fusion.Arithmetic.Interaction.Hessian.Pairing.gradient_X {K : Type} [Field K] {σ : Type} [DecidableEq σ] (point : σ → K) (coordinate : σ) :
    gradient point (MvPolynomial.X coordinate) = Pi.single coordinate 1

    The Hessian of one variable vanishes and its gradient is the corresponding coordinate vector.

    theorem Algebraic.Fusion.Arithmetic.Interaction.Hessian.Pairing.matrix_finset_sum {K : Type} [Field K] {σ : Type} {ι : Type u_1} (point : σ → K) (indices : Finset ι) (term : ι → MvPolynomial σ K) :
    matrix point (∑ index ∈ indices, term index) = ∑ index ∈ indices, matrix point (term index)

    Hessian formation commutes with finite sums.

    theorem Algebraic.Fusion.Arithmetic.Interaction.Hessian.Pairing.matrix_fintype_sum {K : Type} [Field K] {ι : Type u_1} {σ : Type} [Fintype ι] (point : σ → K) (term : ι → MvPolynomial σ K) :
    matrix point (∑ index : ι, term index) = ∑ index : ι, matrix point (term index)

    Hessian formation commutes with a sum over a finite type.

    theorem Algebraic.Fusion.Arithmetic.Interaction.Hessian.Pairing.sum_matrix_apply {K : Type} [Field K] {ι : Type u_1} {α : Type u_2} {β : Type u_3} [Fintype ι] (term : ι → Matrix α β K) (row : α) (column : β) :
    (∑ index : ι, term index) row column = ∑ index : ι, term index row column

    Entrywise evaluation of a finite matrix sum.

    The pairing polynomial has the block-swap Hessian at every point.

    Linear block swap induced by the Hessian.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      @[simp]
      theorem Algebraic.Fusion.Arithmetic.Interaction.Hessian.Pairing.swapLinearMap_self {K : Type} [Field K] {n : ℕ} (vector : Fin n ⊕ Fin n → K) :
      (swapLinearMap K n) ((swapLinearMap K n) vector) = vector

      Swapping twice is the identity.

      Matrix multiplication by the block-swap matrix performs block swap.

      The pairing Hessian endomorphism is block swap.

      The pairing Hessian has full rank 2 * n.

      Enumerate the two variable blocks by the standard 2 * n circuit input type.

      Equations
      Instances For
        @[reducible, inline]

        Standard construction problem for bilinear pairing.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          theorem Algebraic.Fusion.Arithmetic.Interaction.Hessian.Pairing.circuit_multiplication_lowerBound {K : Type} [Field K] {C : Type u_1} (constant : C → K) (n : ℕ) (circuit : Circuit (Arithmetic.signature C) (2 * n) 1) (constructs : (problem K n).Constructs circuit (Arithmetic.interpretation fun (scalar : C) => MvPolynomial.C (constant scalar))) :

          Bilinear pairing requires at least one multiplication per paired coordinate, over every field and with arbitrary named scalar constants.

          theorem Algebraic.Fusion.Arithmetic.Interaction.Hessian.Pairing.circuit_gate_lowerBound {K : Type} [Field K] {C : Type u_1} (constant : C → K) (n : ℕ) (circuit : Circuit (Arithmetic.signature C) (2 * n) 1) (constructs : (problem K n).Constructs circuit (Arithmetic.interpretation fun (scalar : C) => MvPolynomial.C (constant scalar))) :

          The total number of nonconstant arithmetic gates is at least n.

          theorem Algebraic.Fusion.Arithmetic.Interaction.Hessian.Pairing.circuit_size_lowerBound {K : Type} [Field K] {C : Type u_1} (constant : C → K) (n : ℕ) (circuit : Circuit (Arithmetic.signature C) (2 * n) 1) (constructs : (problem K n).Constructs circuit (Arithmetic.interpretation fun (scalar : C) => MvPolynomial.C (constant scalar))) :
          n ≤ circuit.size

          Raw circuit size is at least the pairing dimension.