Jannis Harder's Avatar

Jannis Harder

@jix.one

open source dev, inactive demoscener, occasional CTF crypto challenge solver working on SAT solving, HW formal verification tools, yosys https://jix.one/ they/them

65
Followers
72
Following
18
Posts
22.10.2024
Joined
Posts Following

Latest posts by Jannis Harder @jix.one

There are six small pink squares, and a larger tilted purple square which shares ones vertex with the bottom pink square. One vertex of the top pink square lies on the top edge of the purple square. A line from the bottom right vertex of the rightmost pink square makes an unknown angle with the left side of the purple square.

There are six small pink squares, and a larger tilted purple square which shares ones vertex with the bottom pink square. One vertex of the top pink square lies on the top edge of the purple square. A line from the bottom right vertex of the rightmost pink square makes an unknown angle with the left side of the purple square.

Seven squares. What’s the angle?
#geometrypuzzle

28.02.2026 09:24 πŸ‘ 36 πŸ” 12 πŸ’¬ 6 πŸ“Œ 0

I'll be there

01.12.2025 17:11 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Arithmetic | Online Z3 Guide Z3 supports the theory of arithmetic described in the following places.

I'm not aware of any usable tools for the numeric methods. The one time I tried to DIY it following the literature, I eventually gave up, but that's also a bit out of my area so YMMV.

I've had some limited success with symbolic methods using SMT solvers like z3: microsoft.github.io/z3guide/docs...

28.09.2025 09:59 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

There are numeric methods based on the "Positivstellensatz" and "sum-of-squares optimization" and symbolic methods based on "cylindrical algebraic decomposition" and integration of that into "satisfiability modulo theories". (Quoted terms have WP articles.)

28.09.2025 09:59 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

The solution set for inequalities of polynomials is called a "semialgebraic set".

There are algorithms that can check whether a solution exists and that can find an optimal one, but compared to either just linear inequalities or just polynomial equations, they are really complex and inefficient.

28.09.2025 09:59 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

That was a fun problem to work on, thanks for sharing the link.

I learned about the connection between well-quasi-orderings and regular languages, which seems to have done the trick for this problem, but also feels like something I might end up finding other applications for.

08.08.2025 21:12 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

In all the CDCL SAT solvers I'm familiar with (including my own) assumptions for incremental solving are handled as forced top-level decisions, so there's no difference between backtracking and removing incremental assumptions. Are SMT internal SAT solvers using a different approach here?

31.07.2025 18:37 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Preview
Dancing Links - Wikipedia

Is dancing links from Knuth's exact cover algorithm cool enough? en.wikipedia.org/wiki/Dancing...

I think the watched literals technique used in SAT solving is even cooler, but it's not really a case of "undo on backtrack" (did you mean that with Boolean constraints being more subtle?)

31.07.2025 16:59 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

In the summary they write the algorithm can recover the key for multiple pairs using the same key, but that's the first time they mention it and they follow it up by "Further research is warranted to explore this issue.".

I'm inclined to just try out how hard breaking this cipher is for SAT solvers

27.06.2025 13:57 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Also the way I interpret the example they give towards the end of that paper, they're not solving a hard problem at all since finding 5 roundkeys matching a single plaintext/ciphertext pair is an under-constrained problem and only requires attacking a single round.

27.06.2025 13:47 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

www.sciopen.com/article/pdf/... is what I looked at. Not even sure they use any quadratic terms. What's also not clear to me is whether this performs better than using the same overall approach together with the usual approaches for solving CNF or MILP. I'm also not familiar with the attacked cipher

27.06.2025 13:29 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

I've only skimmed the paper, but it looks like they start with a MILP encoding of the cipher, constructed similar to how you'd come up with a CNF encoding, and then convert that to the model supported by D-Wave. I think the objective corresponds to modelling part of the cipher as soft constraints.

27.06.2025 13:23 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

In the paper I'm looking at, the target model allows for a quadratic objective, quadratic constraints and all variables are binary variables. Linear constraints together with binary variables is already a superset of CNF-SAT and can easily encoding any circuit SAT problem.

27.06.2025 13:19 πŸ‘ 1 πŸ” 0 πŸ’¬ 2 πŸ“Œ 0
GitHub - jurajsic/DQBDD: BDD based DQBF solver BDD based DQBF solver. Contribute to jurajsic/DQBDD development by creating an account on GitHub.

Yeah. There's also another equivalent variant that uses a special kind of existential quantifier with restricted dependencies on universal quantified variables and that's how DQBF is usually defined (e.g. in github.com/jurajsic/DQB...). After Skolemization that turns into what I described.

16.04.2025 21:20 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

I really hope I didn't make a mistake while trying to fit it into the character limit. it's certainly not the most illustrative description of DQBF

16.04.2025 18:41 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

did you run across DQBF as an example for a NEXPTIME-complete problem? It's my favorite. Take a prop. formula Ο† over vars X, Y, … and terms f(U, V, …), g(…), … where each term applies a different n-ary function to some of the vars and terms may occur repeatedly. Decide whetherβˆƒf, g, …, βˆ€X, Y, …, Ο†.

16.04.2025 18:35 πŸ‘ 0 πŸ” 0 πŸ’¬ 2 πŸ“Œ 0

Linux has a dedicated `close_range` syscall for this use case: "[...] listing open file descriptors in /proc/self/fd/ and calling close(2) on each one. close_range() can take care of this without requiring /proc and within a single system call, which provides significant performance benefits."

08.04.2025 17:16 πŸ‘ 4 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

cursed thought: cubical c++ with std::univalence

(en.wikipedia.org/wiki/Homotop... for context)

05.02.2025 18:22 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
bsky/timeline.go at 2d09e4a6c0d8ce140dd9f93cd3bf9840542e42e7 Β· mattn/bsky A cli application for bluesky social. Contribute to mattn/bsky development by creating an account on GitHub.

I don't know any go, but it seems the if and else branches here are the wrong way around: github.com/mattn/bsky/b...

25.11.2024 12:09 πŸ‘ 6 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Preview
Tiny Tapeout - Tiny Tapeout From idea to chip design in minutes! TT10 Closes in TT10 Closes in 44 DAYS 44 HOURS 44 MINS 44 SECS Tiles Β  PCBs Β  Tiny Tapeout is an educational project that makes it easier and cheaper than ever to ...

Last time I posted here was over a year ago - so I'll post my highlights in this little thread.

My accessible ASIC project Tiny Tapeout has continued to grow. We just finished TT9 and have opened TT10.

tinytapeout.com

14.11.2024 10:29 πŸ‘ 22 πŸ” 5 πŸ’¬ 1 πŸ“Œ 2
Post image Post image

as you may have seen on Twitter, I'm researching the Deus Ex: Human Revolution engine. I started around 2014 but the first progress I showed publicly was these two screenshots of DXHR maps loaded into blender in 2020

10.11.2024 13:35 πŸ‘ 62 πŸ” 11 πŸ’¬ 2 πŸ“Œ 1