Structural properties of Tseitin clause splitting #
This internal module proves that the fresh-variable-threaded splitter produces exact-width-three clauses, accounts exactly for its fresh counter, keeps every generated variable below the first unused counter, and has linear structural size in the source literal and clause counts.
On a nonempty clause, the fresh count is exactly length - 3.
One wide-clause split consumes one variable and leaves the remaining count to the recursive suffix.
A clause never consumes more than one plus its number of literals.
The splitter emits exactly one more clause than the number of fresh variables that it consumes.
Coarse clause-count bound for one split clause.
Assuming all source variables precede next, every literal emitted for one
clause precedes the returned fresh counter.
The top-level transformation produces exact 3-CNF.
to3Aux returns exactly the first counter after all fresh variables.
Total fresh-variable use is bounded by source literals plus source clauses.
The output clause count is exactly fresh variables plus source clauses.
Coarse output clause-count bound in source literals and clauses.
Exact 3-CNF has three literal occurrences per clause.
Exact literal count of the transformed formula.
Coarse transformed literal-count bound used by the later encoded-size proof.