Why Use Datalog to Analyze Programs?
We use Datalog because (1) we can write program analyses easier and (2) the analyses in Datalog run faster!
As we turn to automatic program analysis to improve software reliability and security, we find it necessary to perform more complex program analyses. Specifically, if we wish to reason about heap objects, we must perform an interprocedural pointer alias analysis that distinguishes between calling contexts. This is challenging because a typical large program can have over 1014 calling contexts, even if we collapse all recursive cycles.