+Push a new scope onto the context, execute the statements in this context and the pop the scope from the context
+
+[SEQ]
+
+<s1;s2,c> => c'' <= <s1,c> => c' <s2,c'> => c''
+
+[SIf]
+
+<if e s1 s2,c> => pop(c''') <= <e,c> => <true,c'> push(c') <s1,c''> => c'''
+
+<if e s1 s2,c> => pop(c''') <= <e,c> => <false,c'> push(c') <s2,c''> => c'''
+
+
+[SWhile]
+
+<while e s,c> => c' => <e,c> => <false,c'>
+
+<while e s,c> => pop(c''') => <e,c> => <true,c'> push(c') => c'' <s,c''> => c'''
+
+
+[SDecl]
+
+<i := e,c> => c'[i->v] <= <e,c> => <v,c'>
+
+Adds i with value v to the current scope in the context
+
+[SDeclD]
+
+<int i,c> => c[i->0]
+<bool i,c> => c[i->false]
+
+Adds i with default value in the current scope
+
+[SNoop]
+
+<SNoop,c> => c
+
+SNoops does nothing so the same context is returned
+
+[SPrint]
+
+<e,c> => c'' <= <e,c> => <v,c'> <IO v,c'> => c''