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.