## formal verification
### tl; dr
#### yul
* yul (previously also called julia) is an intermediate statically-typed language that can be compiled to bytecode for different backends. * it's a good target for high-level optimisation stages, as it provides flexibility, speed, and interoperates easily with high-level solidity. * programs written in yul are readable even if the code is generated by a compiler from solidity. * because yul needs to be compiled to bytecode, it requires additional time to complete the entire compilation process, making it time-consuming during development.


---- ### external resources
* **[lean prover](https://leanprover.github.io/)** * **[solidity docs on yul](https://docs.soliditylang.org/en/v0.8.18/yul.html)** * **[evm.codes (evm opcodes, by fork)](https://www.evm.codes/?fork=arrowGlacier)** * **[solady, optimized solidy snippets](https://github.com/Vectorized/solady)** * **[the darks arts of yul, by vectorized](https://www.youtube.com/watch?v=ew3pfnb2_V8)** * **[optimising gas efficient whitelist contract in yul, by 0xmonsoon](https://mirror.xyz/0xCdC75C7d65d5c4cD0329DA74f979C6E1613d57A5/0ZsbpDeEzQhqFNRnsJhhkmPg1oXJCxH0SMkr5EZbaNc)** * **[ethernaut solutions in yul](https://github.com/teddav/ethernaut-yul/)**