The source code and dockerfile for the GSW2024 AI Lab.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
 
 
 
 
 
 

361 lines
94 KiB

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Example usage of Tempestpy"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"vscode": {
"languageId": "plaintext"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"pygame 2.6.0 (SDL 2.28.4, Python 3.10.12)\n",
"Hello from the pygame community. https://www.pygame.org/contribute.html\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2024-09-23 08:58:51.801230: E external/local_xla/xla/stream_executor/cuda/cuda_fft.cc:485] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered\n",
"2024-09-23 08:58:51.816264: E external/local_xla/xla/stream_executor/cuda/cuda_dnn.cc:8454] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered\n",
"2024-09-23 08:58:51.820526: E external/local_xla/xla/stream_executor/cuda/cuda_blas.cc:1452] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered\n",
"2024-09-23 08:58:51.831659: I tensorflow/core/platform/cpu_feature_guard.cc:210] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.\n",
"To enable the following instructions: AVX2 FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.\n",
"2024-09-23 08:58:52.758922: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT\n",
"error: XDG_RUNTIME_DIR not set in the environment.\n"
]
}
],
"source": [
"from sb3_contrib import MaskablePPO\n",
"from sb3_contrib.common.wrappers import ActionMasker\n",
"from stable_baselines3.common.logger import Logger, CSVOutputFormat, TensorBoardOutputFormat, HumanOutputFormat\n",
"\n",
"import gymnasium as gym\n",
"\n",
"from minigrid.core.actions import Actions\n",
"from minigrid.core.constants import TILE_PIXELS\n",
"from minigrid.wrappers import RGBImgObsWrapper, ImgObsWrapper\n",
"\n",
"import tempfile, datetime, shutil\n",
"\n",
"import time\n",
"import os\n",
"\n",
"from utils import MiniGridShieldHandler, create_log_dir, ShieldingConfig, MiniWrapper, expname, shield_needed, shielded_evaluation, create_shield_overlay_image\n",
"from sb3utils import MiniGridSbShieldingWrapper, parse_sb3_arguments, ImageRecorderCallback, InfoCallback\n",
"\n",
"import os, sys\n",
"from copy import deepcopy\n",
"\n",
"from PIL import Image"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"vscode": {
"languageId": "plaintext"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Starting the training\n"
]
},
{
"data": {
"image/jpeg": "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aP7X1P8A6CN3/wB/2/xqnRQBr6pqmoR6veol/dKizuFVZmAA3Hgc1U/tfU/+gjd/9/2/xo1f/kNX/wD18Sf+hGqdAFz+19T/AOgjd/8Af9v8aP7X1P8A6CN3/wB/2/xqnRQB7JRRRQAUUUUAFFFFABRRRQB5Pq//ACGr/wD6+JP/AEI1Tq5q/wDyGr//AK+JP/QjVOgAooooAuav/wAhq/8A+viT/wBCNU6uav8A8hq//wCviT/0I1ToAKKKKALmr/8AIav/APr4k/8AQjVOrmr/APIav/8Ar4k/9CNU6ACiiigC5q//ACGr/wD6+JP/AEI1Tq5q/wDyGr//AK+JP/QjVOgAooooAuav/wAhq/8A+viT/wBCNU6uav8A8hq//wCviT/0I1ToAKKKKALmr/8AIav/APr4k/8AQjVOrmr/APIav/8Ar4k/9CNU6ACiiigC5q//ACGr/wD6+JP/AEI1Tq5q/wDyGr//AK+JP/QjVOgAooooAuav/wAhq/8A+viT/wBCNU6uav8A8hq//wCviT/0I1ToAKKKKALmr/8AIav/APr4k/8AQjVOrmr/APIav/8Ar4k/9CNU6ACiiigC5q//ACGr/wD6+JP/AEI1Tq5q/wDyGr//AK+JP/QjVOgAooooA9kooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP/Z",
"image/png": "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",
"text/plain": [
"<PIL.Image.Image image mode=RGB size=384x384>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"\n",
"Computing new shield\n",
"LOG: Starting with explicit model creation...\n",
"Elapsed time is 0.0021867752075195312 seconds.\n",
"LOG: Starting with model checking...\n",
"Elapsed time is 0.00021076202392578125 seconds.\n",
"LOG: Starting to translate shield...\n",
"Elapsed time is 0.013784170150756836 seconds.\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAGACAYAAACkx7W/AAAeBElEQVR4Ae3cz3EjSZLFYXCNMvC0exgtOErgtitBKrB9pACUAlJAitJi7q0EB07rmGYlmUDkv/D3Mn40a8sCkBme+YXTXxWru5+GYfg48YUAAggg0J3Af3X3xDwwAggggMCnAAFAIyCAAAKdChAAnW48j40AAggQAPQAAggg0KkAAdDpxvPYCCCAAAFADyCAAAKdChAAnW48j40AAggQAPQAAggg0KkAAdDpxvPYCCCAAAFADyCAAAKdChAAnW48j40AAggQAPQAAggg0KkAAdDpxvPYCCCAAAFADyCAAAKdChAAnW48j40AAggQAPQAAggg0KkAAdDpxvPYCCCAAAFADyCAAAKdChAAnW48j40AAggQAPQAAggg0KkAAdDpxvPYCCCAAAFADyCAAAKdChAAnW48j40AAggQAPQAAggg0KkAAdDpxvPYCCCAAAFADyCAAAKdChAAnW48j40AAggQAPQAAggg0KkAAdDpxvPYCCCAAAFADyCAAAKdChAAnW48j40AAgg8ZxO8Xa/Zt0B9BBDoVODPf/yZ+uQv/3o5vZ/PafeQHgDx5H/+mbcJl2E4DZdL2gZQH3/6L+/77/SPtG99icJd/wjo9a8tKMfWO1LqliP12woU93JsW/10KnXLkfptBbLc2z7l/WrdBsB488ev77Ot/3Rcb/x6fYX7K4zrjV/fv3r9p+N649frK9xfYVxv/Pr+1es/Hdcbv15f4f4K43rj1/evXv/puN749foK91doXe/+3eR92mUATG3+1Ptbb89Unan3qb+twJTz1PvbVv/7d/7jdak/FtnndSvnfe5+21W7C4BHm//o87X8j9Z/9Dn11wk88n30+brq08O/rEv9IrHPcW/ffe56v1W7CoDaza89b+621K5bex715wnUutaeN6/64+Ff1qN+kdj2uJfrtnfZdrVuAmDu5s89/9G2zV1v7vnUvy8w13Pu+fer1w//sg71i8Q2x609t7mr/FW6CIClm7/0uvG2Ll1n6XXU/11gqePS636vPn/4l+upXyTWHbdyXHcXmlcfPgDWbj7Xr2tc/PBbI5DdP2vu3eHaQwfA2uYpG7h0naXXlbrluHSdpdeVuuW4dJ2l15W65bh0naXXlbrluHSdpdeVuuW4dJ2l15W65bh0naXXlbrluHSdpdeVuj0cDxsAW2/+3PXmnv+o2eauN/d86t8XmOs59/z71ef/GIn6j0T5PAQOGQBbN39pldp1a88r69Yea9etPa+2bjmvdt3a88q6tcfadWvPq61bzqtdt/a8sm7tsXbd2vNq65bzatetPa+sW3usXbf2vNq6Rz7vcAGw9+Y/Wv/R52ub6dH6jz6n/jqBR76PPl9X/fGfBKi/Vriv6w8VAHs3f2mNqTpT75frtjpO1Zl6f6u6ZZ2pOlPvl+u2Ok7VmXp/q7plnak6U++X67Y6TtWZen+rumWdqTpT75frtjpO1Zl6f6u6R1znMAHQevPH9cav926Wcb3xa+rvKzD2Hr/et/r3PwlQf2/xY65/iABo3fylFUrdcizvtzqWuuXYqm6pU+qWY3m/1bHULcdWdUudUrccy/utjqVuObaqW+qUuuVY3m91LHXLsVXdI9WxD4Dszad+7rcD/vjnCnhXtw6A7G9+763n7hFAoHcB2wBg+Pfeujw/AgisFbAMAIb/2m3negQQQMDwPwRj+NO2CCCAwDYCVn8CYPhvs+msggACCISATQAw/GlYBBBAYFsBiwBg+G+76ayGAAIIhIB8ADD8aVQEEEBgHwHpAGD477PprIoAAgiEgGwAMPxpUAQQQGBfAckAYPjvu+msjgACCISAXAAw/GlMBBBAoI2AVAAw/NtsOlUQQACBEJAJAIY/DYkAAgi0FXgahuGjbcnfq71dr6f38/n3N3mFAAIINBCI+ZP9lTn/nrMfPuoPl8sp608AtwA8XW71s76ojz/9l/f9d0r8/v91GzovLy9Zo+ezrsyPgAKDLwQQQKAHAZV5JxMAsekqKD00IM+IAAI5AkpzTioAYjuUcHLag6oIIHBUAbX5JhcAsfFqSEdtRp4LAQTaCSjONckAiC1RxGrXKlRCAIEjCajOM9kAiM1XRTtSY/IsCCCwr4DyHJMOgNgWZbx924bVEUDAXUB9fskHQDSAOqJ7k3L/CCCwvYDD3LIIgNgaB8ztW4gVEUDAUcBlXtkEQDSBC6pjw3LPCCCwjYDTnLIKgNgeJ9xt2olVEEDARcBtPtkFQDSCG7JL83KfCCCwXMBxLlkGQGyRI/by1uJKBBBQFnCdR7YBEM3giq7cyNwbAgjME3CeQ9YBENvkjD+vzTgbAQTUBNznj30AvKp1BPeDAALdCLjPH+sAcMfv5ruEB0XgwALOc8g2AJzRD/y9wKMh0KWA6zyyDABX7C6/M3hoBDoRcJxLdgHgiNxJ//OYCHQv4DafrALADbf77wYAEOhQwGlO2QSAE2qHPc8jI4DAFwGXeWURAC6YX/afXyKAQOcCDnNLPgAcEDvvcx4fAQQmBNTnl3QAqONN7DlvI4AAAv8RUJ5jsgGgjPafneUXCCCAQIWA6jyTDABVrIp95hQEEEDgRwHFuSYXAIpIP+4mbyKAAAIzBdTmm1QAqOHM3FtORwABBB4KKM05mQBQQnm4g5yAAAIIrBBQmXdPwzB8rHiO1Ze+Xa+n9/N59TosgAACCLgJZM+/ZwWw4XI5ZSXiLQBPl1v9rC/q40//9fn99yuGzstL1uj5rCvzI6BPjFQKiiOAAAJtBFTmnUwABLsKSpsWoAoCCPQooDTnpAIgmkEJp8fm5JkRQGA/AbX5JhcAQa+GtF87sDICCPQioDjXJAMgGkIRq5dG5TkRQGBbAdV5JhsAwa+Ktm1rsBoCCBxZQHmOSQdANIUy3pGblmdDAIH1AurzSz4AYgvUEde3CSsggMDRBBzmlkUARGM4YB6tgXkeBBBYJuAyr2wCILbBBXVZy3AVAggcQcBpTlkFQDSHE+4RmplnQACBegG3+WQXALEVbsj17cOZCCDgKuA4lywDIBrEEdu1sblvBBC4L+A6j2wDILbDFf1+K/EpAgg4CTjPIesAiCZxxndqcu4VAQS+C7jPH/sAeP2+J7yDAAIINBFwnz/WAeCO36RDKYIAArsKOM8h2wBwRt+1G1kcAQSaC7jOI8sAcMVu3pUURACBZgKOc8kuAByRm3UghRBAIFXAbT5ZBYAbbmonUhwBBFIEnOaUTQA4oaZ0HUURQEBGwGVeWQSAC6ZM93EjCCCQLuAwt+QDwAExvdO4AQQQkBRQn1/SAaCOJ9lx3BQCCEgJKM8x2QBQRpPqLm4GAQTkBVTnmWQAqGLJdxk3iAACsgKKc00uABSRZDuKG0MAASsBtfkmFQBqOFadxc0igICFgNKckwkAJRSLLuImEUDAVkBl3j0Nw/CRqfh2vZ7ez+fMW6A2AgggkCKQPf+eU556VHS4XE5ZiXgLwNPlVj/ri/r40399fv/9iqHz8pI1ej7ryvwI6BMjlYLiCCCAQBsBlXknEwDBroLSpgWoggACPQoozTmpAIhmUMLpsTl5ZgQQ2E9Abb7JBUDQqyHt1w6sjAACvQgozjXJAIiGUMTqpVF5TgQQ2FZAdZ7JBkDwq6Jt2xqshgACRxZQnmPSARBNoYx35Kbl2RBAYL2A+vySD4DYAnXE9W3CCgggcDQBh7llEQDRGA6YR2tgngcBBJYJuMwrmwCIbXBBXdYyXIUAAkcQcJpTVgEQzeGEe4Rm5hkQQKBewG0+2QVAbIUbcn37cCYCCLgKOM4lywCIBnHEdm1s7hsBBO4LuM4j2wCI7XBFv99KfIoAAk4CznPIOgCiSZzxnZqce0UAge8C7vPHPgBev+8J7yCAAAJNBNznj3UAuOM36VCKIIDArgLOc8g2AJzRd+1GFkcAgeYCrvPIMgBcsZt3JQURQKCZgONcsgsAR+RmHUghBBBIFXCbT1YB4Iab2okURwCBFAGnOWUTAE6oKV1HUQQQkBFwmVcWAeCCKdN93AgCCKQLOMwt+QBwQEzvNG4AAQQkBdTnl3QAqONJdhw3hQACUgLKc0w2AJTRpLqLm0EAAXkB1XkmGQCqWPJdxg0igICsgOJckwsARSTZjuLGEEDASkBtvkkFgBqOVWdxswggYCGgNOdkAkAJxaKLuEkEELAVUJl3T8MwfGQqvl2vp/fzOfMWqI0AAgikCGTPv+eUpx4VHS6XU1Yi3gLwdLnVz/qiPv70X5/ff79i6Ly8ZI2ez7oyPwL6xEiloDgCCCDQRkBl3skEQLCroLRpAaoggECPAkpzTioAohmUcHpsTp4ZAQT2E1Cbb3IBEPRqSPu1AysjgEAvAopzTTIAoiEUsXppVJ4TAQS2FVCdZ7IBEPyqaNu2BqshgMCRBZTnmHQARFMo4x25aXk2BBBYL6A+v+QDILZAHXF9m7ACAggcTcBhblkEQDSGA+bRGpjnQQCBZQIu88omAGIbXFCXtQxXIYDAEQSc5pRVAERzOOEeoZl5BgQQqBdwm092ARBb4YZc3z6ciQACrgKOc8kyAKJBHLFdG5v7RgCB+wKu88g2AGI7XNHvtxKfIoCAk4DzHLIOgGgSZ3ynJudeEUDgu4D7/LEPgNfve8I7CCCAQBMB9/ljHQDu+E06lCIIILCrgPMcsg0AZ/Rdu5HFEUCguYDrPLIMAFfs5l1JQQQQaCbgOJfsAsARuVkHUggBBFIF3OaTVQC44aZ2IsURQCBFwGlO2QSAE2pK11EUAQRkBFzmlUUAuGDKdB83ggAC6QIOc0s+ABwQ0zuNG0AAAUkB9fklHQDqeJIdx00hgICUgPIckw0AZTSp7uJmEEBAXkB1nkkGgCqWfJdxgwggICugONfkAkARSbajuDEEELASUJtvUgGghmPVWdwsAghYCCjNOZkAUEKx6CJuEgEEbAVU5t3TMAwfmYpv1+vp/XzOvAVqI4AAAikC2fPvOeWpR0WHy+WUlYi3ADxdbvWzvqiPP/3X5/ffrxg6Ly9Zo+ezrsyPgD4xUikojgACCLQRUJl3MgEQ7CoobVqAKggg0KOA0pyTCoBoBiWcHpuTZ0YAgf0E1OabXAAEvRrSfu3Ayggg0IuA4lyTDIBoCEWsXhqV50QAgW0FVOeZbAAEvyratq3BagggcGQB5TkmHQDRFMp4R25ang0BBNYLqM8v+QCILVBHXN8mrIAAAkcTcJhbFgEQjeGAebQG5nkQQGCZgMu8sgmA2AYX1GUtw1UIIHAEAac5ZRUA0RxOuEdoZp4BAQTqBdzmk10AxFa4Ide3D2cigICrgONcsgyAaBBHbNfG5r4RQOC+gOs8sg2A2A5X9PutxKcIIOAk4DyHrAMgmsQZ36nJuVcEEPgu4D5/7APg9fue8A4CCCDQRMB9/lgHgDt+kw6lCAII7CrgPIdsA8AZfdduZHEEEGgu4DqPLAPAFbt5V1IQAQSaCTjOJbsAcERu1oEUQgCBVAG3+WQVAG64qZ1IcQQQSBFwmlM2AeCEmtJ1FEUAARkBl3llEQAumDLdx40ggEC6gMPckg8AB8T0TuMGEEBAUkB9fkkHgDqeZMdxUwggICWgPMdkA0AZTaq7uBkEEJAXUJ1nkgGgiiXfZdwgAgjICijONbkAUESS7ShuDAEErATU5ptUAKjhWHUWN4sAAhYCSnNOJgCUUCy6iJtEAAFbAZV59zQMw0em4tv1eno/nzNvgdoIIIBAikD2/HtOeepR0eFyOWUl4i0AT5db/awv6uNP//X5/fcrhs7LS9bo+awr8yOgT4xUCoojgAACbQRU5p1MAAS7CkqbFqAKAgj0KKA056QCIJpBCafH5uSZEUBgPwG1+SYXAEGvhrRfO7AyAgj0IqA41yQDIBpCEauXRuU5EUBgWwHVeSYbAMGvirZta7AaAggcWUB5jkkHQDSFMt6Rm5ZnQwCB9QLq80s+AGIL1BHXtwkrIIDA0QQc5pZFAERjOGAerYF5HgQQWCbgMq9sAiC2wQV1WctwFQIIHEHAaU5ZBUA0hxPuEZqZZ0AAgXoBt/lkFwCxFW7I9e3DmQgg4CrgOJcsAyAaxBHbtbG5bwQQuC/gOo9sAyC2wxX9fivxKQIIOAk4zyHrAIgmccZ3anLuFQEEvgu4zx/7AHj9vie8gwACCDQRcJ8/1gHgjt+kQymCAAK7CjjPIdsAcEbftRtZHAEEmgu4ziPLAHDFbt6VFEQAgWYCjnPJLgAckZt1IIUQQCBVwG0+WQWAG25qJ1IcAQRSBJzmlE0AOKGmdB1FEUBARsBlXlkEgAumTPdxIwggkC7gMLfkA8ABMb3TuAEEEJAUUJ9f0gGgjifZcdwUAghICSjPMdkAUEaT6i5uBgEE5AVU55lkAKhiyXcZN4gAArICinNNLgAUkWQ7ihtDAAErAbX5JhUAajhWncXNIoCAhYDSnJMJACUUiy7iJhFAwFZAZd49DcPwkan4dr2e3s/nzFugNgIIIJAikD3/nlOeelR0uFxOWYl4C8DT5VY/64v6+NN/fX7//Yqh8/KSNXo+68r8COgTI5WC4ggggEAbAZV5JxMAwa6C0qYFqIIAAj0KKM05qQCIZlDC6bE55zzzf99Ojn/4QgCBOgG1+SYXAMGohlS3tf2d9f+3R45/+EIAgccCinNNMgCCUhHr8Rb3dcb/3h43/uELAQTuC6jOM9kACE5VtPtb3cen8Tv///nrH/4U0Mee85TLBJTnmHQABLcy3rJ2OMZVX3/n//XXx3g6ngKBbQTU55d8AMQ2qCNu0yo+q7zebvWfX243fh3v8YUAAn8LOMwtiwAIUgfMv7f+2L/66Xf8P713bAWeDoFpAZd5ZRMAQe2COt0W/p/Ev/b5xw+PEe/xr4T+AMNb3Qk4zSmrAIhOcsI9Yuff+53+vc+OaMEzITAWcJtPdgEQ4G7I4yZxfn3v3/i595nzM3PvCNQIOM4lywCIzXDErmki5XNebzcX/+rn1Fd8FufwhUBvAq7zyDYAosFc0V2/Of6ouPGacyqW4RQEbASc55B1AESHOOPbdPjtRuMveGt+xh/n8JfBTjvLva4RcJ8/9gHwumb3uLZaYM7P9+ecW30DnIiAoID7/LEOAHd8wX6evKWa3/2Xi+ecW67hiICrgPMcsg0AZ3S3Ro+Bfu8vf8fPE+cSAmMVXh9ZwHUeWQaAK7brN8CSH+ksucbVh/tGIAQc55JdADgiO397hPfX/+9P7bPw/weqleK8Iwm4zSerAHDDPUJjr/lRzpprj2DHM/Qp4DSnbALACfVIbf/HiodZc+2KslyKQLqAy7yyCAAXzPSu2/gGtvg5/hZrbPxYLIdAEwGHuSUfAA6ITbopocgWP8LZYo2ER6ckApsIqM8v6QBQx9ukQ0QXCfslf/k7fhz+MngswuveBJTnmGwAKKP10MB/bPiQW6614W2xFALNBFTn2XMzgRmFVLFmPIL9qf9n/wQ8AAJaAjHXfmnd0knuTwAMf7EO4XYQQGAzAbX5JhUAajib7ToLIYAAAn8JKM05mQBQQqFTEUAAgT0FVObd0zAMH3s+6KO1367X0/v5/Og0PkcAAQQOJ5A9/yT+Eni4XNL+R0q3ADxdbvWzvqiPP/3X5/ffrxg6Ly9Zo+ezrsyPgD4xUikojgACCLQRUJl3MgEQ7CoobVqAKggg0KOA0pyTCoBoBiWcHpuTZ0YAgf0E1OabXAAEvRrSfu3Ayggg0IuA4lyTDIBoCEWsXhqV50QAgW0FVOeZbAAEvyratq3BagggcGQB5TkmHQDRFMp4R25ang0BBNYLqM8v+QCILVBHXN8mrIAAAkcTcJhbFgEQjeGAebQG5nkQQGCZgMu8sgmA2AYX1GUtw1UIIHAEAac5ZRUA0RxOuEdoZp4BAQTqBdzmk10AxFa4Ide3D2cigICrgONcsgyAaBBHbNfG5r4RQOC+gOs8sg2A2A5X9PutxKcIIOAk4DyHrAMgmsQZ36nJuVcEEPgu4D5/7APg9fue8A4CCCDQRMB9/lgHgDt+kw6lCAII7CrgPIdsA8AZfdduZHEEEGgu4DqPLAPAFbt5V1IQAQSaCTjOJbsAcERu1oEUQgCBVAG3+WQVAG64qZ1IcQQQSBFwmlM2AeCEmtJ1FEUAARkBl3llEQAumDLdx40ggEC6gMPckg8AB8T0TuMGEEBAUkB9fkkHgDqeZMdxUwggICWgPMdkA0AZTaq7uBkEEJAXUJ1nkgGgiiXfZdwgAgjICijONbkAUESS7ShuDAEErATU5ptUAKjhWHUWN4sAAhYCSnNOJgCUUCy6iJtEAAFbAZV59zQMw0em4tv1eno/nzNvgdoIIIBAikD2/HtOeepR0eFyOWUl4i0AT5db/awv6uNP//X5/fcrhs7LS9bo+awr8yOgT4xUCoojgAACbQRU5p1MAAS7CkqbFqAKAgj0KKA056QCIJpBCafH5uSZEUBgPwG1+SYXAEGvhrRfO7AyAgj0IqA41yQDIBpCEauXRuU5EUBgWwHVeSYbAMGvirZta7AaAggcWUB5jkkHQDSFMt6Rm5ZnQwCB9QLq80s+AGIL1BHXtwkrIIDA0QQc5pZFAERjOGAerYF5HgQQWCbgMq9sAiC2wQV1WctwFQIIHEHAaU5ZBUA0hxPuEZqZZ0AAgXoBt/lkFwCxFW7I9e3DmQgg4CrgOJcsAyAaxBHbtbG5bwQQuC/gOo9sAyC2wxX9fivxKQIIOAk4zyHrAIgmycanfu63Kv74Zwpk99/aZ7cPgADI2oRStxzXbsbc60vdcpx7/drzS91yXLve3OtL3XKce/3a80vdcly73tzrS91ynHv92vNL3XJcu97c60vdcpx7/drzs+quve+v1x8iAOKBWm/GuN749VfkPX49rjd+vUfNr2uO641ffz13j1+P641f71Hz65rjeuPXX8/d49fjeuPXe9T8uua43vj113P3+PW43vj1HjW/rtm63tfaW/76MAEQKK02ZarO1Ptbbti956T+1tI/rzflPPX+z6ssf3eqztT7yyv9fOVUnan3f15l+btTdabeX17p5ytb1fm5+rbvHioAgmbvzXm0/qPP127fo/UffU79dQKPfB99vq764/6m/lrh+9fv7Xu/+vafHi4AgmivTapdt/a8udtZu27tedSfJ1DrWnvevOr1fU39ubJ15+/lWld9n7MOGQBBtfVmzV1v7vmPtnfuenPPp/59gbmec8+/X31+P1P/kei8z7f2nFd9v7MPGwBBttWmLV1n6XXj7V66ztLrqP+7wFLHpdf9Xn15H1N/LLns9VaOy6rve9WhAyDo1m4e169rQPzwWyPg3j9rnr3FtYcPgEBc2kRLrxtv3NJ1ll5H/d8Fljouve736vTfUsel16n5j+9H6XUXARDgc5tp7vmPNnXuenPPp/59gbmec8+/X53+m+s593x1/0f3l/V5NwEQwLVNVXve3E2rXbf2POrPE6h1rT1vXnX6r9a19jw3/7n32+L8rgIgQB8116PP127Ko/UffU79dQKPfB99vq46/ffI99Hn7v5r73/r67sLgACcarKp97dGn6oz9T71txWYcp56f9vq9N+U89T7R/Pf+nnWrNdlAATYuNnGr9eg1lw7rjd+XbPGmnPG9cav16xdc+243vh1zRprzhnXG79es3bNteN649c1a6w5Z1xv/HrN2jXXjuuNX9esseaccb3x6zVrO13bbQDEJpVNL8fWG1fqliP12woU93JsW53+K+7l2Jt/6+f9qd7TMAwfP33Q6r2367VVKeoggAACcgLv53PaPT2nVf6rcObDZz879RFAAIFMga5/BJQJT20EEEAgW4AAyN4B6iOAAAJJAgRAEjxlEUAAgWwBAiB7B6iPAAIIJAkQAEnwlEUAAQSyBQiA7B2gPgIIIJAkQAAkwVMWAQQQyBYgALJ3gPoIIIBAkgABkARPWQQQQCBbgADI3gHqI4AAAkkCBEASPGURQACBbAECIHsHqI8AAggkCRAASfCURQABBLIFCIDsHaA+AgggkCRAACTBUxYBBBDIFiAAsneA+ggggECSAAGQBE9ZBBBAIFuAAMjeAeojgAACSQIEQBI8ZRFAAIFsAQIgeweojwACCCQJEABJ8JRFAAEEsgUIgOwdoD4CCCCQJEAAJMFTFgEEEMgWIACyd4D6CCCAQJIAAZAET1kEEEAgW4AAyN4B6iOAAAJJAgRAEjxlEUAAgWwBAiB7B6iPAAIIJAkQAEnwlEUAAQSyBQiA7B2gPgIIIJAk8G8qwLOhZgvuxwAAAABJRU5ErkJggg==",
"text/plain": [
"<PIL.Image.Image image mode=RGBA size=384x384>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The shield for shield_value = 0.9\n",
"\n",
"\n",
"Computing new shield\n",
"LOG: Starting with explicit model creation...\n",
"Elapsed time is 0.0031201839447021484 seconds.\n",
"LOG: Starting with model checking...\n",
"Elapsed time is 0.0002391338348388672 seconds.\n",
"LOG: Starting to translate shield...\n",
"Elapsed time is 0.013186454772949219 seconds.\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAGACAYAAACkx7W/AAAeCElEQVR4Ae3dzXUjO5KGYWqObNBqZtFeqJ3gbsaCdGDuUgbIClpBK8qL2V8nNAz1xW1VSkki/xDfl3h1TnWKSSQCeBCMqFJVdz8Nw/Bx4gsBBBBAoDuB/+hux2wYAQQQQOBTgAZAIiCAAAKdCtAAOj14to0AAgjQAMgBBBBAoFMBGkCnB8+2EUAAARoAOYAAAgh0KkAD6PTg2TYCCCBAAyAHEEAAgU4FaACdHjzbRgABBGgA5AACCCDQqQANoNODZ9sIIIAADYAcQAABBDoVoAF0evBsGwEEEKABkAMIIIBApwI0gE4Pnm0jgAACNAByAAEEEOhUgAbQ6cGzbQQQQIAGQA4ggAACnQrQADo9eLaNAAII0ADIAQQQQKBTARpApwfPthFAAAEaADmAAAIIdCpAA+j04Nk2AgggQAMgBxBAAIFOBWgAnR4820YAAQRoAOQAAggg0KkADaDTg2fbCCCAAA2AHEAAAQQ6FaABdHrwbBsBBBCgAZADCCCAQKcCNIBOD55tI4AAAs/ZBG/Xa/YSiI8AAp0K/PmPP1N3/vJ/L6f38zltDekNIHb+5595h3AZhtNwuaQdAPHxJ//yPn+nf6R99CUCd/0joNe/jqBcW59IiVuuxG8rUNzLtW3006nELVfitxXIcm+7y/vRum0A48Mfv77Ptv7dcbzx6/UR7s8wjjd+ff/p9e+O441fr49wf4ZxvPHr+0+vf3ccb/x6fYT7M4zjjV/ff3r9u+N449frI9yfoXW8+6vJe7fLBjB1+FP3tz6eqThT94m/rcCU89T9baP/+3f+43mJPxbZ53Ur531Wv+2s3TWAR4f/6P21/I/mf/Q+8dcJPPJ99P666NPFv8xL/CKxz3Vv331Wvd+sXTWA2sOvHTf3WGrnrR1H/HkCta614+ZFf1z8y3zELxLbXvdy3XaVbWfrpgHMPfy54x8d29z55o4n/n2BuZ5zx9+PXl/8yzzELxLbXLf23GZV+bN00QCWHv7S58bHunSepc8R/3eBpY5Ln/s9+vziX54nfpFYd93Kcd0qNJ8+fANYe/g8vy5x8cNvjUB2/qxZu8Ozh24Aa5OnHODSeZY+V+KW69J5lj5X4pbr0nmWPlfiluvSeZY+V+KW69J5lj5X4pbr0nmWPlfiluvSeZY+V+KW69J5lj5X4vZwPWwD2Prw5843d/yjZJs739zxxL8vMNdz7vj70ef/GIn4j0R5PwQO2QC2Tv6SKrXz1o4r89Zea+etHVcbt4yrnbd2XJm39lo7b+242rhlXO28tePKvLXX2nlrx9XGLeNq560dV+atvdbOWzuuNu6Rxx2uAex9+I/mf/T+2mR6NP+j94m/TuCR76P310V//CcB4q8V7uv5QzWAvZO/pMZUnKn75bmtrlNxpu5vFbfMMxVn6n55bqvrVJyp+1vFLfNMxZm6X57b6joVZ+r+VnHLPFNxpu6X57a6TsWZur9V3CPOc5gG0Prwx/HGr/dOlnG88Wvi7ysw9h6/3jf69z8JEH9v8WPOf4gG0Dr5SyqUuOVa7re6lrjl2ipuiVPilmu53+pa4pZrq7glTolbruV+q2uJW66t4pY4JW65lvutriVuubaKe6Q49g0g+/CJn/txwB//XAHv6NYNIPvD7330rB4BBHoXsG0AFP/eU5f9I4DAWgHLBkDxX3vsPI8AAggY/hfBKP6kLQIIILCNgNWfACj+2xw6syCAAAIhYNMAKP4kLAIIILCtgEUDoPhve+jMhgACCISAfAOg+JOoCCCAwD4C0g2A4r/PoTMrAgggEAKyDYDiT4IigAAC+wpINgCK/76HzuwIIIBACMg1AIo/iYkAAgi0EZBqABT/NodOFAQQQCAEZBoAxZ+ERAABBNoKPA3D8NE25O/R3q7X0/v5/PtNXiGAAAINBKL+ZH9l1r/n7M1H/OFyOWX9CeDWAE+XW/ysL+LjT/7lff5OiZ//X7ei8/LyklV6PuPK/AgoMPhCAAEEehBQqXcyDSAOXQWlhwRkjwggkCOgVOekGkAchxJOTnoQFQEEjiqgVt/kGkAcvBrSUZORfSGAQDsBxbom2QDiSBSx2qUKkRBA4EgCqvVMtgHE4auiHSkx2QsCCOwroFzHpBtAHIsy3r5pw+wIIOAuoF6/5BtAJIA6onuSsn4EENhewKFuWTSAOBoHzO1TiBkRQMBRwKVe2TSASAIXVMeEZc0IILCNgFOdsmoAcTxOuNukE7MggICLgFt9smsAkQhuyC7JyzoRQGC5gGNdsmwAcUSO2MtTiycRQEBZwLUe2TaASAZXdOVEZm0IIDBPwLkOWTeAOCZn/HlpxmgEEFATcK8/9g3gVS0jWA8CCHQj4F5/rBuAO343nxI2isCBBZzrkG0DcEY/8GeBrSHQpYBrPbJsAK7YXX4y2DQCnQg41iW7BuCI3En+s00Euhdwq09WDcANt/tPAwAIdCjgVKdsGoATaoc5z5YRQOCLgEu9smgALphfzp9vEUCgcwGHuiXfABwQO89zto8AAhMC6vVLugGo402cObcRQACBvwWU65hsA1BG+/tk+QYBBBCoEFCtZ5INQBWr4pwZggACCPwooFjX5BqAItKPp8lNBBBAYKaAWn2TagBqODPPluEIIIDAQwGlOifTAJRQHp4gAxBAAIEVAir17mkYho8V+1j96Nv1eno/n1fPwwQIIICAm0B2/XtWABsul1NWR7w1wNPlFj/ri/j4k399fv5+RdF5eckqPZ9xZX4E9ImRSkFwBBBAoI2ASr2TaQDBroLSJgWIggACPQoo1TmpBhDJoITTY3KyZwQQ2E9Arb7JNYCgV0PaLx2YGQEEehFQrGuSDSASQhGrl0RlnwggsK2Aaj2TbQDBr4q2bWowGwIIHFlAuY5JN4BICmW8Iycte0MAgfUC6vVLvgHEEagjrk8TZkAAgaMJONQtiwYQieGAebQEZj8IILBMwKVe2TSAOAYX1GUpw1MIIHAEAac6ZdUAIjmccI+QzOwBAQTqBdzqk10DiKNwQ65PH0YigICrgGNdsmwAkSCO2K6JzboRQOC+gGs9sm0AcRyu6PdTiXcRQMBJwLkOWTeASBJnfKckZ60IIPBdwL3+2DeA1+9nwh0EEECgiYB7/bFuAO74TTKUIAggsKuAcx2ybQDO6LtmI5MjgEBzAdd6ZNkAXLGbZyUBEUCgmYBjXbJrAI7IzTKQQAggkCrgVp+sGoAbbmomEhwBBFIEnOqUTQNwQk3JOoIigICMgEu9smgALpgy2cdCEEAgXcChbsk3AAfE9ExjAQggICmgXr+kG4A6nmTGsSgEEJASUK5jsg1AGU0qu1gMAgjIC6jWM8kGoIoln2UsEAEEZAUU65pcA1BEks0oFoYAAlYCavVNqgGo4VhlFotFAAELAaU6J9MAlFAssohFIoCArYBKvXsahuEjU/Htej29n8+ZSyA2AgggkCKQXf+eU3Y9CjpcLqesjnhrgKfLLX7WF/HxJ//6/Pz9iqLz8pJVej7jyvwI6BMjlYLgCCCAQBsBlXon0wCCXQWlTQoQBQEEehRQqnNSDSCSQQmnx+RkzwggsJ+AWn2TawBBr4a0XzowMwII9CKgWNckG0AkhCJWL4nKPhFAYFsB1Xom2wCCXxVt29RgNgQQOLKAch2TbgCRFMp4R05a9oYAAusF1OuXfAOII1BHXJ8mzIAAAkcTcKhbFg0gEsMB82gJzH4QQGCZgEu9smkAcQwuqMtShqcQQOAIAk51yqoBRHI44R4hmdkDAgjUC7jVJ7sGEEfhhlyfPoxEAAFXAce6ZNkAIkEcsV0Tm3UjgMB9Add6ZNsA4jhc0e+nEu8igICTgHMdsm4AkSTO+E5JzloRQOC7gHv9sW8Ar9/PhDsIIIBAEwH3+mPdANzxm2QoQRBAYFcB5zpk2wCc0XfNRiZHAIHmAq71yLIBuGI3z0oCIoBAMwHHumTXAByRm2UggRBAIFXArT5ZNQA33NRMJDgCCKQIONUpmwbghJqSdQRFAAEZAZd6ZdEAXDBlso+FIIBAuoBD3ZJvAA6I6ZnGAhBAQFJAvX5JNwB1PMmMY1EIICAloFzHZBuAMppUdrEYBBCQF1CtZ5INQBVLPstYIAIIyAoo1jW5BqCIJJtRLAwBBKwE1OqbVANQw7HKLBaLAAIWAkp1TqYBKKFYZBGLRAABWwGVevc0DMNHpuLb9Xp6P58zl0BsBBBAIEUgu/49p+x6FHS4XE5ZHfHWAE+XW/ysL+LjT/71+fn7FUXn5SWr9HzGlfkR0CdGKgXBEUAAgTYCKvVOpgEEuwpKmxQgCgII9CigVOekGkAkgxJOj8nJnhFAYD8Btfom1wCCXg1pv3RgZgQQ6EVAsa5JNoBICEWsXhKVfSKAwLYCqvVMtgEEvyratqnBbAggcGQB5Tom3QAiKZTxjpy07A0BBNYLqNcv+QYQR6COuD5NmAEBBI4m4FC3LBpAJIYD5tESmP0ggMAyAZd6ZdMA4hhcUJelDE8hgMARBJzqlFUDiORwwj1CMrMHBBCoF3CrT3YNII7CDbk+fRiJAAKuAo51ybIBRII4YrsmNutGAIH7Aq71yLYBxHG4ot9PJd5FAAEnAec6ZN0AIkmc8Z2SnLUigMB3Aff6Y98AXr+fCXcQQACBJgLu9ce6AbjjN8lQgiCAwK4CznXItgE4o++ajUyOAALNBVzrkWUDcMVunpUERACBZgKOdcmuATgiN8tAAiGAQKqAW32yagBuuKmZSHAEEEgRcKpTNg3ACTUl6wiKAAIyAi71yqIBuGDKZB8LQQCBdAGHuiXfABwQ0zONBSCAgKSAev2SbgDqeJIZx6IQQEBKQLmOyTYAZTSp7GIxCCAgL6BazyQbgCqWfJaxQAQQkBVQrGtyDUARSTajWBgCCFgJqNU3qQaghmOVWSwWAQQsBJTqnEwDUEKxyCIWiQACtgIq9e5pGIaPTMW36/X0fj5nLoHYCCCAQIpAdv17Ttn1KOhwuZyyOuKtAZ4ut/hZX8THn/zr8/P3K4rOy0tW6fmMK/MjoE+MVAqCI4AAAm0EVOqdTAMIdhWUNilAFAQQ6FFAqc5JNYBIBiWcHpOTPSNQK/Cft4Hxi696AbX6JtcAglINqf54GYlAPwL/e9tq/OKrTkCxrkk2gOBUxKo7ZkYh0IfAf9+2Gb/4eiygWs9kG0CQqqI9Pm5GIHBsgfid/3/99Ys/Bdw/a+U6Jt0AglUZ7/6x8y4CxxX4+jv/r98fd8fLdqZev+QbQLCrIy5LDZ5CwFPg9bbsf35Zenwf9/j6XcChblk0gGB1wPz9+HmFwDEFfvod/0/3jrn7ul251CubBhDsLqh1KcIoBPwE4p99/vHDsuMe/yT0XzBOdcqqAQSvE+6/0oH/ROA4Avd+p3/vveMI3N+JW32yawDB74Z8P2V4FwEfgXv/4ufeez47XL5Sx7pk2QDiiByxl6cWTyKQL/B6W0L808+pr3gvxvT45VqPbBtAJJkreo8fEPbsL/BHxRZqxlRMYzXEuQ5ZN4DIEmd8qyxnsV0LxF/w1vyMP8b09JfB7vXHvgG8dv2xZPMItBGY8/P9OWPbrH6/KO71x7oBuOPvl5bMjMC2AjW/+y8R54wtzzhfneuQbQNwRndOdtben0AU9Ht/+TsWibE0gbGK5mvLBkDx10wmVnVMgSU/0lnyjLueY12yawCOyO6Jzfr7FYjP29f/3Z9aiV7/94Hc6pNVA3DDrf2wMA4BVYE1P8pZ86yqR826nOqUTQNwQq1JEsYg4CDwx4pFrnl2RViJR13qlUUDcMGUyDwWgcBGAlv8HH+LOTbaTvNpHOqWfANwQGyeWQREoIHAFj/C2WKOBlvdLYR6/ZJuAOp4u2UNEyOQLBCfvSV/+Ttedq9/GfzVQbmOyTYAZbSvh8v3CBxR4I8NN7XlXBsuq+lUqvXsualCZTBVrMrlMwwBe4H/sd+B3gairv0SW5bcnwAo/mIZwnIQQGAzAbX6JtUA1HA2O3UmQgABBP4SUKpzMg1ACYVMRQABBPYUUKl3T8MwfOy50Udzv12vp/fz+dEw3kcAAQQOJ5Bd/yT+Eni4XNL+r+RuDfB0ucXP+iI+/uRfn5+/X1F0Xl6ySs9nXJkfAX1ipFIQHAEEEGgjoFLvZBpAsKugtEkBoiCAQI8CSnVOqgFEMijh9Jic7BkBBPYTUKtvcg0g6NWQ9ksHZkYAgV4EFOuaZAOIhFDE6iVR2ScCCGwroFrPZBtA8KuibZsazIYAAkcWUK5j0g0gkkIZ78hJy94QQGC9gHr9km8AcQTqiOvThBkQQOBoAg51y6IBRGI4YB4tgdkPAggsE3CpVzYNII7BBXVZyvAUAggcQcCpTlk1gEgOJ9wjJDN7QACBegG3+mTXAOIo3JDr04eRCCDgKuBYlywbQCSII7ZrYrNuBBC4L+Baj2wbQByHK/r9VOJdBBBwEnCuQ9YNIJLEGd8pyVkrAgh8F3CvP/YN4PX7mXAHAQQQaCLgXn+sG4A7fpMMJQgCCOwq4FyHbBuAM/qu2cjkCCDQXMC1Hlk2AFfs5llJQAQQaCbgWJfsGoAjcrMMJBACCKQKuNUnqwbghpuaiQRHAIEUAac6ZdMAnFBTso6gCCAgI+BSrywagAumTPaxEAQQSBdwqFvyDcABMT3TWAACCEgKqNcv6QagjieZcSwKAQSkBJTrmGwDUEaTyi4WgwAC8gKq9UyyAahiyWcZC0QAAVkBxbom1wAUkWQzioUhgICVgFp9k2oAajhWmcViEUDAQkCpzsk0ACUUiyxikQggYCugUu+ehmH4yFR8u15P7+dz5hKIjQACCKQIZNe/55Rdj4IOl8spqyPeGuDpcouf9UV8/Mm/Pj9/v6LovLxklZ7PuDI/AvrESKUgOAIIINBGQKXeyTSAYFdBaZMCREEAgR4FlOqcVAOIZFDC6TE52TMCCOwnoFbf5BpA0Ksh7ZcOzIwAAr0IKNY1yQYQCaGI1Uuisk8EENhWQLWeyTaA4FdF2zY1mA0BBI4soFzHpBtAJIUy3pGTlr0hgMB6AfX6Jd8A4gjUEdenCTMggMDRBBzqlkUDiMRwwDxaArMfBBBYJuBSr2waQByDC+qylOEpBBA4goBTnbJqAJEcTrhHSGb2gAAC9QJu9cmuAcRRuCHXpw8jEUDAVcCxLlk2gEgQR2zXxGbdCCBwX8C1Htk2gDgOV/T7qcS7CCDgJOBch6wbQCSJM75TkrNWBBD4LuBef+wbwOv3M+EOAggg0ETAvf5YNwB3/CYZShAEENhVwLkO2TYAZ/Rds5HJEUCguYBrPbJsAK7YzbOSgAgg0EzAsS7ZNQBH5GYZSCAEEEgVcKtPVg3ADTc1EwmOAAIpAk51yqYBOKGmZB1BEUBARsClXlk0ABdMmexjIQggkC7gULfkG4ADYnqmsQAEEJAUUK9f0g1AHU8y41gUAghICSjXMdkGoIwmlV0sBgEE5AVU65lkA1DFks8yFogAArICinVNrgEoIslmFAtDAAErAbX6JtUA1HCsMovFIoCAhYBSnZNpAEooFlnEIhFAwFZApd49DcPwkan4dr2e3s/nzCUQGwEEEEgRyK5/zym7HgUdLpdTVke8NcDT5RY/64v4+JN/fX7+fkXReXnJKj2fcWV+BPSJkUpBcAQQQKCNgEq9k2kAwa6C0iYFiIIAAj0KKNU5qQYQyaCE02NysmcEENhPQK2+yTWAoFdD2i8dmBkBBHoRUKxrkg0gEkIRq5dEZZ8IILCtgGo9k20Awa+Ktm1qMBsCCBxZQLmOSTeASAplvCMnLXtDAIH1Aur1S74BxBGoI65PE2ZAAIGjCTjULYsGEInhgHm0BGY/CCCwTMClXtk0gDgGF9RlKcNTCCBwBAGnOmXVACI5nHCPkMzsAQEE6gXc6pNdA4ijcEOuTx9GIoCAq4BjXbJsAJEgjtiuic26EUDgvoBrPbJtAHEcruj3U4l3EUDAScC5Dlk3gEgSZ3ynJGetCCDwXcC9/tg3gNfvZ8IdBBBAoImAe/2xbgDu+E0ylCAIILCrgHMdsm0Azui7ZiOTI4BAcwHXemTZAFyxm2clARFAoJmAY12yawCOyM0ykEAIIJAq4FafrBqAG25qJhIcAQRSBJzqlE0DcEJNyTqCIoCAjIBLvbJoAC6YMtnHQhBAIF3AoW7JNwAHxPRMYwEIICApoF6/pBuAOp5kxrEoBBCQElCuY7INQBlNKrtYDAIIyAuo1jPJBqCKJZ9lLBABBGQFFOuaXANQRJLNKBaGAAJWAmr1TaoBqOFYZRaLRQABCwGlOifTAJRQLLKIRSKAgK2ASr17GobhI1Px7Xo9vZ/PmUsgNgIIIJAikF3/nlN2PQo6XC6nrI54a4Cnyy1+1hfx8Sf/+vz8/Yqi8/KSVXo+48r8COgTI5WC4AgggEAbAZV6J9MAgl0FpU0KEAUBBHoUUKpzUg0gkkEJp8fkZM8IILCfgFp9k2sAQa+GtF86MDMCCPQioFjXJBtAJIQiVi+Jyj4RQGBbAdV6JtsAgl8VbdvUYDYEEDiygHIdk24AkRTKeEdOWvaGAALrBdTrl3wDiCNQR1yfJsyAAAJHE3CoWxYNIBLDAfNoCcx+EEBgmYBLvbJpAHEMLqjLUoanEEDgCAJOdcqqAURyOOEeIZnZAwII1Au41Se7BhBH4YZcnz6MRAABVwHHumTZACJBHLFdE5t1I4DAfQHXemTbAOI4XNHvpxLvIoCAk4BzHbJuAJEk2fjEz/2o4o9/pkB2/q3du30DCICsQyhxy3XtYcx9vsQt17nPrx1f4pbr2vnmPl/iluvc59eOL3HLde18c58vcct17vNrx5e45bp2vrnPl7jlOvf5teOz4q5d99fnD9EAYkOtD2Mcb/z6K/Ie34/jjV/vEfPrnON449dfx+7x/Tje+PUeMb/OOY43fv117B7fj+ONX+8R8+uc43jj11/H7vH9ON749R4xv87ZOt7X2Ft+f5gGECitDmUqztT9LQ/s3j6Jv7X0z/NNOU/d/3mW5Xen4kzdXx7p5yen4kzd/3mW5Xen4kzdXx7p5ydbxfk5+rZ3D9UAgmbvw3k0/6P31x7fo/kfvU/8dQKPfB+9vy764/wm/lrh+8/v7Xs/+vbvHq4BBNFeh1Q7b+24ucdZO2/tOOLPE6h1rR03L3p9XhN/rmzd+L1c66LvM+qQDSCotj6sufPNHf/oeOfON3c88e8LzPWcO/5+9Pn5TPxHovPe39pzXvT9Rh+2AQTZVoe2dJ6lz42Pe+k8S58j/u8CSx2XPvd79OV5TPyx5LLXWzkui77vU4duAEG39vB4fl0C4offGgH3/Fmz9xbPHr4BBOLSJFr63Pjgls6z9Dni/y6w1HHpc79HJ/+WOi59Ts1/vB6l1100gACfm0xzxz861LnzzR1P/PsCcz3njr8fnfyb6zl3vLr/o/Vlvd9NAwjg2qSqHTf30GrnrR1H/HkCta614+ZFJ/9qXWvHufnPXW+L8V01gAB9lFyP3l97KI/mf/Q+8dcJPPJ99P666OTfI99H77v7r13/1s931wACcCrJpu5vjT4VZ+o+8bcVmHKeur9tdPJvynnq/tH8t97Pmvm6bAABNk628es1qDXPjuONX9fMsWbMON749Zq5a54dxxu/rpljzZhxvPHrNXPXPDuON35dM8eaMeN449dr5q55dhxv/LpmjjVjxvHGr9fM7fRstw0gDqkcerm2PrgSt1yJ31aguJdr2+jkX3Ev1978W+/3p3hPwzB8/PRGq3tv12urUMRBAAEE5ATez+e0NT2nRf4rcObms/dOfAQQQCBToOsfAWXCExsBBBDIFqABZJ8A8RFAAIEkARpAEjxhEUAAgWwBGkD2CRAfAQQQSBKgASTBExYBBBDIFqABZJ8A8RFAAIEkARpAEjxhEUAAgWwBGkD2CRAfAQQQSBKgASTBExYBBBDIFqABZJ8A8RFAAIEkARpAEjxhEUAAgWwBGkD2CRAfAQQQSBKgASTBExYBBBDIFqABZJ8A8RFAAIEkARpAEjxhEUAAgWwBGkD2CRAfAQQQSBKgASTBExYBBBDIFqABZJ8A8RFAAIEkARpAEjxhEUAAgWwBGkD2CRAfAQQQSBKgASTBExYBBBDIFqABZJ8A8RFAAIEkARpAEjxhEUAAgWwBGkD2CRAfAQQQSBKgASTBExYBBBDIFqABZJ8A8RFAAIEkARpAEjxhEUAAgWwBGkD2CRAfAQQQSBKgASTBExYBBBDIFqABZJ8A8RFAAIEkgf8H2+6zoboNt04AAAAASUVORK5CYII=",
"text/plain": [
"<PIL.Image.Image image mode=RGBA size=384x384>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The shield for shield_value = 0.99\n",
"\n",
"\n",
"Computing new shield\n",
"LOG: Starting with explicit model creation...\n",
"Elapsed time is 0.0027511119842529297 seconds.\n",
"LOG: Starting with model checking...\n",
"Elapsed time is 0.0002467632293701172 seconds.\n",
"LOG: Starting to translate shield...\n",
"Elapsed time is 0.014038324356079102 seconds.\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAGACAYAAACkx7W/AAAd0UlEQVR4Ae3dT3LjWnLFYcqh8MgjO4LRjmgPehfyJjjzDrCBfkMtQKvgKriGHmgFPe3524TMVLzbrYIEEH9vnoP7U8QziiRwE/huKk+Vqmw/dV33ceILAQQQQKA5gX9r7ol5YAQQQACBTwECgEZAAAEEGhUgABrdeB4bAQQQIADoAQQQQKBRAQKg0Y3nsRFAAAECgB5AAAEEGhUgABrdeB4bAQQQIADoAQQQQKBRAQKg0Y3nsRFAAAECgB5AAAEEGhUgABrdeB4bAQQQIADoAQQQQKBRAQKg0Y3nsRFAAAECgB5AAAEEGhUgABrdeB4bAQQQIADoAQQQQKBRAQKg0Y3nsRFAAAECgB5AAAEEGhUgABrdeB4bAQQQIADoAQQQQKBRAQKg0Y3nsRFAAAECgB5AAAEEGhUgABrdeB4bAQQQIADoAQQQQKBRAQKg0Y3nsRFAAAECgB5AAAEEGhUgABrdeB4bAQQQIADoAQQQQKBRAQKg0Y3nsRFAAAECgB5AAAEEGhUgABrdeB4bAQQQeM4meL3dsm+B+ggg0KjA73/5PfXJz/84n94ul7R7SA+AePLff8/bhGvXnbrrNW0DqI8//Zf3/Xf6S9q3vkThpn8E9PLHFpRj7R0pdcuR+nUFins51q1+OpW65Uj9ugJZ7nWfcrxaswHQ3/z+63G29Z/26/Vfr68wvkK/Xv/1+NXrP+3X679eX2F8hX69/uvxq9d/2q/Xf72+wvgK/Xr91+NXr/+0X6//en2F8RVq1xu/m7xPmwyAoc0fen/r7RmqM/Q+9bcVGHIeen/b6v/6nX9/Xer3RfZ5Xct5n7vfdtXmAuDR5j/6fC3/o/UffU79dQKPfB99vq768PAv61K/SOxz3Nt3n7veb9WmAmDq5k89b+62TF136nnUnycw1XXqefOqPx7+ZT3qF4ltj3u5bnuXdVdrJgDmbv7c8x9t29z15p5P/XGBuZ5zzx+vPn34l3WoXyS2OW7tuc1d5a/SRAAs3fyl1/W3dek6S6+j/q8CSx2XXvdr9fnDv1xP/SKx7riV47q70Lz68AGwdvO5fl3j4offGoHs/llz7w7XHjoA1jZP2cCl6yy9rtQtx6XrLL2u1C3Hpessva7ULcel6yy9rtQtx6XrLL2u1C3Hpessva7ULcel6yy9rtQtx6XrLL2u1G3heNgA2Hrz56439/xHzTZ3vbnnU39cYK7n3PPHq8//MRL1H4nyeQgcMgC2bv7SKlPXnXpeWXfqceq6U8+bWrecN3XdqeeVdacep6479bypdct5U9edel5Zd+px6rpTz5tat5w3dd2p55V1px6nrjv1vKl1j3ze4QJg781/tP6jz9c206P1H31O/XUCj3wffb6u+uM/CVB/rXBb1x8qAPZu/tIaQ3WG3i/XbXUcqjP0/lZ1yzpDdYbeL9dtdRyqM/T+VnXLOkN1ht4v1211HKoz9P5Wdcs6Q3WG3i/XbXUcqjP0/lZ1j7jOYQKg9ub36/Vf790s/Xr919TfV6Dv3X+9b/XvfxKg/t7ix1z/EAFQu/lLK5S65Vjer3UsdcuxVt1Sp9Qtx/J+rWOpW4616pY6pW45lvdrHUvdcqxVt9QpdcuxvF/rWOqWY626R6pjHwDZm0/93G8H/PHPFfCubh0A2d/83lvP3SOAQOsCtgHA8G+9dXl+BBBYK2AZAAz/tdvO9QgggIDh/yIYw5+2RQABBLYRsPoTAMN/m01nFQQQQCAEbAKA4U/DIoAAAtsKWAQAw3/bTWc1BBBAIATkA4DhT6MigAAC+whIBwDDf59NZ1UEEEAgBGQDgOFPgyKAAAL7CkgGAMN/301ndQQQQCAE5AKA4U9jIoAAAnUEpAKA4V9n06mCAAIIhIBMADD8aUgEEECgrsBT13UfdUv+Wu31dju9XS6/vskrBBBAoIJAzJ/sr8z595z98FG/u15PWX8CuAfg6Xqvn/VFffzpv7zvv1Pi9//7feicz+es0fNZV+ZHQIHBFwIIINCCgMq8kwmA2HQVlBYakGdEAIEcAaU5JxUAsR1KODntQVUEEDiqgNp8kwuA2Hg1pKM2I8+FAAL1BBTnmmQAxJYoYtVrFSohgMCRBFTnmWwAxOaroh2pMXkWBBDYV0B5jkkHQGyLMt6+bcPqCCDgLqA+v+QDIBpAHdG9Sbl/BBDYXsBhblkEQGyNA+b2LcSKCCDgKOAyr2wCIJrABdWxYblnBBDYRsBpTlkFQGyPE+427cQqCCDgIuA2n+wCIBrBDdmleblPBBBYLuA4lywDILbIEXt5a3ElAggoC7jOI9sAiGZwRVduZO4NAQTmCTjPIesAiG1yxp/XZpyNAAJqAu7zxz4AXtQ6gvtBAIFmBNznj3UAuOM3813CgyJwYAHnOWQbAM7oB/5e4NEQaFLAdR5ZBoArdpPfGTw0Ao0IOM4luwBwRG6k/3lMBJoXcJtPVgHghtv8dwMACDQo4DSnbALACbXBnueREUDgi4DLvLIIABfML/vPLxFAoHEBh7klHwAOiI33OY+PAAIDAurzSzoA1PEG9py3EUAAgX8KKM8x2QBQRvvnzvILBBBAYIKA6jyTDABVrAn7zCkIIIDAjwKKc00uABSRftxN3kQAAQRmCqjNN6kAUMOZubecjgACCDwUUJpzMgGghPJwBzkBAQQQWCGgMu+euq77WPEcqy99vd1Ob5fL6nVYAAEEEHATyJ5/zwpg3fV6ykrEewCervf6WV/Ux5/+a/P77z2GzvmcNXo+68r8COgTI5WC4ggggEAdAZV5JxMAwa6CUqcFqIIAAi0KKM05qQCIZlDCabE5eWYEENhPQG2+yQVA0Ksh7dcOrIwAAq0IKM41yQCIhlDEaqVReU4EENhWQHWeyQZA8KuibdsarIYAAkcWUJ5j0gEQTaGMd+Sm5dkQQGC9gPr8kg+A2AJ1xPVtwgoIIHA0AYe5ZREA0RgOmEdrYJ4HAQSWCbjMK5sAiG1wQV3WMlyFAAJHEHCaU1YBEM3hhHuEZuYZEEBguoDbfLILgNgKN+Tp7cOZCCDgKuA4lywDIBrEEdu1sblvBBAYF3CdR7YBENvhij7eSnyKAAJOAs5zyDoAokmc8Z2anHtFAIHvAu7zxz4AXr7vCe8ggAACVQTc5491ALjjV+lQiiCAwK4CznPINgCc0XftRhZHAIHqAq7zyDIAXLGrdyUFEUCgmoDjXLILAEfkah1IIQQQSBVwm09WAeCGm9qJFEcAgRQBpzllEwBOqCldR1EEEJARcJlXFgHgginTfdwIAgikCzjMLfkAcEBM7zRuAAEEJAXU55d0AKjjSXYcN4UAAlICynNMNgCU0aS6i5tBAAF5AdV5JhkAqljyXcYNIoCArIDiXJMLAEUk2Y7ixhBAwEpAbb5JBYAajlVncbMIIGAhoDTnZAJACcWii7hJBBCwFVCZd09d131kKr7ebqe3yyXzFqiNAAIIpAhkz7/nlKfuFe2u11NWIt4D8HS918/6oj7+9F+b33/vMXTO56zR81lX5kdAnxipFBRHAAEE6giozDuZAAh2FZQ6LUAVBBBoUUBpzkkFQDSDEk6LzckzI4DAfgJq800uAIJeDWm/dmBlBBBoRUBxrkkGQDSEIlYrjcpzIoDAtgKq80w2AIJfFW3b1mA1BBA4soDyHJMOgGgKZbwjNy3PhgAC6wXU55d8AMQWqCOubxNWQACBowk4zC2LAIjGcMA8WgPzPAggsEzAZV7ZBEBsgwvqspbhKgQQOIKA05yyCoBoDifcIzQzz4AAAtMF3OaTXQDEVrghT28fzkQAAVcBx7lkGQDRII7Yro3NfSOAwLiA6zyyDYDYDlf08VbiUwQQcBJwnkPWARBN4ozv1OTcKwIIfBdwnz/2AfDyfU94BwEEEKgi4D5/rAPAHb9Kh1IEAQR2FXCeQ7YB4Iy+azeyOAIIVBdwnUeWAeCKXb0rKYgAAtUEHOeSXQA4IlfrQAohgECqgNt8sgoAN9zUTqQ4AgikCDjNKZsAcEJN6TqKIoCAjIDLvLIIABdMme7jRhBAIF3AYW7JB4ADYnqncQMIICApoD6/pANAHU+y47gpBBCQElCeY7IBoIwm1V3cDAIIyAuozjPJAFDFku8ybhABBGQFFOeaXAAoIsl2FDeGAAJWAmrzTSoA1HCsOoubRQABCwGlOScTAEooFl3ETSKAgK2Ayrx76rruI1Px9XY7vV0umbdAbQQQQCBFIHv+Pac8da9od72eshLxHoCn671+1hf18af/2vz+e4+hcz5njZ7PujI/AvrESKWgOAIIIFBHQGXeyQRAsKug1GkBqiCAQIsCSnNOKgCiGZRwWmxOnhkBBPYTUJtvcgEQ9GpI+7UDKyOAQCsCinNNMgCiIRSxWmlUnhMBBLYVUJ1nsgEQ/Kpo27YGqyGAwJEFlOeYdABEUyjjHblpeTYEEFgvoD6/5AMgtkAdcX2bsAICCBxNwGFuWQRANIYD5tEamOdBAIFlAi7zyiYAYhtcUJe1DFchgMARBJzmlFUARHM44R6hmXkGBBCYLuA2n+wCILbCDXl6+3AmAgi4CjjOJcsAiAZxxHZtbO4bAQTGBVznkW0AxHa4oo+3Ep8igICTgPMcsg6AaBJnfKcm514RQOC7gPv8sQ+Al+97wjsIIIBAFQH3+WMdAO74VTqUIgggsKuA8xyyDQBn9F27kcURQKC6gOs8sgwAV+zqXUlBBBCoJuA4l+wCwBG5WgdSCAEEUgXc5pNVALjhpnYixRFAIEXAaU7ZBIATakrXURQBBGQEXOaVRQC4YMp0HzeCAALpAg5zSz4AHBDTO40bQAABSQH1+SUdAOp4kh3HTSGAgJSA8hyTDQBlNKnu4mYQQEBeQHWeSQaAKpZ8l3GDCCAgK6A41+QCQBFJtqO4MQQQsBJQm29SAaCGY9VZ3CwCCFgIKM05mQBQQrHoIm4SAQRsBVTm3VPXdR+Ziq+32+ntcsm8BWojgAACKQLZ8+855al7Rbvr9ZSViPcAPF3v9bO+qI8//dfm9997DJ3zOWv0fNaV+RHQJ0YqBcURQACBOgIq804mAIJdBaVOC1AFAQRaFFCac1IBEM2ghNNic/LMCCCwn4DafJMLgKBXQ9qvHVgZAQRaEVCca5IBEA2hiNVKo/KcCCCwrYDqPJMNgOBXRdu2NVgNAQSOLKA8x6QDIJpCGe/ITcuzIYDAegH1+SUfALEF6ojr24QVEEDgaAIOc8siAKIxHDCP1sA8DwIILBNwmVc2ARDb4IK6rGW4CgEEjiDgNKesAiCawwn3CM3MMyCAwHQBt/lkFwCxFW7I09uHMxFAwFXAcS5ZBkA0iCO2a2Nz3wggMC7gOo9sAyC2wxV9vJX4FAEEnASc55B1AESTOOM7NTn3igAC3wXc5499ALx83xPeQQABBKoIuM8f6wBwx6/SoRRBAIFdBZznkG0AOKPv2o0sjgAC1QVc55FlALhiV+9KCiKAQDUBx7lkFwCOyNU6kEIIIJAq4DafrALADTe1EymOAAIpAk5zyiYAnFBTuo6iCCAgI+AyrywCwAVTpvu4EQQQSBdwmFvyAeCAmN5p3AACCEgKqM8v6QBQx5PsOG4KAQSkBJTnmGwAKKNJdRc3gwAC8gKq80wyAFSx5LuMG0QAAVkBxbkmFwCKSLIdxY0hgICVgNp8kwoANRyrzuJmEUDAQkBpzskEgBKKRRdxkwggYCugMu+euq77yFR8vd1Ob5dL5i1QGwEEEEgRyJ5/zylP3SvaXa+nrES8B+Dpeq+f9UV9/Om/Nr//3mPonM9Zo+ezrsyPgD4xUikojgACCNQRUJl3MgEQ7CoodVqAKggg0KKA0pyTCoBoBiWcFpuTZ0YAgf0E1OabXAAEvRrSfu3Ayggg0IqA4lyTDIBoCEWsVhqV50QAgW0FVOeZbAAEvyratq3BagggcGQB5TkmHQDRFMp4R25ang0BBNYLqM8v+QCILVBHXN8mrIAAAkcTcJhbFgEQjeGAebQG5nkQQGCZgMu8sgmA2AYX1GUtw1UIIHAEAac5ZRUA0RxOuEdoZp4BAQSmC7jNJ7sAiK1wQ57ePpyJAAKuAo5zyTIAokEcsV0bm/tGAIFxAdd5ZBsAsR2u6OOtxKcIIOAk4DyHrAMgmsQZ36nJuVcEEPgu4D5/7APg5fue8A4CCCBQRcB9/lgHgDt+lQ6lCAII7CrgPIdsA8AZfdduZHEEEKgu4DqPLAPAFbt6V1IQAQSqCTjOJbsAcESu1oEUQgCBVAG3+WQVAG64qZ1IcQQQSBFwmlM2AeCEmtJ1FEUAARkBl3llEQAumDLdx40ggEC6gMPckg8AB8T0TuMGEEBAUkB9fkkHgDqeZMdxUwggICWgPMdkA0AZTaq7uBkEEJAXUJ1nkgGgiiXfZdwgAgjICijONbkAUESS7ShuDAEErATU5ptUAKjhWHUWN4sAAhYCSnNOJgCUUCy6iJtEAAFbAZV599R13Uem4uvtdnq7XDJvgdoIIIBAikD2/HtOeepe0e56PWUl4j0AT9d7/awv6uNP/7X5/fceQ+d8zho9n3VlfgT0iZFKQXEEEECgjoDKvJMJgGBXQanTAlRBAIEWBZTmnFQARDMo4bTYnDwzAgjsJ6A23+QCIOjVkPZrB1ZGAIFWBBTnmmQAREMoYrXSqDwnAghsK6A6z2QDIPhV0bZtDVZDAIEjCyjPMekAiKZQxjty0/JsCCCwXkB9fskHQGyBOuL6NmEFBBA4moDD3LIIgGgMB8yjNTDPgwACywRc5pVNAMQ2uKAuaxmuQgCBIwg4zSmrAIjmcMI9QjPzDAggMF3AbT7ZBUBshRvy9PbhTAQQcBVwnEuWARAN4ojt2tjcNwIIjAu4ziPbAIjtcEUfbyU+RQABJwHnOWQdANEkzvhOTc69IoDAdwH3+WMfAC/f94R3EEAAgSoC7vPHOgDc8at0KEUQQGBXAec5ZBsAzui7diOLI4BAdQHXeWQZAK7Y1buSggggUE3AcS7ZBYAjcrUOpBACCKQKuM0nqwBww03tRIojgECKgNOcsgkAJ9SUrqMoAgjICLjMK4sAcMGU6T5uBAEE0gUc5pZ8ADggpncaN4AAApIC6vNLOgDU8SQ7jptCAAEpAeU5JhsAymhS3cXNIICAvIDqPJMMAFUs+S7jBhFAQFZAca7JBYAikmxHcWMIIGAloDbfpAJADceqs7hZBBCwEFCaczIBoIRi0UXcJAII2AqozLunrus+MhVfb7fT2+WSeQvURgABBFIEsuffc8pT94p21+spKxHvAXi63utnfVEff/qvze+/9xg653PW6PmsK/MjoE+MVAqKI4AAAnUEVOadTAAEuwpKnRagCgIItCigNOekAiCaYQ7On+/nx398IYAAAg4Cc+ZbjeeRC4B46KlIf72fG//xhQACCKgLTJ1rNZ9DMgACYArW/93Pi//4QgABBJQFpsyzjPuXDYDAGEOL3/n/zx//8aeA0OILAQQUBcbmWPb9SgdA4Azhff2d/9dfZ4NSHwEEECgCQ/OrfJ59lA+AAOojvtzf+98vcvHreI8vBBBAQEWgP7dU7uvrfVgEQNzwV8yffsf/03tfH5RfI4AAArUEvs6rWjWX1LEJgHi4QI1/9vlbvOh9xXv8k9AeCi8RQKC6gMvwDxirAIgb/lv8j4Ev/hQwAMPbCCBQRcBp+AeIXQD898g28q+BRnD4CAEEdhVwG/6BYRUA/3G/4X8f2cL4Z6EvI5/zEQIIILCHgOPwDwerABj73X/Z1N/KLzgigAACFQRch3/Q2ARA/M7/PydsZvw9AH8ZPAGKUxBAYLWA8/CPh7cJgD/N2Cr+LmAGFqcigMBigZfFV2pcaBMA/zXDi38NNAOLUxFAYJWAcwhYBED86GfsL3/7uxd/GUwI9FV4jQACewm4hoBFAEz5y9/+xvJjoL4IrxFAYE8BxxCQD4D4p5/x39wv/u8DzRXjfAQQWCvgFgLyARA//ln6xY+BlspxHQIILBVwCgH5AFjy45+ycb+VX3BEAAEEKgq4hIB0APxpgw3j7wI2QGQJBBCYLeAQAtIBMOeffg7tDj8GGpLhfQQQ2FtAPQRkA2DpX/72N5S/DO6L8BoBBGoKKIeAbAD8fcMd+m3DtVgKAQQQmCugGgLPcx+kxvmqWDWenRoIIHBMgZhr72KPJvcnAIa/WIdwOwggsJmA2nyTCgA1nM12nYUQQACBPwSU5pxMACih0KkIIIDAngIq8+6p67qPPR/00dqvt9vp7XJ5dBqfI4AAAocTyJ5/En8J3F2vaf+vHO8BeLre62d9UR9/+q/N77/3GDrnc9bo+awr8yOgT4xUCoojgAACdQRU5p1MAAS7CkqdFqAKAgi0KKA056QCIJpBCafF5uSZEUBgPwG1+SYXAEGvhrRfO7AyAgi0IqA41yQDIBpCEauVRuU5EUBgWwHVeSYbAMGvirZta7AaAggcWUB5jkkHQDSFMt6Rm5ZnQwCB9QLq80s+AGIL1BHXtwkrIIDA0QQc5pZFAERjOGAerYF5HgQQWCbgMq9sAiC2wQV1WctwFQIIHEHAaU5ZBUA0hxPuEZqZZ0AAgekCbvPJLgBiK9yQp7cPZyKAgKuA41yyDIBoEEds18bmvhFAYFzAdR7ZBkBshyv6eCvxKQIIOAk4zyHrAIgmycanfu63Kv74Zwpk99/aZ7cPgADI2oRStxzXbsbc60vdcpx7/drzS91yXLve3OtL3XKce/3a80vdcly73tzrS91ynHv92vNL3XJcu97c60vdcpx7/drzs+quve+v1x8iAOKBam9Gv17/9VfkPX7dr9d/vUfNr2v26/Vffz13j1/36/Vf71Hz65r9ev3XX8/d49f9ev3Xe9T8uma/Xv/113P3+HW/Xv/1HjW/rlm73tfaW/76MAEQKLU2ZajO0PtbbtjYc1J/a+mf1xtyHnr/51WWvztUZ+j95ZV+vnKoztD7P6+y/N2hOkPvL6/085W16vxcfdt3DxUAQbP35jxa/9Hna7fv0fqPPqf+OoFHvo8+X1f9cX9Tf63w+PV7+45X3/7TwwVAEO21SVPXnXre3O2cuu7U86g/T2Cq69Tz5lWf3tfUnys77fy9XKdV3+esQwZAUG29WXPXm3v+o+2du97c86k/LjDXc+7549Xn9zP1H4nO+3xrz3nV9zv7sAEQZFtt2tJ1ll7X3+6l6yy9jvq/Cix1XHrdr9WX9zH1+5LLXm/luKz6vlcdOgCCbu3mcf26BsQPvzUC7v2z5tlrXHv4AAjEpU209Lr+xi1dZ+l11P9VYKnj0ut+rU7/LXVcep2af/9+lF43EQABPreZ5p7/aFPnrjf3fOqPC8z1nHv+eHX6b67n3PPV/R/dX9bnzQRAAE9tqqnnzd20qetOPY/68wSmuk49b151+m+q69Tz3Pzn3m+N85sKgAB91FyPPl+7KY/Wf/Q59dcJPPJ99Pm66vTfI99Hn7v7r73/ra9vLgACcKjJht7fGn2oztD71N9WYMh56P1tq9N/Q85D7x/Nf+vnWbNekwEQYP1m679egzrl2n69/uspa6w5p1+v/3rN2lOu7dfrv56yxppz+vX6r9esPeXafr3+6ylrrDmnX6//es3aU67t1+u/nrLGmnP69fqv16ztdG2zARCbVDa9HGtvXKlbjtSvK1Dcy7FudfqvuJdja/61n/enek9d13389EGt915vt1qlqIMAAgjICbxdLmn39JxW+Y/CmQ+f/ezURwABBDIFmv4RUCY8tRFAAIFsAQIgeweojwACCCQJEABJ8JRFAAEEsgUIgOwdoD4CCCCQJEAAJMFTFgEEEMgWIACyd4D6CCCAQJIAAZAET1kEEEAgW4AAyN4B6iOAAAJJAgRAEjxlEUAAgWwBAiB7B6iPAAIIJAkQAEnwlEUAAQSyBQiA7B2gPgIIIJAkQAAkwVMWAQQQyBYgALJ3gPoIIIBAkgABkARPWQQQQCBbgADI3gHqI4AAAkkCBEASPGURQACBbAECIHsHqI8AAggkCRAASfCURQABBLIFCIDsHaA+AgggkCRAACTBUxYBBBDIFiAAsneA+ggggECSAAGQBE9ZBBBAIFuAAMjeAeojgAACSQIEQBI8ZRFAAIFsAQIgeweojwACCCQJEABJ8JRFAAEEsgUIgOwdoD4CCCCQJEAAJMFTFgEEEMgWIACyd4D6CCCAQJLA/wP+1KlL5xeiNQAAAABJRU5ErkJggg==",
"text/plain": [
"<PIL.Image.Image image mode=RGBA size=384x384>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The shield for shield_value = 0.999\n",
"\n",
"\n",
"Computing new shield\n",
"LOG: Starting with explicit model creation...\n",
"Elapsed time is 0.0026831626892089844 seconds.\n",
"LOG: Starting with model checking...\n",
"Elapsed time is 0.00027632713317871094 seconds.\n",
"LOG: Starting to translate shield...\n",
"Elapsed time is 0.013882875442504883 seconds.\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAGACAYAAACkx7W/AAAeG0lEQVR4Ae3bP3IsW1bF4RKhMZQFRPQsBIMoD3oCOQHA0wBkNgygRgBeTYKLhdUWRkcTREA8AwsLR51b0ee2bupmVf49e608v4pQ1FVV1tknv7O117t67z11Xfd+4oEAAggg0JzAnzV3x9wwAggggMCHAAFAIyCAAAKNChAAjR48t40AAggQAPQAAggg0KgAAdDowXPbCCCAAAFADyCAAAKNChAAjR48t40AAggQAPQAAggg0KgAAdDowXPbCCCAAAFADyCAAAKNChAAjR48t40AAggQAPQAAggg0KgAAdDowXPbCCCAAAFADyCAAAKNChAAjR48t40AAggQAPQAAggg0KgAAdDowXPbCCCAAAFADyCAAAKNChAAjR48t40AAggQAPQAAggg0KgAAdDowXPbCCCAAAFADyCAAAKNChAAjR48t40AAggQAPQAAggg0KgAAdDowXPbCCCAAAFADyCAAAKNChAAjR48t40AAggQAPQAAggg0KgAAdDowXPbCCCAAAFADyCAAAKNChAAjR48t40AAgg8ZxO83m7ZW6A+Agg0KvDLr35JvfPz786nt8slbQ/pARB3/ssveYdw7bpTd72mHQD18af/8n7+Tr9K+9GXKNz0r4Be/ngE5bn2iZS65Zn6dQWKe3muW/10KnXLM/XrCmS5173L+9WaDYDh4Q+/v8+2/t1hveH36yvcX2FYb/j9/U+vf3dYb/j9+gr3VxjWG35//9Pr3x3WG36/vsL9FYb1ht/f//T6d4f1ht+vr3B/hdr17u8m790mA2Ds8Mde3/p4xuqMvU79bQXGnMde37b6n/7Jf7gu9Yci+3xfy3mf3W+7anMB8OjwH72/lv/R+o/ep/46gUe+j95fV318+Jd1qV8k9nne23efXe+3alMBMPXwp14391imrjv1OurPE5jqOvW6edUfD/+yHvWLxLbPe7luu8u6qzUTAHMPf+71j45t7npzr6f+fYG5nnOvv199+vAv61C/SGzzvLXnNrvKX6WJAFh6+Es/NzzWpess/Rz1fxRY6rj0cz9Wnz/8y+epXyTWPW/luG4Xmp8+fACsPXw+v65x8cNvjUB2/6zZu8NnDx0Aa5unHODSdZZ+rtQtz0vXWfq5Urc8L11n6edK3fK8dJ2lnyt1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",
"text/plain": [
"<PIL.Image.Image image mode=RGBA size=384x384>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The shield for shield_value = 0.9999\n",
"\n",
"\n",
"Computing new shield\n",
"LOG: Starting with explicit model creation...\n",
"Elapsed time is 0.002956867218017578 seconds.\n",
"LOG: Starting with model checking...\n",
"Elapsed time is 0.00025081634521484375 seconds.\n",
"LOG: Starting to translate shield...\n",
"Elapsed time is 0.014654159545898438 seconds.\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAGACAYAAACkx7W/AAAd+klEQVR4Ae3cz3EryXLFYVBBG7B/XlwrYEVbQQO4lByABdIOToheaCGtxokrJGPqPd4mG+i/ledU/W7ECwyA7srqr5J5ZjgjvQzD8PvEHwQQQACB7gT+rbsn5oERQAABBD4FCAAaAQEEEOhUgADo9OB5bAQQQIAAoAcQQACBTgUIgE4PnsdGAAEECAB6AAEEEOhUgADo9OB5bAQQQIAAoAcQQACBTgUIgE4PnsdGAAEECAB6AAEEEOhUgADo9OB5bAQQQIAAoAcQQACBTgUIgE4PnsdGAAEECAB6AAEEEOhUgADo9OB5bAQQQIAAoAcQQACBTgUIgE4PnsdGAAEECAB6AAEEEOhUgADo9OB5bAQQQIAAoAcQQACBTgUIgE4PnsdGAAEECAB6AAEEEOhUgADo9OB5bAQQQIAAoAcQQACBTgUIgE4PnsdGAAEECAB6AAEEEOhUgADo9OB5bAQQQIAAoAcQQACBTgUIgE4PnsdGAAEECAB6AAEEEOhUgADo9OB5bAQQQOA1m+DtdsveAvURQKBTgb/+8Vfqk5//53x6v1zS9pAeAPHkf/2VdwjXYTgN12vaAVAff/ov7+fv9I+0H32Jwl3/CujX30dQXmufSKlbXqlfV6C4l9e61U+nUre8Ur+uQJZ73ad8XK3bABgf/vj9Y7bt347rjd9vr/B4hXG98fvHd2//dlxv/H57hccrjOuN3z++e/u343rj99srPF5hXG/8/vHd278d1xu/317h8Qq16z3eTd63XQbA1OFPfb738UzVmfqc+vsKTDlPfb5v9X/9nf94XeqPRY55X8v5mN3vu2p3AfDs8J99v5X/2frPvqf+NoFnvs++31Z9eviXdalfJI55Pdr3mF0ft2pXATD38Odet/RY5q479zrqLxOY6zr3umXVnw//sh71i8S+r0e57rvLuqt1EwBLD3/p9c+Obel6S6+n/mOBpZ5Lr39cff7wL+tQv0js87q35z67yl+liwBYe/hr7xsf69p11t5H/T8F1jquve/P6suHf7mf+kVi2+tejtt2oXl38wGw9fC5f1vj4offFoHs/tmyd4d7mw6Arc1TDnDtOmvvK3XL69p11t5X6pbXteusva/ULa9r11l7X6lbXteus/a+Ure8rl1n7X2lbnldu87a+0rd8rp2nbX3lbo9vDYbAHsf/tL1ll7/rNmWrrf0euo/FljqufT6x9WX/xqJ+s9E+T4EmgyAvZu/tMrcdedeV9ad+zp33bnXza1brpu77tzryrpzX+euO/e6uXXLdXPXnXtdWXfu69x15143t265bu66c68r6859nbvu3Ovm1m35uuYC4OjDf7b+s++3NtOz9Z99T/1tAs98n32/rfrzfxKg/lbhvu5vKgCObv7SGlN1pj4v9+31OlVn6vO96pZ1pupMfV7u2+t1qs7U53vVLetM1Zn6vNy31+tUnanP96pb1pmqM/V5uW+v16k6U5/vVbfFdZoJgNqHP643fn90s4zrjd9T/1iBsff4/bHVv/+TAPWPFm9z/SYCoHbzl1Yodctr+bzWa6lbXmvVLXVK3fJaPq/1WuqW11p1S51St7yWz2u9lrrltVbdUqfULa/l81qvpW55rVW3pTr2AZB9+NTP/XHAH/9cAe/q1gGQ/cPvffTsHgEEehewDQCGf++ty/MjgMBWAcsAYPhvPXbuRwABBAz/D8EY/rQtAgggsI+A1T8BMPz3OXRWQQABBELAJgAY/jQsAgggsK+ARQAw/Pc9dFZDAAEEQkA+ABj+NCoCCCBwjIB0ADD8jzl0VkUAAQRCQDYAGP40KAIIIHCsgGQAMPyPPXRWRwABBEJALgAY/jQmAgggUEdAKgAY/nUOnSoIIIBACMgEAMOfhkQAAQTqCrwMw/C7bsk/q73dbqf3y+XPD3mHAAIIVBCI+ZP9J3P+vWY/fNQfrtdT1j8B3APwdL3Xz/pDffzpv7yfv1Piz//Hfeicz+es0fNZV+ZXQIHBHwQQQKAHAZV5JxMAcegqKD00IM+IAAI5AkpzTioA4jiUcHLag6oIINCqgNp8kwuAOHg1pFabkedCAIF6AopzTTIA4kgUseq1CpUQQKAlAdV5JhsAcfiqaC01Js+CAALHCijPMekAiGNRxju2bVgdAQTcBdTnl3wARAOoI7o3KftHAIH9BRzmlkUAxNE4YO7fQqyIAAKOAi7zyiYAoglcUB0blj0jgMA+Ak5zyioA4niccPdpJ1ZBAAEXAbf5ZBcA0QhuyC7Nyz4RQGC9gONcsgyAOCJH7PWtxZ0IIKAs4DqPbAMgmsEVXbmR2RsCCCwTcJ5D1gEQx+SMv6zNuBoBBNQE3OePfQD8UusI9oMAAt0IuM8f6wBwx+/mp4QHRaBhAec5ZBsAzugN/yzwaAh0KeA6jywDwBW7y58MHhqBTgQc55JdADgid9L/PCYC3Qu4zSerAHDD7f6nAQAEOhRwmlM2AeCE2mHP88gIIPBFwGVeWQSAC+aX8+cvEUCgcwGHuSUfAA6Infc5j48AAhMC6vNLOgDU8SbOnI8RQACBfwoozzHZAFBG++fJ8hcIIIDADAHVeSYZAKpYM86ZSxBAAIEfBRTnmlwAKCL9eJp8iAACCCwUUJtvUgGghrPwbLkcAQQQeCqgNOdkAkAJ5ekJcgECCCCwQUBl3r0Mw/B7w3NsvvXtdju9Xy6b12EBBBBAwE0ge/69KoAN1+spKxHvAXi63utn/aE+/vRfnz9/HzF0zues0fNZV+ZXQJ8YqRQURwABBOoIqMw7mQAIdhWUOi1AFQQQ6FFAac5JBUA0gxJOj83JMyOAwHECavNNLgCCXg3puHZgZQQQ6EVAca5JBkA0hCJWL43KcyKAwL4CqvNMNgCCXxVt39ZgNQQQaFlAeY5JB0A0hTJey03LsyGAwHYB9fklHwBxBOqI29uEFRBAoDUBh7llEQDRGA6YrTUwz4MAAusEXOaVTQDEMbigrmsZ7kIAgRYEnOaUVQBEczjhttDMPAMCCMwXcJtPdgEQR+GGPL99uBIBBFwFHOeSZQBEgzhiuzY2+0YAgccCrvPINgDiOFzRH7cS3yKAgJOA8xyyDoBoEmd8pyZnrwgg8F3Aff7YB8Cv72fCJwgggEAVAff5Yx0A7vhVOpQiCCBwqIDzHLINAGf0Q7uRxRFAoLqA6zyyDABX7OpdSUEEEKgm4DiX7ALAEblaB1IIAQRSBdzmk1UAuOGmdiLFEUAgRcBpTtkEgBNqStdRFAEEZARc5pVFALhgynQfG0EAgXQBh7klHwAOiOmdxgYQQEBSQH1+SQeAOp5kx7EpBBCQElCeY7IBoIwm1V1sBgEE5AVU55lkAKhiyXcZG0QAAVkBxbkmFwCKSLIdxcYQQMBKQG2+SQWAGo5VZ7FZBBCwEFCaczIBoIRi0UVsEgEEbAVU5t3LMAy/MxXfbrfT++WSuQVqI4AAAikC2fPvNeWpR0WH6/WUlYj3ADxd7/Wz/lAff/qvz5+/jxg653PW6PmsK/MroE+MVAqKI4AAAnUEVOadTAAEuwpKnRagCgII9CigNOekAiCaQQmnx+bkmRFA4DgBtfkmFwBBr4Z0XDuwMgII9CKgONckAyAaQhGrl0blORFAYF8B1XkmGwDBr4q2b2uwGgIItCygPMekAyCaQhmv5abl2RBAYLuA+vySD4A4AnXE7W3CCggg0JqAw9yyCIBoDAfM1hqY50EAgXUCLvPKJgDiGFxQ17UMdyGAQAsCTnPKKgCiOZxwW2hmngEBBOYLuM0nuwCIo3BDnt8+XIkAAq4CjnPJMgCiQRyxXRubfSOAwGMB13lkGwBxHK7oj1uJbxFAwEnAeQ5ZB0A0iTO+U5OzVwQQ+C7gPn/sA+DX9zPhEwQQQKCKgPv8sQ4Ad/wqHUoRBBA4VMB5DtkGgDP6od3I4gggUF3AdR5ZBoArdvWupCACCFQTcJxLdgHgiFytAymEAAKpAm7zySoA3HBTO5HiCCCQIuA0p2wCwAk1pesoigACMgIu88oiAFwwZbqPjSCAQLqAw9ySDwAHxPROYwMIICApoD6/pANAHU+y49gUAghICSjPMdkAUEaT6i42gwAC8gKq80wyAFSx5LuMDSKAgKyA4lyTCwBFJNmOYmMIIGAloDbfpAJADceqs9gsAghYCCjNOZkAUEKx6CI2iQACtgIq8+5lGIbfmYpvt9vp/XLJ3AK1EUAAgRSB7Pn3mvLUo6LD9XrKSsR7AJ6u9/pZf6iPP/3X58/fRwyd8zlr9HzWlfkV0CdGKgXFEUAAgToCKvNOJgCCXQWlTgtQBQEEehRQmnNSARDNoITTY3PyzAggcJyA2nyTC4CgV0M6rh1YGQEEehFQnGuSARANoYjVS6PynAggsK+A6jyTDYDgV0XbtzVYDQEEWhZQnmPSARBNoYzXctPybAggsF1AfX7JB0AcgTri9jZhBQQQaE3AYW5ZBEA0hgNmaw3M8yCAwDoBl3llEwBxDC6o61qGuxBAoAUBpzllFQDRHE64LTQzz4AAAvMF3OaTXQDEUbghz28frkQAAVcBx7lkGQDRII7Yro3NvhFA4LGA6zyyDYA4Dlf0x63Etwgg4CTgPIesAyCaxBnfqcnZKwIIfBdwnz/2AfDr+5nwCQIIIFBFwH3+WAeAO36VDqUIAggcKuA8h2wDwBn90G5kcQQQqC7gOo8sA8AVu3pXUhABBKoJOM4luwBwRK7WgRRCAIFUAbf5ZBUAbripnUhxBBBIEXCaUzYB4ISa0nUURQABGQGXeWURAC6YMt3HRhBAIF3AYW7JB4ADYnqnsQEEEJAUUJ9f0gGgjifZcWwKAQSkBJTnmGwAKKNJdRebQQABeQHVeSYZAKpY8l3GBhFAQFZAca7JBYAikmxHsTEEELASUJtvUgGghmPVWWwWAQQsBJTmnEwAKKFYdBGbRAABWwGVefcyDMPvTMW32+30frlkboHaCCCAQIpA9vx7TXnqUdHhej1lJeI9AE/Xe/2sP9THn/7r8+fvI4bO+Zw1ej7ryvwK6BMjlYLiCCCAQB0BlXknEwDBroJSpwWoggACPQoozTmpAIhmUMLpsTl5Zg2B/7xvI/7l3B7/i7X4oyGgNt/kAiCOSQ1Jo3XYRU8C/77jw+651o7b6m4pxbkmGQDRGYpY3XUsD5wmEP3/3ztUjzX4WdoBcuMSqmcgGwDhrYq2sRe4HYFZAv8166rHF+2xxuMKfPtMQHmOSQdAwCrjPTt4vkdgi8B/bLn573v3WGOHbXS7hPr8kg+A6Bx1xG67mwc/XGDL7++33Hv4g3VQwGFuWQRA9IoDZgc9zSNWFtjyK5wt91Z+zObKucwrmwCIDnFBba6beaA0gej5Nf8ymH/5m3ZkVnPKKgDiSAmBvMamco7Amt/jr7kn5+naquo2n+wCINrFDbmtFudpagvEr3L+d0HRuJZf/ywA2+lSx7lkGQBxXo7YO/UZy3QosGSgL7m2Q8pDHtl1HtkGQJyiK/ohHciiTQss+ZXOkmubRqv0cM5zyDoA4nyd8Sv1J2UaEPi/+zPM+Tv7uCau5U8dAff5Yx8Av+qcM1UQSBeY89/1z7km/UEa2oD7/LEOAHf8hn4OeJQKAvF3m4/+ZXB8F9fwp66A8xyyDQBn9LrtSbWWBB79fv/Rdy0ZKD6L6zyyDABXbMXGZU9eAo/+PcCj77ye0nO3jnPJLgAckT3bmV0rCsS/4P3p9/zxGf/yN//E3OaTVQC44ea3IztoUeCnv9P/6bMWn93hmZzmlE0AOKE6NCl79BX4uG/96/9/IP7//uidpcu8sggAF0y9NmRHrQp8/Tv+r3/d6vM6PpfD3JIPAAdEx+Zkz94C8V/8xH/2Gf/jv/7RPUv1+fWqS3c6qeMp27G39gX4O3+PM4459iG6VdkAYPiLdgzbkhHg7/xljuLpRlRDQPJXQAz/p/3EBQh8/mef/KefPo2gONfkAkARyafF2CkCCCgLqM03qQBQw1FuJPaGAAKeAkpzTiYAlFA824pdI4CAi4DKvHsZhuF3Jtrb7XZ6v1wyt0BtBBBAIEUge/5J/FdAw/Wa9p983gPwdL3Xz/pDffzpvz5//j5i6JzPWaPns67Mr4A+MVIpKI4AAgjUEVCZdzIBEOwqKHVagCoIINCjgNKckwqAaAYlnB6bk2dGAIHjBNTmm1wABL0a0nHtwMoIINCLgOJckwyAaAhFrF4aledEAIF9BVTnmWwABL8q2r6twWoIINCygPIckw6AaAplvJablmdDAIHtAurzSz4A4gjUEbe3CSsggEBrAg5zyyIAojEcMFtrYJ4HAQTWCbjMK5sAiGNwQV3XMtyFAAItCDjNKasAiOZwwm2hmXkGBBCYL+A2n+wCII7CDXl++3AlAgi4CjjOJcsAiAZxxHZtbPaNAAKPBVznkW0AxHG4oj9uJb5FAAEnAec5ZB0A0STO+E5Nzl4RQOC7gPv8sQ+AX9/PhE8QQACBKgLu88c6ANzxq3QoRRBA4FAB5zlkGwDO6Id2I4sjgEB1Add5ZBkArtjVu5KCCCBQTcBxLtkFgCNytQ6kEAIIpAq4zSerAHDDTe1EiiOAQIqA05yyCQAn1JSuoygCCMgIuMwriwBwwZTpPjaCAALpAg5zSz4AHBDTO40NIICApID6/JIOAHU8yY5jUwggICWgPMdkA0AZTaq72AwCCMgLqM4zyQBQxZLvMjaIAAKyAopzTS4AFJFkO4qNIYCAlYDafJMKADUcq85iswggYCGgNOdkAkAJxaKL2CQCCNgKqMy7l2EYfmcqvt1up/fLJXML1EYAAQRSBLLn32vKU4+KDtfrKSsR7wF4ut7rZ/2hPv70X58/fx8xdM7nrNHzWVfmV0CfGKkUFEcAAQTqCKjMO5kACHYVlDotQBUEEOhRQGnOSQVANIMSTo/NyTMjgMBxAmrzTS4Agl4N6bh2YGUEEOhFQHGuSQZANIQiVi+NynMigMC+AqrzTDYAgl8Vbd/WYDUEEGhZQHmOSQdANIUyXstNy7MhgMB2AfX5JR8AcQTqiNvbhBUQQKA1AYe5ZREA0RgOmK01MM+DAALrBFzmlU0AxDG4oK5rGe5CAIEWBJzmlFUARHM44bbQzDwDAgjMF3CbT3YBEEfhhjy/fbgSAQRcBRznkmUARIM4Yrs2NvtGAIHHAq7zyDYA4jhc0R+3Et8igICTgPMcsg6AaBJnfKcmZ68IIPBdwH3+2AfAr+9nwicIIIBAFQH3+WMdAO74VTqUIgggcKiA8xyyDQBn9EO7kcURQKC6gOs8sgwAV+zqXUlBBBCoJuA4l+wCwBG5WgdSCAEEUgXc5pNVALjhpnYixRFAIEXAaU7ZBIATakrXURQBBGQEXOaVRQC4YMp0HxtBAIF0AYe5JR8ADojpncYGEEBAUkB9fkkHgDqeZMexKQQQkBJQnmOyAaCMJtVdbAYBBOQFVOeZZACoYsl3GRtEAAFZAcW5JhcAikiyHcXGEEDASkBtvkkFgBqOVWexWQQQsBBQmnMyAaCEYtFFbBIBBGwFVObdyzAMvzMV32630/vlkrkFaiOAAAIpAtnz7zXlqUdFh+v1lJWI9wA8Xe/1s/5QH3/6r8+fv48YOudz1uj5rCvzK6BPjFQKiiOAAAJ1BFTmnUwABLsKSp0WoAoCCPQooDTnpAIgmkEJp8fm5JkRQOA4AbX5JhcAQa+GdFw7sDICCPQioDjXJAMgGkIRq5dG5TkRQGBfAdV5JhsAwa+Ktm9rsBoCCLQsoDzHpAMgmkIZr+Wm5dkQQGC7gPr8kg+AOAJ1xO1twgoIINCagMPcsgiAaAwHzNYamOdBAIF1Ai7zyiYA4hhcUNe1DHchgEALAk5zyioAojmccFtoZp4BAQTmC7jNJ7sAiKNwQ57fPlyJAAKuAo5zyTIAokEcsV0bm30jgMBjAdd5ZBsAcRyu6I9biW8RQMBJwHkOWQdANIkzvlOTs1cEEPgu4D5/7APg1/cz4RMEEECgioD7/LEOAHf8Kh1KEQQQOFTAeQ7ZBoAz+qHdyOIIIFBdwHUeWQaAK3b1rqQgAghUE3CcS3YB4IhcrQMphAACqQJu88kqANxwUzuR4gggkCLgNKdsAsAJNaXrKIoAAjICLvPKIgBcMGW6j40ggEC6gMPckg8AB8T0TmMDCCAgKaA+v6QDQB1PsuPYFAIISAkozzHZAFBGk+ouNoMAAvICqvNMMgBUseS7jA0igICsgOJckwsARSTZjmJjCCBgJaA236QCQA3HqrPYLAIIWAgozTmZAFBCsegiNokAArYCKvPuZRiG35mKb7fb6f1yydwCtRFAAIEUgez595ry1KOiw/V6ykrEewCervf6WX+ojz/91+fP30cMnfM5a/R81pX5FdAnRioFxRFAAIE6AirzTiYAgl0FpU4LUAUBBHoUUJpzUgEQzaCE02Nz8swIIHCcgNp8kwuAoFdDOq4dWBkBBHoRUJxrkgEQDaGI1Uuj8pwIILCvgOo8kw2A4FdF27c1WA0BBFoWUJ5j0gEQTaGM13LT8mwIILBdQH1+yQdAHIE64vY2YQUEEGhNwGFuWQRANIYDZmsNzPMggMA6AZd5ZRMAcQwuqOtahrsQQKAFAac5ZRUA0RxOuC00M8+AAALzBdzmk10AxFG4Ic9vH65EAAFXAce5ZBkA0SCO2K6Nzb4RQOCxgOs8sg2AOA5X9MetxLcIIOAk4DyHrAMgmiQbn/q5P6r4458pkN1/W5/dPgACIOsQSt3yuvUwlt5f6pbXpfdvvb7ULa9b11t6f6lbXpfev/X6Ure8bl1v6f2lbnldev/W60vd8rp1vaX3l7rlden9W6/Pqrt131/vbyIA4oFqH8a43vj9V+Qj/npcb/z+iJpf1xzXG7//eu0Rfz2uN35/RM2va47rjd9/vfaIvx7XG78/oubXNcf1xu+/XnvEX4/rjd8fUfPrmrXrfa295183EwCBUutQpupMfb7ngT16TurvLf3zelPOU5//vMr6T6fqTH2+vtLPd07Vmfr851XWfzpVZ+rz9ZV+vrNWnZ+r7/tpUwEQNEcfzrP1n32/9fierf/se+pvE3jm++z7bdWf9zf1two/vv9o38fV9/+2uQAIoqMOae66c69bepxz1517HfWXCcx1nXvdsurz+5r6S2XnXX+U67zqx1zVZAAE1d6HtXS9pdc/O96l6y29nvqPBZZ6Lr3+cfXl/Uz9Z6LLvt/bc1n1465uNgCCbK9DW7vO2vvGx712nbX3Uf9PgbWOa+/7s/r6Pqb+WHLd+70c11U/9q6mAyDoth4e929rQPzw2yLg3j9bnr3Gvc0HQCCubaK1940Pbu06a++j/p8Cax3X3vdndfpvrePa+9T8x/tRet9FAAT40mZaev2zQ1263tLrqf9YYKnn0usfV6f/lnouvV7d/9n+sr7vJgACeG5Tzb1u6aHNXXfuddRfJjDXde51y6rTf3Nd517n5r90vzWu7yoAAvRZcz37fuuhPFv/2ffU3ybwzPfZ99uq03/PfJ997+6/df97399dAATgVJNNfb43+lSdqc+pv6/AlPPU5/tWp/+mnKc+b81/7+fZsl6XARBg42Ybv9+COufecb3x+zlrbLlmXG/8fsvac+4d1xu/n7PGlmvG9cbvt6w9595xvfH7OWtsuWZcb/x+y9pz7h3XG7+fs8aWa8b1xu+3rO10b7cBEIdUDr281j64Ure8Ur+uQHEvr3Wr03/Fvbz25l/7eX+q9zIMw++fvqj12dvtVqsUdRBAAAE5gffLJW1Pr2mV/y6c+fDZz059BBBAIFOg618BZcJTGwEEEMgWIACyT4D6CCCAQJIAAZAET1kEEEAgW4AAyD4B6iOAAAJJAgRAEjxlEUAAgWwBAiD7BKiPAAIIJAkQAEnwlEUAAQSyBQiA7BOgPgIIIJAkQAAkwVMWAQQQyBYgALJPgPoIIIBAkgABkARPWQQQQCBbgADIPgHqI4AAAkkCBEASPGURQACBbAECIPsEqI8AAggkCRAASfCURQABBLIFCIDsE6A+AgggkCRAACTBUxYBBBDIFiAAsk+A+ggggECSAAGQBE9ZBBBAIFuAAMg+AeojgAACSQIEQBI8ZRFAAIFsAQIg+wSojwACCCQJEABJ8JRFAAEEsgUIgOwToD4CCCCQJEAAJMFTFgEEEMgWIACyT4D6CCCAQJIAAZAET1kEEEAgW4AAyD4B6iOAAAJJAgRAEjxlEUAAgWwBAiD7BKiPAAIIJAn8P6dX35nFKQHWAAAAAElFTkSuQmCC",
"text/plain": [
"<PIL.Image.Image image mode=RGBA size=384x384>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The shield for shield_value = 1.0\n"
]
},
{
"data": {
"image/png": "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",
"text/plain": [
"<PIL.Image.Image image mode=RGBA size=384x384>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Using cpu device\n",
"Wrapping the env with a `Monitor` wrapper\n",
"Wrapping the env in a DummyVecEnv.\n",
"Wrapping the env in a VecTransposeImage.\n",
"-----------------------------------\n",
"| info/ | |\n",
"| no_shield_action | 0 |\n",
"| sum_opened_door | 0 |\n",
"| sum_picked_up | 0 |\n",
"| sum_ran_into_lava | 0 |\n",
"| sum_reached_goal | 5 |\n",
"| rollout/ | |\n",
"| ep_len_mean | 146 |\n",
"| ep_rew_mean | 0.357 |\n",
"| time/ | |\n",
"| fps | 246 |\n",
"| iterations | 1 |\n",
"| time_elapsed | 8 |\n",
"| total_timesteps | 2048 |\n",
"-----------------------------------\n"
]
}
],
"source": [
"GRID_TO_PRISM_BINARY=os.getenv(\"M2P_BINARY\")\n",
"\n",
"def mask_fn(env: gym.Env):\n",
" return env.create_action_mask()\n",
"\n",
"def nomask_fn(env: gym.Env):\n",
" return [1.0] * 7\n",
"\n",
"def main():\n",
" # Edit 'environments/Minigrid/minigrid/envs/GSW_Playground.py' to alter the environment\n",
" env = \"MiniGrid-GSW-v0\"\n",
"\n",
" # TODO Change the safety specification\n",
" formula = \"Pmax=? [G true]\"\n",
" value_for_training = 1.0\n",
" shield_comparison = \"absolute\"\n",
" shielding = ShieldingConfig.Training\n",
" \n",
" logger = Logger(\"/tmp\", output_formats=[HumanOutputFormat(sys.stdout)])\n",
" \n",
"\n",
" env = gym.make(env, render_mode=\"rgb_array\")\n",
" image_env = RGBImgObsWrapper(env, TILE_PIXELS)\n",
" env = RGBImgObsWrapper(env, 8)\n",
" env = ImgObsWrapper(env)\n",
" env = MiniWrapper(env)\n",
"\n",
" \n",
" env.reset()\n",
" Image.fromarray(env.render()).show()\n",
" \n",
" shield_handlers = dict()\n",
" if shield_needed(shielding):\n",
" for value in [0.9, 0.99, 0.999, 0.9999, 1.0]:\n",
" shield_handler = MiniGridShieldHandler(GRID_TO_PRISM_BINARY, \"grid.txt\", \"grid.prism\", formula, shield_value=value, shield_comparison=shield_comparison, nocleanup=False, prism_file=None)\n",
" env = MiniGridSbShieldingWrapper(env, shield_handler=shield_handler, create_shield_at_reset=False)\n",
" create_shield_overlay_image(image_env, shield_handler.create_shield())\n",
" print(f\"The shield for shield_value = {value}\")\n",
"\n",
" shield_handlers[value] = shield_handler\n",
"\n",
"\n",
" if shielding == ShieldingConfig.Training:\n",
" env = MiniGridSbShieldingWrapper(env, shield_handler=shield_handler, create_shield_at_reset=False)\n",
" env = ActionMasker(env, mask_fn\n",
" print(\"Training with shield:\")\n",
" create_shield_overlay_image(image_env, shield_handlers[value_for_training].create_shield())\n",
" elif shielding == ShieldingConfig.Disabled:\n",
" env = ActionMasker(env, nomask_fn)\n",
" else:\n",
" assert(False) \n",
" model = MaskablePPO(\"CnnPolicy\", env, verbose=1, device=\"auto\")\n",
" model.set_logger(logger)\n",
" steps = 20_000\n",
"\n",
" \n",
" model.learn(steps,callback=[InfoCallback()])\n",
"\n",
"\n",
"\n",
"if __name__ == '__main__':\n",
" print(\"Starting the training\")\n",
" main()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.12"
}
},
"nbformat": 4,
"nbformat_minor": 4
}