Q = {q0, q1} // states
E = {a, b} // alphabet
T = {z0, A, B} // stack symbols

// construct all possible permutations of A's and B's
d(q0, epsilon, z0)={(q0, A z0), (q0, B z0)}
d(q0, epsilon, A)={(q0, A A), (q0, B A)}
d(q0, epsilon, B)={(q0, A B), (q0, B B)}

// transition to q1
d(q0, epsilon, z0)={(q1, z0)}
d(q0, epsilon, A)={(q1, A)}
d(q0, epsilon, B)={(q1, B)}

// consume stack until empty
d(q1, a, A)={(q1, epsilon)}
d(q1, b, B)={(q1, epsilon)}