<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Comparative Analysis of SMT Solvers for Diferential Cryptanalysis of SHA-2</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Marcel Barlik</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Martin Brain</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>City St. George's University of London</institution>
          ,
          <addr-line>Northampton Square, London, EC1V 0HB</addr-line>
          ,
          <country country="UK">United Kingdom</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2025</year>
      </pub-date>
      <fpage>103</fpage>
      <lpage>125</lpage>
      <abstract>
        <p>This work presents an experimental investigation on the performance diferences among various SMT solvers in generating diferential cryptanalysis collisions for the SHA-2 family of cryptographic hash functions, a widely adopted hash function, critical for maintaining data integrity and security of protocols like TLS. The research involved examining diferent parameters with these solvers, and their efects on the overall solving performance. These findings provide both a methodological baseline and actionable insights regarding solver efectiveness tailored towards helping shape future research in automated cryptanalysis.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Satisfiability Modulo Theory</kwd>
        <kwd>Diferential Cryptanalysis</kwd>
        <kwd>Cryptographic Hash Function</kwd>
        <kwd>SHA-2</kwd>
        <kwd>Theory of BitVectors</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>RQ1 How does SMT solver choice influence SHA-256 performance 1?
RQ2 Which SMT solver parameters afect SHA-256 performance most?
RQ3 How do diferential cryptanalysis encodings impact SHA-256 collisions?</p>
      <sec id="sec-1-1">
        <title>1.1. Contributions</title>
        <p>In Section 2, we describe SHA-256 and previous work on diferential cryptanalysis using automated
reasoning tools. Building on this foundation, Section 3 presents a series of experiments and
methodologies for investigating the research questions given above. Finally, Section 4 analyses the results of our
experiments.</p>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>2. Background</title>
      <p>2.1. SHA-2
We will use ≫ to denote right roll by a constant, ⊕ to denote Exclusive Or (XOR) and + represents
modulo addition (respectively rotate_right, bvxor and bvadd in SMT-LIB).</p>
      <p>
        The SHA-2 family, designed by the National Security Agency (NSA) in 1995, standardised by NIST in
2001, comprises of six primary hash functions: SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224,
and SHA-512/256. These algorithms employ the Merkle–Damgård construction with a Davies–Meyer
compression function, difering primarily in digest size (224 to 512 bits), initial values, and round counts
(64 for SHA-256, 80 for SHA-512) [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
      </p>
      <p>The SHA-2 algorithm processes input through a series of deterministic transformations governed by
its Merkle–Damgård structure.</p>
      <p>Message Processing Input messages undergo a pre-processing step to conform to the 512-bit block
for SHA-256 (1024-bit block for SHA-512 respectively). This step is necessary only when converting an
input message to a digest. However, this step is irrelevant for automated reasoning tools like SMTs,
which directly use arbitrary message blocks to reason about values.</p>
      <sec id="sec-2-1">
        <title>Function Definition</title>
        <p>functions are defined as:</p>
        <p>Each SHA-2 hash function uses its own set of constants for functions. SHA-256
 0() = ( ≫ 7) ⊕ ( ≫ 18) ⊕ ( ≫ 3)
 1() = ( ≫ 17) ⊕ ( ≫ 19) ⊕ ( ≫ 10)
Σ0() = ( ≫ 2) ⊕ ( ≫ 13) ⊕ ( ≫ 22)
Σ1() = ( ≫ 6) ⊕ ( ≫ 11) ⊕ ( ≫ 25)
Maj (, , ) = ( ∧ ) ⊕ ( ∧ ) ⊕ ( ∧ )</p>
        <p>Ch(, , ) = ( ∧  ) ⊕ (¬ ∧ )
Message Expansion The pre-processed message makes up words , for 0 ≤  ≤ 15. Remaining
words, 16 ≤  ≤ 63, are expanded using  = − 16 +  0(− 15) + − 7 +  1(− 2).
1Better performance refers to reduced solving time and improved round solvability.
Constants and Initialisation Each hash function part of the SHA-2 family uses diferent H-constants,
also known as the initialisation vector (IV). These serve as the initial digest values when starting the
compression function. SHA-256 uses fractional parts of square roots from the first 8 primes, whereas
SHA-512 uses cube roots. The round constants, also known as K-constants, are derived from fractional
parts of cube roots for the first 64 primes (SHA-256) or first 80 primes (SHA-512). These aim to break
symmetry in message scheduling during modular addition of the compression function.
Compression Function Each H-constant updates one of eight 32-bit registers –ℎ, often referred as
the working variables, which are part of the 256-bit starting state. The compression function employs 64
rounds (80 for SHA-512), where for each round, the following are executed:
1 = ℎ + Σ1() + Ch(, , ) +  + 
2 = Σ0() + Maj (, , )
ℎ = ;  =  ;  = ;  =  + 1
 = ;  = ;  = ;  = 1 + 2</p>
        <p>What is often referred to as a round-reduced model, is simply a compression with less iterations, also
knowns as steps or simply rounds, than standard. For round-reduced models, a lot of K-constants and
expanded messages are irrelevant for obtaining the digest.</p>
        <p>Finalisation After processing all blocks, the final digest concatenates the eight registers’ contents.
Truncated variants trim the output size. For SHA-256, this produces a 64-character hexadecimal value.</p>
        <sec id="sec-2-1-1">
          <title>2.2. Collisions</title>
          <p>
            A cryptographic collision occurs when distinct inputs  ̸=  ′ yield identical digests ( ) = ( ′).
As described in [
            <xref ref-type="bibr" rid="ref9">9</xref>
            ], due to SHA-2’s collision resistance, a true brute-force collision requires (2/2)
operations for -bit hashes. Reasoning and analytical attacks, such as [
            <xref ref-type="bibr" rid="ref12">12</xref>
            ], exploit weaknesses with the
use of encodings and heuristics, to achieve practical breaks at reduced-rounds.
          </p>
          <p>Collisions can be divided into three categories based on the IV used:
• Free-Start Collisions (FS): Attacker controls both message blocks and IVs. A collision occurs
when either the message or IV are unique. demonstrated a weakness in the compression function,
showing round structure vulnerabilities.
• Semi-Free-Start Collisions (SFS): Attacker chooses a fixed IV for both messages, while
controlling the message blocks. A middle-ground between FS and STD, demonstrating significant
structural weaknesses.
• Classical/Standard Collisions (STD): Attacker controls only the message blocks. The NIST
provided IV is used. Completely breaks collision resistance properties, deeming the hash function
cryptographically insecure.</p>
          <p>Standard collision is always unsatisfiable (UNSAT) for the first 8 rounds. This is likely due to choice
of constants, creating infeasible conditions for a collision.</p>
        </sec>
      </sec>
      <sec id="sec-2-2">
        <title>2.2.1. Current State-of-the-Art</title>
        <p>SHA-256
SHA-512</p>
        <p>STD
FS
SFS
SFS
STD
STD
FS
SFS</p>
        <p>
          A SAT + CAS approach was used in [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ]. Their claim was that the SAT + CAS solver is capable
of better performance as opposed to just a SAT approach. During their research, another work [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ]
utilised very diferent encodings with a SAT solver, beating them and becoming the current record.
        </p>
        <p>
          A direct attack targetting OpenWRT’s use of SHA-256 was described in [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ]. OpenWRT used only
12 characters out of the total output digest, where full collisions are more probable due to the smaller
search space. The researcher was able to find a full collision on those 12 characters using true brute-force
approaches, with GPU compute on HashCat [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ]. Since this is not a reasoning tool, this is likely near the
practical limit for current GPU compute, and falls into the same category of NP-Hard as SAT solving.
        </p>
        <p>
          There have been attempts to make a GPU accelerated SAT solver [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ], but all attempts were
outperformed by standard CPU alternatives.
        </p>
        <p>
          A wider variety of of cryptanalysis tools, including SAT, SMT, MILP and CP were applied to multiple
ciphers, permutations and hash functions in [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ]. Their winner categorising strategy is described
as: “The best solver for each cipher is the one with the highest number of wins. The winner of our
competition (for every formalism) is the solver that performs best for the highest number of ciphers
(more than 20, each from round 2 to 6).” Their claim is that “In the SMT solvers category, Z3 and
MathSAT are always inferior to Yices2, which is thus clearly the best SMT solver in our testing”.
        </p>
        <p>No research has previously defined the baseline of what SMT solvers are capable for SHA-2 collisions.
It is likely that researchers utilising reasoning tools, like SAT or SMT solvers, were only getting a few
rounds, taking this as an implied hard limit without the use of sophisticated encodings. This creates the
basis for RQ1 and RQ2, which aims to fill this knowledge gap.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3. Method</title>
      <p>We have written a custom benchmark generator which creates SMT-LIB files modelling a pair of
SHA256 or SHA-224 instances running a configurable number of rounds. The initialisation values can be
configured for standard, free-start or semi-free start.</p>
      <p>All satisfiable instances were verified using our SHA-2 implementation, which is known-good against
standard known values.</p>
      <p>
        To investigate RQ1 we aimed to use an exhaustive list of currently available SMT solvers. These
include: Z3 version 4.13.4 [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ], cvc5 version 1.2.1 [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ], Yices2 version 2.6.5 [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ], Bitwuzla version 0.7.0
[
        <xref ref-type="bibr" rid="ref26">26</xref>
        ], Boolector version 3.2.3 [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ], Colibri2 version 0.4-dirty [
        <xref ref-type="bibr" rid="ref28">28</xref>
        ], MathSAT version 5.6.11 [
        <xref ref-type="bibr" rid="ref29">29</xref>
        ].
      </p>
      <p>Only the most promising SMT solver, Bitwuzla, was benchmarked with diferent parameters related
to theory of BitVectors, rewriting, solver backends.</p>
      <sec id="sec-3-1">
        <title>3.1. Encodings</title>
        <p>Simplifying Compression Functions The non-linear Ch and Maj functions, described in Section
2.1 can be simplified, while preserving the logical output, by replacing XOR operations with OR:
Ch(, , ) = ( ∧  ) ∨ (¬ ∧ )</p>
        <p>
          Maj (, , ) = ( ∧ ) ∨ ( ∧ ) ∨ ( ∧ )
Alternative Bitwise Addition Encodings of bvadd in solvers tend to be optimised for propagation
and space [
          <xref ref-type="bibr" rid="ref30">30</xref>
          ]. This does not allow for easy reasoning about the diferential between pairs of adders.
To improve this, a bitwise carry-lookahead multi-operand adder has been generated in SMT-LIB. The
adder computed generate () and propagate () signals, for two BitVector operand inputs  and , where
 ≤ number of BV input bits:
0 =  ∧ 
0 =  ⊕ 
+1 =  ∧ ( ≪
+1 =  ∨ ( ∧ ( ≪
        </p>
        <p>2)
bitadd-2(, ) = 0 ⊕ (ℎ ≪</p>
        <p>bitadd-(1, . . . , ) = bitadd-2(⨁︁  ≪
=1
2))
1)</p>
        <p>⋁︁
1≤ &lt;≤ 
( ∧  ))
This hierarchical structure, in theory, enables (log ) carry propagation, though practical SMT
contraints necessitated sequential left-to-right chaining for multi-operand cases.</p>
        <p>Diferential Encoding In order to move to a diferential cryptanalysis reasoning model, diferentials
have been defined between corresponding pairs of computation values in the two SHA-2 instances.
These encodings include Delta Subtraction (DSub) Δ− =  − ′, and Delta Exclusive Or (DXOR)
Δ⊕ =  ⊕ ′.</p>
        <p>Both encodings were systematically applied to message block diferences during expansion, working
variables (–ℎ) in the compression function, round specific constants ( ), and final digests. Base
assertions on absolute values have been converted to assert on diferential values, but otherwise no
additional assertions have been used. All the underlying absolute values were still present and calculated
for each variable to ensure compliance with the SHA-2 definition.</p>
      </sec>
      <sec id="sec-3-2">
        <title>3.2. Reproducibility</title>
        <p>
          All code was written in Rust (rustc version 1.85.1) [
          <xref ref-type="bibr" rid="ref31">31</xref>
          ], compiled with the provided LLVM backend,
and linked with mold (version 2.37.1) [
          <xref ref-type="bibr" rid="ref32">32</xref>
          ]. The code can be accessed, with further documentation:
https://github.com/Supermarcel10/CryptographicAnalysisOfSha2. The default parameters part of our
software documentation have been used, unless otherwise specified.
        </p>
        <p>A dedicated X86_64 machine was set up, with a fresh installation of NixOS 25.05 (Warbler), utilising
the Linux Realtime 6.6.77-rt50 kernel. For hardware, the machine consisted of an AMD Ryzen 9 5900X
processor, paired with 4x32GiB DDR4 memory sticks. The BIOS was configured with CPU Clock
37.00, CPU Clock Control 100.000 MHz, DDR4-3600 18-22-22-52-64-1.35V, CPU VCore
0.818V, CPU VCore Loadline Calibration LOW, CSM Support ENABLED. This runner can be
rebuilt at any time, using the NixOS configuration: https://github.com/Supermarcel10/NixOSConfig/
blob/f1d26ec/devices/E01/configuration.nix.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. Results</title>
      <p>This section presents highlights of our experimental results. Outputs deemed invalid by our known-good
SHA-2 implementation, or resulting in an error code, have been excluded from plots. One example of
this is Colibi2, which failed to meet SMTLIB constraints. For an exhaustive set of results, please refer to
Appendix B. All raw results are available in the codebase, described in Section 3.2.</p>
      <p>Two diferent visualisation layouts are used to address the research questions.</p>
      <p>Comparison Graph These provide a side-by-side comparison of each solver’s performance as lines
on a 2D plot. The rounds are displayed on the X-axis and log 2 time on the Y-axis. Results that time out
are set to the maximum possible time. The line that goes the most to the right (more rounds), while
staying low (less time) is the best. Additionally, the consistency and linearity of the line provides insight
about the reasoning of the problem. This graph is used to answer RQ1 in Subsection 4.1.
Baseline Graph The baseline graph was designed to compare between diferent runs of the same
solver with parameters and encodings. It is a 2D line graph with the baseline in the middle. Any missing
or invalid data is skipped from plotting. Deviation data is then calculated from the baseline based on
time diference, and represented as a percentage.</p>
      <p>If no plot exists on baseline, but a valid deviation is plotted, +∞ will be used as the deviation value.
This can be interpreted as “This was infinitely faster than the nothing achieved (on baseline) within
timeout”. If a baseline exists, but no deviation for that round is present, the plot will be skipped.</p>
      <p>A rough run-to-run variance is shown with a grey colour near the middle. The green area with − %
implies “this took % less time, compared to baseline”. Similarly, the red area with +% implies “this
took % more time, compared to baseline”.</p>
      <p>The graph scales with the results, and tops out at 100% in both directions. When a result is plotted
on the edge of the graph, the deviation is ≥ 100% (i.e. twice as long or half as long). This graph is used
to visualise results for RQ2 and RQ3 in Subsection 4.1.</p>
      <sec id="sec-4-1">
        <title>4.1. Choice of Solver</title>
        <p>SHA256 STD Solver Comparison</p>
        <p>Figure 1 helps answer RQ1 and showcases interesting aspects of SMT solver choice. No solver could
ifnd a collision for 5 rounds, although subsequent rounds terminated with their respective outcomes.
We believe this could be misleading; the common approach to using automated reasoning tools of
“increasing the rounds until you get a timeout” could cause incorrect conclusions.</p>
        <p>Bitwuzla was the most consistent SMT solver, being the only one capable of proving non-existence
of a collision for 7 and 8 rounds. This could suggests that Bitwuzla may have stronger capabilities for
UNSAT formulas as opposed to its competitors.</p>
        <p>As most solvers struggled with higher-round collisions, Bitwuzla and MathSAT were capable of
pushing through and delivering 18 and 17 rounds respectively. Bitwuzla is the definitive winner, being
both more consistent and able to deliver the most rounds within the timeout period. This means
Bitwuzla is the baseline SMT solver to beat.</p>
        <p>With a 10 hour timeout, no collisions were found for 19 rounds using Bitwuzla.</p>
      </sec>
      <sec id="sec-4-2">
        <title>4.2. Choice of Parameters</title>
        <p>Bitwuzla SHA256 STD: Rewrite Level Args
+100%
+80%
+60%
+40%
+20%
)
vTeed
+(%0%
m
i
-20%
-40%
-60%
-80%</p>
        <p>To answer RQ2, we tried an exhaustive list of parameters available on the most promising SMT solver,
Bitwuzla. Figures 2 and 3 signified that adjusting Bitwuzla’s parameters can impact performance both
positively and negatively. Despite this, collision performance did not improve.</p>
        <p>Setting the rewrite level to 0 or disabling variable-subst provided a positive performance uplift
for short-running collisions but hindered long-running ones.</p>
        <p>The Kissat SAT solver backend outperformed the baseline (CaDiCaL) in short-running rounds, but
may perform worse in longer-running collisions, as implied by the upwards trend near the right edge
of Figure 4.</p>
        <p>Enabling Bitwuzla’s propagation-based local search engine (--bv-solver prop) negated
performance gains, highlighting the performance advantage likely stems from an optimized bit-blasting
strategy compared to other solvers.</p>
        <p>Enabling multithreading via CryptoMiniSat improved overall performance, though increasing threads
beyond four (the lowest tested) led to diminishing returns. This is likely caused by practical trade-ofs
related to SMT parallelism and SMT solver memory characteristics.
Bitwuzla SHA256 STD: Preprocessing Args
- no-pp-embedded
- no-pp-flatten-and
- no-pp-normalize
- no-pp-skeleton-preproc
- no-pp-variable-subst
- no-pp-variable-subst-norm-eq
- pp-contr-ands
- pp-elim-extracts
- pp-variable-subst-norm-bv-ineq
- pp-variable-subst-norm-diseq
Baseline
16</p>
      </sec>
      <sec id="sec-4-3">
        <title>4.3. Choice of Encodings</title>
        <p>To answer RQ3, all combinations of diferential cryptanalysis encodings presented in Section 3.1 have
been benchmarked. These can be seen in Figure 5 and Figure 6.</p>
        <p>While there were no improvements in the last round computable, this data gives a clearer direction
for future work.</p>
        <p>The delta subtract encoding, did not allow the solver to reason more freely as expected, and performed
within margin of error. It did help influence the solvability of round 5, where previously no result was
found within the timeout period.</p>
        <p>The delta XOR encoding proved more meaningful, especially in short-running collisions. It is unclear
if delta XOR provides benefits for long-running collisions, but seems more promising than delta subtract.</p>
        <p>As for the alternative bitwise add, it performed worse for solving time. Despite this, improved
linearity for some output cases has been observed. Listings 2 and 1 showcases less altered bits, This
implies the SMT solver has taken a diferent direction, reasoning more about reducing these diferenes.</p>
        <p>Maj and Ch simplification had minor efects, but did not paint a clear enough picutre for a conclusive
answer.</p>
        <p>In combination with more powerful diferential cryptanalysis encodings, it is possible the presented
encodings could be help in other aspects.</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>5. Conclusion</title>
      <p>
        The graphs answer RQ1: Bitwuzla [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ] stands out as the most promising SMT solver among those
tested. While MathSAT [
        <xref ref-type="bibr" rid="ref29">29</xref>
        ] performed closely, it fell short in terms of round solvability.
      </p>
      <p>It is plausible that an alternative set of parameters could improve other solvers’ performance, such as
MathSAT, leaving RQ2 partially unanswered. It is conclusive that default parameters for Bitwuzla are
the most stable for round solvability and solving time.</p>
      <p>In order to answer RQ3, this work analysed basic encodings to provide insights. Diferential
cryptanalysis by subtraction simply does not work for SHA-256.</p>
      <p>Bitwuzla SHA256 STD: SAT Solver Args
2
4
6</p>
      <p>Bitwuzla SHA256 STD: Delta XOR Encoding Comparison
2
4
6</p>
      <p>Bitwuzla SHA256 STD: Delta Sub Encoding Comparison</p>
      <p>Generating a brute-force approach modelling the SHA-2 standard proved inefective, but performed
significantly better than previous literature would imply. By identifying the most promising SMT solver,
this work established a recommended SMT solver choice and a baseline claim to beat for future research.</p>
      <p>
        [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ]’s claim that MathSAT is always inferior to Yices2 holds untrue for a larger number of compression
rounds, as seen by our contradicting results.
      </p>
    </sec>
    <sec id="sec-6">
      <title>6. Future Work</title>
      <p>
        Encoding Based Work Encodings described in [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] or [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ], or a combination of both could be built
in SMT-LIB. Running these encodings on Bitwuzla, would allow comparable results against SAT or SAT
+ CAS approaches of these works.
      </p>
      <p>SMT Parameter Exploration Work Further exploration into parameter performance efects could
be assessed. Other promising SMT solvers, such as MathSAT, could outperform Bitwuzla with the right
choice of parameters.</p>
      <p>
        Hardware Based Work Hardware choice has not been directly benchmarked towards solving
performance. A performance comparison of diferent processors would paint a clearer picture and
recommendation on choice towards better solving performance. For example, an AMD Ryzen 7 9800X3D [
        <xref ref-type="bibr" rid="ref33">33</xref>
        ],
may benefit solving performance due to the nature of solving being dependent on memory locality.
      </p>
    </sec>
    <sec id="sec-7">
      <title>Declaration on Generative AI</title>
      <p>The author(s) have not employed any Generative AI tools.
MarcelBarlik,MartinBrain
.</p>
      <p>X 6
e 5
T 2
a a
L h
in s
8
F n</p>
      <p>o
T i
U t
d c
li n
a u
v f
n
i h
g s
ien ha
b
o
t
e
u la
d z
d u
e w
p t
a i
c
s b
e
n r
e
e e
b v
s l
a o
h
n s-- uer
o
i
t t
a
o ark e:: 943
t
n

6 7
e 3 ? ?
7 5 d d
fe4 97b lia lia
b b V V
3 7 ( (
9 9 1 9 a a
1 1 4 8 5 5
d d d 4 f f
c c 1 9 0 0
0 0 3 d 7 7
e e e 0 6 6
b b 8 6 5 5
5 5 a 8 a a
b b c 3 3 3
a a e 4 e e
9 9 6 3 2 2
d d 4 4 7 7
3 3 0 0 5 5
ark e:: 100 f f 5 8 0 0
8 8 2 3 0 0
1 1 2 3 b b
2^8
2^6
2^4
)2^2
i(sTe
m
2^0
2^-2
2^-4
2^-6</p>
    </sec>
    <sec id="sec-8">
      <title>B. Full Results</title>
      <p>Expanding on the graphs mentioned in Section 4, an additional graph is used.</p>
      <p>Detailed Graph Unlike other graphs, only a single benchmark run is plotted in this graph. It utilises
a pair of 2D coordinate systems, where the first line graph relates to time taken in log 2, and the second
to memory usage in Mibibytes (MiB). Since SMT solving prefers more locality in memory hierarchy,
this graph can help understand if the performance degradation is due to hardware limitations, such as
saturating all CPU L3 cache. This graph is used to visualise data in Appendix B.</p>
      <sec id="sec-8-1">
        <title>B.1. Graph Results</title>
        <p>SHA224 FS Solver Comparison</p>
        <p>SHA224 SFS Solver Comparison
2
4
6
8</p>
        <p>SHA224 STD Solver Comparison
2^8
2^6
2^4
2^2
)(sTe
m
i
2^0
2^-2
2^-4
2^-6
2^-8
2^9
2^7
2^5
2^3
i)(se2^1
m
T
2^-1
2^-3
2^-5
2^-7</p>
        <p>SHA256 FS Solver Comparison
2
4
6
8</p>
        <p>SHA256 SFS Solver Comparison
2^9
2^7
2^5
2^3
()sTe
m
i
2^1
2^-1
2^-3
2^-5
2^8
2^6
2^4
2^2
()sTe
m
i
2^0
2^-2
2^-4
2^-6
2^-8
Com1p0ressionRounds 12
2
4
6
8
14
16
18
20</p>
        <p>SHA256 STD Solver Comparison
2^8
2^6
2^4
2^-4
2^-6
2^-8
+100%
+0%
-20%
-40%</p>
        <p>Bitwuzla SHA256 STD: Abstraction Args
2
4
6
)
ved
+(%0%
Te
m
i
-5%
-10%
2
4
6
Bitwuzla SHA256 STD: Propagation Args
4
8 CompressionRo1u0nds
14
--no-prop-const-bits
--no-prop-ineq-bounds
--no-prop-sext
Baseline
16</p>
        <p>Bitwuzla SHA256 STD: Rewrite Level Args
+100%
-20%
-40%
-60%
-80%</p>
        <p>Bitwuzla SHA256 STD: SAT Solver Args</p>
        <p>Bitwuzla SHA256 STD: Solver Engine Args
+15%
+10%
)
ved
%
(
+Te5%
m
i
2^11
2^9
2^7
2^5
)(sTe2^3
m
i
2^1
2^-1
2^-3
2^-5
2^-7
2
4
6
bitwuzla; Memory &amp; Time vs Rounds
150.0</p>
        <p>M
i)(ryeo
m
M</p>
        <p>B</p>
        <p>Bitwuzla SHA256 STD: Bruteforce Encoding Comparison
+100%
-20%
-40%
-60%
-80%
2
4
6</p>
        <p>Bitwuzla SHA256 STD: Delta XOR Encoding Comparison
2
4
6</p>
        <p>Bitwuzla SHA256 STD: Delta Sub Encoding Comparison
12
18</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <article-title>[1] National Institute of Standards and Technology (NIST), Secure Hash Standard (SHS)</article-title>
          ,
          <source>Federal Information Processing Standards Publication (FIPS PUB) 180-4</source>
          ,
          <year>2015</year>
          . URL: https://nvlpubs.nist. gov/nistpubs/FIPS/NIST.FIPS.
          <volume>180</volume>
          -
          <fpage>4</fpage>
          .pdf,
          <source>specifies hash algorithms including SHA-224</source>
          , SHA-256, SHA-384, SHA-512, SHA-
          <volume>512</volume>
          /224, and SHA-
          <volume>512</volume>
          /256. Efective March 6,
          <year>2012</year>
          , with updates in
          <year>August 2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>E.</given-names>
            <surname>Rescorla</surname>
          </string-name>
          , RFC
          <volume>8446</volume>
          :
          <article-title>The Transport Layer Security (TLS) Protocol Version 1</article-title>
          .3,
          <string-name>
            <surname>Technical</surname>
            <given-names>Report</given-names>
          </string-name>
          , IETF,
          <year>2018</year>
          . URL: https://www.rfc-editor.
          <source>org/rfc/rfc8446.</source>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>E.</given-names>
            <surname>Rescorla</surname>
          </string-name>
          ,
          <string-name>
            <surname>HTTP Over</surname>
            <given-names>TLS</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Technical</surname>
            <given-names>Report</given-names>
          </string-name>
          , IETF,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>D.</given-names>
            <surname>Eastlake</surname>
          </string-name>
          , C. Kaufman, RFC 2065:
          <article-title>Domain Name System Security Extensions</article-title>
          ,
          <source>Technical Report, IETF</source>
          ,
          <year>1997</year>
          . URL: https://datatracker.ietf.org/doc/html/rfc2065.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>T.</given-names>
            <surname>Ylonen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Lonvick</surname>
          </string-name>
          , RFC
          <volume>4251</volume>
          :
          <article-title>The Secure Shell (SSH) Protocol Architecture</article-title>
          ,
          <source>Technical Report, IETF</source>
          ,
          <year>2006</year>
          . URL: https://datatracker.ietf.org/doc/html/rfc4251.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>E. P.</given-names>
            <surname>Wouters</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Huigens</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Winter</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Niibe</surname>
          </string-name>
          , RFC 9580: OpenPGP Message Format,
          <source>Technical Report, IETF</source>
          ,
          <year>2024</year>
          . URL: https://www.rfc-editor.
          <source>org/info/rfc9580.</source>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>S.</given-names>
            <surname>Nakamoto</surname>
          </string-name>
          ,
          <article-title>Bitcoin: A peer-to-peer electronic cash system</article-title>
          ,
          <year>2009</year>
          . URL: http://www.bitcoin.org/ bitcoin.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>G.</given-names>
            <surname>Wood</surname>
          </string-name>
          ,
          <article-title>Ethereum: A secure decentralised generalised transaction ledger</article-title>
          ,
          <year>2018</year>
          . URL: https: //ethereum.github.io/yellowpaper/paper.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>Q.</given-names>
            <surname>Dang</surname>
          </string-name>
          ,
          <article-title>Recommendation for Applications Using Approved Hash Algorithms</article-title>
          ,
          <source>Technical Report NIST SP 800-107 Rev. 1</source>
          ,
          <string-name>
            <surname>National</surname>
            <given-names>Institute</given-names>
          </string-name>
          <article-title>of Standards and Technology (NIST), Gaithersburg</article-title>
          ,
          <string-name>
            <surname>MD</surname>
          </string-name>
          ,
          <year>2012</year>
          . URL: https://csrc.nist.gov/pubs/sp/800/107/r1/final. doi:
          <volume>10</volume>
          .6028/NIST.SP.
          <fpage>800</fpage>
          -
          <lpage>107r1</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>E.</given-names>
            <surname>Biham</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Shamir</surname>
          </string-name>
          ,
          <article-title>Diferential cryptanalysis of des-like cryptosystems</article-title>
          ,
          <year>1991</year>
          . URL: https://link. springer.com/article/10.1007/BF00630563.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>D.</given-names>
            <surname>Nugent</surname>
          </string-name>
          ,
          <source>The story and math of diferential cryptanalysis</source>
          ,
          <year>2023</year>
          . URL: https://evervault.com/blog/ Story-and-Math-
          <article-title>of-Diferential-Cryptanalysis, describes the history of Diferential Cryptanalysis including the in-depth analysis of Whitfield Difie and Martin Hellman related to NSA's secretly hand-picked numbers in 1970s.</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Li</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Liu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Wang</surname>
          </string-name>
          ,
          <article-title>New records in collision attacks on SHA-2</article-title>
          , Cryptology ePrint Archive,
          <year>Paper 2024</year>
          /349,
          <year>2024</year>
          . URL: https://eprint.iacr.org/
          <year>2024</year>
          /349.
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>C.</given-names>
            <surname>Dobraunig</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Eichlseder</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Mendel</surname>
          </string-name>
          ,
          <source>Analysis of SHA-512/224</source>
          and SHA-
          <volume>512</volume>
          /256, Cryptology ePrint Archive,
          <year>Paper 2016</year>
          /374,
          <year>2016</year>
          . URL: https://eprint.iacr.org/
          <year>2016</year>
          /374. doi:
          <volume>10</volume>
          .1007/ 978-3-
          <fpage>662</fpage>
          -48800-3_
          <fpage>25</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>F.</given-names>
            <surname>Mendel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Nad</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Schläfer</surname>
          </string-name>
          ,
          <article-title>Improving local collisions: New attacks on reduced sha-256</article-title>
          , in: T. Johansson,
          <string-name>
            <given-names>P. Q.</given-names>
            <surname>Nguyen</surname>
          </string-name>
          (Eds.),
          <source>Advances in Cryptology - EUROCRYPT 2013</source>
          , Springer Berlin Heidelberg, Berlin, Heidelberg,
          <year>2013</year>
          , pp.
          <fpage>262</fpage>
          -
          <lpage>278</lpage>
          . URL: https://link.springer.com/chapter/10.1007/ 978-3-
          <fpage>642</fpage>
          -38348-9_
          <fpage>16</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>S. K.</given-names>
            <surname>Sanadhya</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Sarkar</surname>
          </string-name>
          ,
          <article-title>New collision attacks against up to 24-step sha-2</article-title>
          , in: D. R.
          <string-name>
            <surname>Chowdhury</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          <string-name>
            <surname>Rijmen</surname>
          </string-name>
          ,
          <string-name>
            <surname>A. Das</surname>
          </string-name>
          (Eds.),
          <source>Progress in Cryptology - INDOCRYPT 2008</source>
          , Springer Berlin Heidelberg, Berlin, Heidelberg,
          <year>2008</year>
          , pp.
          <fpage>91</fpage>
          -
          <lpage>103</lpage>
          . URL: https://link.springer.com/chapter/10.1007/ 978-3-
          <fpage>540</fpage>
          -89754-
          <issue>5</issue>
          _
          <fpage>8</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>N.</given-names>
            <surname>Alamgir</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Nejati</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Bright</surname>
          </string-name>
          , Sha-256
          <source>collision attack with programmatic sat</source>
          ,
          <year>2024</year>
          . URL: https://arxiv.org/abs/2406.20072. arXiv:
          <volume>2406</volume>
          .
          <fpage>20072</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>M.</given-names>
            <surname>Eichlseder</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Mendel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Schläfer</surname>
          </string-name>
          ,
          <article-title>Branching heuristics in diferential collision search with applications to SHA-512</article-title>
          , Cryptology ePrint Archive,
          <year>Paper 2014</year>
          /302,
          <year>2014</year>
          . URL: https://eprint. iacr.org/
          <year>2014</year>
          /302. doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>662</fpage>
          -46706-0_
          <fpage>24</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>X.</given-names>
            <surname>Wang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Feng</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Lai</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Yu</surname>
          </string-name>
          ,
          <article-title>Collisions for hash functions MD4, MD5, HAVAL-128 and RIPEMD</article-title>
          , Cryptology ePrint Archive,
          <year>Paper 2004</year>
          /199,
          <year>2004</year>
          . URL: https://eprint.iacr.org/
          <year>2004</year>
          /199.
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <surname>RyotaK</surname>
          </string-name>
          , Flatt Security Inc.,
          <article-title>Compromising OpenWrt supply chain via truncated SHA256 collision and command injection</article-title>
          ,
          <year>2024</year>
          . URL: https://flatt.tech/research/posts/ compromising-openwrt
          <article-title>-supply-chain-sha256-collision/, disclosed vulnerabilities in OpenWrt's Attended SysUpgrade (ASU) service, combining command injection and truncated hash collisions (CVE-</article-title>
          <year>2024</year>
          -54143).
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <surname>Hashcat</surname>
            <given-names>Developers</given-names>
          </string-name>
          , hashcat,
          <year>2025</year>
          . URL: https://github.com/hashcat/hashcat.
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <surname>W. A. Osama</surname>
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>B. A.</surname>
          </string-name>
          ,
          <article-title>Certified sat solving with gpu accelerated inprocessing</article-title>
          ,
          <year>2024</year>
          . URL: https: //doi.org/10.1007/s10703-023-00432-z.
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>E.</given-names>
            <surname>Bellini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. D.</given-names>
            <surname>Piccoli</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Formenti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Gerault</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Huynh</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Pelizzola</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Polese</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Visconti</surname>
          </string-name>
          ,
          <article-title>Diferential cryptanalysis with SAT, SMT, MILP, and CP: a detailed comparison for bit-oriented primitives</article-title>
          ,
          <source>Cryptology ePrint Archive</source>
          ,
          <year>Paper 2024</year>
          /105,
          <year>2024</year>
          . URL: https://eprint.iacr.org/
          <year>2024</year>
          /105. doi:
          <volume>10</volume>
          .1007/
          <fpage>978</fpage>
          -981-99-7563-1_
          <fpage>13</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <surname>L. de Moura</surname>
          </string-name>
          , N. Bjørner,
          <article-title>Z3: An eficient smt solver</article-title>
          , in: C. R. Ramakrishnan, J. Rehof (Eds.),
          <source>Tools and Algorithms for the Construction and Analysis of Systems</source>
          , Springer Berlin Heidelberg, Berlin, Heidelberg,
          <year>2008</year>
          , pp.
          <fpage>337</fpage>
          -
          <lpage>340</lpage>
          . URL: https://link.springer.com/chapter/10.1007/978-3-
          <fpage>540</fpage>
          -78800-3_
          <fpage>24</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>H.</given-names>
            <surname>Barbosa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Barrett</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Brain</surname>
          </string-name>
          , G. Kremer,
          <string-name>
            <given-names>H.</given-names>
            <surname>Lachnitt</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Mann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Mohamed</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Mohamed</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Niemetz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Nötzli</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Ozdemir</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Preiner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Reynolds</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Sheng</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Tinelli</surname>
          </string-name>
          ,
          <string-name>
            <surname>Y. Zohar,</surname>
          </string-name>
          <article-title>cvc5: A versatile and industrial-strength smt solver</article-title>
          , in: D.
          <string-name>
            <surname>Fisman</surname>
          </string-name>
          , G. Rosu (Eds.),
          <source>Tools and Algorithms for the Construction and Analysis of Systems</source>
          , Springer International Publishing, Cham,
          <year>2022</year>
          , pp.
          <fpage>415</fpage>
          -
          <lpage>442</lpage>
          . URL: https://link.springer.com/chapter/10.1007/978-3-
          <fpage>030</fpage>
          -99524-9_
          <fpage>24</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>B.</given-names>
            <surname>Dutertre</surname>
          </string-name>
          , Yices
          <volume>2</volume>
          .2, in: A.
          <string-name>
            <surname>Biere</surname>
          </string-name>
          , R. Bloem (Eds.), Computer Aided Verification, Springer International Publishing, Cham,
          <year>2014</year>
          , pp.
          <fpage>737</fpage>
          -
          <lpage>744</lpage>
          . URL: https://link.springer.com/chapter/10.1007/ 978-3-
          <fpage>319</fpage>
          -08867-9_
          <fpage>49</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>A.</given-names>
            <surname>Niemetz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Preiner</surname>
          </string-name>
          , Bitwuzla, in: C.
          <string-name>
            <surname>Enea</surname>
            ,
            <given-names>A</given-names>
          </string-name>
          . Lal (Eds.),
          <source>Computer Aided Verification - 35th International Conference, CAV 2023</source>
          , Paris, France,
          <source>July 17-22</source>
          ,
          <year>2023</year>
          , Proceedings,
          <string-name>
            <surname>Part</surname>
            <given-names>II</given-names>
          </string-name>
          , volume
          <volume>13965</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2023</year>
          , pp.
          <fpage>3</fpage>
          -
          <lpage>17</lpage>
          . URL: https://doi.org/10.1007/ 978-3-
          <fpage>031</fpage>
          -37703-
          <issue>7</issue>
          _1. doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>031</fpage>
          -37703-7\_1.
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <given-names>R.</given-names>
            <surname>Brummayer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Biere</surname>
          </string-name>
          ,
          <string-name>
            <surname>Boolector:</surname>
          </string-name>
          <article-title>An eficient smt solver for bit-vectors and arrays</article-title>
          , in: S. Kowalewski,
          <string-name>
            <surname>A</surname>
          </string-name>
          . Philippou (Eds.),
          <source>Tools and Algorithms for the Construction and Analysis of Systems</source>
          , Springer Berlin Heidelberg, Berlin, Heidelberg,
          <year>2009</year>
          , pp.
          <fpage>174</fpage>
          -
          <lpage>177</lpage>
          . URL: https: //link.springer.com/chapter/10.1007/978-3-
          <fpage>642</fpage>
          -00768-2_
          <fpage>16</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <surname>Frama</surname>
            <given-names>C</given-names>
          </string-name>
          ,
          <article-title>Colibri2</article-title>
          , N/D. URL: https://colibri.frama-c.com/.
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <string-name>
            <given-names>A.</given-names>
            <surname>Cimatti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Griggio</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B. J.</given-names>
            <surname>Schaafsma</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Sebastiani</surname>
          </string-name>
          ,
          <article-title>The mathsat5 smt solver</article-title>
          , in: N.
          <string-name>
            <surname>Piterman</surname>
            ,
            <given-names>S. A.</given-names>
          </string-name>
          <string-name>
            <surname>Smolka</surname>
          </string-name>
          (Eds.),
          <source>Tools and Algorithms for the Construction and Analysis of Systems</source>
          , Springer Berlin Heidelberg, Berlin, Heidelberg,
          <year>2013</year>
          , pp.
          <fpage>93</fpage>
          -
          <lpage>107</lpage>
          . URL: https://link.springer.com/chapter/10. 1007/978-3-
          <fpage>642</fpage>
          -36742-
          <issue>7</issue>
          _
          <fpage>7</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [30]
          <string-name>
            <given-names>M.</given-names>
            <surname>Brain</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Hadarean</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Kroening</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Martins</surname>
          </string-name>
          ,
          <article-title>Automatic generation of propagation complete sat encodings</article-title>
          , in: B.
          <string-name>
            <surname>Jobstmann</surname>
          </string-name>
          ,
          <string-name>
            <surname>K. R. M. Leino</surname>
            (Eds.), Verification,
            <given-names>Model</given-names>
          </string-name>
          <string-name>
            <surname>Checking</surname>
          </string-name>
          , and Abstract Interpretation, Springer Berlin Heidelberg, Berlin, Heidelberg,
          <year>2016</year>
          , pp.
          <fpage>536</fpage>
          -
          <lpage>556</lpage>
          . URL: https: //link.springer.com/chapter/10.1007/978-3-
          <fpage>662</fpage>
          -49122-5_
          <fpage>26</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          [31]
          <string-name>
            <given-names>The</given-names>
            <surname>Rust Project Developers</surname>
          </string-name>
          ,
          <source>The rust programming language</source>
          ,
          <year>2025</year>
          . URL: https://www.rust
          <article-title>-lang. org, rust C Version 1</article-title>
          .85.1.
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          [32]
          <string-name>
            <given-names>R.</given-names>
            <surname>Ueyama</surname>
          </string-name>
          , mold: A modern linker,
          <year>2025</year>
          . URL: https://github.com/rui314/mold, version
          <volume>2</volume>
          .37.1.
        </mixed-citation>
      </ref>
      <ref id="ref33">
        <mixed-citation>
          [33]
          <string-name>
            <given-names>Advanced</given-names>
            <surname>Micro</surname>
          </string-name>
          <string-name>
            <surname>Devices</surname>
          </string-name>
          , Inc.,
          <source>Amd ryzen 7 9800x3d</source>
          ,
          <year>2025</year>
          . URL: https://www.amd.com/en/ products/processors/desktops/ryzen/9000-series/amd-ryzen-7
          <article-title>-9800x3d</article-title>
          .html.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>