Taylor Johnson — Associate Professor of Computer Science, Computer Engineering & Electrical Engineering; Associate Dean for Graduate Education, College of Connected Computing · taylor.johnson@vanderbilt.edu · taylortjohnson.com
Ben Wooding — Postdoctoral Scholar, Institute for Software Integrated Systems · ben.wooding@vanderbilt.edu · woodingben.com
a full Linux box in the browser, every tool preinstalled
running everything
Google Colab
one notebook at a time, just a Google login
Z3, model checking, the NN demos
Browser apps
no account at all
quick one-off experiments
Local installation is fully supported as a backup — see the repo README.
GitHub Codespaces — open it
Sign in to GitHub (free; students get more hours via GitHub Education).
github.com/ttj/fmaiv → Code ▸ Codespaces ▸ Create codespace on main (or the Open in Codespaces badge in the README).
Wait ~1–2 min the first time; a banner lists the ready tools.
Preinstalled: z3 · NuSMV · lean/lake · cbmc · cryptol · saw · smvis, plus torch/auto_LiRPA for the Day-4 neural-network notebooks.
The layout & the terminal
Left: file explorer (day01/ … day04/, notebooks/).
Middle: the editor.
Bottom: the terminal — where you type commands (Terminal ▸ New Terminal, or Ctrl+`).
pwd# where am I? (the repo root)ls day01/examples # list a folderpython3 day01/examples/z3_smoke.py # run a file
Day 1 — SAT/SMT with Z3
python3 day01/examples/z3_smoke.py # first sat/unsat querypython3 day01/examples/z3_pigeonhole.py # an UNSAT proofpython3 day01/examples/z3_entailment.py # prove by refuting the negationpython3 day01/examples/puzzles/sudoku.py # also: nqueens, magic_square, kenkenz3 day01/examples/z3_smt_basics.smt2 # the SMT-LIB text format
Each puzzle ships a *_starter.py to complete yourself.
Day 2 — Model checking with NuSMV
Command is NuSMV (capital letters). The slides say nuXmv; the open NuSMV is the drop-in — same language, same verdicts.
NuSMV day02/examples/counter.smv # "-- specification ... is true/false"NuSMV-bmc-bmc_length 12 day02/examples/bmc_depth.smv