According to the regularity theory of causation underlying CNA, a Boolean dependency structure is causally interpretable only if it does not contain any redundant elements. Boolean dependency structures may feature various types of redundancies, one of which are so-called structural redundancies. A csf \(\Phi\) has a structural redundancy if, and only if, reducing \(\Phi\) by one or more of the asf it is composed of results in a csf \(\Phi'\) that is logically equivalent to \(\Phi\). To illustrate, suppose that \(\Phi\) is composed of three asf: asf1 * asf2 * asf3; and suppose that \(\Phi\) is logically equivalent to \(\Phi'\): asf1 * asf2. In that case, asf3 makes no difference to the behaviour of the factors in \(\Phi\) and \(\Phi'\); it is structurally redundant and, accordingly, must not be causally interpreted. For more details see the cna package vignette or Baumgartner and Falk (2018).
The function redundant
takes a character vector cond
composed of csf as input an tests for each element of cond
whether it is structurally redundant or not. As a test for structural redundancies amounts to a test of logical equivalencies, it must be conducted relative to all logically possible configurations of the factors in cond
. That space of logical possibilities is generated by full.tt(cond)
in case of x = NULL
, and by full.tt(x)
otherwise. If all factors in cond
are binary, x
is optional and without influence on the output of redundant
. If some factors in cond
are multi-value, redundant
needs to be given the range of these values. x
can be a data frame or truthTab
listing all possible value configurations or a list of the possible values for each factor in cond
.
If redundant
returns TRUE
for a csf, that csf must not be causally interpreted but further processed by minimalizeCsf
.