a PDA transition
/ delta = the symbol δ /
A DFA transition reads one thing — the current input symbol — and changes state. A PDA transition reads THREE things at once and does more: it looks at the current state, the next input symbol, and the symbol on top of the stack, and based on all three decides which state to go to and what to do to the stack. This richer rulebook is the transition function δ (delta), and it is where the stack actually earns its keep.
The standard form is δ(q, a, X) = a set of pairs (p, γ). Read it as: when in state q, reading input symbol a, with X on top of the stack, the machine may move to state p, replacing the popped X with the string γ (gamma) of stack symbols. Three things are worth highlighting. First, the input symbol a may be ε (epsilon), the empty string — meaning the machine can move WITHOUT consuming any input, purely on the strength of its state and stack top. Second, the rule always pops the top X, then pushes γ; pushing ε is a pure pop, pushing a longer string is a net push. Third, δ returns a SET of allowed moves, not a single one, because a PDA is nondeterministic in general.
Walking a concrete rule for a^n b^n: δ(q0, a, Z0) = {(q0, X Z0)} says 'in q0, reading a, on top Z0: stay in q0 and push X above Z0'. δ(q1, b, X) = {(q1, ε)} says 'in q1, reading b, on top X: pop the X and push nothing'. Those two rules are the push-per-a and pop-per-b heartbeat of the counter. The ε-moves and the set-valued output are exactly what make PDAs strictly more expressive than the deterministic, ε-free transition of a DFA.
δ(q1, ε, Z0) = {(qf, Z0)} is an ε-move: in q1 with Z0 on top, with no input read, jump to accepting state qf and leave Z0 in place. The machine moved using only its state and stack top.
δ(state, input-or-ε, stack-top) → a set of (next-state, string-to-push) pairs.
Every PDA transition consults AND consumes the top stack symbol — there is no move that leaves the stack untouched. To 'not change' the stack you must pop the top and immediately push it back.