High-level programming and symbolic reasoning on IoT resource constrained devices