The formal description of programming languages using predicate logic