rreduce {cna}  R Documentation 
Eliminate redundancies from a disjunctive normal form (DNF)
Description
rreduce
eliminates redundancies from disjunctive normal forms (DNF), i.e. disjunctions of conjunctions of literals. If there are several minimal DNF, rreduce
selects one at random.
Usage
rreduce(cond, x = full.ct(cond), niter = 1, full = !missing(x), verbose = FALSE,
maxiter = 1000, simplify2constant = TRUE)
Arguments
cond 
A character string specifying a disjunctive normal form; can be either crispset or multivalue. 
x 
A

niter 
An integer value 
full 
Logical; if 
simplify2constant 
Logical; if 
verbose 
Logical; if TRUE, the reduction process will be traced in the console. 
maxiter 
Maximal number of iterations. This is a parameter of internal nature, usually not set by the user. 
Details
rreduce
successively eliminates conjuncts and disjuncts from a DNF cond
as long as the result of condition(cond, x)
remains the same. The only required argument is cond
. If x
is not provided, redundancies are eliminated relative to full.ct(cond)
. If x
is provided and full = TRUE
, redundancies are eliminated relative to full.ct(x)
. If x
is provided and full = FALSE
, redundancies are eliminated relative to x
.
If cond
has more than one redundancyfree form, rreduce
only returns a randomly chosen one in the default setting of niter = 1
. By increasing niter
to a value >1
, cond
is (randomly) minimized niter
times. All resulting redundancyfree forms are collected and returned. This provides some insight about the amount of redundancyfree forms that cond
has.
Value
Redundancyfree disjunctive normal form (DNF).
See Also
Examples
# Logical redundancies.
cond1 < "A*b + a*B + A*C + B*C"
rreduce(cond1)
rreduce(cond1, niter = 10)
cond2 < "A*b + a*B + A*B + a*b"
rreduce(cond2, simplify2constant = FALSE)
# Any Boolean expressions.
cond < "!(A*B*C)*!(a*b*c)" # or "A + B*!(D + e) <> C"
x < selectCases(cond)
cond < getCond(x) # Returns a DNF equivalent to cond, but with many redundancies.
rreduce(cond) # Repeated execution results in different outputs.
rreduce(cond, verbose = TRUE)
rreduce(cond, niter = 20) # 20 iterations yield 5 minimal forms.