As of version 3.0 of the cna package, the function minimalizeCsf
is automatically executed, where needed, by the default calls of the cna
and csf
functions. In consequence, applying the stand-alone minimalizeCsf
function to an output object of cna
is no longer required. The stand-alone function is kept in the package for reasons of backwards compatibility and for developing purposes. Its automatic execution can be suppressed by calling csf
with minimalizeCsf = FALSE
, which emulates outputs of older versions of the package.
The core criterion that Boolean dependency structures must satisfy in order to be causally interpretable is redundancy-freeness. In atomic solution formulas (asf), both sufficient and necessary conditions are completely free of redundant elements. However, when asf are conjunctively combined to complex solution formulas (csf), new redundancies may arise. A csf may contain redundant parts. To illustrate, assume that a csf is composed of three asf: asf1 * asf2 * asf3. It can happen that the conjunction asf1 * asf2 * asf3 is logically equivalent to a proper part of itself, say, to asf1 * asf2. In that case, asf3 is a so-called structural redundancy in asf1 * asf2 * asf3 and must not be causally interpreted. See the package vignette (vignette("cna")
) or Baumgartner and Falk (2023) for more details.
minimalizeCsf
recursively tests the asf
contained in a csf
for structural redundancies and eliminates the redundant ones. It takes a character vector x
specifying csf as input and builds all redundancy-free csf that can be inferred from x
. There are two possibilities to use minimalizeCsf
. Either the csf to be tested for structural redundancies is passed to minimalizeCsf
as a character vector (this is the default method), or minimalizeCsf
is applied directly to the output of cna
---which however, as indicated above, is superfluous as of version 3.0 of the cna package.
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 x
. That space of logical possibilities is generated by full.ct(x)
if the ct
argument takes its default value. If all factors in x
are binary, providing a non-default ct
value is optional and without influence on the output of minimalizeCsf
. If some factors in x
are multi-value, minimalizeCsf
needs to be given the range of these values by means of the ct
argument. ct
can be a data frame or configTable
listing all possible value configurations.