Skip to content

Instantly share code, notes, and snippets.

@hwayne
hwayne / README.md
Created August 15, 2025 19:58
p99 Sample TLA+ code
@hwayne
hwayne / maxgag.py
Created June 24, 2025 16:10
Finding a polynomial that looks like `max`
from z3 import * # type: ignore
s1, s2 = Solver(), Solver()
a0, a, b, c, d, e, f = Consts('a0 a b c d e f', IntSort())
x, y, z = Ints('x y z')
t = "a*x+b*y+c*z+d*x*y+e*x*z+f*y*z+a0"
lambdamax = lambda x, y, z: eval(t)
z3max = Function('z3max', IntSort(), IntSort(), IntSort(), IntSort())
@hwayne
hwayne / linkedinqueens.py
Last active June 20, 2025 19:15
LI queens in z3
# Associated newsletter: https://buttondown.com/hillelwayne/archive/solving-linkedin-queens-with-smt/
# See also: https://ryanberger.me/posts/queens/
# And: https://github.com/ryan-berger/queens/blob/master/main.py
from z3 import * # type: ignore
from itertools import combinations, chain, product
solver = Solver()
size = 9
# queens[n] = col of queen on row n
@hwayne
hwayne / threads.cfg
Last active May 30, 2025 18:23
TLA+ Threads example
SPECIFICATION Spec
PROPERTY Liveness
CHECK_DEADLOCK FALSE
@hwayne
hwayne / filelinks.lua
Created April 22, 2025 20:13
Neovim Filelinks Plugin
@hwayne
hwayne / autocommands.lua
Created April 9, 2025 01:39
Useful neovim autocommands for TLA+
local function moduleline() -- can't be a global as line can move
local lines = vim.api.nvim_buf_get_lines(0, 0, -1, false)
for idx, line in ipairs(lines) do
if string.match(line, "%-+ MODULE [%w_]+ %-") then
return idx, line
end
end
end
local function fix_module_string()
@hwayne
hwayne / readme.md
Last active April 11, 2025 18:09
Bsky spinner

Bsky spinner

Spins your avatar like a clock

https://bsky.app/settings/app-passwords

Disclaimer: I set this up locally half a year ago and forgot all the steps, so the steps below may be wrong.

To run locally

@hwayne
hwayne / SweepTLC.ps1
Last active October 7, 2024 20:51
TLA+ State Sweeping
function template($t) {
@"
SPECIFICATION Spec
CONSTANTS
BuffLen = 2
NumThreads = $t
CHECK_DEADLOCK TRUE
"@
@hwayne
hwayne / Enqueue.cfg
Last active June 25, 2024 20:37
Model for "Investigating a Queue Hang"
SPECIFICATION Spec
\* Add statements after this line.
CONSTANTS
Threads = {t1}
NULL = NULL
Keys = {k1}
MaxId = 1
BUGMODE = TRUE
PROPERTY LockProp
@hwayne
hwayne / _README.md
Created April 23, 2024 16:33
Verified example of code for a newsletter

For the newsletter at: FILL IN

Run with Dafny 4.6.0, with the flag --standard-libraries.