Applications Of Formal And Semi-Formal Verification On Software Testing, High-Level Synthesis And Energy Internet