Have you seen languages like DML (let's you capture linear arithmetic properties only and automates the proof of these)?
https://www.cs.bu.edu/~hwxi/DML/DML.html
> Dependent ML (DML) is a conservative extension of the functional programming language ML. The type system of DML enriches that of ML with a restricted form of dependent types. This allows many interesting program properties such as memory safety and termination to be captured in the type system of DML and then be verified at compiler-time.
What program properties are useful to capture and what properties you can mostly automate is a really interesting problem.