What are the characteristics of prolog?