Sets of rules as conjunctions and/or disjunctions

OK, so:

p([]).

… is a conjunction when considered as part of the program logic (because it is in the list of predicates in the program), and is a disjunction when considered at runtime (executable alternative).

A Programmer is naturally going to view it as a disjunction.

I view this conjunction vs disjunction as being different to a declarative vs procedural reading of the program:

  • Declarative reading: Are constraints defined sufficiently
  • Procedural reading: Will the program execute correctly, in a timely manner, without falling into infinite loops etc.