diff --git a/examples/dining_philosophers/dining_philosophers_initial.pseudo b/examples/dining_philosophers/dining_philosophers_initial.pseudo
new file mode 100644
index 0000000000000000000000000000000000000000..0f2b0759fbe582e1bbe0f077d97c5913aa380d3a
--- /dev/null
+++ b/examples/dining_philosophers/dining_philosophers_initial.pseudo
@@ -0,0 +1,34 @@
+procedure main(argc, argv[]):
+  shared chopsticks[] := create_semaphores(5, 1)
+
+  for id := 0 to 5 do
+    create_thread(philosopher, id)
+  end for
+end procedure
+
+procedure philosopher(id):
+  while true do
+    think()
+    get_left_chopstick(id)
+    get_right_chopstick(id)
+    eat()
+    put_left_chopstick(id)
+    put_right_chopstick(id)
+  end while
+end procedure
+
+procedure get_left_chopstick(id):
+  wait(chopsticks[(id + 1) mod 5])
+end procedure
+
+procedure get_right_chopstick(id):
+  wait(chopsticks[id])
+end procedure
+
+procedure put_left_chopstick(id):
+  signal(chopsticks[(id + 1) mod 5])
+end procedure
+
+procedure put_right_chopstick(id):
+  signal(chopsticks[id])
+end procedure