\myheading{Formal verification of population count functions using CBMC}

\leveldown{}

\renewcommand{\CURPATH}{verif/popcount}

This time we'll prove equivalence of several 64-bit functions, a case when bruteforce isn't feasible.

The population count function is the function that counts number of 1 bits in the input word,
\ac{AKA} Hamming weight.

Many of them I've copypasted from
the Wikipedia article\footnote{\url{https://en.wikipedia.org/wiki/Hamming_weight}}
about this function and from
the chessprogramming.org website\footnote{\url{https://www.chessprogramming.org/Population_Count}}.

See also John Regehr's blog post\footnote{\url{https://blog.regehr.org/archives/1667}} about it.

These hackish functions are very arcane, hard to understand and therefore are highly prone to (unnoticed) typos.

I run CBMC and SMT solvers on my ancient Intel Core 2 Duo T9600 clocked at 2.13GHz.

\input{\CURPATH/CBMC}
\input{\CURPATH/SMT}

\myheading{Files used}

Here: \url{\RepoURL/\CURPATH/files}.

\levelup{}

