*$\epsilon$-achievable* if and only if, for every request $\boldsymbol{d}$, there exists a message $X_{\boldsymbol{d}}$ of length $RF$ that allows all users to recover their desired file $d_k$ with a probability of error of at most $\epsilon$. Given parameters $N$, $K$, and $M$, we define the minimum peak rate, denoted by $R^*$, as the minimum rate that is $\epsilon$-achievable over all prefetching schemes for large $F$ and any $\epsilon>0$. Rigorously, $$\begin{aligned}
    R^*=\sup_{\epsilon>0} \limsup_{F\rightarrow\infty}&\min_{\boldsymbol{\phi}}\{R\ |\nonumber\\ R&\textup{ is $\epsilon$-achievable given prefetching } \boldsymbol{\phi} \} 
    \end{aligned}$$

Similarly for the average rate, we say that a communication rate $R$ is *$\epsilon$-achievable for demand* $\boldsymbol{d} $, given a prefetching scheme $\boldsymbol{\phi}$, if and only if we can create a message $X_{\boldsymbol{d}}$ of length $RF$ that allows all users to recover their desired file $d_k$ with a probability of error of at most $\epsilon$. Given parameters $N$, $K$, and $M$, we define the minimum average rate, denoted by $R^*_{\textup{ave}}$, as the minimum rate over all prefetching schemes such that, we can find a function $R(\boldsymbol{d})$ that is is $\epsilon$-achievable for any demand $\boldsymbol{d}$, satisfying $R^*_{\textup{ave}}=\mathbb{E}_{\boldsymbol{d}}[R(\boldsymbol{d})]$, where $\boldsymbol{d}$ is uniformly random in $\mathcal{D}=\{1,...,N\}^K$, for large $F$ and any $\epsilon>0$.

Finding the rate-memory tradeoff is essentially finding the values 