Discussion
A Dumb Introduction to z3
amelius: If the tutorial uses Rust, why didn't they use a solver written in Rust? Z3 was written in C++.
wren6991: Z3 struggles with larger problems. CVC5 or Bitwuzla do a lot better once you get into anything complex.If you're familiar with the Z3 Python API, you'll find the CVC5 one familiar.Caveat: I mostly do logic design, maybe there are some software verification tasks where Z3 comes out ahead. I've never seen one though.
suddenlybananas: What solver would you have them use? Z3 is very mature and the Rust bindings are pretty good in my (limited) experience.
amelius: I would write the tutorial in C++, for a more direct experience.
volemo: I personally like to avoid the “writing in C++” experience. :/
amelius: The authors of a powerful solver package thought differently.
suddenlybananas: The author might not know C++ and you don't need to use C++ to effectively use z3.
onair4you: It might have more to do with the first release of Z3 being in 2012, with the first stable Rust release being in 2015. Rather than the authors of Z3 passing some kind of judgment on Rust…
amelius: Z3 uses a sophisticated and fast garbage collection scheme internally that doesn't mesh well with Rust idioms.
Surac: Problems solved nothing learned. Poking my problems into a black box and getting numbers let me only learn how to poke numbers into black boxes