diff --git a/simulators/c++2/src_simulator/definitions.h b/simulators/c++2/src_simulator/definitions.h
index 2cf89988ce176ca67ec4a4841ac8e1e8e46c2c61..5b79ca8c99acddb5d57e34dfe6fcdaf4c7afebcf 100644
--- a/simulators/c++2/src_simulator/definitions.h
+++ b/simulators/c++2/src_simulator/definitions.h
@@ -177,6 +177,8 @@ using std::max;
 #define TAG_VARc "</var>"
 #define TAG_STATUSo "<status>"
 #define TAG_STATUSc "</status>"
+#define TAG_PENALTYo "<penalty>"
+#define TAG_PENALTYc "</penalty>"
 #define TAG_REASONo "<brkreason>"
 #define TAG_REASONc "</brkreason>"
 #define TAG_GLOBALo "<global>"
diff --git a/simulators/c++2/src_simulator/sim/Simulator.cpp b/simulators/c++2/src_simulator/sim/Simulator.cpp
index 83a6d722c721888ca13de3c8aab82e37b888b008..1e9a2879fb6477a8f244ea46843983c9dcbf4ed7 100644
--- a/simulators/c++2/src_simulator/sim/Simulator.cpp
+++ b/simulators/c++2/src_simulator/sim/Simulator.cpp
@@ -1752,11 +1752,17 @@ void Simulator::decodeCommand(std::string iCmd, std::ostream &iXmlOutStream)
     gettimeofday(&aBegin, NULL);
     _busy = true;
     // std::cout << "Not crashed. I: " << iCmd << std::endl;
+
     anAckMsg << TAG_HEADER << std::endl
              << TAG_STARTo << std::endl
              << TAG_GLOBALo << std::endl
              << /*TAG_REPLYo << anIssuedCmd << TAG_REPLYc << std::endl<< */ TAG_MSGo << "Command received" << TAG_MSGc << TAG_ERRNOo << 0 << TAG_ERRNOc << std::endl
              << TAG_STATUSo << SIM_BUSY << TAG_STATUSc << std::endl
+             #ifdef PENALTIES_ENABLED
+             << TAG_PENALTYo << 1 << TAG_PENALTYc
+             #else
+             << TAG_PENALTYo << 0 << TAG_PENALTYc
+             #endif
              << TAG_GLOBALc << std::endl
              << TAG_STARTc << std::endl;
     if (_replyToServer)
@@ -3494,7 +3500,13 @@ void Simulator::writeSimState(std::ostream &ioMessage)
     }
     else
     {
-      ioMessage << SIM_READY << TAG_STATUSc;
+      ioMessage << SIM_READY << TAG_STATUSc
+       #ifdef PENALTIES_ENABLED
+             << TAG_PENALTYo << 1 << TAG_PENALTYc
+      #else
+             << TAG_PENALTYo << 0 << TAG_PENALTYc
+      #endif
+      ;
       if (_simComp->getStopReason() != "")
         ioMessage << TAG_REASONo << _simComp->getStopReason() << TAG_REASONc;
     }
diff --git a/src/main/java/ui/interactivesimulation/FormalVerificationToolBar.java b/src/main/java/ui/interactivesimulation/FormalVerificationToolBar.java
index 325e5f381a938a64af985304bf7b4eed787d2800..447447f205bf41cc6a9ff171a13b4eab96ac840d 100755
--- a/src/main/java/ui/interactivesimulation/FormalVerificationToolBar.java
+++ b/src/main/java/ui/interactivesimulation/FormalVerificationToolBar.java
@@ -63,7 +63,7 @@ public class FormalVerificationToolBar extends InteractiveSimulationBar {
     protected void setActive(boolean b) {
         jfis.actions[InteractiveSimulationActions.ACT_RESET_SIMU].setEnabled(b);
         jfis.actions[InteractiveSimulationActions.ACT_STOP_SIMU].setEnabled(b);
-        jfis.actions[InteractiveSimulationActions.ACT_RUN_EXPLORATION].setEnabled(b);
+        //jfis.actions[InteractiveSimulationActions.ACT_RUN_EXPLORATION].setEnabled(b);
         jfis.actions[InteractiveSimulationActions.ACT_ANALYSIS_RG].setEnabled(b);
         jfis.actions[InteractiveSimulationActions.ACT_VIEW_RG].setEnabled(b);
         jfis.actions[InteractiveSimulationActions.ACT_REMOVE_ALL_TRANS].setEnabled(b);
diff --git a/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java b/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java
index c04b87ed5c4ed2434a78f16c5980c78330b9a2dd..8553d8e1baf2e3d4fa756e361d92490667f1595e 100644
--- a/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java
+++ b/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java
@@ -43,6 +43,7 @@ import common.SpecConfigTTool;
 import launcher.LauncherException;
 import launcher.RshClient;
 import myutil.*;
+import org.apache.batik.anim.timing.Trace;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
@@ -139,6 +140,8 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene
     protected StateCommandsToolBar stctb;
     protected BenchmarkCommandsToolBar bctb;
     protected FormalVerificationToolBar fvtb;
+    private boolean verificationActivated = false;
+    private JLabel warningPenalty;
 
 
     // Commands
@@ -630,6 +633,8 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene
 
         fvtb = new FormalVerificationToolBar(this);
         jp01.add(fvtb, BorderLayout.NORTH);
+        explorationEnabled();
+
 
         jp02 = new JPanel();
         gridbag01 = new GridBagLayout();
@@ -645,11 +650,11 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene
         // First empty line
         c01.gridwidth = GridBagConstraints.REMAINDER; //end row
         jp02.add(new JLabel(" "), c01);
-        JLabel warning = new JLabel("Beware: Formal Verification ignores Penalties");
-        Font newLabelFont=new Font(warning.getFont().getName(),Font.ITALIC,warning.getFont().getSize());
+        warningPenalty = new JLabel("Beware: Exploration requires deactivated penalties");
+        Font newLabelFont=new Font(warningPenalty.getFont().getName(),Font.ITALIC,warningPenalty.getFont().getSize());
         //Set JLabel font using new created font
-        warning.setFont(newLabelFont);
-        jp02.add(warning, c01);
+        warningPenalty.setFont(newLabelFont);
+        jp02.add(warningPenalty, c01);
         jp02.add(new JLabel(" "), c01);
 
         // Line minimum command: labels
@@ -2116,6 +2121,15 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene
                             makeStatus(node0.getTextContent());
                         }
 
+                        nl = elt.getElementsByTagName("penalty");
+
+                        if ((nl != null) && (nl.getLength() > 0)) {
+                            node0 = nl.item(0);
+                            //
+                            //TraceManager.addDev("******* PENALTY INFO *******");
+                            makePenaltyInformation(node0.getTextContent());
+                        }
+
                         nl = elt.getElementsByTagName("brkreason");
                         if ((nl != null) && (nl.getLength() > 0)) {
                             node0 = nl.item(0);
@@ -2626,6 +2640,30 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene
         info.setText(s);
     }
 
+    public void makePenaltyInformation(String s) {
+        //TraceManager.addDev("Penalties activated? " + s);
+        if (s.equals("1")) {
+            verificationActivated = false;
+        } else {
+            verificationActivated = true;
+        }
+        explorationEnabled();
+    }
+
+    public void explorationEnabled() {
+        fvtb.setEnabled(verificationActivated);
+        if (warningPenalty != null) {
+            if (verificationActivated) {
+                warningPenalty.setText("Exploration enabled because penalties are deactivated");
+            } else {
+                warningPenalty.setText("Exploration disabled because penalties are activated");
+            }
+        }
+        if (!verificationActivated) {
+            actions[InteractiveSimulationActions.ACT_RUN_EXPLORATION].setEnabled(verificationActivated);
+        }
+    }
+
     public void makeStatus(String s) {
         //
 
@@ -2704,7 +2742,7 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene
         actions[InteractiveSimulationActions.ACT_RUN_X_COMMANDS].setEnabled(b);
         actions[InteractiveSimulationActions.ACT_RESET_SIMU].setEnabled(b);
         actions[InteractiveSimulationActions.ACT_STOP_SIMU].setEnabled(b);
-        actions[InteractiveSimulationActions.ACT_RUN_EXPLORATION].setEnabled(b);
+        actions[InteractiveSimulationActions.ACT_RUN_EXPLORATION].setEnabled(b&&verificationActivated);
         actions[InteractiveSimulationActions.ACT_REMOVE_ALL_TRANS].setEnabled(b);
 
         if (jpsv != null) {
diff --git a/src/main/java/ui/interactivesimulation/MainCommandsToolBar.java b/src/main/java/ui/interactivesimulation/MainCommandsToolBar.java
index 620d030123541aa08d0268de73fab6b4671dc2e2..205ec91a222fc26c1889e894bedf851639e69e1c 100755
--- a/src/main/java/ui/interactivesimulation/MainCommandsToolBar.java
+++ b/src/main/java/ui/interactivesimulation/MainCommandsToolBar.java
@@ -67,7 +67,7 @@ public class MainCommandsToolBar extends InteractiveSimulationBar {
 		jfis.actions[InteractiveSimulationActions.ACT_RUN_TO_TIME].setEnabled(b);
 		jfis.actions[InteractiveSimulationActions.ACT_RUN_X_TRANSACTIONS].setEnabled(b);
 		jfis.actions[InteractiveSimulationActions.ACT_RUN_X_COMMANDS].setEnabled(b);
-		jfis.actions[InteractiveSimulationActions.ACT_RUN_EXPLORATION].setEnabled(b);
+		//jfis.actions[InteractiveSimulationActions.ACT_RUN_EXPLORATION].setEnabled(b);
 		jfis.actions[InteractiveSimulationActions.ACT_RUN_TO_NEXT_BUS_TRANSFER].setEnabled(b);
 		jfis.actions[InteractiveSimulationActions.ACT_RUN_UNTIL_CPU_EXECUTES].setEnabled(b);
 		jfis.actions[InteractiveSimulationActions.ACT_RUN_UNTIL_TASK_EXECUTES].setEnabled(b);