aboutsummaryrefslogtreecommitdiffstats
path: root/README
blob: 37019ccd445014427bfbcc811137e643904423ff (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
NAME
	libnormalform - First-order logic sentence canonicalisation library

SYNOPSIS
	#include <libnormalform.h>

	Link with -lnormalform.

DESCRIPTION
	The libnormalform library provides a mechanism for expressing
	first-order logic sentence and normalises them on the fly to
	negation normal form, and then lets the user choose disjunctive
	normal form (DNF) or conjunctive normal form (CNF).

	libnormalform support all Boolean connectives: AND, OR, XOR,
	IMPLY, IF, NAND, NOR, XNOR, NIMPLY, NIF, and NOT, as well as the
	boolean constants TRUE and FALSE. Additionally, libnormalform
	supports three standard qualifiers: the universal qualifier
	(FOR ALL), the existential qualifier (THERE EXISTS), and the
	unique existential (uniqueness) qualifier (THERE EXISTS ONE).
	For all binary connectives, libnormalform support simply
	chaining (e.g. AND(a, b, c) instead of AND(AND(a, b), c)).
	For all qualifiers, libnormalform supports qualification over
	an array or an associative array.

	libnormalform also provides application managed boolean
	variables and functions. These as well as the domains for
	qualifiers can be set dynamically and the value of the
	sentence can be evaluate at any time.

	When libnormalform is asked to output the sentences in DNF
	or CNF, it can relax parts of sentence in case the application
	wants to express the sentence in a particular form but cannot
	express all parts of, and therefore needs alternative that is
	at least as true. While relaxing the sentence, it can eliminiate
	parts of the sentence that become redundant; to be able to do
	this, it queries the application for how the application
	defined variables, functions and domains depend on each other.