One of the references I gave in the comments ( http://www.mathlinks.ro/viewtopic.php?t=290708 ) has disappeared from AoPS, so let me repost my answer there here. Sorry for my sophomoric writing (I was an undergrad back then) and for the sloppy LaTeX. Note that Theorem 2 (b) has since become Exercise 10.5.1 (b) in my Math 235 Fall 2023, Worksheet 10: Applications of linear algebra, and Theorem 2 (a) follows easily from part (b) (nice exercise!), but there is Theorem 2' in this answer, and anyway I am angry and want to make a point about bit rot on AoPS. So here it comes:
mildly edited posts from 2009 follow:
Problem (12.24 in the old Problems from the Book subforum).
Let $ A_1,A_2,\dots ,A_m$ and $ B_1,B_2,\dots ,B_p$ be subsets of $\left\{1,2,\dots,n\right\}$ such that $\left|A_i\cap B_j\right|$ is an odd number for all $i$ and $j$. Prove that $mp\le 2^{n-1}$.
Solution.
Let $ \mathbb{F}_2$ be the field with $ 2$ elements. We denote the zero and the one of the field $ \mathbb{F}_2$ by $ 0_{\mathbb{F}_2}$ and $ 1_{\mathbb{F}_2}$. Sometimes we will abbreviate $ 0_{\mathbb{F}_2}$ as $ 0$, since this cannot cause confusion.
Let $ \pi: \mathbb{Z}\to\mathbb{F}_2$ be the canonical surjection which maps every even integer to $ 0_{\mathbb{F}_2}$ and every odd integer to $ 1_{\mathbb{F}_2}$. Then, $ \pi\left(n\right) = n\cdot 1_{\mathbb{F}_2}$ for every $ n\in\mathbb{Z}$.
Let $ n\in\mathbb{N}$. For any vector $ v\in\mathbb{F}_2^n$, and any $ i\in\left\{1,2,...,n\right\}$, we denote by $ v_i$ the $ i$-th coordinate of the vector $ v$. Also, for any $ k\in\left\{1,2,...,n\right\}$, define a vector $ e_k\in\mathbb{F}_2^n$ by
$ \left(e_k\right)_i = \left[i = k\right]\cdot 1_{\mathbb{F}_2}$ for every $ i\in\left\{1,2,...,n\right\}$, where $\left[i = k\right]$ denotes the truth value of $i = k$ (that is, the number $1$ if $i = k$ and the number $0$ otherwise).
Then, $ \left(e_1,e_2,...,e_n\right)$ is a basis of the $ \mathbb{F}_2$-vector space $ \mathbb{F}_2^n$, and every vector $ v\in\mathbb{F}_2^n$ satisfies $ v = \sum_{i = 1}^n v_ie_i$.
Define a bilinear form $ \left < \cdot ,\cdot\right >$ on the $ \mathbb{F}_2$-vector space $ \mathbb{F}_2^n$ by $ \left < x,y\right > = x^Ty = \sum_{i = 1}^nx_iy_i$ for any $ x\in\mathbb{F}_2^n$ and $ y\in\mathbb{F}_2^n$. This bilinear form $ \left < \cdot ,\cdot\right >$ is symmetric and non-degenerate.
For any subspace $ U$ of the $ \mathbb{F}_2$-vector space $ \mathbb{F}_2^n$, define a subspace $ U^{\perp}$ of the $ \mathbb{F}_2$-vector space $ \mathbb{F}_2^n$ by
$ U^{\perp} = \left\{x\in\mathbb{F}_2^n\mid \left < x,u\right > = 0\text{ for all }u\in U\right\}$.
Then, according to a known fact, $ \dim U^{\perp} = n - \dim U$ (since the bilinear form $ \left < \cdot,\cdot\right >$ is non-degenerate).
We will use a famous fact:
Theorem 1. Define a map $ f: \mathcal{P}\left(\left\{1,2,...,n\right\}\right)\to\mathbb{F}_2^n$ by $ f\left(S\right) = \sum_{i\in S}e_i$ for every $ S\in\mathcal{P}\left(\left\{1,2,...,n\right\}\right)$.
(a) The map $ f: \mathcal{P}\left(\left\{1,2,...,n\right\}\right)\to\mathbb{F}_2^n$ is a bijection.
(b) For any two subsets $ A$ and $ B$ of $ \left\{1,2,...,n\right\}$, we have $ \pi\left(\left|A\cap B\right|\right) = \left < f\left(A\right),f\left(B\right)\right >$.
Now let's solve our problem and a bit more:
Theorem 2. Let $ U$ and $ V$ be two subsets of the set $ \mathcal{P}\left(\left\{1,2,...,n\right\}\right)$.
(a) If $ \left|A\cap B\right|$ is even for every $ A\in U$ and every $ B\in V$, then $ \left|U\right|\cdot\left|V\right|\leq 2^n$.
(b) If $ \left|A\cap B\right|$ is odd for every $ A\in U$ and every $ B\in V$, then $ \left|U\right|\cdot\left|V\right|\leq 2^{n - 1}$.
Proof of Theorem 2.
(a) Assume that $ \left|A\cap B\right|$ is even for every $ A\in U$ and every $ B\in V$. Then, for every $ A\in U$ and every $ B\in V$, we have
$ \left < f\left(A\right),f\left(B\right)\right > = \pi\left(\left|A\cap B\right|\right)$ (by Theorem 1 (b))
$ = 0$
(since $ \left|A\cap B\right|$ is even). Hence, for any $ v\in \operatorname{span}\left( f\left(U\right)\right )$ and for any $ w\in \operatorname{span}\left( f\left(V\right)\right )$, we have $ \left < v,w\right > = 0$. In other words, $ \operatorname{span}\left( f\left(U\right)\right ) \subseteq\left( \operatorname{span}\left( f\left(V\right)\right ) \right)^{\perp}$. Thus,
$ \dim \operatorname{span}\left( f\left(U\right)\right ) \leq\dim\left( \operatorname{span}\left( f\left(V\right)\right ) \right)^{\perp} = n - \dim \operatorname{span}\left( f\left(V\right)\right )$,
so that $ \dim \operatorname{span}\left( f\left(U\right)\right ) + \dim \operatorname{span}\left( f\left(V\right)\right ) \leq n$.
Now,
$ \left|U\right| = \left|f\left(U\right)\right|$ (since $ f$ is a bijection)
$ \leq\left| \operatorname{span}\left( f\left(U\right)\right ) \right|$ (since $ f\left(U\right)\subseteq \operatorname{span}\left( f\left(U\right)\right )$)
$ = \left|\mathbb{F}_2\right|^{\dim \operatorname{span}\left( f\left(U\right)\right ) }$ (since $ \operatorname{span}\left( f\left(U\right)\right )$ is a $ \mathbb{F}_2$-vector space)
$ = 2^{\dim \operatorname{span}\left( f\left(U\right)\right ) }$
and similarly $ \left|V\right|\leq 2^{\dim \operatorname{span}\left( f\left(V\right)\right ) }$.
Thus,
$ \left|U\right|\cdot\left|V\right|\leq 2^{\dim \operatorname{span}\left( f\left(U\right)\right ) }\cdot 2^{\dim \operatorname{span}\left( f\left(V\right)\right ) } = 2^{\dim \operatorname{span}\left( f\left(U\right)\right ) + \dim \operatorname{span}\left( f\left(V\right)\right ) }$
$ \leq 2^n$ (since $ \dim \operatorname{span}\left( f\left(U\right)\right ) + \dim \operatorname{span}\left( f\left(V\right)\right ) \leq n$).
Thus, Theorem 2 (a) is proven.
(b) If $ U = \emptyset$, then Theorem 2 (b) becomes trivial. Hence, we can assume that $ U\neq\emptyset$. Then, the set $ U$ has an element $ A_0$. Similarly, we can assume that $ V\neq\emptyset$. Then, the set $ V$ has an element $ B_0$.
Define a map $ \rho: \mathbb{F}_2^n\to\mathbb{F}_2^n$ by $ \rho\left(v\right) = v + f\left(A_0\right)$ for every $ v\in\mathbb{F}_2^n$. Obviously, the map $ \rho$ is bijective.
Define a map $ \sigma: \mathbb{F}_2^n\to\mathbb{F}_2^n$ by $ \sigma\left(v\right) = v + f\left(B_0\right)$ for every $ v\in\mathbb{F}_2^n$. Obviously, the map $ \sigma$ is bijective.
Assume that $ \left|A\cap B\right|$ is odd for every $ A\in U$ and every $ B\in V$. Then, for every $ A\in U$ and every $ B\in V$, we have
(1) $ \left < f\left(A\right),f\left(B\right)\right > = \pi\left(\left|A\cap B\right|\right)$ (by Theorem 1 (b))
$ = 1_{\mathbb{F}_2}$
(since $ \left|A\cap B\right|$ is odd). Applying this to $ A = A_0$, we obtain
(2) $ \left < f\left(A_0\right),f\left(B\right)\right > = 1_{\mathbb{F}_2}$.
Thus, for every $ A\in U$ and every $ B\in V$, we have
$ \left < \rho\left(f\left(A\right)\right),f\left(B\right)\right > = \left < f\left(A\right) + f\left(A_0\right),f\left(B\right)\right > = \underbrace{\left < f\left(A\right),f\left(B\right)\right > }_{ = 1_{\mathbb{F}_2}} + \underbrace{\left < f\left(A_0\right),f\left(B\right)\right > }_{ = 1_{\mathbb{F}_2}}$
$ = 1_{\mathbb{F}_2} + 1_{\mathbb{F}_2} = 0_{\mathbb{F}_2} = 0$.
Hence, for any $ v\in \operatorname{span}\left( \rho\left(f\left(U\right)\right)\right )$ and for any $ w\in \operatorname{span}\left( f\left(V\right)\right )$, we have $ \left < v,w\right > = 0$. In other words, $ \operatorname{span}\left( \rho\left(f\left(U\right)\right)\right ) \subseteq\left( \operatorname{span}\left( f\left(V\right)\right ) \right)^{\perp}$. Thus,
$ \dim \operatorname{span}\left( \rho\left(f\left(U\right)\right)\right ) \leq\dim\left( \operatorname{span}\left( f\left(V\right)\right ) \right)^{\perp} = n - \dim \operatorname{span}\left( f\left(V\right)\right )$,
so that $ \dim \operatorname{span}\left( \rho\left(f\left(U\right)\right)\right ) + \dim \operatorname{span}\left( f\left(V\right)\right ) \leq n$.
Now, $ \sigma\left(f\left(V\right)\right)\subseteq \operatorname{span}\left( f\left(V\right)\right )$ (because $ \sigma\left(v\right) = \underbrace{v}_{\in \operatorname{span}\left( f\left(V\right)\right ) } + \underbrace{f\left(B_0\right)}_{\in \operatorname{span}\left( f\left(V\right)\right ) }\in \operatorname{span}\left( f\left(V\right)\right )$ for every $ v\in f\left(V\right)$) and $ f\left(V\right)\subseteq \operatorname{span}\left( f\left(V\right)\right )$ (obviously). Thus, $ \sigma\left(f\left(V\right)\right)\cup f\left(V\right)\subseteq \operatorname{span}\left( f\left(V\right)\right )$.
Applying (2) to $ B = B_0$, we obtain
(3) $ \left < f\left(A_0\right),f\left(B_0\right)\right > = 1_{\mathbb{F}_2}$.
For every $ B\in V$, we have
$ \left < f\left(A_0\right),\sigma\left(f\left(B\right)\right)\right > = \left < f\left(A_0\right),f\left(B\right) + f\left(B_0\right)\right >$
$ = \left < f\left(A_0\right),f\left(B\right)\right > + \left < f\left(A_0\right),f\left(B_0\right)\right >$
$ = 1_{\mathbb{F}_2} + 1_{\mathbb{F}_2}$ (by (2) and (3))
$ = 0_{\mathbb{F}_2}\neq 1_{\mathbb{F}_2}$.
In other words, for every $ v\in \sigma\left(f\left(V\right)\right)$, we have
(4) $ \left < f\left(A_0\right),v\right > \neq 1_{\mathbb{F}_2}$.
On the other hand, for every $ v\in f\left(V\right)$, we have
(5) $ \left < f\left(A_0\right),v\right > = 1_{\mathbb{F}_2}$
(by (2)). Comparison of (4) and (5) shows that $ \sigma\left(f\left(V\right)\right)\cap f\left(V\right) = \emptyset$.
Now,
$ \left|U\right| = \left|\rho\left(f\left(U\right)\right)\right|$ (since $ \rho$ and $ f$ are bijections)
$ \leq\left| \operatorname{span}\left( \rho\left(f\left(U\right)\right)\right ) \right|$ (since $ \rho\left(f\left(U\right)\right)\subseteq \operatorname{span}\left( \rho\left(f\left(U\right)\right)\right )$)
$ = \left|\mathbb{F}_2\right|^{\dim \operatorname{span}\left( \rho\left(f\left(U\right)\right)\right ) }$ (since $ \operatorname{span}\left( \rho\left(f\left(U\right)\right)\right )$ is a $ \mathbb{F}_2$-vector space)
$ = 2^{\dim \operatorname{span}\left( \rho\left(f\left(U\right)\right)\right ) }$
and
$ 2\left|V\right| = 2\left|f\left(V\right)\right|$ (since $ \left|V\right| = \left|f\left(V\right)\right|$, since $ f$ is a bijection)
$ = \left|f\left(V\right)\right| + \left|f\left(V\right)\right| = \left|\sigma\left(f\left(V\right)\right)\right| + \left|f\left(V\right)\right|$ (since $ \left|f\left(V\right)\right| = \left|\sigma\left(f\left(V\right)\right)\right|$, since $ \sigma$ is a bijection)
$ = \left|\sigma\left(f\left(V\right)\right)\cup f\left(V\right)\right|$ (since $ \sigma\left(f\left(V\right)\right)\cap f\left(V\right) = \emptyset$)
$ \leq\left| \operatorname{span}\left( f\left(V\right)\right ) \right|$ (since $ \sigma\left(f\left(V\right)\right)\cup f\left(V\right)\subseteq \operatorname{span}\left( f\left(V\right)\right )$)
$ = \left|\mathbb{F}_2\right|^{\dim \operatorname{span}\left( f\left(V\right)\right ) }$ (since $ \operatorname{span}\left( f\left(V\right)\right )$ is a $ \mathbb{F}_2$-vector space)
$ = 2^{\dim \operatorname{span}\left( f\left(V\right)\right ) }$.
Hence,
$ 2\left|U\right|\left|V\right| = \left|U\right|\cdot 2\left|V\right|\leq 2^{\dim \operatorname{span}\left( \rho\left(f\left(U\right)\right)\right ) }\cdot 2^{\dim \operatorname{span}\left( f\left(V\right)\right ) }$
$ = 2^{\dim \operatorname{span}\left( \rho\left(f\left(U\right)\right)\right ) + \dim \operatorname{span}\left( f\left(V\right)\right ) }\leq 2^n$ (since $ \dim \operatorname{span}\left( \rho\left(f\left(U\right)\right)\right ) + \dim \operatorname{span}\left( f\left(V\right)\right ) \leq n$).
Division by $ 2$ transforms this into
$ \left|U\right|\left|V\right|\leq 2^{n - 1}$.
Thus, Theorem 2 (b) is proven.
$\blacksquare$
Remark. In http://www.mathlinks.ro/viewtopic.php?t=281597 (now https://artofproblemsolving.com/community/h281597 ), Allnames asked for an elementary solution to this problem. This is not hard to do and not particularly interesting (you can rewrite every step of the above solution in sets and subsets; the worst linear algebra that it uses is $ \dim U^{\perp} = n - \dim U$, which, in the worst case, can be proven using Gaussian elimination - and that can be rewritten in terms of sets and subsets just like everything else in the proof). But the interesting question is whether there is a substantially different proof.
Addendum
Let's slightly sharpen the inequality:
Theorem 2'. Let $ U$ and $ V$ be two subsets of the set $ \mathcal{P}\left(\left\{1,2,...,n\right\}\right)$.
(a) If $ \left|A\cap B\right|$ is even for every $ A\in U$ and every $ B\in V$, then $ \left\lceil\log_2\left|U\right|\right\rceil + \left\lceil\log_2\left|V\right|\right\rceil\leq n$.
(b) If $ \left|A\cap B\right|$ is odd for every $ A\in U$ and every $ B\in V$, then $ \left\lceil\log_2\left|U\right|\right\rceil + \left\lceil\log_2\left|V\right|\right\rceil\leq n - 1$.
Proof of Theorem 2'.
(a) Continue at the end of the proof of Theorem 2 (a). The estimate $ \left|U\right|\leq 2^{\dim \operatorname{span}\left( f\left(U\right)\right ) }$ yields $ \log_2\left|U\right|\leq \dim \operatorname{span}\left( f\left(U\right)\right )$. Hence, $ \dim \operatorname{span}\left( f\left(U\right)\right )$ is an integer which is greater or equal to $ \log_2\left|U\right|$. But $ \left\lceil\log_2\left|U\right|\right\rceil$ is the smallest integer which is greater or equal to $ \log_2\left|U\right|$. Thus, $ \left\lceil\log_2\left|U\right|\right\rceil \leq\dim \operatorname{span}\left( f\left(U\right)\right )$. Similarly, $ \left\lceil\log_2\left|V\right|\right\rceil \leq\dim \operatorname{span}\left( f\left(V\right)\right )$. Thus,
$ \underbrace{\left\lceil\log_2\left|U\right|\right\rceil}_{\leq \dim \operatorname{span}\left( f\left(U\right)\right ) } + \underbrace{\left\lceil\log_2\left|V\right|\right\rceil}_{\leq \dim \operatorname{span}\left( f\left(V\right)\right ) }\leq \dim \operatorname{span}\left( f\left(U\right)\right ) + \dim \operatorname{span}\left( f\left(V\right)\right ) \leq n$.
Thus, Theorem 2' (a) is proven.
(b) Continue at the end of the proof of Theorem 2 (b). The estimate $ \left|U\right|\leq 2^{\dim \operatorname{span}\left( \rho\left(f\left(U\right)\right)\right ) }$ yields $ \log_2\left|U\right|\leq \dim \operatorname{span}\left( \rho\left(f\left(U\right)\right)\right )$. Hence, $ \dim \operatorname{span}\left( \rho\left(f\left(U\right)\right)\right )$ is an integer which is greater or equal to $ \log_2\left|U\right|$. But $ \left\lceil\log_2\left|U\right|\right\rceil$ is the smallest integer which is greater or equal to $ \log_2\left|U\right|$. Thus, $ \left\lceil\log_2\left|U\right|\right\rceil \leq\dim \operatorname{span}\left( \rho\left(f\left(U\right)\right)\right )$.
Also, $ 2\left|V\right|\leq 2^{\dim \operatorname{span}\left( f\left(V\right)\right ) }$ yields $ \left|V\right|\leq \frac12\cdot 2^{\dim \operatorname{span}\left( f\left(V\right)\right ) } = 2^{\dim \operatorname{span}\left( f\left(V\right)\right ) - 1}$, so that $ \log_2\left|V\right|\leq \dim \operatorname{span}\left( f\left(V\right)\right ) - 1$. Hence, $ \dim \operatorname{span}\left( f\left(V\right)\right ) - 1$ is an integer which is greater or equal to $ \log_2\left|V\right|$. But $ \left\lceil\log_2\left|V\right|\right\rceil$ is the smallest integer which is greater or equal to $ \log_2\left|V\right|$. Thus, $ \left\lceil\log_2\left|V\right|\right\rceil \leq\dim \operatorname{span}\left( f\left(V\right)\right ) - 1$.
Thus,
$ \underbrace{\left\lceil\log_2\left|U\right|\right\rceil}_{\leq \dim \operatorname{span}\left( \rho\left(f\left(U\right)\right)\right ) } + \underbrace{\left\lceil\log_2\left|V\right|\right\rceil}_{\leq \dim \operatorname{span}\left( f\left(V\right)\right ) - 1}\leq \underbrace{\dim \operatorname{span}\left( \rho\left(f\left(U\right)\right)\right ) + \dim \operatorname{span}\left( f\left(V\right)\right ) }_{\leq n} - 1\leq n - 1$.
Thus, Theorem 2' (b) is proven.
$\blacksquare$
Note that Theorem 2' generalizes the problems PP and II in
Pierre Bornsztein, Xavier Caruso, Des formes bilinéaires en combinatoire.