theorem 2.12 implemented