Zaslat SMS: A Reflective Functional Language for Hardware Design and Theorem Proving