[proofplan]
We encode the design by its point-block incidence matrix $N$. Counting blocks through a fixed point gives a replication number $r$ satisfying $r(k-1)=\lambda(v-1)$, and this implies $r-\lambda>0$ because the design is nontrivial. The point Gram matrix $NN^\top$ has diagonal entries $r$ and off-diagonal entries $\lambda$, so its associated quadratic form is positive definite. Hence $NN^\top$ has rank $v$, while its image is contained in the image of $N$ and $N$ has only $b$ columns, giving $v\le b$.
[/proofplan]
[step:Define the incidence matrix and compute the number of blocks through each point]
Write $X=\{x_1,\dots,x_v\}$, and let $\mathbb{R}$ denote the field of [real numbers](/page/Real%20Numbers). Define the incidence matrix
\begin{align*}
N \in \mathbb{R}^{v\times b}
\end{align*}
by declaring, for each $i\in\{1,\dots,v\}$ and each $j\in\{1,\dots,b\}$, that $N_{ij}=1$ if $x_i\in B_j$ and $N_{ij}=0$ if $x_i\notin B_j$.
For a point $x_i \in X$, let $r_i$ denote the number of blocks containing $x_i$. Count ordered pairs $(x_\ell,B_j)$ such that $x_\ell \ne x_i$ and $\{x_i,x_\ell\}\subset B_j$. On one hand, each of the $r_i$ blocks containing $x_i$ contributes $k-1$ choices of $x_\ell$, so the number is $r_i(k-1)$. On the other hand, each of the $v-1$ points $x_\ell \ne x_i$ forms a pair with $x_i$, and that pair lies in exactly $\lambda$ blocks, so the number is $\lambda(v-1)$. Therefore
\begin{align*}
r_i(k-1)=\lambda(v-1).
\end{align*}
The right-hand side is independent of $i$, so all $r_i$ are equal. Let
\begin{align*}
r := \frac{\lambda(v-1)}{k-1}
\end{align*}
denote this common replication number. Since $1<k<v$ and $\lambda\in\mathbb{N}$, we have
\begin{align*}
r-\lambda
= \frac{\lambda(v-1)}{k-1}-\lambda
= \frac{\lambda(v-k)}{k-1}
>0.
\end{align*}
[/step]
[step:Compute the point Gram matrix from pair incidences]
Let $G := NN^\top \in \mathbb{R}^{v\times v}$. For indices $i,\ell \in \{1,\dots,v\}$, the entry $G_{i\ell}$ is
\begin{align*}
G_{i\ell}
= \sum_{j=1}^{b} N_{ij}N_{\ell j}.
\end{align*}
If $i=\ell$, this sum counts the blocks containing $x_i$, so $G_{ii}=r$. If $i\ne \ell$, this sum counts the blocks containing both $x_i$ and $x_\ell$, so $G_{i\ell}=\lambda$. Let $I_v \in \mathbb{R}^{v\times v}$ be the identity matrix and let $J_v \in \mathbb{R}^{v\times v}$ be the matrix whose every entry is $1$. Thus
\begin{align*}
G = NN^\top = (r-\lambda)I_v+\lambda J_v.
\end{align*}
[guided]
The matrix $G=NN^\top$ measures how similar the rows of the incidence matrix are. Its $(i,\ell)$ entry is the dot product of the row corresponding to $x_i$ with the row corresponding to $x_\ell$:
\begin{align*}
G_{i\ell}
= \sum_{j=1}^{b} N_{ij}N_{\ell j}.
\end{align*}
Each product $N_{ij}N_{\ell j}$ is equal to $1$ exactly when the block $B_j$ contains both $x_i$ and $x_\ell$, and is equal to $0$ otherwise. Hence the sum counts blocks containing both points.
When $i=\ell$, this is just the number of blocks containing $x_i$, which is the replication number $r$, so $G_{ii}=r$. When $i\ne \ell$, the two distinct points $x_i$ and $x_\ell$ form a two-element subset of $X$, and the definition of a $2$-$(v,k,\lambda)$ design says that this pair is contained in exactly $\lambda$ blocks, so $G_{i\ell}=\lambda$. The matrix $(r-\lambda)I_v+\lambda J_v$ has diagonal entries $(r-\lambda)+\lambda=r$ and off-diagonal entries $\lambda$, so it has exactly the same entries as $G$. Hence
\begin{align*}
NN^\top=(r-\lambda)I_v+\lambda J_v.
\end{align*}
[/guided]
[/step]
[step:Show the Gram matrix has full rank]
Let $z=(z_1,\dots,z_v)\in\mathbb{R}^v$ be nonzero. Using the formula for $G$, we compute its quadratic form:
\begin{align*}
z^\top Gz = z^\top\bigl((r-\lambda)I_v+\lambda J_v\bigr)z.
\end{align*}
Since $I_vz=z$ and $J_vz$ is the vector in $\mathbb{R}^v$ whose every entry is $\sum_{i=1}^{v}z_i$, this gives
\begin{align*}
z^\top Gz = (r-\lambda)\sum_{i=1}^{v}z_i^2+\lambda\left(\sum_{i=1}^{v}z_i\right)^2.
\end{align*}
The first term is strictly positive because $r-\lambda>0$ and $z\ne 0$, while the second term is nonnegative because $\lambda\in\mathbb{N}$. Hence
\begin{align*}
z^\top Gz>0.
\end{align*}
Therefore $G$ has trivial kernel: if $Gz=0$, then $z^\top Gz=0$, contradicting the strict positivity unless $z=0$. Thus $G=NN^\top$ is invertible and
\begin{align*}
\operatorname{rank}(NN^\top)=v.
\end{align*}
[/step]
[step:Compare ranks to bound the number of blocks]
Since $NN^\top = N(N^\top)$, every vector in the image of $NN^\top:\mathbb{R}^v\to\mathbb{R}^v$ lies in the image of $N:\mathbb{R}^b\to\mathbb{R}^v$. Therefore
\begin{align*}
\operatorname{rank}(NN^\top)\le \operatorname{rank}(N).
\end{align*}
Also, $N$ has $b$ columns, so
\begin{align*}
\operatorname{rank}(N)\le b.
\end{align*}
Combining these inequalities with $\operatorname{rank}(NN^\top)=v$ gives
\begin{align*}
v=\operatorname{rank}(NN^\top)\le \operatorname{rank}(N)\le b.
\end{align*}
Hence $b\ge v$, which proves Fisher's inequality.
[/step]