\node[] (i0j0)  at (-1, -1) {a};
\node[] (i1j0) at (1, -1) {a};
\node[] (i0j1)  at (-1, 1) {a};
\node[] (i1j1) at (1, 1) {b};

\node (in) at (0, 0) {$\lambda i j. p (i \land j)$};

\draw[->] (i0j0) -- (i0j1) node [midway] {$\lambda j. p\ i0$};
\draw[->] (i0j0) -- (i1j0) node [midway, below] {$\lambda i. p\ i0$};
\draw[->] (i0j1) -- (i1j1) node [midway] {$p$};
\draw[->] (i1j0) -- (i1j1) node [midway, right] {$p$};