Logical Programming and Reverse Engineering: A Multilanguage Environment Supporting Analysis and Documentation of Existing Software