diff --git a/src/main/java/de/tlc4b/analysis/StandardMadules.java b/src/main/java/de/tlc4b/analysis/StandardMadules.java
index 3d2d5b6e508f61b54fcf7110c46ae42c1f834fdc..76ef31d8a560291e45f9a4c05c0a26684e422b7d 100644
--- a/src/main/java/de/tlc4b/analysis/StandardMadules.java
+++ b/src/main/java/de/tlc4b/analysis/StandardMadules.java
@@ -198,6 +198,7 @@ public final class StandardMadules {
 	public static final String POW_1 = "Pow1";
 	public static final String FINITE_SUBSETS = "Fin";
 	public static final String FINITE_1_SUBSETS = "Fin1";
+	public static final String B_POWER_Of = "BPowerOf";
 	public static final String B_MODULO = "BModulo"; 
 	public static final String B_DIVISION = "BDivision"; 
 
diff --git a/src/main/java/de/tlc4b/analysis/UsedStandardModules.java b/src/main/java/de/tlc4b/analysis/UsedStandardModules.java
index 10d65ec3e98f36731421ff1431a464e015417376..3eaa3126d9035a15ed1657bc5ec56ad6fbb8c951 100644
--- a/src/main/java/de/tlc4b/analysis/UsedStandardModules.java
+++ b/src/main/java/de/tlc4b/analysis/UsedStandardModules.java
@@ -275,9 +275,6 @@ public class UsedStandardModules extends DepthFirstAdapter {
 		extendedStandardModules.add(STANDARD_MODULES.Naturals);
 	}
 
-	public void inAPowerOfExpression(APowerOfExpression node) {
-		extendedStandardModules.add(STANDARD_MODULES.Naturals);
-	}
 
 	public void inAMinusOrSetSubtractExpression(
 			AMinusOrSetSubtractExpression node) {
@@ -327,6 +324,10 @@ public class UsedStandardModules extends DepthFirstAdapter {
 	 * BBuiltIns
 	 */
 
+	public void inAPowerOfExpression(APowerOfExpression node) {
+		extendedStandardModules.add(STANDARD_MODULES.BBuiltIns);
+	}
+	
 	public void inAMinExpression(AMinExpression node) {
 		extendedStandardModules.add(STANDARD_MODULES.BBuiltIns);
 	}
diff --git a/src/main/java/de/tlc4b/prettyprint/TLAPrinter.java b/src/main/java/de/tlc4b/prettyprint/TLAPrinter.java
index 3afd929d53bc04865bc681eafd7cda71c4d66a6d..b5f74ddf0eb6b2aac4006e6b487a57f4177609e4 100644
--- a/src/main/java/de/tlc4b/prettyprint/TLAPrinter.java
+++ b/src/main/java/de/tlc4b/prettyprint/TLAPrinter.java
@@ -458,25 +458,24 @@ public class TLAPrinter extends DepthFirstAdapter {
 					ALabelPredicate label = (ALabelPredicate) assertion;
 					name = label.getName().getText();
 				}
-				
-				if(name == null){
+
+				if (name == null) {
 					name = "Assertion" + (i + 1);
 				}
-				
 
 				if (tlaModule.hasInitPredicate()) {
-						moduleStringAppend(name);
-						moduleStringAppend(" == ");
+					moduleStringAppend(name);
+					moduleStringAppend(" == ");
 				} else {
 					moduleStringAppend("ASSUME ");
-						moduleStringAppend(name);
-						moduleStringAppend(" == ");
+					moduleStringAppend(name);
+					moduleStringAppend(" == ");
 				}
-				//assertionMode = true;
-				//assertionName = name;
-				//parameterCounter = 0;
+				// assertionMode = true;
+				// assertionName = name;
+				// parameterCounter = 0;
 				assertion.apply(this);
-				//assertionMode = false;
+				// assertionMode = false;
 				moduleStringAppend("\n");
 			}
 		}
@@ -1279,7 +1278,7 @@ public class TLAPrinter extends DepthFirstAdapter {
 
 			moduleStringAppend("(");
 			moduleStringAppend("TLCSet(");
-			moduleStringAppend(""+start);
+			moduleStringAppend("" + start);
 			moduleStringAppend(", TRUE) /\\ ");
 			for (int i = start; i < end; i++) {
 				moduleStringAppend("TLCSet(");
@@ -1312,7 +1311,7 @@ public class TLAPrinter extends DepthFirstAdapter {
 			}
 
 			assertionMode = false;
-			
+
 			moduleStringAppend(" IF ");
 			node.getImplication().apply(this);
 			moduleStringAppend(" THEN TRUE ");
@@ -1323,14 +1322,14 @@ public class TLAPrinter extends DepthFirstAdapter {
 				moduleStringAppend("TLCGet(");
 				moduleStringAppend("" + (i + 1));
 				moduleStringAppend(")");
-				if(i<copy.size()-1){
+				if (i < copy.size() - 1) {
 					moduleStringAppend(", ");
 				}
-				
+
 			}
 			moduleStringAppend(" >>) ");
 			moduleStringAppend("/\\ TLCSet(");
-			moduleStringAppend(""+start);
+			moduleStringAppend("" + start);
 			moduleStringAppend(", FALSE)");
 			moduleStringAppend(")");
 			moduleStringAppend(" /\\ TLCGet(");
@@ -1648,11 +1647,12 @@ public class TLAPrinter extends DepthFirstAdapter {
 
 	@Override
 	public void caseAPowerOfExpression(APowerOfExpression node) {
-		inAPowerOfExpression(node);
+		moduleStringAppend(B_POWER_Of);
+		moduleStringAppend("(");
 		node.getLeft().apply(this);
-		moduleStringAppend(" ^ ");
+		moduleStringAppend(", ");
 		node.getRight().apply(this);
-		outAPowerOfExpression(node);
+		moduleStringAppend(")");
 	}
 
 	@Override
diff --git a/src/main/resources/standardModules/BBuiltIns.tla b/src/main/resources/standardModules/BBuiltIns.tla
index 392ca03e331a37c2587cd6163869e379e842944f..688ba0f068ff90261fcc4d153642d1fa1d53562d 100644
--- a/src/main/resources/standardModules/BBuiltIns.tla
+++ b/src/main/resources/standardModules/BBuiltIns.tla
@@ -12,6 +12,7 @@ succ[x \in Int] == x + 1
 
 pred[x \in Int] == x - 1
  \* The predecessor function
+BPowerOf(a,b) == IF a = 0 /\ b = 0 THEN 1 ELSE a ^ b
 
 BDivision(a,b) ==
   CASE a >= 0 /\ b > 0 -> a \div b
@@ -19,21 +20,38 @@ BDivision(a,b) ==
     [] a >= 0 /\ b < 0 -> -(a \div (-b))
     [] a < 0 /\ b < 0 -> (-a) \div (-b)
     [] b = 0 -> Assert(FALSE, "Error: Division by zero.")
+    [] OTHER -> Assert(FALSE, "Error: Modulo Operator.")
 \* Rules from AtelierB reference manual (see page 40)
 
 BModulo(a,b) ==
-  IF a > 0 /\ b > 0
+  IF a >= 0 /\ b > 0
   THEN a % b
   ELSE Assert(FALSE, "Error: Both operands of the modulo operator must be natural numbers.")
 
 RECURSIVE Sigma(_)
-Sigma(S) == LET e == CHOOSE e \in S: TRUE
-            IN IF  S = {} THEN 0 ELSE e[2] + Sigma(S \ {e})
+Sigma(S) ==
+  IF S = {} THEN 0
+  ELSE
+    LET
+      e == CHOOSE e \in S: TRUE
+      newS == S \ {e}
+    IN
+      IF newS = {}
+      THEN e[2]
+      ELSE e[2] + Sigma(S \ {e})
  \* The sum of all second components of pairs which are elements of S
 
 RECURSIVE Pi(_)
-Pi(S) == LET e == CHOOSE e \in S: TRUE
-         IN IF  S = {} THEN 0 ELSE e[2] + Pi(S \ {e})
+Pi(S) ==
+  IF S = {} THEN 0
+  ELSE
+    LET
+      e == CHOOSE e \in S: TRUE
+      newS == S \ {e}
+    IN
+      IF newS = {}
+      THEN e[2]
+      ELSE e[2] * Pi(S \ {e})
  \* The product of all second components of pairs which are elements of S
 
 Pow1(S) == (SUBSET S) \ {{}}