sccfilter: some inherently-weak automata should have t acceptance

* spot/twaalgos/sccfilter.cc: If an inherently-weak automaton has
no rejecting cycle, reduce its acceptance to t instead of Büchi.
* spot/twa/acc.hh (operator==, operator<): Fix comparisons of
true acceptances.
* NEWS: Mention these two changes.
* spot/twaalgos/sccfilter.hh: Update documentation.
* spot/twaalgos/determinize.cc (tgba_determinize): The call
to scc_filter assume that the input BA is never reduced to t
acceptance.  Call scc_filter with an extra option to ensure that.
* spot/twaalgos/postproc.cc (do_scc_filter): Adjust to add the
extra option when we want to build Büchi or coBuchi.
(ensure_ba): Don't mark trivial SCCs as accepting.
* tests/core/complement.test, tests/core/dstar.test,
tests/core/ltlsynt.test, tests/core/readsave.test,
tests/core/wdba2.test, tests/python/_product_susp.ipynb,
tests/python/automata-io.ipynb, tests/python/dualize.py,
tests/python/highlighting.ipynb, tests/python/intrun.py,
tests/python/setacc.py, tests/python/simstate.py,
tests/python/stutter-inv.ipynb, tests/python/zlktree.py: Adjust test
cases.
This commit is contained in:
Alexandre Duret-Lutz 2023-11-17 13:41:19 +01:00
parent 13377542cd
commit 0e71dd70c1
20 changed files with 857 additions and 842 deletions

View file

@ -12,7 +12,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -24,7 +23,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -70,7 +68,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -98,7 +95,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -106,7 +102,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -137,7 +132,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -145,7 +139,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -171,7 +164,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -196,7 +188,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -221,7 +212,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -249,7 +239,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -313,7 +302,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faad816be40> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7ff008667960> >"
]
},
"metadata": {},
@ -342,7 +331,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -350,7 +338,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -407,7 +394,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -415,7 +401,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -425,7 +410,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -619,7 +603,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faad816be70> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7ff0086679f0> >"
]
},
"metadata": {},
@ -632,7 +616,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -662,7 +645,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -830,7 +812,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faad816be70> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7ff0086679f0> >"
]
},
"metadata": {},
@ -843,7 +825,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -851,7 +832,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -859,7 +839,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -899,7 +878,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -986,7 +964,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faad8057690> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7ff008667cc0> >"
]
},
"metadata": {},
@ -1084,7 +1062,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faad8253210> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7ff008667cf0> >"
]
},
"metadata": {},
@ -1104,7 +1082,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -1295,7 +1272,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faad8057ea0> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7ff0086677b0> >"
]
},
"metadata": {},
@ -1314,7 +1291,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -1425,7 +1401,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faad8247a20> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7ff0086677e0> >"
]
},
"metadata": {},
@ -1439,7 +1415,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -1447,7 +1422,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -1478,87 +1452,83 @@
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"245pt\" height=\"203pt\"\n",
" viewBox=\"0.00 0.00 245.00 203.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 199)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-199 241,-199 241,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"98\" y=\"-180.8\" font-family=\"Lato\" font-size=\"14.00\">Inf(</text>\n",
"<text text-anchor=\"start\" x=\"119\" y=\"-180.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<text text-anchor=\"start\" x=\"135\" y=\"-180.8\" font-family=\"Lato\" font-size=\"14.00\">)</text>\n",
"<text text-anchor=\"start\" x=\"97\" y=\"-166.8\" font-family=\"Lato\" font-size=\"14.00\">[Büchi]</text>\n",
"<svg width=\"245pt\" height=\"202pt\"\n",
" viewBox=\"0.00 0.00 245.00 202.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 198)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-198 241,-198 241,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"115.5\" y=\"-178.8\" font-family=\"Lato\" font-size=\"14.00\">t</text>\n",
"<text text-anchor=\"start\" x=\"107.5\" y=\"-163.8\" font-family=\"Lato\" font-size=\"14.00\">[all]</text>\n",
"<!-- I -->\n",
"<!-- 3 -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>3</title>\n",
"<path fill=\"#ffffaa\" stroke=\"black\" d=\"M62,-81C62,-81 50,-81 50,-81 44,-81 38,-75 38,-69 38,-69 38,-57 38,-57 38,-51 44,-45 50,-45 50,-45 62,-45 62,-45 68,-45 74,-51 74,-57 74,-57 74,-69 74,-69 74,-75 68,-81 62,-81\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-59.3\" font-family=\"Lato\" font-size=\"14.00\">3</text>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"56\" cy=\"-61\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"56\" y=\"-57.3\" font-family=\"Lato\" font-size=\"14.00\">3</text>\n",
"</g>\n",
"<!-- I&#45;&gt;3 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>I&#45;&gt;3</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1.15,-63C2.79,-63 17.15,-63 30.63,-63\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"37.94,-63 30.94,-66.15 34.44,-63 30.94,-63 30.94,-63 30.94,-63 34.44,-63 30.94,-59.85 37.94,-63 37.94,-63\"/>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1.15,-61C2.79,-61 17.15,-61 30.63,-61\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"37.94,-61 30.94,-64.15 34.44,-61 30.94,-61 30.94,-61 30.94,-61 34.44,-61 30.94,-57.85 37.94,-61 37.94,-61\"/>\n",
"</g>\n",
"<!-- 0 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>0</title>\n",
"<path fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" d=\"M146,-125C146,-125 134,-125 134,-125 128,-125 122,-119 122,-113 122,-113 122,-101 122,-101 122,-95 128,-89 134,-89 134,-89 146,-89 146,-89 152,-89 158,-95 158,-101 158,-101 158,-113 158,-113 158,-119 152,-125 146,-125\"/>\n",
"<text text-anchor=\"middle\" x=\"140\" y=\"-103.3\" font-family=\"Lato\" font-size=\"14.00\">0</text>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" cx=\"140\" cy=\"-105\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"140\" y=\"-101.3\" font-family=\"Lato\" font-size=\"14.00\">0</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;0 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>3&#45;&gt;0</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M74.39,-72.33C86.43,-78.79 102.59,-87.46 115.74,-94.52\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"121.92,-97.83 114.26,-97.3 118.83,-96.18 115.75,-94.52 115.75,-94.52 115.75,-94.52 118.83,-96.18 117.24,-91.75 121.92,-97.83 121.92,-97.83\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-91.8\" font-family=\"Lato\" font-size=\"14.00\">!b</text>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M72.42,-69.28C85.14,-76.1 103.31,-85.85 117.46,-93.44\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"123.65,-96.76 115.99,-96.23 120.56,-95.11 117.48,-93.45 117.48,-93.45 117.48,-93.45 120.56,-95.11 118.97,-90.68 123.65,-96.76 123.65,-96.76\"/>\n",
"<text text-anchor=\"start\" x=\"92\" y=\"-89.8\" font-family=\"Lato\" font-size=\"14.00\">!b</text>\n",
"</g>\n",
"<!-- 1 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>1</title>\n",
"<path fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" d=\"M146,-38C146,-38 134,-38 134,-38 128,-38 122,-32 122,-26 122,-26 122,-12 122,-12 122,-6 128,0 134,0 134,0 146,0 146,0 152,0 158,-6 158,-12 158,-12 158,-26 158,-26 158,-32 152,-38 146,-38\"/>\n",
"<text text-anchor=\"start\" x=\"135.5\" y=\"-22.8\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"<text text-anchor=\"start\" x=\"132\" y=\"-7.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" cx=\"140\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"140\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</g>\n",
"<!-- 3&#45;&gt;1 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>3&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M74.39,-53.67C86.43,-47.21 102.59,-38.54 115.74,-31.48\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"121.92,-28.17 117.24,-34.25 118.83,-29.82 115.75,-31.48 115.75,-31.48 115.75,-31.48 118.83,-29.82 114.26,-28.7 121.92,-28.17 121.92,-28.17\"/>\n",
"<text text-anchor=\"start\" x=\"94\" y=\"-47.8\" font-family=\"Lato\" font-size=\"14.00\">b</text>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M72.42,-52.91C85.02,-46.31 102.99,-36.89 117.08,-29.5\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"123.65,-26.05 118.91,-32.09 120.55,-27.68 117.45,-29.3 117.45,-29.3 117.45,-29.3 120.55,-27.68 115.98,-26.51 123.65,-26.05 123.65,-26.05\"/>\n",
"<text text-anchor=\"start\" x=\"94\" y=\"-46.8\" font-family=\"Lato\" font-size=\"14.00\">b</text>\n",
"</g>\n",
"<!-- 2 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>2</title>\n",
"<path fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" d=\"M225,-126C225,-126 213,-126 213,-126 207,-126 201,-120 201,-114 201,-114 201,-100 201,-100 201,-94 207,-88 213,-88 213,-88 225,-88 225,-88 231,-88 237,-94 237,-100 237,-100 237,-114 237,-114 237,-120 231,-126 225,-126\"/>\n",
"<text text-anchor=\"start\" x=\"214.5\" y=\"-110.8\" font-family=\"Lato\" font-size=\"14.00\">2</text>\n",
"<text text-anchor=\"start\" x=\"211\" y=\"-95.8\" font-family=\"Lato\" font-size=\"14.00\" fill=\"#1f78b4\">⓿</text>\n",
"<ellipse fill=\"#ffffaa\" stroke=\"#e31a1c\" stroke-width=\"2\" cx=\"219\" cy=\"-105\" rx=\"18\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"219\" y=\"-101.3\" font-family=\"Lato\" font-size=\"14.00\">2</text>\n",
"</g>\n",
"<!-- 0&#45;&gt;2 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>0&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M158.09,-107C168.56,-107 182.12,-107 193.69,-107\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"200.96,-107 193.96,-110.15 197.46,-107 193.96,-107 193.96,-107 193.96,-107 197.46,-107 193.96,-103.85 200.96,-107 200.96,-107\"/>\n",
"<text text-anchor=\"start\" x=\"176\" y=\"-110.8\" font-family=\"Lato\" font-size=\"14.00\">a</text>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M158.09,-105C168.56,-105 182.12,-105 193.69,-105\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"200.96,-105 193.96,-108.15 197.46,-105 193.96,-105 193.96,-105 193.96,-105 197.46,-105 193.96,-101.85 200.96,-105 200.96,-105\"/>\n",
"<text text-anchor=\"start\" x=\"176\" y=\"-108.8\" font-family=\"Lato\" font-size=\"14.00\">a</text>\n",
"</g>\n",
"<!-- 2&#45;&gt;2 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>2&#45;&gt;2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M212.09,-126.04C211.13,-135.53 213.43,-144 219,-144 223.09,-144 225.42,-139.43 225.99,-133.25\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"225.91,-126.04 229.13,-133.01 225.95,-129.54 225.98,-133.04 225.98,-133.04 225.98,-133.04 225.95,-129.54 222.83,-133.07 225.91,-126.04 225.91,-126.04\"/>\n",
"<text text-anchor=\"middle\" x=\"219\" y=\"-147.8\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M212.27,-122.04C210.89,-131.86 213.14,-141 219,-141 223.4,-141 225.76,-135.86 226.09,-129.14\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"225.73,-122.04 229.23,-128.87 225.91,-125.53 226.08,-129.03 226.08,-129.03 226.08,-129.03 225.91,-125.53 222.93,-129.18 225.73,-122.04 225.73,-122.04\"/>\n",
"<text text-anchor=\"middle\" x=\"219\" y=\"-144.8\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
"</g>\n",
"<!-- 1&#45;&gt;1 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>1&#45;&gt;1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M133.09,-38.04C132.13,-47.53 134.43,-56 140,-56 144.09,-56 146.42,-51.43 146.99,-45.25\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"146.91,-38.04 150.13,-45.01 146.95,-41.54 146.98,-45.04 146.98,-45.04 146.98,-45.04 146.95,-41.54 143.83,-45.07 146.91,-38.04 146.91,-38.04\"/>\n",
"<text text-anchor=\"start\" x=\"136\" y=\"-59.8\" font-family=\"Lato\" font-size=\"14.00\">b</text>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M133.27,-35.04C131.89,-44.86 134.14,-54 140,-54 144.4,-54 146.76,-48.86 147.09,-42.14\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"146.73,-35.04 150.23,-41.87 146.91,-38.53 147.08,-42.03 147.08,-42.03 147.08,-42.03 146.91,-38.53 143.93,-42.18 146.73,-35.04 146.73,-35.04\"/>\n",
"<text text-anchor=\"start\" x=\"136\" y=\"-57.8\" font-family=\"Lato\" font-size=\"14.00\">b</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faad8057450> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7ff008667ed0> >"
]
},
"metadata": {},
@ -1573,7 +1543,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -1605,7 +1574,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -1820,7 +1788,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faad816b390> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7ff0086676c0> >"
]
},
"metadata": {},
@ -1845,7 +1813,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -1874,7 +1841,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -2136,7 +2102,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faad816b390> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7ff0086676c0> >"
]
},
"metadata": {},
@ -2158,7 +2124,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -2186,7 +2151,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -2309,7 +2273,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -2337,7 +2300,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -2367,7 +2329,7 @@
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
@ -2381,7 +2343,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.6rc1"
"version": "3.11.6"
}
},
"nbformat": 4,