Formal Framework for Property-driven Obfuscations