# Sets of rules as conjunctions and/or disjunctions

**URL:** https://swi-prolog.discourse.group/t/sets-of-rules-as-conjunctions-and-or-disjunctions/9779
**Category:** General
**Created:** [August 5, 2026, 10:24am UTC](https://swi-prolog.discourse.group/t/sets-of-rules-as-conjunctions-and-or-disjunctions/9779 "2026-08-05T10:24:51Z")
**Posts on this page:** 1
**Showing post:** 23

<div class="post-metadata">

### Author: ![brebs](https://avatars.discourse-cdn.com/v4/letter/b/e9c0ed/32.png) [@brebs](https://swi-prolog.discourse.group/u/brebs)
#### Post date: [August 7, 2026, 12:00pm UTC](https://swi-prolog.discourse.group/t/sets-of-rules-as-conjunctions-and-or-disjunctions/9779/23 "2026-08-07T12:00:46Z")

</div>

> [@herme](#):
>
> `^ ( p([]) ) ^`

OK, so:

```prolog
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.

---

_[View the full topic](https://swi-prolog.discourse.group/t/sets-of-rules-as-conjunctions-and-or-disjunctions/9779)._
