I prefer a formal language to describe “contracts” in the type system and static analysis.
BUT, I think it would also be funny to use embeddings to find out what a function does just reading its declaration.
For instance
void x_destroy(struct X * p)
What this functions does?
I will try do to that for fun.
For more fun, drop Struct.