When dir.exp is specified and the minimization produces more than one prime implicant chart (QCA's own C1, C2, ... indexing, visible as "From C1P1, C2P1:" in print()), sol$i.sol contains one list entry per chart/path combination (e.g. C1P1, C2P1). Each entry's own $solution field is computed independently by QCA::minimize() (via its internal getSolution() call) and is NOT guaranteed to hold only that chart's own model: depending on the data, it may already enumerate the full, cross-chart set of tied minimal models. Concatenating every chart's $solution list (the previous approach used here and in generate_report()) therefore risks double- or N-fold counting the same model, inflating the reported number of solutions.

collect_unique_i_sol(sol)

Arguments

sol

A solution object returned by QCA::minimize().

Value

A list of unique solution term-vectors, or NULL if none were found.

Details

This helper performs the same enumeration, then deduplicates by comparing each model's term set (order-independent), so structurally identical models are counted once regardless of which chart(s) produced them. This mirrors the manual "remove duplicate Boolean expressions" step that is standard practice when reporting multiple minimal solutions by hand.

Note

When dir.exp is specified, the true Intermediate solution is stored in sol$i.sol, not sol$solution (which contains the Parsimonious solution).