Documentation

MIPRE.Foundations.CL.Downsize

Downsizing conditionally linear functions, and reindexing #

Paper linear.tex, def:cl-downsize, lem:cl-downsize and lem:downsize-cl-dist; blueprint lem:cl-downsize. The CL functions of the pipeline are native to 𝔽_{2^t} (the low-degree tests, the introspection sampler), while samplers of normal form verifiers are over 𝔽₂ (def:sampler). Downsizing bridges the two: a basis b of a field F over a subfield K gives the K-linear bijection ↓ : F^ι ≃ K^{ι × κ} reading off coordinates entry by entry (downsizeEquiv), and L ↦ ↓ ∘ L ∘ ↓⁻¹ carries ℓ-level CL functions on F^ι to ℓ-level CL functions on K^{ι × κ} — on presentations, CLFun.downsize, whose decomposition data are the downsized data of the original: register subspaces S become S × κ, stage maps are conjugated by ↓, and the marginals, factor spaces and stage maps of lem:cl-kth correspond (eval_truncate_downsize, factorOfPrefix_downsize, mapOfPrefix_downsize). Exactness is preserved, and the CL distribution is pushed forward along ↓ (clDist_downsize).

The paper states this for admissible field sizes q = 2^t, t odd, with the self-dual normal basis of blueprint lem:self-dual-basis. Nothing here depends on the choice of basis: the self-duality matters for the arithmetic of 𝔽_{2^t} to be computable from 𝔽₂-data by the programs that use it, which is a matter for the efficient-computability toolkit. The paper's downsized sampler (def:downsize_sampler), a machine wrapping a sampler over 𝔽_{2^t}, has no counterpart: samplers are over 𝔽₂ by definition, and a construction native to 𝔽_{2^t} is to present the downsized CL functions directly.

The second half of the file is the transport of presentations along a bijection of coordinates e : ι ≃ ι' (reindexEquiv, CLFun.reindex), with the same list of lemmas; it is the identification K^{ι × κ} = K^{|ι| · |κ|} the paper leaves implicit, and it is what puts a downsized presentation on the coordinates Fin (s · t) of a sampler.

The downsize map, and the transport along a bijection of coordinates #

noncomputable def MIPRE.CL.downsizeEquiv {K : Type u_1} [Field K] {F : Type u_2} [Field F] [Algebra K F] {ι : Type u_3} {κ : Type u_5} [Fintype κ] (b : Module.Basis κ K F) :
(ι → F) ≃ₗ[K] ι × κ → K

The downsize map of a basis b of F over K, on vectors: F^ι ≃ K^{ι × κ}, sending v to the coordinates of its entries, ↓v (i, j) = (b.repr (v i)) j.

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    @[simp]
    theorem MIPRE.CL.downsizeEquiv_apply {K : Type u_1} [Field K] {F : Type u_2} [Field F] [Algebra K F] {ι : Type u_3} {κ : Type u_5} [Fintype κ] (b : Module.Basis κ K F) (x : ι → F) (p : ι × κ) :
    (downsizeEquiv b) x p = (b.repr (x p.1)) p.2
    def MIPRE.CL.reindexEquiv {F : Type u_2} [Field F] {ι : Type u_3} {ι' : Type u_4} (e : ι ≃ ι') :
    (ι → F) ≃ₗ[F] ι' → F

    Transport of vectors along a bijection of coordinates, x ↦ x ∘ e.symm: the identification K^{ι} = K^{ι'} (for instance K^{ι × κ} = K^{|ι| · |κ|}, the paper's 𝔽_2^{nt}).

    Equations
    • MIPRE.CL.reindexEquiv e = { toFun := fun (x : ι → F) => x ∘ ⇑e.symm, map_add' := ⋯, map_smul' := ⋯, invFun := fun (y : ι' → F) => y ∘ ⇑e, left_inv := ⋯, right_inv := ⋯ }
    Instances For
      @[simp]
      theorem MIPRE.CL.reindexEquiv_apply {F : Type u_2} [Field F] {ι : Type u_3} {ι' : Type u_4} (e : ι ≃ ι') (x : ι → F) (i : ι') :
      (reindexEquiv e) x i = x (e.symm i)
      @[simp]
      theorem MIPRE.CL.reindexEquiv_symm_apply {F : Type u_2} [Field F] {ι : Type u_3} {ι' : Type u_4} (e : ι ≃ ι') (y : ι' → F) (i : ι) :
      (reindexEquiv e).symm y i = y (e i)
      theorem MIPRE.CL.downsizeEquiv_proj {K : Type u_1} [Field K] {F : Type u_2} [Field F] [Algebra K F] {ι : Type u_3} {κ : Type u_5} [Fintype κ] [DecidableEq ι] [DecidableEq κ] (b : Module.Basis κ K F) (S : Finset ι) (x : ι → F) :
      theorem MIPRE.CL.downsizeEquiv_symm_proj {K : Type u_1} [Field K] {F : Type u_2} [Field F] [Algebra K F] {ι : Type u_3} {κ : Type u_5} [Fintype κ] [DecidableEq ι] [DecidableEq κ] (b : Module.Basis κ K F) (S : Finset ι) (y : ι × κ → K) :
      noncomputable def MIPRE.CL.RegLinear.downsize {K : Type u_1} [Field K] {F : Type u_2} [Field F] [Algebra K F] {ι : Type u_3} {κ : Type u_5} [Fintype κ] [DecidableEq ι] [DecidableEq κ] {S : Finset ι} (b : Module.Basis κ K F) (L : RegLinear F S) :

      The downsized linear map ↓ ∘ L ∘ ↓⁻¹ of a map on V_S: a map on V_{S × κ} over K.

      Equations
      Instances For
        @[simp]
        theorem MIPRE.CL.RegLinear.downsize_apply {K : Type u_1} [Field K] {F : Type u_2} [Field F] [Algebra K F] {ι : Type u_3} {κ : Type u_5} [Fintype κ] [DecidableEq ι] [DecidableEq κ] {S : Finset ι} (b : Module.Basis κ K F) (L : RegLinear F S) (y : ι × κ → K) :
        (downsize b L) y = (downsizeEquiv b) (L ((downsizeEquiv b).symm y))
        @[simp]
        theorem MIPRE.CL.RegLinear.downsize_zero {K : Type u_1} [Field K] {F : Type u_2} [Field F] [Algebra K F] {ι : Type u_3} {κ : Type u_5} [Fintype κ] [DecidableEq ι] [DecidableEq κ] {S : Finset ι} (b : Module.Basis κ K F) :
        downsize b 0 = 0
        noncomputable def MIPRE.CL.CLFun.downsize {K : Type u_1} [Field K] {F : Type u_2} [Field F] [Algebra K F] {ι : Type u_3} {κ : Type u_5} [Fintype κ] [DecidableEq ι] [DecidableEq κ] (b : Module.Basis κ K F) {ℓ : ℕ} :
        CLFun F ι ℓ → CLFun K (ι × κ) ℓ

        The downsized presentation L^↓ (paper def:cl-downsize): register subspaces S become S × κ, the linear maps are conjugated by the downsize map, and the continuations are selected through it.

        Equations
        Instances For
          @[simp]
          theorem MIPRE.CL.CLFun.downsize_zero {K : Type u_1} [Field K] {F : Type u_2} [Field F] [Algebra K F] {ι : Type u_3} {κ : Type u_5} [Fintype κ] [DecidableEq ι] [DecidableEq κ] (b : Module.Basis κ K F) :
          @[simp]
          theorem MIPRE.CL.CLFun.downsize_cons {K : Type u_1} [Field K] {F : Type u_2} [Field F] [Algebra K F] {ι : Type u_3} {κ : Type u_5} [Fintype κ] [DecidableEq ι] [DecidableEq κ] {ℓ : ℕ} (b : Module.Basis κ K F) {S : Finset ι} (L₁ : RegLinear F S) (next : (ι → F) → CLFun F ι ℓ) :
          downsize b (cons S L₁ next) = cons (S ×ˢ Finset.univ) (RegLinear.downsize b L₁) fun (v : ι × κ → K) => downsize b (next ((downsizeEquiv b).symm v))
          theorem MIPRE.CL.CLFun.SupportedOn.downsize {K : Type u_1} [Field K] {F : Type u_2} [Field F] [Algebra K F] {ι : Type u_3} {κ : Type u_5} [Fintype κ] [DecidableEq ι] [DecidableEq κ] {ℓ : ℕ} (b : Module.Basis κ K F) {P : CLFun F ι ℓ} {T : Finset ι} (hP : P.SupportedOn T) :
          theorem MIPRE.CL.CLFun.ExactlyOn.downsize {K : Type u_1} [Field K] {F : Type u_2} [Field F] [Algebra K F] {ι : Type u_3} {κ : Type u_5} [Fintype κ] [DecidableEq ι] [DecidableEq κ] {ℓ : ℕ} (b : Module.Basis κ K F) {P : CLFun F ι ℓ} {T : Finset ι} (hP : P.ExactlyOn T) :
          theorem MIPRE.CL.CLFun.lift_downsize {K : Type u_1} [Field K] {F : Type u_2} [Field F] [Algebra K F] {ι : Type u_3} {κ : Type u_5} [Fintype κ] [DecidableEq ι] [DecidableEq κ] {ℓ : ℕ} (b : Module.Basis κ K F) (T : Finset ι) (P : CLFun F ι ℓ) :
          theorem MIPRE.CL.CLFun.truncate_downsize {K : Type u_1} [Field K] {F : Type u_2} [Field F] [Algebra K F] {ι : Type u_3} {κ : Type u_5} [Fintype κ] [DecidableEq ι] [DecidableEq κ] {ℓ : ℕ} (b : Module.Basis κ K F) (k : ℕ) (P : CLFun F ι ℓ) :

          Reindexing coordinates #

          theorem MIPRE.CL.reindexEquiv_proj {F : Type u_2} [Field F] {ι : Type u_3} {ι' : Type u_4} [DecidableEq ι] [DecidableEq ι'] (e : ι ≃ ι') (S : Finset ι) (x : ι → F) :
          theorem MIPRE.CL.reindexEquiv_symm_proj {F : Type u_2} [Field F] {ι : Type u_3} {ι' : Type u_4} [DecidableEq ι] [DecidableEq ι'] (e : ι ≃ ι') (S : Finset ι) (y : ι' → F) :
          theorem MIPRE.CL.map_sdiff' {ι : Type u_3} {ι' : Type u_4} [DecidableEq ι] [DecidableEq ι'] (e : ι ≃ ι') (S T : Finset ι) :
          def MIPRE.CL.RegLinear.reindex {F : Type u_2} [Field F] {ι : Type u_3} {ι' : Type u_4} [DecidableEq ι] [DecidableEq ι'] (e : ι ≃ ι') {S : Finset ι} (L : RegLinear F S) :

          A map on V_S, transported along e.

          Equations
          Instances For
            @[simp]
            theorem MIPRE.CL.RegLinear.reindex_apply {F : Type u_2} [Field F] {ι : Type u_3} {ι' : Type u_4} [DecidableEq ι] [DecidableEq ι'] (e : ι ≃ ι') {S : Finset ι} (L : RegLinear F S) (y : ι' → F) :
            (reindex e L) y = (reindexEquiv e) (L ((reindexEquiv e).symm y))
            @[simp]
            theorem MIPRE.CL.RegLinear.reindex_zero {F : Type u_2} [Field F] {ι : Type u_3} {ι' : Type u_4} [DecidableEq ι] [DecidableEq ι'] (e : ι ≃ ι') {S : Finset ι} :
            reindex e 0 = 0
            def MIPRE.CL.CLFun.reindex {F : Type u_2} [Field F] {ι : Type u_3} {ι' : Type u_4} [DecidableEq ι] [DecidableEq ι'] (e : ι ≃ ι') {ℓ : ℕ} :
            CLFun F ι ℓ → CLFun F ι' ℓ

            A presentation, transported along a bijection of coordinates.

            Equations
            Instances For
              @[simp]
              theorem MIPRE.CL.CLFun.reindex_zero {F : Type u_2} [Field F] {ι : Type u_3} {ι' : Type u_4} [DecidableEq ι] [DecidableEq ι'] (e : ι ≃ ι') :
              @[simp]
              theorem MIPRE.CL.CLFun.reindex_cons {F : Type u_2} [Field F] {ι : Type u_3} {ι' : Type u_4} [DecidableEq ι] [DecidableEq ι'] {ℓ : ℕ} (e : ι ≃ ι') {S : Finset ι} (L₁ : RegLinear F S) (next : (ι → F) → CLFun F ι ℓ) :
              reindex e (cons S L₁ next) = cons (Finset.map e.toEmbedding S) (RegLinear.reindex e L₁) fun (v : ι' → F) => reindex e (next ((reindexEquiv e).symm v))
              theorem MIPRE.CL.CLFun.SupportedOn.reindex {F : Type u_2} [Field F] {ι : Type u_3} {ι' : Type u_4} [DecidableEq ι] [DecidableEq ι'] {ℓ : ℕ} (e : ι ≃ ι') {P : CLFun F ι ℓ} {T : Finset ι} (hP : P.SupportedOn T) :
              theorem MIPRE.CL.CLFun.ExactlyOn.reindex {F : Type u_2} [Field F] {ι : Type u_3} {ι' : Type u_4} [DecidableEq ι] [DecidableEq ι'] {ℓ : ℕ} (e : ι ≃ ι') {P : CLFun F ι ℓ} {T : Finset ι} (hP : P.ExactlyOn T) :
              theorem MIPRE.CL.CLFun.lift_reindex {F : Type u_2} [Field F] {ι : Type u_3} {ι' : Type u_4} [DecidableEq ι] [DecidableEq ι'] {ℓ : ℕ} (e : ι ≃ ι') (T : Finset ι) (P : CLFun F ι ℓ) :
              theorem MIPRE.CL.CLFun.truncate_reindex {F : Type u_2} [Field F] {ι : Type u_3} {ι' : Type u_4} [DecidableEq ι] [DecidableEq ι'] {ℓ : ℕ} (e : ι ≃ ι') (k : ℕ) (P : CLFun F ι ℓ) :

              Evaluation, and the data of lem:cl-kth #

              theorem MIPRE.CL.CLFun.eval_downsize {K : Type u_1} [Field K] {F : Type u_2} [Field F] [Algebra K F] {ι : Type u_3} {κ : Type u_5} [Fintype κ] [DecidableEq ι] [DecidableEq κ] [Fintype ι] {ℓ : ℕ} (b : Module.Basis κ K F) (P : CLFun F ι ℓ) (x : ι → F) :
              (downsize b P).eval ((downsizeEquiv b) x) = (downsizeEquiv b) (P.eval x)

              L^↓ = ↓ ∘ L ∘ ↓⁻¹.

              theorem MIPRE.CL.CLFun.eval_downsize' {K : Type u_1} [Field K] {F : Type u_2} [Field F] [Algebra K F] {ι : Type u_3} {κ : Type u_5} [Fintype κ] [DecidableEq ι] [DecidableEq κ] [Fintype ι] {ℓ : ℕ} (b : Module.Basis κ K F) (P : CLFun F ι ℓ) (y : ι × κ → K) :
              theorem MIPRE.CL.CLFun.eval_truncate_downsize {K : Type u_1} [Field K] {F : Type u_2} [Field F] [Algebra K F] {ι : Type u_3} {κ : Type u_5} [Fintype κ] [DecidableEq ι] [DecidableEq κ] [Fintype ι] {ℓ : ℕ} (b : Module.Basis κ K F) (k : ℕ) (P : CLFun F ι ℓ) (x : ι → F) :

              Item 1 of lem:cl-downsize: the marginals of L^↓ are the downsized marginals of L.

              theorem MIPRE.CL.CLFun.factorOfPrefix_downsize {K : Type u_1} [Field K] {F : Type u_2} [Field F] [Algebra K F] {ι : Type u_3} {κ : Type u_5} [Fintype κ] [DecidableEq ι] [DecidableEq κ] [Fintype ι] {ℓ : ℕ} (b : Module.Basis κ K F) (P : CLFun F ι ℓ) (k : ℕ) (u : ι → F) :

              Item 2 of lem:cl-downsize, factor spaces: V^↓_{k, ↓u} = V_{k,u} × κ.

              theorem MIPRE.CL.CLFun.mapOfPrefix_downsize {K : Type u_1} [Field K] {F : Type u_2} [Field F] [Algebra K F] {ι : Type u_3} {κ : Type u_5} [Fintype κ] [DecidableEq ι] [DecidableEq κ] [Fintype ι] {ℓ : ℕ} (b : Module.Basis κ K F) (P : CLFun F ι ℓ) (k : ℕ) (u : ι → F) :

              Item 2 of lem:cl-downsize, linear maps: L^↓_{k, ↓u} = ↓ ∘ L_{k,u} ∘ ↓⁻¹.

              theorem MIPRE.CL.IsCLFun.downsize {K : Type u_1} [Field K] {F : Type u_2} [Field F] [Algebra K F] {ι : Type u_3} {κ : Type u_5} [Fintype κ] [DecidableEq ι] [DecidableEq κ] [Fintype ι] (b : Module.Basis κ K F) {ℓ : ℕ} {T : Finset ι} {f : (ι → F) → ι → F} (hf : IsCLFun ℓ T f) :

              lem:cl-downsize for functions: ↓ ∘ f ∘ ↓⁻¹ is an ℓ-level CL function on V_{T × κ} over K whenever f is one on V_T over F.

              theorem MIPRE.CL.CLFun.map_compl {ι : Type u_3} {ι' : Type u_4} [DecidableEq ι] [Fintype ι] [DecidableEq ι'] [Fintype ι'] (e : ι ≃ ι') (S : Finset ι) :
              theorem MIPRE.CL.CLFun.eval_reindex {F : Type u_2} [Field F] {ι : Type u_3} {ι' : Type u_4} [DecidableEq ι] [Fintype ι] [DecidableEq ι'] [Fintype ι'] {ℓ : ℕ} (e : ι ≃ ι') (P : CLFun F ι ℓ) (x : ι → F) :
              (reindex e P).eval ((reindexEquiv e) x) = (reindexEquiv e) (P.eval x)
              theorem MIPRE.CL.CLFun.eval_reindex' {F : Type u_2} [Field F] {ι : Type u_3} {ι' : Type u_4} [DecidableEq ι] [Fintype ι] [DecidableEq ι'] [Fintype ι'] {ℓ : ℕ} (e : ι ≃ ι') (P : CLFun F ι ℓ) (y : ι' → F) :
              (reindex e P).eval y = (reindexEquiv e) (P.eval ((reindexEquiv e).symm y))
              theorem MIPRE.CL.CLFun.factorOfPrefix_reindex {F : Type u_2} [Field F] {ι : Type u_3} {ι' : Type u_4} [DecidableEq ι] [Fintype ι] [DecidableEq ι'] [Fintype ι'] {ℓ : ℕ} (e : ι ≃ ι') (P : CLFun F ι ℓ) (k : ℕ) (u : ι → F) :
              theorem MIPRE.CL.CLFun.mapOfPrefix_reindex {F : Type u_2} [Field F] {ι : Type u_3} {ι' : Type u_4} [DecidableEq ι] [Fintype ι] [DecidableEq ι'] [Fintype ι'] {ℓ : ℕ} (e : ι ≃ ι') (P : CLFun F ι ℓ) (k : ℕ) (u : ι → F) :
              theorem MIPRE.CL.IsCLFun.reindex {F : Type u_2} [Field F] {ι : Type u_3} {ι' : Type u_4} [DecidableEq ι] [Fintype ι] [DecidableEq ι'] [Fintype ι'] (e : ι ≃ ι') {ℓ : ℕ} {T : Finset ι} {f : (ι → F) → ι → F} (hf : IsCLFun ℓ T f) :

              Reindexing, for functions.

              theorem MIPRE.CL.clDist_downsize {K : Type u_1} [Field K] {F : Type u_2} [Field F] [Algebra K F] {ι : Type u_3} {κ : Type u_5} [Fintype κ] [DecidableEq ι] [DecidableEq κ] [Fintype ι] [Fintype K] [DecidableEq K] [Fintype F] [DecidableEq F] (b : Module.Basis κ K F) (L R : (ι → F) → ι → F) (a c : ι → F) :
              clDist (⇑(downsizeEquiv b) ∘ L ∘ ⇑(downsizeEquiv b).symm) (⇑(downsizeEquiv b) ∘ R ∘ ⇑(downsizeEquiv b).symm) ((downsizeEquiv b) a) ((downsizeEquiv b) c) = clDist L R a c

              lem:downsize-cl-dist: the CL distribution of the downsized functions is the image of the CL distribution under ↓.