Definition:Pushdown Automaton

Definition
A pushdown automaton is a septuple:


 * $M = \struct {Q, \Sigma, \Gamma, \delta, q_0, Z, F}$

where:


 * $Q$ is a finite set of states
 * the input alphabet $\Sigma$ is a finite set
 * the stack alphabet $\Gamma$ is a finite set
 * the transition relation $\delta$ is a finite subset of $Q \times \paren {\Sigma \cup \set {\varepsilon} } \times \Gamma \times Q \times \Gamma^*$
 * $q_0 \in Q$ is the start state
 * $Z \in \Gamma$ is the initial stack symbol
 * $F \subseteq Q$ is the set of accepting states.

An instantaneous description is any triple of state, input and stack:
 * $\struct {p, w, \beta} \in Q \times \Sigma^* \times \Gamma^*$

A computation step is:
 * $\struct {p, a x, A \gamma} \map {\vdash_M} {q, x, \alpha \gamma} \iff \struct {p, a, A, q, \alpha} \in \delta$

$M$'s accepted language is:
 * $\map L M := \set {w \in \Sigma^* \mid \exists f \in F: \exists \gamma \in \Gamma^*: \struct {q_0, w, Z} \map { {\vdash_m}^*} {f, \varepsilon, \gamma} }$