Formal methods are a cool way to verify that your hardware or software is working as intended™
Z3 is a one stop shop for FM with theorem proving, SAT, SMT, and computer algebra capabilities.
Let's look at some fun examples
👇
1/6
A nice usage is constraint solving for non-linear polynomial equations.
2/6
It can prove theorems or provide counter-examples!
3/6
Need to write a package manager and are pulling your hair out from dependency management? Don't worry!
Just create two simple functions that calculate dependencies and conflicts and solve!
This showcases that you can verify many arbitrary software behaviours as well.
4/6
It works with numpy! Here's an example solving an inverse kinematics equation for robotics!!
5/6
And the grand finalé! In just a few lines of code you can solve the infamous 8-queens problem by setting row, column, and diagonal constraints and aggregating them together before solving.
Syntax: What do you write down to make your program "textually wellformed". This include symbols, formatting, whitespace, operators, and keywords.
New languages are hard because syntax is unfamiliar
For example APL vs Python showcases the vast difference in syntax 2/
Semantics: The rules that define program behavior. This defines the behavior implied by the syntax and is often the real challenge in learning a new language.
Run time behavior and compile time behavior ( type checking) are two examples of semantics
I'm super excited to share our work on self-supervised learning for audio. We extend the permutation pre-text task by using differentiable ranking and show improved performance on low-resource tasks (it also works great on images and video)
1/
When using permutations in pretraining, a subset of permutations are used to train a classifier which predicts permutations as classes.
However, since there are n! different permutations of length n, it's not feasible to use any reasonable fraction of them for classes.
2/
We fix this problem by using a differentiable ranking objective which allows arbitrary permutations to be used.
By increasing the number of usable permutations, we find improved representations are learned which can be used on downstream tasks.
3/