Qusetion: Write transition functions for accepting the language a^1 b^j c^k, with i=2j or j=2k I presume i,j,k not= 0. Part a ------ i=2j only. Start state q1 1. d(q1, a, Z) = (q2, AZ), // change state 2. d(q2, a, A) = (q1, A), // do not push anything on stack but toggle state 3. d(q1, a, A) = (q2, AA), //toogle + push on stack 4. d(q1, b, A) = (q1, epsilon), // b clears stack 5. d(q1, c, Z) = (q1, Z), // first c must see bottom of stack 6. d(q1, epsilon, Z) = (q1, epsilon) // emty stack on end of string Part b ------ j=2k added Create new start state q0, to have two paths in the automaton 7. d(q0, epsilon, Z) = {(q1, Z), (q3, Z)} // q3 for the new language part b 8. d(q3, a, Z) = (q3, Z) // ignore all a's do not touch stack 9. d(q3, b, Z) = (q4, BZ) // first b encountered 10. d(q4, b, Z) = (q3, B) //ignore every second b 11. d(q3, b, B) = (q4, BB) // toggle and push stack symbol 12. d(q3, c, B) = (q3, epsilon) // c's take off stack symbol 13. d(q3, epsilon, Z) = (q3, epsilon) Example: aabc (q0, aabc, Z) [rule 7]: (q1, aabc, Z) [1]: (q2, abc, AZ) [2]: (q1, bc, AZ) [4]: (q1, c, Z) [5]: (q1, epsilon, Z) [6]: (q1, epsilon, epsilon) Stack empty at the end of the string, the string is accepted