Pure Datalog always stops

Pure Datalog has no function symbols and no arithmetic: rules only combine values already in the program or the data.

  • So the set of possible facts is finite: finitely many predicates, each over a finite set of constants.
  • Bottom-up iteration adds facts from that finite set and never creates new ones, so it must reach a fixed point in finitely many rounds.
Every pure Datalog query terminates, so query answering is decidable. Contrast with Prolog, which is Turing-complete and can loop forever.