Documentation

MIPRE.Tailored.Intro.RegCons

Constraints on registers read off windows #

The introspection verifier's hiding checks compare registers x : Fin s โ†’ ๐”ฝโ‚‚ โ€” the duals and tails of Read and Hide answers โ€” through projections onto coordinate sets and through the dual maps registerDual L, with the sets and the maps computed from the readable register. In the padded layout a register is a window of an answer (toBits x at a known offset). This file writes such comparisons as linear constraints:

Inner products of registers #

theorem MIPRE.Tailored.Intro.dotL_toBits {s : โ„•} (w x : Fin s โ†’ CL.๐”ฝโ‚‚) :
dotL (CL.toBits w) (CL.toBits x) = decide (โˆ‘ i : Fin s, w i * x i = 1)

The inner product of two windows is the ๐”ฝโ‚‚ sum.

A register-level linear form, placed at an offset.

Equations
Instances For
    theorem MIPRE.Tailored.Intro.dotL_regForm {s n o : โ„•} {w x : Fin s โ†’ CL.๐”ฝโ‚‚} {a : Cost.BitStr} (h : o + s โ‰ค n) (ha : List.length a = n) (hx : List.take s (List.drop o a) = CL.toBits x) :
    dotL (regForm n o w) a = decide (โˆ‘ i : Fin s, w i * x i = 1)
    theorem MIPRE.Tailored.Intro.satisfies_regForms_iff {s la lb oa ob : โ„•} {a b : Cost.BitStr} (ha : List.length a = la) (hb : List.length b = lb) (hoa : oa + s โ‰ค la) (hob : ob + s โ‰ค lb) {x y wa wb : Fin s โ†’ CL.๐”ฝโ‚‚} (hx : List.take s (List.drop oa a) = CL.toBits x) (hy : List.take s (List.drop ob b) = CL.toBits y) (ฮณ : Bool) :
    Satisfies (regForm la oa wa ++ regForm lb ob wb ++ [ฮณ]) (a ++ b ++ [true]) โ†” decide (โˆ‘ i : Fin s, wa i * x i + โˆ‘ i : Fin s, wb i * y i = 1) = ฮณ

    A constraint between two registers, read: โˆ‘ waยทx + โˆ‘ wbยทy = ฮณ.

    Equality on a coordinate set #

    The constraints xแตข = yแตข for i โˆˆ S, the registers at offsets oa of a, ob of b, in increasing order of i.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      theorem MIPRE.Tailored.Intro.sum_single_mul {s : โ„•} (i : Fin s) (x : Fin s โ†’ CL.๐”ฝโ‚‚) :
      โˆ‘ j : Fin s, Pi.single i 1 j * x j = x i
      theorem MIPRE.Tailored.Intro.projEqCons_iff {s la lb oa ob : โ„•} {a b : Cost.BitStr} (ha : List.length a = la) (hb : List.length b = lb) (hoa : oa + s โ‰ค la) (hob : ob + s โ‰ค lb) {x y : Fin s โ†’ CL.๐”ฝโ‚‚} (hx : List.take s (List.drop oa a) = CL.toBits x) (hy : List.take s (List.drop ob b) = CL.toBits y) (S : Finset (Fin s)) :
      (โˆ€ c โˆˆ projEqCons la lb oa ob S, Satisfies c (a ++ b ++ [true])) โ†” (CL.proj S) x = (CL.proj S) y

      The coordinate-set equality constraints hold exactly when the projections agree.

      Equality of duals #

      def MIPRE.Tailored.Intro.dualCons {s : โ„•} (la lb oa ob : โ„•) (S : Finset (Fin s)) (gens : List (Fin s โ†’ CL.๐”ฝโ‚‚)) :

      The constraints โˆ‘แตข zแตข (proj S (x - y))แตข = 0 for z in a list.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        theorem MIPRE.Tailored.Intro.sum_proj_mul {s : โ„•} (S : Finset (Fin s)) (z x : Fin s โ†’ CL.๐”ฝโ‚‚) :
        โˆ‘ i : Fin s, (CL.proj S) z i * x i = โˆ‘ i : Fin s, z i * (CL.proj S) x i
        theorem MIPRE.Tailored.Intro.dualCons_iff {s la lb oa ob : โ„•} {a b : Cost.BitStr} (ha : List.length a = la) (hb : List.length b = lb) (hoa : oa + s โ‰ค la) (hob : ob + s โ‰ค lb) {x y : Fin s โ†’ CL.๐”ฝโ‚‚} (hx : List.take s (List.drop oa a) = CL.toBits x) (hy : List.take s (List.drop ob b) = CL.toBits y) {S : Finset (Fin s)} (L : CL.RegLinear CL.๐”ฝโ‚‚ S) (gens : List (Fin s โ†’ CL.๐”ฝโ‚‚)) (hgens : โˆ€ g โˆˆ gens, L g = 0) (hspan : โˆ€ (z : Fin s โ†’ CL.๐”ฝโ‚‚), L z = 0 โ†’ z โˆˆ Submodule.span CL.๐”ฝโ‚‚ {g : Fin s โ†’ CL.๐”ฝโ‚‚ | g โˆˆ gens}) :

        The dual equality constraints, for a list of vectors of the kernel of L spanning it, hold exactly when the duals agree.