This seems to be quite similar to dynamic logic. How does it differ from it and advance over it?