# Another approach to BDSC ("Vector Commit and Prove") from Lookups
Idea by Carla.
Goal: Let $I$ be a set of indices the verifier wants to look up in a vector (in a subvector opening sense). We want to reduce this to a lookup. The tiny challenge is making sure that those indices are used correctly by the prover (since a lookup argument in general just throws indices out of the window)
Notation:
- we denote by $[T]$ a table, that is any preprocessed column vector we will lookup *into*.
Setting:
- Both P and V share two column tables:
- $[idx] = (1,2,3,\dots)$, just the natural numbers till $N$
- $[V] = (v_1, v_2, \dots)$, the actual vector we want to prove opening into
## The protocol
- P sends $c_I = Com(I)$ where this commitment is done in a normalized basis.
- The protocol then consists of two parts.
---
- For the subvector opening:
- P sends commitment to sub vector of claimed values $C_{subv} = Com((v_i)_{i\in I})$
- V sends challenge $\alpha$
- P and V make online table $[T'] = \alpha[idx] + [V]$ and lookup commitment $C' = \alpha C_I + C_{subv}$
- They run a lookup on $[T'], C'$
---
For checking relation to actual subset of interest:
- V samples $r \gets \mathbb{F}$
- V computes $y = p_I(r)$ where $p_i$ is the interpolating polynomial of set $I$
- V sends a proof of poly evaluation that the polynomial committed in $C_I$ actually evaluates to $y$, which V checks