Before you can read the parent note, you must own every piece of notation it throws at you. Below, each symbol is built from nothing: plain words → the picture → why the topic needs it. Read top to bottom; each one leans on the previous.
The key word is contiguous — no gaps, no skipping. aab is a substring of aabxaa; abx (in that order, adjacent) is too; but axa is not because the letters aren't next to each other.
Picture sliding a cut-line from left to right: everything to the left of the cut is a prefix. The prefix of length k is s[0..k−1] (it has k characters, occupying slots 0 through k−1).
If even one pair of letters differs, the whole equality is false. This is exactly a match. When we say "s[i..i+k−1] matches the prefix s[0..k−1]", we mean all k pairs agree.
Picture the box laid on top of the prefix — they're identical copies. Slot i sits some distance i−l from the box's left edge l; slot i′ sits that same distance from the prefix's left edge (slot 0). So i′ is i's reflection in the "photocopy."
Because the box equals the prefix, s[i]=s[i′] — a fact, not a guess. That fact is what lets us copy the already-computed Z[i′] for free.
Each foundation feeds the next; the two arrows into "Z value" (prefix + equality) and the two into "min cap" (mirror + counting) are the load-bearing joins.
The Z-array is one of several ways to encode "how does a string repeat inside itself." Its close cousin is the KMP failure function (which measures longest border instead of longest prefix-match). For a full trace with the same running example in Hindi/English mix, see 3.8.04 Z-algorithm — Z-array construction, O(n+m) (Hinglish). The linear-time speed claim rests on Amortized Analysis (the "r only moves right" argument). Other tools for the same family of problems: String Hashing, Suffix Array, Suffix Automaton, and for palindromes the mirror-trick reappears in Manacher's Algorithm. All of these build on the same foundations above, so mastering them here pays off everywhere.