First-occurrence order under injective CNF relabeling #
Compaction assigns the position of a variable's first literal occurrence. The list of distinct variables keeps its order under this renaming, even though compact names may have gaps.
Main results #
Cslib.Logic.PL.CNF.distinctVars_relabel_of_injOn,Cslib.Logic.PL.CNF.numVars_relabel_of_injOn,Cslib.Logic.PL.CNF.numVars_relabel: injective variable relabelings preservedistinctVarsorder andnumVars.Cslib.Logic.PL.CNF.count_vars_relabel_of_injOn,Cslib.Logic.PL.CNF.count_vars_relabel_le_of_injOn: they also preserve literal-occurrence counts and any uniform bound on them.Cslib.Logic.PL.CNF.distinctVars_compact: exact ordered list of compact variable names.Cslib.Logic.PL.CNF.idxOf_distinctVars_compact: graph vertex indices are preserved.
References #
These are elementary list identities for the existing CNF compaction operation.
Relabeling injectively on the used variables preserves their first-occurrence order.
Relabeling along an injective map preserves numVars.
Relabeling injectively on the occurring variables preserves the literal-occurrence count of every occurring variable.
Relabeling injectively on the occurring variables preserves any uniform bound on literal-occurrence counts.
Compaction preserves the exact order of the distinct variables. Any lawful Boolean equality on the original variable type gives the same first-occurrence names.
The index of a used variable in the distinct-variable list is unchanged by compaction.
Drawing data indexed by the distinct-variable list retain the same lookup after compaction.
Compaction relabels the full variable-occurrence list in its original order.
Every used variable keeps its exact literal-occurrence count after compaction.
A bound on all original literal-occurrence counts also bounds every compact variable.
Relabeling preserves literal-occurrence order and both occurrence indices.