https://123dok.net/document/z3dmjj47-coq-type-casts-complete-proof-coq-modulo-theory.html