Using partitioned_relabel_here
Put the new function to use in order to speed up mealy machine minimization * spot/twaalgos/mealy_machine.cc: Here * spot/twaalgos/synthesis.cc , spot/twaalgos/synthesis.hh: Helper function to relabel games * tests/python/_mealy.ipynb , tests/python/except.py , tests/python/_partitioned_relabel.ipynb: Adapt/expand tests
This commit is contained in:
parent
fb63dfc309
commit
6e2e7c942e
6 changed files with 1722 additions and 182 deletions
|
|
@ -129,7 +129,7 @@
|
|||
"</svg>\n"
|
||||
],
|
||||
"text/plain": [
|
||||
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fcc35aaa030> >"
|
||||
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f86481a2690> >"
|
||||
]
|
||||
},
|
||||
"execution_count": 4,
|
||||
|
|
@ -209,7 +209,7 @@
|
|||
"</svg>\n"
|
||||
],
|
||||
"text/plain": [
|
||||
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fcc35aaa900> >"
|
||||
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f85f45cbb70> >"
|
||||
]
|
||||
},
|
||||
"execution_count": 6,
|
||||
|
|
@ -283,7 +283,7 @@
|
|||
"</svg>\n"
|
||||
],
|
||||
"text/plain": [
|
||||
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fcc35aaa900> >"
|
||||
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f85f45cbb70> >"
|
||||
]
|
||||
},
|
||||
"execution_count": 8,
|
||||
|
|
@ -387,7 +387,7 @@
|
|||
"</svg>\n"
|
||||
],
|
||||
"text/plain": [
|
||||
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fcc35ac20c0> >"
|
||||
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f861bfc8ae0> >"
|
||||
]
|
||||
},
|
||||
"execution_count": 9,
|
||||
|
|
@ -532,7 +532,7 @@
|
|||
"</svg>\n"
|
||||
],
|
||||
"text/plain": [
|
||||
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fcc35ac2720> >"
|
||||
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f85f45efde0> >"
|
||||
]
|
||||
},
|
||||
"execution_count": 10,
|
||||
|
|
@ -584,13 +584,13 @@
|
|||
" <th>split_cstr_time</th>\n",
|
||||
" <th>prob_init_build_time</th>\n",
|
||||
" <th>...</th>\n",
|
||||
" <th>refine_time</th>\n",
|
||||
" <th>total_time</th>\n",
|
||||
" <th>n_classes</th>\n",
|
||||
" <th>n_refinement</th>\n",
|
||||
" <th>n_lit</th>\n",
|
||||
" <th>n_clauses</th>\n",
|
||||
" <th>n_iteration</th>\n",
|
||||
" <th>n_letters_part</th>\n",
|
||||
" <th>n_bisim_let</th>\n",
|
||||
" <th>n_min_states</th>\n",
|
||||
" <th>done</th>\n",
|
||||
|
|
@ -600,15 +600,15 @@
|
|||
" <tr>\n",
|
||||
" <th>0</th>\n",
|
||||
" <td>presat</td>\n",
|
||||
" <td>25643.3</td>\n",
|
||||
" <td>1.112e-06</td>\n",
|
||||
" <td>4.588e-06</td>\n",
|
||||
" <td>9.888e-06</td>\n",
|
||||
" <td>4.549e-06</td>\n",
|
||||
" <td>1.5929e-05</td>\n",
|
||||
" <td>9.338e-06</td>\n",
|
||||
" <td>5.901e-06</td>\n",
|
||||
" <td>6.7276e-05</td>\n",
|
||||
" <td>3868.95</td>\n",
|
||||
" <td>3.282e-06</td>\n",
|
||||
" <td>1.4388e-05</td>\n",
|
||||
" <td>0.000129765</td>\n",
|
||||
" <td>1.3759e-05</td>\n",
|
||||
" <td>9.499e-06</td>\n",
|
||||
" <td>8.73e-06</td>\n",
|
||||
" <td>9.01e-06</td>\n",
|
||||
" <td>6.6209e-05</td>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
|
|
@ -616,7 +616,7 @@
|
|||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>3</td>\n",
|
||||
" <td>2</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
|
|
@ -634,40 +634,40 @@
|
|||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>0.000282709</td>\n",
|
||||
" <td>0.000743251</td>\n",
|
||||
" <td>2</td>\n",
|
||||
" <td>0</td>\n",
|
||||
" <td>7</td>\n",
|
||||
" <td>12</td>\n",
|
||||
" <td>0</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>4</td>\n",
|
||||
" <td>1</td>\n",
|
||||
" </tr>\n",
|
||||
" </tbody>\n",
|
||||
"</table>\n",
|
||||
"<p>2 rows × 22 columns</p>\n",
|
||||
"<p>2 rows × 23 columns</p>\n",
|
||||
"</div>"
|
||||
],
|
||||
"text/plain": [
|
||||
" task premin_time reorg_time partsol_time player_incomp_time incomp_time \\\n",
|
||||
"0 presat 25643.3 1.112e-06 4.588e-06 9.888e-06 4.549e-06 \n",
|
||||
"0 presat 3868.95 3.282e-06 1.4388e-05 0.000129765 1.3759e-05 \n",
|
||||
"1 sat NaN NaN NaN NaN NaN \n",
|
||||
"\n",
|
||||
" split_all_let_time split_min_let_time split_cstr_time prob_init_build_time \\\n",
|
||||
"0 1.5929e-05 9.338e-06 5.901e-06 6.7276e-05 \n",
|
||||
"0 9.499e-06 8.73e-06 9.01e-06 6.6209e-05 \n",
|
||||
"1 NaN NaN NaN NaN \n",
|
||||
"\n",
|
||||
" ... refine_time total_time n_classes n_refinement n_lit n_clauses \\\n",
|
||||
"0 ... NaN NaN NaN NaN NaN NaN \n",
|
||||
"1 ... NaN 0.000282709 2 0 7 12 \n",
|
||||
" ... total_time n_classes n_refinement n_lit n_clauses n_iteration \\\n",
|
||||
"0 ... NaN NaN NaN NaN NaN NaN \n",
|
||||
"1 ... 0.000743251 2 0 7 12 0 \n",
|
||||
"\n",
|
||||
" n_iteration n_bisim_let n_min_states done \n",
|
||||
"0 NaN 2 NaN NaN \n",
|
||||
"1 0 NaN 4 1 \n",
|
||||
" n_letters_part n_bisim_let n_min_states done \n",
|
||||
"0 3 2 NaN NaN \n",
|
||||
"1 NaN NaN 4 1 \n",
|
||||
"\n",
|
||||
"[2 rows x 22 columns]"
|
||||
"[2 rows x 23 columns]"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
|
|
@ -758,7 +758,7 @@
|
|||
"</svg>\n"
|
||||
],
|
||||
"text/plain": [
|
||||
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fcc88735f00> >"
|
||||
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f861bfc8630> >"
|
||||
]
|
||||
},
|
||||
"execution_count": 11,
|
||||
|
|
@ -861,7 +861,7 @@
|
|||
"</svg>\n"
|
||||
],
|
||||
"text/plain": [
|
||||
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fcc6157fe40> >"
|
||||
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f861bf9fb40> >"
|
||||
]
|
||||
},
|
||||
"execution_count": 12,
|
||||
|
|
@ -1000,7 +1000,7 @@
|
|||
"</svg>\n"
|
||||
],
|
||||
"text/plain": [
|
||||
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fcc6157f210> >"
|
||||
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f861bf9f210> >"
|
||||
]
|
||||
},
|
||||
"execution_count": 13,
|
||||
|
|
@ -1051,13 +1051,13 @@
|
|||
" <th>split_cstr_time</th>\n",
|
||||
" <th>prob_init_build_time</th>\n",
|
||||
" <th>...</th>\n",
|
||||
" <th>refine_time</th>\n",
|
||||
" <th>total_time</th>\n",
|
||||
" <th>n_classes</th>\n",
|
||||
" <th>n_refinement</th>\n",
|
||||
" <th>n_lit</th>\n",
|
||||
" <th>n_clauses</th>\n",
|
||||
" <th>n_iteration</th>\n",
|
||||
" <th>n_letters_part</th>\n",
|
||||
" <th>n_bisim_let</th>\n",
|
||||
" <th>n_min_states</th>\n",
|
||||
" <th>done</th>\n",
|
||||
|
|
@ -1067,15 +1067,15 @@
|
|||
" <tr>\n",
|
||||
" <th>0</th>\n",
|
||||
" <td>presat</td>\n",
|
||||
" <td>25643.4</td>\n",
|
||||
" <td>1.683e-06</td>\n",
|
||||
" <td>5.611e-06</td>\n",
|
||||
" <td>2.66e-05</td>\n",
|
||||
" <td>1.2e-07</td>\n",
|
||||
" <td>3.647e-06</td>\n",
|
||||
" <td>8.365e-06</td>\n",
|
||||
" <td>3.747e-06</td>\n",
|
||||
" <td>2.5538e-05</td>\n",
|
||||
" <td>3869.08</td>\n",
|
||||
" <td>3.213e-06</td>\n",
|
||||
" <td>9.079e-06</td>\n",
|
||||
" <td>9.5752e-05</td>\n",
|
||||
" <td>5.168e-06</td>\n",
|
||||
" <td>5.727e-06</td>\n",
|
||||
" <td>7.543e-06</td>\n",
|
||||
" <td>1.5784e-05</td>\n",
|
||||
" <td>4.0507e-05</td>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
|
|
@ -1083,7 +1083,7 @@
|
|||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>1</td>\n",
|
||||
" <td>1</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
|
|
@ -1102,7 +1102,6 @@
|
|||
" <td>NaN</td>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>1</td>\n",
|
||||
" <td>0</td>\n",
|
||||
" <td>3</td>\n",
|
||||
|
|
@ -1111,6 +1110,7 @@
|
|||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>2</th>\n",
|
||||
|
|
@ -1125,7 +1125,6 @@
|
|||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td>4.4884e-05</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>1</td>\n",
|
||||
" <td>1</td>\n",
|
||||
|
|
@ -1135,6 +1134,7 @@
|
|||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>3</th>\n",
|
||||
|
|
@ -1149,48 +1149,48 @@
|
|||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>0.000200344</td>\n",
|
||||
" <td>0.000399073</td>\n",
|
||||
" <td>2</td>\n",
|
||||
" <td>0</td>\n",
|
||||
" <td>17</td>\n",
|
||||
" <td>29</td>\n",
|
||||
" <td>1</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>4</td>\n",
|
||||
" <td>1</td>\n",
|
||||
" </tr>\n",
|
||||
" </tbody>\n",
|
||||
"</table>\n",
|
||||
"<p>4 rows × 22 columns</p>\n",
|
||||
"<p>4 rows × 23 columns</p>\n",
|
||||
"</div>"
|
||||
],
|
||||
"text/plain": [
|
||||
" task premin_time reorg_time partsol_time player_incomp_time \\\n",
|
||||
"0 presat 25643.4 1.683e-06 5.611e-06 2.66e-05 \n",
|
||||
"0 presat 3869.08 3.213e-06 9.079e-06 9.5752e-05 \n",
|
||||
"1 sat NaN NaN NaN NaN \n",
|
||||
"2 refinement NaN NaN NaN NaN \n",
|
||||
"3 sat NaN NaN NaN NaN \n",
|
||||
"\n",
|
||||
" incomp_time split_all_let_time split_min_let_time split_cstr_time \\\n",
|
||||
"0 1.2e-07 3.647e-06 8.365e-06 3.747e-06 \n",
|
||||
"0 5.168e-06 5.727e-06 7.543e-06 1.5784e-05 \n",
|
||||
"1 NaN NaN NaN NaN \n",
|
||||
"2 NaN NaN NaN NaN \n",
|
||||
"3 NaN NaN NaN NaN \n",
|
||||
"\n",
|
||||
" prob_init_build_time ... refine_time total_time n_classes n_refinement \\\n",
|
||||
"0 2.5538e-05 ... NaN NaN NaN NaN \n",
|
||||
"1 NaN ... NaN NaN 1 0 \n",
|
||||
"2 NaN ... 4.4884e-05 NaN 1 1 \n",
|
||||
"3 NaN ... NaN 0.000200344 2 0 \n",
|
||||
" prob_init_build_time ... total_time n_classes n_refinement n_lit \\\n",
|
||||
"0 4.0507e-05 ... NaN NaN NaN NaN \n",
|
||||
"1 NaN ... NaN 1 0 3 \n",
|
||||
"2 NaN ... NaN 1 1 10 \n",
|
||||
"3 NaN ... 0.000399073 2 0 17 \n",
|
||||
"\n",
|
||||
" n_lit n_clauses n_iteration n_bisim_let n_min_states done \n",
|
||||
"0 NaN NaN NaN 1 NaN NaN \n",
|
||||
"1 3 6 0 NaN NaN NaN \n",
|
||||
"2 10 16 NaN NaN NaN NaN \n",
|
||||
"3 17 29 1 NaN 4 1 \n",
|
||||
" n_clauses n_iteration n_letters_part n_bisim_let n_min_states done \n",
|
||||
"0 NaN NaN 1 1 NaN NaN \n",
|
||||
"1 6 0 NaN NaN NaN NaN \n",
|
||||
"2 16 NaN NaN NaN NaN NaN \n",
|
||||
"3 29 1 NaN NaN 4 1 \n",
|
||||
"\n",
|
||||
"[4 rows x 22 columns]"
|
||||
"[4 rows x 23 columns]"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
|
|
@ -1200,6 +1200,7 @@
|
|||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Number of variables\n",
|
||||
"0 NaN\n",
|
||||
"1 3\n",
|
||||
"2 10\n",
|
||||
|
|
@ -1285,7 +1286,7 @@
|
|||
"</svg>\n"
|
||||
],
|
||||
"text/plain": [
|
||||
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fcc35ac22a0> >"
|
||||
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f861bfcdc00> >"
|
||||
]
|
||||
},
|
||||
"execution_count": 14,
|
||||
|
|
@ -1297,6 +1298,7 @@
|
|||
"si = spot.synthesis_info()\n",
|
||||
"si.minimize_lvl = 3\n",
|
||||
"aut_ms, table = spot.minimize_mealy(aut_s, si, display_log=True, return_log=True)\n",
|
||||
"print(\"Number of variables\")\n",
|
||||
"print(table[\"n_lit\"])\n",
|
||||
"aut_ms"
|
||||
]
|
||||
|
|
@ -1347,13 +1349,13 @@
|
|||
" <th>split_cstr_time</th>\n",
|
||||
" <th>prob_init_build_time</th>\n",
|
||||
" <th>...</th>\n",
|
||||
" <th>refine_time</th>\n",
|
||||
" <th>total_time</th>\n",
|
||||
" <th>n_classes</th>\n",
|
||||
" <th>n_refinement</th>\n",
|
||||
" <th>n_lit</th>\n",
|
||||
" <th>n_clauses</th>\n",
|
||||
" <th>n_iteration</th>\n",
|
||||
" <th>n_letters_part</th>\n",
|
||||
" <th>n_bisim_let</th>\n",
|
||||
" <th>n_min_states</th>\n",
|
||||
" <th>done</th>\n",
|
||||
|
|
@ -1363,15 +1365,15 @@
|
|||
" <tr>\n",
|
||||
" <th>0</th>\n",
|
||||
" <td>presat</td>\n",
|
||||
" <td>25643.5</td>\n",
|
||||
" <td>1.563e-06</td>\n",
|
||||
" <td>5.4e-06</td>\n",
|
||||
" <td>2.0519e-05</td>\n",
|
||||
" <td>1.3e-07</td>\n",
|
||||
" <td>3.968e-06</td>\n",
|
||||
" <td>9.698e-06</td>\n",
|
||||
" <td>7.624e-06</td>\n",
|
||||
" <td>3.211e-05</td>\n",
|
||||
" <td>3869.14</td>\n",
|
||||
" <td>2.863e-06</td>\n",
|
||||
" <td>9.08e-06</td>\n",
|
||||
" <td>6.0622e-05</td>\n",
|
||||
" <td>4.679e-06</td>\n",
|
||||
" <td>5.308e-06</td>\n",
|
||||
" <td>8.59e-06</td>\n",
|
||||
" <td>7.962e-06</td>\n",
|
||||
" <td>4.0159e-05</td>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
|
|
@ -1379,7 +1381,7 @@
|
|||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>1</td>\n",
|
||||
" <td>1</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
|
|
@ -1398,7 +1400,6 @@
|
|||
" <td>NaN</td>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>1</td>\n",
|
||||
" <td>0</td>\n",
|
||||
" <td>3</td>\n",
|
||||
|
|
@ -1407,6 +1408,7 @@
|
|||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>2</th>\n",
|
||||
|
|
@ -1421,7 +1423,6 @@
|
|||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td>4.4633e-05</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>1</td>\n",
|
||||
" <td>1</td>\n",
|
||||
|
|
@ -1431,6 +1432,7 @@
|
|||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>3</th>\n",
|
||||
|
|
@ -1445,48 +1447,48 @@
|
|||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>0.000280675</td>\n",
|
||||
" <td>0.000416464</td>\n",
|
||||
" <td>2</td>\n",
|
||||
" <td>0</td>\n",
|
||||
" <td>17</td>\n",
|
||||
" <td>29</td>\n",
|
||||
" <td>1</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>4</td>\n",
|
||||
" <td>1</td>\n",
|
||||
" </tr>\n",
|
||||
" </tbody>\n",
|
||||
"</table>\n",
|
||||
"<p>4 rows × 22 columns</p>\n",
|
||||
"<p>4 rows × 23 columns</p>\n",
|
||||
"</div>"
|
||||
],
|
||||
"text/plain": [
|
||||
" task premin_time reorg_time partsol_time player_incomp_time \\\n",
|
||||
"0 presat 25643.5 1.563e-06 5.4e-06 2.0519e-05 \n",
|
||||
"0 presat 3869.14 2.863e-06 9.08e-06 6.0622e-05 \n",
|
||||
"1 sat NaN NaN NaN NaN \n",
|
||||
"2 refinement NaN NaN NaN NaN \n",
|
||||
"3 sat NaN NaN NaN NaN \n",
|
||||
"\n",
|
||||
" incomp_time split_all_let_time split_min_let_time split_cstr_time \\\n",
|
||||
"0 1.3e-07 3.968e-06 9.698e-06 7.624e-06 \n",
|
||||
"0 4.679e-06 5.308e-06 8.59e-06 7.962e-06 \n",
|
||||
"1 NaN NaN NaN NaN \n",
|
||||
"2 NaN NaN NaN NaN \n",
|
||||
"3 NaN NaN NaN NaN \n",
|
||||
"\n",
|
||||
" prob_init_build_time ... refine_time total_time n_classes n_refinement \\\n",
|
||||
"0 3.211e-05 ... NaN NaN NaN NaN \n",
|
||||
"1 NaN ... NaN NaN 1 0 \n",
|
||||
"2 NaN ... 4.4633e-05 NaN 1 1 \n",
|
||||
"3 NaN ... NaN 0.000280675 2 0 \n",
|
||||
" prob_init_build_time ... total_time n_classes n_refinement n_lit \\\n",
|
||||
"0 4.0159e-05 ... NaN NaN NaN NaN \n",
|
||||
"1 NaN ... NaN 1 0 3 \n",
|
||||
"2 NaN ... NaN 1 1 10 \n",
|
||||
"3 NaN ... 0.000416464 2 0 17 \n",
|
||||
"\n",
|
||||
" n_lit n_clauses n_iteration n_bisim_let n_min_states done \n",
|
||||
"0 NaN NaN NaN 1 NaN NaN \n",
|
||||
"1 3 6 0 NaN NaN NaN \n",
|
||||
"2 10 16 NaN NaN NaN NaN \n",
|
||||
"3 17 29 1 NaN 4 1 \n",
|
||||
" n_clauses n_iteration n_letters_part n_bisim_let n_min_states done \n",
|
||||
"0 NaN NaN 1 1 NaN NaN \n",
|
||||
"1 6 0 NaN NaN NaN NaN \n",
|
||||
"2 16 NaN NaN NaN NaN NaN \n",
|
||||
"3 29 1 NaN NaN 4 1 \n",
|
||||
"\n",
|
||||
"[4 rows x 22 columns]"
|
||||
"[4 rows x 23 columns]"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
|
|
@ -1570,10 +1572,118 @@
|
|||
" "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "b10213b8",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Testing partitioned relabeling"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 16,
|
||||
"id": "fd5ca506",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Conditions in orig machine: 8\n",
|
||||
"Conditions in relabeled machine: 13\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"def get_mealy():\n",
|
||||
" return spot.split_2step(spot.automaton(\"\"\"HOA: v1\n",
|
||||
"States: 2\n",
|
||||
"Start: 0\n",
|
||||
"AP: 11 \"u0accel0accel\" \"u0accel0f1dcon23p81b\" \"u0accel0f1dcon231b\" \"u0gear0f1dmin0f1dcon61b0f1dadd0gear0f1dcon241b1b1b\" \"u0gear0gear\" \"u0gear0f1dmax0f1dcon241b0f1dsub0gear0f1dcon241b1b1b\" \"u0steer0f1dsteering0angle0trackpos1b\" \"u0steer0steer\" \"p0p0gt0rpm0f1dcon5523231b\" \"p0p0lt0rpm0f1dcon32323231b\" \"p0p0lt0speed0f1dsub0target2speed0f1dmultp0f1dabs0steer1b0f1dcon248881b1b1b\"\n",
|
||||
"acc-name: all\n",
|
||||
"Acceptance: 0 t\n",
|
||||
"properties: trans-labels explicit-labels state-acc deterministic\n",
|
||||
"controllable-AP: 0 1 2 3 4 5 6 7\n",
|
||||
"--BODY--\n",
|
||||
"State: 0\n",
|
||||
"[!0&!1&2&!3&4&!5&6&!7&!8&!9&!10] 0\n",
|
||||
"[!0&1&!2&!3&4&!5&6&!7&!8&!9&10] 0\n",
|
||||
"[!0&!1&2&!3&!4&5&6&!7&!8&9&!10] 0\n",
|
||||
"[!0&1&!2&!3&!4&5&6&!7&!8&9&10] 0\n",
|
||||
"[!0&!1&2&3&!4&!5&6&!7&8&!9&!10] 0\n",
|
||||
"[!0&1&!2&3&!4&!5&6&!7&8&!9&10] 0\n",
|
||||
"[!0&!1&2&!3&!4&5&!6&7&8&9 | !0&!1&2&!3&!4&5&6&!7&8&9 | !0&!1&2&!3&4&!5&!6&7&8&9 | !0&!1&2&!3&4&!5&6&!7&8&9 | !0&!1&2&3&!4&!5&!6&7&8&9 | !0&!1&2&3&!4&!5&6&!7&8&9 | !0&1&!2&!3&!4&5&!6&7&8&9 | !0&1&!2&!3&!4&5&6&!7&8&9 | !0&1&!2&!3&4&!5&!6&7&8&9 | !0&1&!2&!3&4&!5&6&!7&8&9 | !0&1&!2&3&!4&!5&!6&7&8&9 | !0&1&!2&3&!4&!5&6&!7&8&9 | 0&!1&!2&!3&!4&5&!6&7&8&9 | 0&!1&!2&!3&!4&5&6&!7&8&9 | 0&!1&!2&!3&4&!5&!6&7&8&9 | 0&!1&!2&!3&4&!5&6&!7&8&9 | 0&!1&!2&3&!4&!5&!6&7&8&9 | 0&!1&!2&3&!4&!5&6&!7&8&9] 1\n",
|
||||
"State: 1\n",
|
||||
"[!0&!1&2&!3&!4&5&!6&7 | !0&!1&2&!3&!4&5&6&!7 | !0&!1&2&!3&4&!5&!6&7 | !0&!1&2&!3&4&!5&6&!7 | !0&!1&2&3&!4&!5&!6&7 | !0&!1&2&3&!4&!5&6&!7 | !0&1&!2&!3&!4&5&!6&7 | !0&1&!2&!3&!4&5&6&!7 | !0&1&!2&!3&4&!5&!6&7 | !0&1&!2&!3&4&!5&6&!7 | !0&1&!2&3&!4&!5&!6&7 | !0&1&!2&3&!4&!5&6&!7 | 0&!1&!2&!3&!4&5&!6&7 | 0&!1&!2&!3&!4&5&6&!7 | 0&!1&!2&!3&4&!5&!6&7 | 0&!1&!2&!3&4&!5&6&!7 | 0&!1&!2&3&!4&!5&!6&7 | 0&!1&!2&3&!4&!5&6&!7] 1\n",
|
||||
"--END--\"\"\"))\n",
|
||||
"\n",
|
||||
"def env_conditions(m):\n",
|
||||
" sp = spot.get_state_players(m)\n",
|
||||
" conds = []\n",
|
||||
" for e in m.edges():\n",
|
||||
" if sp[e.src]:\n",
|
||||
" continue\n",
|
||||
" if not e.cond in conds:\n",
|
||||
" conds.append(e.cond)\n",
|
||||
" return conds\n",
|
||||
"print(\"Conditions in orig machine: \", len(env_conditions(get_mealy())))\n",
|
||||
"ms = get_mealy()\n",
|
||||
"# Relabel only env\n",
|
||||
"spot.partitioned_game_relabel_here(ms, True, False, True, False)\n",
|
||||
"print(\"Conditions in relabeled machine: \", len(env_conditions(ms)))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 17,
|
||||
"id": "ee29da67",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Partitioned env letters: 13\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"si = spot.synthesis_info()\n",
|
||||
"si.minimize_lvl = 3\n",
|
||||
"# Turn on relabeling\n",
|
||||
"si.opt.set(\"max_letter_mult\", 100000)\n",
|
||||
"\n",
|
||||
"mm, log = spot.minimize_mealy(get_mealy(), si, return_log=True)\n",
|
||||
"print(\"Partitioned env letters:\", log[\"n_letters_part\"][0])"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 18,
|
||||
"id": "0aec8019",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Partitioned env letters: 0\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# Turn off relabeling\n",
|
||||
"si.opt.set(\"max_letter_mult\", 0)\n",
|
||||
"\n",
|
||||
"mm, log = spot.minimize_mealy(get_mealy(), si, return_log=True)\n",
|
||||
"print(\"Partitioned env letters:\", log[\"n_letters_part\"][0])"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "5c9fe115",
|
||||
"id": "a92f4f43",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -373,4 +373,22 @@ except RuntimeError as e:
|
|||
tc.assertIn("The given prefix for new variables",
|
||||
str(e))
|
||||
else:
|
||||
report_missing_exception()
|
||||
report_missing_exception()
|
||||
|
||||
# Relabeling games must not use the
|
||||
# globally reserved aps
|
||||
aut = spot.make_twa_graph()
|
||||
aut.new_states(2)
|
||||
apin = buddy.bdd_ithvar(aut.register_ap("__AP_IN__"))
|
||||
apout = buddy.bdd_ithvar(aut.register_ap("__AP_OUT__"))
|
||||
aut.new_edge(0,1,apin & apout)
|
||||
aut.new_edge(1,0,buddy.bdd_not(apin & apout))
|
||||
spot.set_state_players(aut, [False, True])
|
||||
|
||||
try:
|
||||
spot.partitioned_game_relabel_here(aut, True, True)
|
||||
except RuntimeError as e:
|
||||
tc.assertIn("You can not use __AP_IN__ or __AP_OUT__",
|
||||
str(e))
|
||||
else:
|
||||
report_missing_exception()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue