1) The presentation discusses Caffeine, a tool for dynamic analysis of Java programs that uses Prolog predicates to model execution events and perform analyses.
2) Caffeine models execution events like field accesses, method calls, and class loads. Queries can be written in Prolog to analyze program behavior, like counting method calls.
3) The implementation has performance issues due to overhead from event generation, requiring instrumentation tricks. Analyzing complex relationships like composition is discussed.