Benchmark

non-incremental/QF_NIA/20230328-sqrtmodinv-hoenicke/modInvStepSimplified.smt2

This checks the validity of a line in computing the inverse of
denominator mod 2^256.  The code is:

  assume s > 1 && (denominator * inv1) mod s = 1
  inv2 = inv1 * (2 - denominator * inv1)
  assert (denominator * inv2) mod (s * s) = 1

Here we used the first assume to obtain
  (1) denominator * inv1 = 1 + k * s
Using the definition of inv2 we obtain
  (2) denominator * inv2 = denominator * inv1 * (2 - (denominator * inv1))
Using (1) as a rewrite rule, we obtain
  (3) denominator * inv2 = (1 + k * s) * (2 - (1 + k * s))
which can be simplified to
      denominator * inv2 = 1 - k * k * s * s.
This is the second formula in the file below.

The contradiction can be obtained by inserting the definition of modulo.
Benchmark
Size1299
Compressed Size632
License Creative Commons Attribution 4.0 International (CC-BY-4.0)
Categorycrafted
First Occurrence2023-07-06
Generated ByJochen Hoenicke
Generated On2023-01-19 00:00:00
GeneratorHandwritten
Dolmen OK1
strict Dolmen OK1
check-sat calls1
Query 1
Status unsat
Inferred Status None
Size 1291
Compressed Size624
Max. Term Depth4
Asserts 3
Declared Functions0
Declared Constants4
Declared Sorts 0
Defined Functions0
Defined Recursive Functions 0
Defined Sorts0
Constants0
Declared Datatypes0

Symbols

not1 =2 mod1 +1
-1 *4 >1

Evaluations

Evaluation Rating Solver Variant Result Wallclock CPU Time
SMT-COMP 2023 1.00 (0/5) cvc5 cvc5-default-2023-05-16-ea045f305_sq unknown ❌ 1200.11000 1198.28000
Yices2 Yices 2 for SMTCOMP 2023_default unknown ❌ 1200.01000 1199.91000
Yices-ismt yices-ismt-sq-0526_default unknown ❌ 316.22900 316.16000
Z3alpha z3alpha_default unknown ❌ 1200.04000 1199.96000
Z3++ z3++0715_default unknown ❌ 203.02600 203.01700
Z3++_sq_0526_default unknown ❌ 1200.10000 1200.02000
SMT-COMP 2024 1.00 (0/4) cvc5 cvc5 unknown ❌ 1201.72304 1200.99876
SMTInterpol SMTInterpol unknown ❌ 0.40429 0.40321
Yices2 Yices2 unknown ❌ 1201.21687 1200.51147
Z3alpha Z3-alpha unknown ❌ 1201.71530 1201.08290