diff options
| author | vojtechsu | 2024-01-18 10:51:59 +0100 |
|---|---|---|
| committer | vojtechsu | 2024-01-18 10:51:59 +0100 |
| commit | 56bfd47fc206b0bc946d7de5aa5ef356a75974a9 (patch) | |
| tree | 3df1246cb0f852b8dab30a9f07d5c25022e24acc | |
| parent | c395392ea388ba9ea8596152b4bf72c8deba24f6 (diff) | |
| download | pyecsca-notebook-56bfd47fc206b0bc946d7de5aa5ef356a75974a9.tar.gz pyecsca-notebook-56bfd47fc206b0bc946d7de5aa5ef356a75974a9.tar.zst pyecsca-notebook-56bfd47fc206b0bc946d7de5aa5ef356a75974a9.zip | |
Add modified remapping
| -rw-r--r-- | re/zvp.ipynb | 1946 |
1 files changed, 1912 insertions, 34 deletions
diff --git a/re/zvp.ipynb b/re/zvp.ipynb index 02dda22..e3e607e 100644 --- a/re/zvp.ipynb +++ b/re/zvp.ipynb @@ -10,7 +10,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "17a9e580-5f1e-45c9-8afd-fc35e833b0b0", "metadata": {}, "outputs": [], @@ -46,7 +46,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "id": "c2240ed4-5279-487a-ad90-f6a6798f403c", "metadata": {}, "outputs": [], @@ -66,7 +66,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "id": "8de124f1-9498-4e55-8b7f-1bd291ccf3fe", "metadata": {}, "outputs": [], @@ -79,7 +79,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "id": "2193ab53-9dc9-4ba4-89d3-e331e5cc20de", "metadata": {}, "outputs": [], @@ -119,7 +119,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "id": "d8ea0c4d-86e1-46af-ac20-569e6ef5439d", "metadata": {}, "outputs": [], @@ -139,7 +139,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "id": "0252f8fa-012c-453c-ba23-b40f9686fcce", "metadata": {}, "outputs": [], @@ -172,7 +172,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "id": "7ab00a5c-2873-40c0-a81c-873350897e46", "metadata": {}, "outputs": [], @@ -195,13 +195,28 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "id": "91bc36bb-80e8-41d8-8612-7f9e24bdf278", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "1632e60f52e54563a2243cf3d179da3b", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Compute: 0%| | 0/745 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "bound = 25\n", - "chain_bound = 20\n", + "bound = 5\n", + "chain_bound = 5\n", "\n", "formula_classes = [AdditionFormula, DoublingFormula]\n", "point_chains = {}\n", @@ -236,14 +251,29 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "id": "b7c7b341-5b15-44fb-b9cf-462b64e7536e", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "7bc93ed3bb94436e9fc5d20f86c83cb0", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Accumulate for coord systems: 0%| | 0/11 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "point_map = {}\n", "for coord_name, coords in tqdm(model.coordinates.items(), desc=\"Accumulate for coord systems\"):\n", - " formula_groups = [list(filter(lambda formula: isinstance(formula, formula_class), coords.formulas.values())) for formula_class in formula_classes]\n", + " formula_groups = [list(filter(lambda formula: isinstance(formula, formula_class) and (formula.name.startswith(\"add\") or formula.name.startswith(\"dbl\")), coords.formulas.values())) for formula_class in formula_classes]\n", " formula_combinations = list(product(*formula_groups))\n", " for formulas in formula_combinations:\n", " points = set()\n", @@ -272,7 +302,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "id": "8afea2a8-49a1-4969-a19e-9e17e26fb1e8", "metadata": {}, "outputs": [], @@ -282,12 +312,347 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, + "id": "49ee4c6f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4, 37, 4, 27, 2, 4, 12, 17, 4, 6, 2, 67, 1, 4, 2, 8, 2, 6, 1, 3, 4, 1, 6, 3, 3, 6, 2, 4, " + ] + } + ], + "source": [ + "def print_leaf_sizes(tree):\n", + " leaves = []\n", + " nodes = [tree]\n", + " while nodes:\n", + " new_nodes = []\n", + " for node in nodes:\n", + " if node.children:\n", + " new_nodes.extend(node.children)\n", + " else:\n", + " leaves.append(node)\n", + " nodes = new_nodes \n", + " leaf_sizes = [len(leaf.cfgs) for leaf in leaves]\n", + " print(sorted(leaf_sizes))\n", + "\n", + "print_leaf_sizes(tree)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, "id": "ab09b767-71ca-4d28-abf0-532307efefbd", "metadata": { "scrolled": true }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[x=7523181643117586774, y=861591372171155399]\n", + "DomainParameters(EllipticCurve)\n", + "├── [x=4173724707785958223, y=6577250203972113290]\n", + "│ DomainParameters(EllipticCurve)\n", + "│ ├── [x=198756535338419930, y=10649610515976041289]\n", + "│ │ DomainParameters(EllipticCurve)\n", + "│ │ ├── shortw/projective/add-1998-cmo-2, shortw/projective/dbl-2015-rcb\n", + "│ │ │ shortw/projective/add-1998-cmo-2, shortw/projective/dbl-2016-rcb\n", + "│ │ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-2015-rcb\n", + "│ │ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-2016-rcb\n", + "│ │ └── [x=710459779677453253, y=8718793080546575443]\n", + "│ │ DomainParameters(EllipticCurve)\n", + "│ │ ├── shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-1998-hnm\n", + "│ │ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-1998-hnm\n", + "│ │ │ shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-1998-hnm\n", + "│ │ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-1998-hnm\n", + "│ │ └── shortw/projective/add-1998-cmo-2, shortw/projective/dbl-2007-bl\n", + "│ │ shortw/projective/add-1998-cmo-2, shortw/projective/dbl-1998-cmo-2\n", + "│ │ shortw/projective/add-1998-cmo-2, shortw/projective/dbl-1998-cmo\n", + "│ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-2007-bl\n", + "│ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-1998-cmo-2\n", + "│ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-1998-cmo\n", + "│ │ shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-1986-cc\n", + "│ │ shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-2007-bl\n", + "│ │ shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-1998-cmo-2\n", + "│ │ shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-1998-cmo\n", + "│ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-1986-cc\n", + "│ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-2007-bl\n", + "│ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-1998-cmo-2\n", + "│ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-1998-cmo\n", + "│ │ shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-1986-cc\n", + "│ │ shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-2007-bl\n", + "│ │ shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-1998-cmo-2\n", + "│ │ shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-1998-cmo\n", + "│ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-1986-cc\n", + "│ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-2007-bl\n", + "│ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-1998-cmo-2\n", + "│ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-1998-cmo\n", + "│ │ shortw/xyzz/add-2008-s, shortw/xyzz/dbl-2008-s-1\n", + "│ │ shortw/modified/add-1998-cmo-2, shortw/modified/dbl-2009-bl\n", + "│ │ shortw/modified/add-1998-cmo-2, shortw/modified/dbl-1998-cmo-2\n", + "│ │ shortw/modified/add-2009-bl, shortw/modified/dbl-2009-bl\n", + "│ │ shortw/modified/add-2009-bl, shortw/modified/dbl-1998-cmo-2\n", + "│ └── [x=161110322234615011, y=6188535790273537383]\n", + "│ DomainParameters(EllipticCurve)\n", + "│ ├── [x=7018390556762767964, y=8234992169006142300]\n", + "│ │ DomainParameters(EllipticCurve)\n", + "│ │ ├── shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2015-rcb\n", + "│ │ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2015-rcb\n", + "│ │ └── shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2015-rcb-3\n", + "│ │ shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2016-rcb\n", + "│ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2015-rcb-3\n", + "│ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2016-rcb\n", + "│ └── shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2007-bl\n", + "│ shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-1998-cmo-2\n", + "│ shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2007-bl-2\n", + "│ shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-1998-cmo\n", + "│ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2007-bl\n", + "│ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-1998-cmo-2\n", + "│ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2007-bl-2\n", + "│ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-1998-cmo\n", + "│ shortw/xyzz-3/add-2008-s, shortw/xyzz-3/dbl-2008-s-1\n", + "│ shortw/xyzz-3/add-2008-s, shortw/xyzz-3/dbl-2008-s-2\n", + "│ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1986-cc\n", + "│ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1998-hnm-2\n", + "│ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1998-hnm\n", + "│ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-2007-bl\n", + "│ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-2004-hmv\n", + "│ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1998-cmo-2\n", + "│ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-2001-b\n", + "│ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1998-cmo\n", + "│ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1986-cc-2\n", + "│ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1986-cc\n", + "│ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1998-hnm-2\n", + "│ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1998-hnm\n", + "│ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-2007-bl\n", + "│ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-2004-hmv\n", + "│ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1998-cmo-2\n", + "│ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-2001-b\n", + "│ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1998-cmo\n", + "│ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1986-cc-2\n", + "│ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1986-cc\n", + "│ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1998-hnm-2\n", + "│ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1998-hnm\n", + "│ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-2007-bl\n", + "│ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-2004-hmv\n", + "│ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1998-cmo-2\n", + "│ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-2001-b\n", + "│ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1998-cmo\n", + "│ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1986-cc-2\n", + "└── [x=3271642899270608132, y=4094231858049384691]\n", + " DomainParameters(EllipticCurve)\n", + " ├── [x=8462011093657406711, y=9385955884972991198]\n", + " │ DomainParameters(EllipticCurve)\n", + " │ ├── [x=3909394990548410378, y=1271934111897046201]\n", + " │ │ DomainParameters(EllipticCurve)\n", + " │ │ ├── [x=198756535338419930, y=10649610515976041289]\n", + " │ │ │ DomainParameters(EllipticCurve)\n", + " │ │ │ ├── shortw/projective/add-2002-bj, shortw/projective/dbl-2015-rcb\n", + " │ │ │ │ shortw/projective/add-2002-bj, shortw/projective/dbl-2016-rcb\n", + " │ │ │ │ shortw/projective/add-2007-bl, shortw/projective/dbl-2015-rcb\n", + " │ │ │ │ shortw/projective/add-2007-bl, shortw/projective/dbl-2016-rcb\n", + " │ │ │ └── shortw/projective/add-2002-bj, shortw/projective/dbl-2007-bl\n", + " │ │ │ shortw/projective/add-2002-bj, shortw/projective/dbl-1998-cmo-2\n", + " │ │ │ shortw/projective/add-2002-bj, shortw/projective/dbl-1998-cmo\n", + " │ │ │ shortw/projective/add-2007-bl, shortw/projective/dbl-2007-bl\n", + " │ │ │ shortw/projective/add-2007-bl, shortw/projective/dbl-1998-cmo-2\n", + " │ │ │ shortw/projective/add-2007-bl, shortw/projective/dbl-1998-cmo\n", + " │ │ └── [x=9280663850407308169, y=3970590255664920732]\n", + " │ │ DomainParameters(EllipticCurve)\n", + " │ │ ├── [x=710459779677453253, y=8718793080546575443]\n", + " │ │ │ DomainParameters(EllipticCurve)\n", + " │ │ │ ├── shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-1998-hnm\n", + " │ │ │ └── shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-1986-cc\n", + " │ │ │ shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-2007-bl\n", + " │ │ │ shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-1998-cmo-2\n", + " │ │ │ shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-1998-cmo\n", + " │ │ └── [x=710459779677453253, y=8718793080546575443]\n", + " │ │ DomainParameters(EllipticCurve)\n", + " │ │ ├── shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-1998-hnm\n", + " │ │ │ shortw/jacobian/add-2001-b, shortw/jacobian/dbl-1998-hnm\n", + " │ │ └── shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-1986-cc\n", + " │ │ shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-2007-bl\n", + " │ │ shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-1998-cmo-2\n", + " │ │ shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-1998-cmo\n", + " │ │ shortw/jacobian/add-2001-b, shortw/jacobian/dbl-1986-cc\n", + " │ │ shortw/jacobian/add-2001-b, shortw/jacobian/dbl-2007-bl\n", + " │ │ shortw/jacobian/add-2001-b, shortw/jacobian/dbl-1998-cmo-2\n", + " │ │ shortw/jacobian/add-2001-b, shortw/jacobian/dbl-1998-cmo\n", + " │ └── [x=3760330877114905034, y=14518154872986670897]\n", + " │ DomainParameters(EllipticCurve)\n", + " │ ├── [x=9185172264551501167, y=1489984362467478237]\n", + " │ │ DomainParameters(EllipticCurve)\n", + " │ │ ├── [x=5290749974607723184, y=9066658054269062673]\n", + " │ │ │ DomainParameters(EllipticCurve)\n", + " │ │ │ ├── shortw/projective-1/add-2002-bj, shortw/projective-1/dbl-2015-rcb\n", + " │ │ │ │ shortw/projective-1/add-2007-bl, shortw/projective-1/dbl-2015-rcb\n", + " │ │ │ └── shortw/projective-1/add-2002-bj, shortw/projective-1/dbl-2007-bl\n", + " │ │ │ shortw/projective-1/add-2002-bj, shortw/projective-1/dbl-1998-cmo-2\n", + " │ │ │ shortw/projective-1/add-2002-bj, shortw/projective-1/dbl-1998-cmo\n", + " │ │ │ shortw/projective-1/add-2007-bl, shortw/projective-1/dbl-2007-bl\n", + " │ │ │ shortw/projective-1/add-2007-bl, shortw/projective-1/dbl-1998-cmo-2\n", + " │ │ │ shortw/projective-1/add-2007-bl, shortw/projective-1/dbl-1998-cmo\n", + " │ │ └── [x=9023895164928322279, y=3383060556063092686]\n", + " │ │ DomainParameters(EllipticCurve)\n", + " │ │ ├── shortw/projective-1/add-2002-bj-2, shortw/projective-1/dbl-2015-rcb\n", + " │ │ └── shortw/projective-1/add-2002-bj-2, shortw/projective-1/dbl-2007-bl\n", + " │ │ shortw/projective-1/add-2002-bj-2, shortw/projective-1/dbl-1998-cmo-2\n", + " │ │ shortw/projective-1/add-2002-bj-2, shortw/projective-1/dbl-1998-cmo\n", + " │ └── [x=9023895164928322279, y=11600196812807098545]\n", + " │ DomainParameters(EllipticCurve)\n", + " │ ├── [x=8976497402921340665, y=14893197716203064256]\n", + " │ │ DomainParameters(EllipticCurve)\n", + " │ │ ├── shortw/projective/add-2016-rcb, shortw/projective/dbl-2015-rcb\n", + " │ │ │ shortw/projective/add-2016-rcb, shortw/projective/dbl-2016-rcb\n", + " │ │ │ shortw/projective/add-2015-rcb, shortw/projective/dbl-2015-rcb\n", + " │ │ │ shortw/projective/add-2015-rcb, shortw/projective/dbl-2016-rcb\n", + " │ │ └── shortw/projective-1/add-2015-rcb, shortw/projective-1/dbl-2015-rcb\n", + " │ └── [x=8976497402921340665, y=14893197716203064256]\n", + " │ DomainParameters(EllipticCurve)\n", + " │ ├── shortw/projective/add-2016-rcb, shortw/projective/dbl-2007-bl\n", + " │ │ shortw/projective/add-2016-rcb, shortw/projective/dbl-1998-cmo-2\n", + " │ │ shortw/projective/add-2016-rcb, shortw/projective/dbl-1998-cmo\n", + " │ │ shortw/projective/add-2015-rcb, shortw/projective/dbl-2007-bl\n", + " │ │ shortw/projective/add-2015-rcb, shortw/projective/dbl-1998-cmo-2\n", + " │ │ shortw/projective/add-2015-rcb, shortw/projective/dbl-1998-cmo\n", + " │ └── shortw/projective-1/add-2015-rcb, shortw/projective-1/dbl-2007-bl\n", + " │ shortw/projective-1/add-2015-rcb, shortw/projective-1/dbl-1998-cmo-2\n", + " │ shortw/projective-1/add-2015-rcb, shortw/projective-1/dbl-1998-cmo\n", + " └── [x=3261882760552750749, y=5224146365954570556]\n", + " DomainParameters(EllipticCurve)\n", + " ├── [x=161110322234615011, y=6188535790273537383]\n", + " │ DomainParameters(EllipticCurve)\n", + " │ ├── [x=6741014024306303479, y=8089192144272372943]\n", + " │ │ DomainParameters(EllipticCurve)\n", + " │ │ ├── [x=7018390556762767964, y=8234992169006142300]\n", + " │ │ │ DomainParameters(EllipticCurve)\n", + " │ │ │ ├── shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2015-rcb\n", + " │ │ │ │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2015-rcb\n", + " │ │ │ │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2015-rcb\n", + " │ │ │ └── shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2015-rcb-3\n", + " │ │ │ shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2016-rcb\n", + " │ │ │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2015-rcb-3\n", + " │ │ │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2016-rcb\n", + " │ │ │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2015-rcb-3\n", + " │ │ │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2016-rcb\n", + " │ │ └── [x=7018390556762767964, y=8234992169006142300]\n", + " │ │ DomainParameters(EllipticCurve)\n", + " │ │ ├── shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2015-rcb\n", + " │ │ │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2015-rcb\n", + " │ │ └── shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2015-rcb-3\n", + " │ │ shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2016-rcb\n", + " │ │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2015-rcb-3\n", + " │ │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2016-rcb\n", + " │ └── shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2007-bl\n", + " │ shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-1998-cmo-2\n", + " │ shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2007-bl-2\n", + " │ shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-1998-cmo\n", + " │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2007-bl\n", + " │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-1998-cmo-2\n", + " │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2007-bl-2\n", + " │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-1998-cmo\n", + " │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2007-bl\n", + " │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-1998-cmo-2\n", + " │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2007-bl-2\n", + " │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-1998-cmo\n", + " └── [x=8583585759655994824, y=5121594309025134149]\n", + " DomainParameters(EllipticCurve)\n", + " ├── shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2007-bl\n", + " │ shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-1998-cmo-2\n", + " │ shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2007-bl-2\n", + " │ shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-1998-cmo\n", + " │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2007-bl\n", + " │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-1998-cmo-2\n", + " │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2007-bl-2\n", + " │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-1998-cmo\n", + " │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1986-cc\n", + " │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1998-hnm-2\n", + " │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1998-hnm\n", + " │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-2007-bl\n", + " │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-2004-hmv\n", + " │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1998-cmo-2\n", + " │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-2001-b\n", + " │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1998-cmo\n", + " │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1986-cc-2\n", + " └── [x=9023895164928322279, y=3383060556063092686]\n", + " DomainParameters(EllipticCurve)\n", + " ├── shortw/projective-1/add-1998-cmo-2, shortw/projective-1/dbl-2015-rcb\n", + " │ shortw/projective-1/add-1998-cmo, shortw/projective-1/dbl-2015-rcb\n", + " └── shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-1986-cc\n", + " shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-1998-hnm\n", + " shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-2007-bl\n", + " shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-2009-l\n", + " shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-1998-cmo-2\n", + " shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-1998-cmo\n", + " shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-2009-alnr\n", + " shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-1986-cc\n", + " shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-1998-hnm\n", + " shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-2007-bl\n", + " shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-2009-l\n", + " shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-1998-cmo-2\n", + " shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-1998-cmo\n", + " shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-2009-alnr\n", + " shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-1986-cc\n", + " shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-1998-hnm\n", + " shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-2007-bl\n", + " shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-2009-l\n", + " shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-1998-cmo-2\n", + " shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-1998-cmo\n", + " shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-2009-alnr\n", + " shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-1986-cc\n", + " shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-1998-hnm\n", + " shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-2007-bl\n", + " shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-2009-l\n", + " shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-1998-cmo-2\n", + " shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-1998-cmo\n", + " shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-2009-alnr\n", + " shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-1986-cc\n", + " shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-1998-hnm\n", + " shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-2007-bl\n", + " shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-2009-l\n", + " shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-1998-cmo-2\n", + " shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-1998-cmo\n", + " shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-2009-alnr\n", + " shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-1986-cc\n", + " shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-1998-hnm\n", + " shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-2007-bl\n", + " shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-2009-l\n", + " shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-1998-cmo-2\n", + " shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-1998-cmo\n", + " shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-2009-alnr\n", + " shortw/w12-0/add-2010-cln, shortw/w12-0/dbl-2010-cln\n", + " shortw/projective-1/add-1998-cmo-2, shortw/projective-1/dbl-2007-bl\n", + " shortw/projective-1/add-1998-cmo-2, shortw/projective-1/dbl-1998-cmo-2\n", + " shortw/projective-1/add-1998-cmo-2, shortw/projective-1/dbl-1998-cmo\n", + " shortw/projective-1/add-1998-cmo, shortw/projective-1/dbl-2007-bl\n", + " shortw/projective-1/add-1998-cmo, shortw/projective-1/dbl-1998-cmo-2\n", + " shortw/projective-1/add-1998-cmo, shortw/projective-1/dbl-1998-cmo\n", + " shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1986-cc\n", + " shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1998-hnm-2\n", + " shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1998-hnm\n", + " shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-2007-bl\n", + " shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-2004-hmv\n", + " shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1998-cmo-2\n", + " shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-2001-b\n", + " shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1998-cmo\n", + " shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1986-cc-2\n", + " shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1986-cc\n", + " shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1998-hnm-2\n", + " shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1998-hnm\n", + " shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-2007-bl\n", + " shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-2004-hmv\n", + " shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1998-cmo-2\n", + " shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-2001-b\n", + " shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1998-cmo\n", + " shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1986-cc-2\n" + ] + } + ], "source": [ "print(RenderTree(tree).by_attr(lambda n: n.name if n.name is not None else \"\\n\".join((\", \".join(str(formula) for formula in cfg) for cfg in n.cfgs))))" ] @@ -302,10 +667,25 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "id": "ca932717-2b0a-4dea-ae84-988b7d9af233", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "4655629a073d4e158f00d150dbf363b5", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Remap: 0%| | 0/242 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "def remap(coords, formulas, points, scalar):\n", " mult = LTRMultiplier(*formulas, None, False, AccumulationOrder.PeqRP, True, True)\n", @@ -335,6 +715,8 @@ " hit_zero = any(int(value) == 0 for value in trace)\n", " if hit_zero:\n", " new_points.add((point, params))\n", + " #hit_zero = sum(int(value) == 0 for value in trace)\n", + " #new_points.add((point, hit_zero, params))\n", " return new_points\n", "\n", "remapped_point_map = {}\n", @@ -342,7 +724,7 @@ " futures = []\n", " pairs = []\n", " for coord_name, coords in model.coordinates.items():\n", - " formula_groups = [list(filter(lambda formula: isinstance(formula, formula_class), coords.formulas.values())) for formula_class in formula_classes]\n", + " formula_groups = [list(filter(lambda formula: isinstance(formula, formula_class) and (formula.name.startswith(\"add\") or formula.name.startswith(\"dbl\")), coords.formulas.values())) for formula_class in formula_classes]\n", " formula_combinations = list(product(*formula_groups))\n", " for formulas in formula_combinations:\n", " #remap(coords, formulas, all_points, scalar)\n", @@ -366,12 +748,261 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "id": "cc87dfd1-f058-4338-aaca-fc05105fc9f1", "metadata": { "scrolled": true }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "shortw/jacobian-0/add-1998-cmo-2 shortw/jacobian-0/dbl-1986-cc 0 32 0 32\n", + "shortw/jacobian-0/add-1998-cmo-2 shortw/jacobian-0/dbl-1998-hnm 0 32 0 32\n", + "shortw/jacobian-0/add-1998-cmo-2 shortw/jacobian-0/dbl-2007-bl 0 32 0 32\n", + "shortw/jacobian-0/add-1998-cmo-2 shortw/jacobian-0/dbl-2009-l 0 0 0 0\n", + "shortw/jacobian-0/add-1998-cmo-2 shortw/jacobian-0/dbl-1998-cmo-2 0 32 0 32\n", + "shortw/jacobian-0/add-1998-cmo-2 shortw/jacobian-0/dbl-1998-cmo 0 32 0 32\n", + "shortw/jacobian-0/add-1998-cmo-2 shortw/jacobian-0/dbl-2009-alnr 0 3 0 3\n", + "shortw/jacobian-0/add-1998-cmo shortw/jacobian-0/dbl-1986-cc 0 32 0 32\n", + "shortw/jacobian-0/add-1998-cmo shortw/jacobian-0/dbl-1998-hnm 0 32 0 32\n", + "shortw/jacobian-0/add-1998-cmo shortw/jacobian-0/dbl-2007-bl 0 32 0 32\n", + "shortw/jacobian-0/add-1998-cmo shortw/jacobian-0/dbl-2009-l 0 0 0 0\n", + "shortw/jacobian-0/add-1998-cmo shortw/jacobian-0/dbl-1998-cmo-2 0 32 0 32\n", + "shortw/jacobian-0/add-1998-cmo shortw/jacobian-0/dbl-1998-cmo 0 32 0 32\n", + "shortw/jacobian-0/add-1998-cmo shortw/jacobian-0/dbl-2009-alnr 0 3 0 3\n", + "shortw/jacobian-0/add-1998-hnm shortw/jacobian-0/dbl-1986-cc 0 32 0 32\n", + "shortw/jacobian-0/add-1998-hnm shortw/jacobian-0/dbl-1998-hnm 0 32 0 32\n", + "shortw/jacobian-0/add-1998-hnm shortw/jacobian-0/dbl-2007-bl 0 32 0 32\n", + "shortw/jacobian-0/add-1998-hnm shortw/jacobian-0/dbl-2009-l 0 0 0 0\n", + "shortw/jacobian-0/add-1998-hnm shortw/jacobian-0/dbl-1998-cmo-2 0 32 0 32\n", + "shortw/jacobian-0/add-1998-hnm shortw/jacobian-0/dbl-1998-cmo 0 32 0 32\n", + "shortw/jacobian-0/add-1998-hnm shortw/jacobian-0/dbl-2009-alnr 0 3 0 3\n", + "shortw/jacobian-0/add-1986-cc shortw/jacobian-0/dbl-1986-cc 0 32 0 32\n", + "shortw/jacobian-0/add-1986-cc shortw/jacobian-0/dbl-1998-hnm 0 32 0 32\n", + "shortw/jacobian-0/add-1986-cc shortw/jacobian-0/dbl-2007-bl 0 32 0 32\n", + "shortw/jacobian-0/add-1986-cc shortw/jacobian-0/dbl-2009-l 0 0 0 0\n", + "shortw/jacobian-0/add-1986-cc shortw/jacobian-0/dbl-1998-cmo-2 0 32 0 32\n", + "shortw/jacobian-0/add-1986-cc shortw/jacobian-0/dbl-1998-cmo 0 32 0 32\n", + "shortw/jacobian-0/add-1986-cc shortw/jacobian-0/dbl-2009-alnr 0 3 0 3\n", + "shortw/jacobian-0/add-2001-b shortw/jacobian-0/dbl-1986-cc 0 32 0 32\n", + "shortw/jacobian-0/add-2001-b shortw/jacobian-0/dbl-1998-hnm 0 32 0 32\n", + "shortw/jacobian-0/add-2001-b shortw/jacobian-0/dbl-2007-bl 0 32 0 32\n", + "shortw/jacobian-0/add-2001-b shortw/jacobian-0/dbl-2009-l 0 0 0 0\n", + "shortw/jacobian-0/add-2001-b shortw/jacobian-0/dbl-1998-cmo-2 0 32 0 32\n", + "shortw/jacobian-0/add-2001-b shortw/jacobian-0/dbl-1998-cmo 0 32 0 32\n", + "shortw/jacobian-0/add-2001-b shortw/jacobian-0/dbl-2009-alnr 0 3 0 3\n", + "shortw/jacobian-0/add-2007-bl shortw/jacobian-0/dbl-1986-cc 0 32 0 32\n", + "shortw/jacobian-0/add-2007-bl shortw/jacobian-0/dbl-1998-hnm 0 32 0 32\n", + "shortw/jacobian-0/add-2007-bl shortw/jacobian-0/dbl-2007-bl 0 32 0 32\n", + "shortw/jacobian-0/add-2007-bl shortw/jacobian-0/dbl-2009-l 0 3 0 3\n", + "shortw/jacobian-0/add-2007-bl shortw/jacobian-0/dbl-1998-cmo-2 0 32 0 32\n", + "shortw/jacobian-0/add-2007-bl shortw/jacobian-0/dbl-1998-cmo 0 32 0 32\n", + "shortw/jacobian-0/add-2007-bl shortw/jacobian-0/dbl-2009-alnr 0 3 0 3\n", + "shortw/w12-0/add-2010-cln shortw/w12-0/dbl-2010-cln 0 0 0 0\n", + "shortw/projective-1/add-1998-cmo-2 shortw/projective-1/dbl-2015-rcb 6 6 0 0\n", + "shortw/projective-1/add-1998-cmo-2 shortw/projective-1/dbl-2007-bl 0 0 0 0\n", + "shortw/projective-1/add-1998-cmo-2 shortw/projective-1/dbl-1998-cmo-2 0 0 0 0\n", + "shortw/projective-1/add-1998-cmo-2 shortw/projective-1/dbl-1998-cmo 0 0 0 0\n", + "shortw/projective-1/add-2002-bj-2 shortw/projective-1/dbl-2015-rcb 10 10 0 0\n", + "shortw/projective-1/add-2002-bj-2 shortw/projective-1/dbl-2007-bl 4 4 0 0\n", + "shortw/projective-1/add-2002-bj-2 shortw/projective-1/dbl-1998-cmo-2 4 4 0 0\n", + "shortw/projective-1/add-2002-bj-2 shortw/projective-1/dbl-1998-cmo 4 4 0 0\n", + "shortw/projective-1/add-1998-cmo shortw/projective-1/dbl-2015-rcb 6 6 0 0\n", + "shortw/projective-1/add-1998-cmo shortw/projective-1/dbl-2007-bl 0 0 0 0\n", + "shortw/projective-1/add-1998-cmo shortw/projective-1/dbl-1998-cmo-2 0 0 0 0\n", + "shortw/projective-1/add-1998-cmo shortw/projective-1/dbl-1998-cmo 0 0 0 0\n", + "shortw/projective-1/add-2015-rcb shortw/projective-1/dbl-2015-rcb 23 23 0 0\n", + "shortw/projective-1/add-2015-rcb shortw/projective-1/dbl-2007-bl 19 19 0 0\n", + "shortw/projective-1/add-2015-rcb shortw/projective-1/dbl-1998-cmo-2 19 19 0 0\n", + "shortw/projective-1/add-2015-rcb shortw/projective-1/dbl-1998-cmo 19 19 0 0\n", + "shortw/projective-1/add-2002-bj shortw/projective-1/dbl-2015-rcb 16 16 0 0\n", + "shortw/projective-1/add-2002-bj shortw/projective-1/dbl-2007-bl 10 10 0 0\n", + "shortw/projective-1/add-2002-bj shortw/projective-1/dbl-1998-cmo-2 10 10 0 0\n", + "shortw/projective-1/add-2002-bj shortw/projective-1/dbl-1998-cmo 10 10 0 0\n", + "shortw/projective-1/add-2007-bl shortw/projective-1/dbl-2015-rcb 16 16 0 0\n", + "shortw/projective-1/add-2007-bl shortw/projective-1/dbl-2007-bl 10 10 0 0\n", + "shortw/projective-1/add-2007-bl shortw/projective-1/dbl-1998-cmo-2 10 10 0 0\n", + "shortw/projective-1/add-2007-bl shortw/projective-1/dbl-1998-cmo 10 10 0 0\n", + "shortw/projective/add-2016-rcb shortw/projective/dbl-2015-rcb 474 474 0 0\n", + "shortw/projective/add-2016-rcb shortw/projective/dbl-2007-bl 320 320 0 0\n", + "shortw/projective/add-2016-rcb shortw/projective/dbl-1998-cmo-2 320 320 0 0\n", + "shortw/projective/add-2016-rcb shortw/projective/dbl-2016-rcb 474 474 0 0\n", + "shortw/projective/add-2016-rcb shortw/projective/dbl-1998-cmo 320 320 0 0\n", + "shortw/projective/add-1998-cmo-2 shortw/projective/dbl-2015-rcb 232 264 0 32\n", + "shortw/projective/add-1998-cmo-2 shortw/projective/dbl-2007-bl 64 96 0 32\n", + "shortw/projective/add-1998-cmo-2 shortw/projective/dbl-1998-cmo-2 64 96 0 32\n", + "shortw/projective/add-1998-cmo-2 shortw/projective/dbl-2016-rcb 232 264 0 32\n", + "shortw/projective/add-1998-cmo-2 shortw/projective/dbl-1998-cmo 64 96 0 32\n", + "shortw/projective/add-1998-cmo shortw/projective/dbl-2015-rcb 232 264 0 32\n", + "shortw/projective/add-1998-cmo shortw/projective/dbl-2007-bl 64 96 0 32\n", + "shortw/projective/add-1998-cmo shortw/projective/dbl-1998-cmo-2 64 96 0 32\n", + "shortw/projective/add-1998-cmo shortw/projective/dbl-2016-rcb 232 264 0 32\n", + "shortw/projective/add-1998-cmo shortw/projective/dbl-1998-cmo 64 96 0 32\n", + "shortw/projective/add-2015-rcb shortw/projective/dbl-2015-rcb 474 474 0 0\n", + "shortw/projective/add-2015-rcb shortw/projective/dbl-2007-bl 320 320 0 0\n", + "shortw/projective/add-2015-rcb shortw/projective/dbl-1998-cmo-2 320 320 0 0\n", + "shortw/projective/add-2015-rcb shortw/projective/dbl-2016-rcb 474 474 0 0\n", + "shortw/projective/add-2015-rcb shortw/projective/dbl-1998-cmo 320 320 0 0\n", + "shortw/projective/add-2002-bj shortw/projective/dbl-2015-rcb 246 278 0 32\n", + "shortw/projective/add-2002-bj shortw/projective/dbl-2007-bl 78 110 0 32\n", + "shortw/projective/add-2002-bj shortw/projective/dbl-1998-cmo-2 78 110 0 32\n", + "shortw/projective/add-2002-bj shortw/projective/dbl-2016-rcb 246 278 0 32\n", + "shortw/projective/add-2002-bj shortw/projective/dbl-1998-cmo 78 110 0 32\n", + "shortw/projective/add-2007-bl shortw/projective/dbl-2015-rcb 246 278 0 32\n", + "shortw/projective/add-2007-bl shortw/projective/dbl-2007-bl 78 110 0 32\n", + "shortw/projective/add-2007-bl shortw/projective/dbl-1998-cmo-2 78 110 0 32\n", + "shortw/projective/add-2007-bl shortw/projective/dbl-2016-rcb 246 278 0 32\n", + "shortw/projective/add-2007-bl shortw/projective/dbl-1998-cmo 78 110 0 32\n", + "shortw/jacobian/add-1998-cmo-2 shortw/jacobian/dbl-1986-cc 64 96 0 32\n", + "shortw/jacobian/add-1998-cmo-2 shortw/jacobian/dbl-1998-hnm 160 192 0 32\n", + "shortw/jacobian/add-1998-cmo-2 shortw/jacobian/dbl-2007-bl 64 111 0 47\n", + "shortw/jacobian/add-1998-cmo-2 shortw/jacobian/dbl-1998-cmo-2 64 96 0 32\n", + "shortw/jacobian/add-1998-cmo-2 shortw/jacobian/dbl-1998-cmo 64 96 0 32\n", + "shortw/jacobian/add-1998-cmo shortw/jacobian/dbl-1986-cc 64 96 0 32\n", + "shortw/jacobian/add-1998-cmo shortw/jacobian/dbl-1998-hnm 160 192 0 32\n", + "shortw/jacobian/add-1998-cmo shortw/jacobian/dbl-2007-bl 64 111 0 47\n", + "shortw/jacobian/add-1998-cmo shortw/jacobian/dbl-1998-cmo-2 64 96 0 32\n", + "shortw/jacobian/add-1998-cmo shortw/jacobian/dbl-1998-cmo 64 96 0 32\n", + "shortw/jacobian/add-1998-hnm shortw/jacobian/dbl-1986-cc 80 112 0 32\n", + "shortw/jacobian/add-1998-hnm shortw/jacobian/dbl-1998-hnm 168 200 0 32\n", + "shortw/jacobian/add-1998-hnm shortw/jacobian/dbl-2007-bl 80 127 0 47\n", + "shortw/jacobian/add-1998-hnm shortw/jacobian/dbl-1998-cmo-2 80 112 0 32\n", + "shortw/jacobian/add-1998-hnm shortw/jacobian/dbl-1998-cmo 80 112 0 32\n", + "shortw/jacobian/add-1986-cc shortw/jacobian/dbl-1986-cc 54 86 0 32\n", + "shortw/jacobian/add-1986-cc shortw/jacobian/dbl-1998-hnm 142 174 0 32\n", + "shortw/jacobian/add-1986-cc shortw/jacobian/dbl-2007-bl 54 101 0 47\n", + "shortw/jacobian/add-1986-cc shortw/jacobian/dbl-1998-cmo-2 54 86 0 32\n", + "shortw/jacobian/add-1986-cc shortw/jacobian/dbl-1998-cmo 54 86 0 32\n", + "shortw/jacobian/add-2001-b shortw/jacobian/dbl-1986-cc 54 86 0 32\n", + "shortw/jacobian/add-2001-b shortw/jacobian/dbl-1998-hnm 142 174 0 32\n", + "shortw/jacobian/add-2001-b shortw/jacobian/dbl-2007-bl 54 101 0 47\n", + "shortw/jacobian/add-2001-b shortw/jacobian/dbl-1998-cmo-2 54 86 0 32\n", + "shortw/jacobian/add-2001-b shortw/jacobian/dbl-1998-cmo 54 86 0 32\n", + "shortw/jacobian/add-2007-bl shortw/jacobian/dbl-1986-cc 64 111 0 47\n", + "shortw/jacobian/add-2007-bl shortw/jacobian/dbl-1998-hnm 160 207 0 47\n", + "shortw/jacobian/add-2007-bl shortw/jacobian/dbl-2007-bl 64 111 0 47\n", + "shortw/jacobian/add-2007-bl shortw/jacobian/dbl-1998-cmo-2 64 111 0 47\n", + "shortw/jacobian/add-2007-bl shortw/jacobian/dbl-1998-cmo 64 111 0 47\n", + "shortw/jacobian/add-bc-r1rv76-jac shortw/jacobian/dbl-1986-cc 64 96 0 32\n", + "shortw/jacobian/add-bc-r1rv76-jac shortw/jacobian/dbl-1998-hnm 160 192 0 32\n", + "shortw/jacobian/add-bc-r1rv76-jac shortw/jacobian/dbl-2007-bl 64 111 0 47\n", + "shortw/jacobian/add-bc-r1rv76-jac shortw/jacobian/dbl-1998-cmo-2 64 96 0 32\n", + "shortw/jacobian/add-bc-r1rv76-jac shortw/jacobian/dbl-1998-cmo 64 96 0 32\n", + "shortw/xyzz/add-2008-s shortw/xyzz/dbl-2008-s-1 64 96 0 32\n", + "shortw/modified/add-1998-cmo-2 shortw/modified/dbl-2009-bl 64 96 0 32\n", + "shortw/modified/add-1998-cmo-2 shortw/modified/dbl-1998-cmo-2 64 96 0 32\n", + "shortw/modified/add-2009-bl shortw/modified/dbl-2009-bl 64 111 0 47\n", + "shortw/modified/add-2009-bl shortw/modified/dbl-1998-cmo-2 64 111 0 47\n", + "shortw/projective-3/add-2016-rcb shortw/projective-3/dbl-2015-rcb 28 28 0 0\n", + "shortw/projective-3/add-2016-rcb shortw/projective-3/dbl-2007-bl 12 12 0 0\n", + "shortw/projective-3/add-2016-rcb shortw/projective-3/dbl-2015-rcb-3 28 28 0 0\n", + "shortw/projective-3/add-2016-rcb shortw/projective-3/dbl-1998-cmo-2 12 12 0 0\n", + "shortw/projective-3/add-2016-rcb shortw/projective-3/dbl-2007-bl-2 12 12 0 0\n", + "shortw/projective-3/add-2016-rcb shortw/projective-3/dbl-2016-rcb 28 28 0 0\n", + "shortw/projective-3/add-2016-rcb shortw/projective-3/dbl-1998-cmo 12 12 0 0\n", + "shortw/projective-3/add-1998-cmo-2 shortw/projective-3/dbl-2015-rcb 20 20 0 0\n", + "shortw/projective-3/add-1998-cmo-2 shortw/projective-3/dbl-2007-bl 2 2 0 0\n", + "shortw/projective-3/add-1998-cmo-2 shortw/projective-3/dbl-2015-rcb-3 20 20 0 0\n", + "shortw/projective-3/add-1998-cmo-2 shortw/projective-3/dbl-1998-cmo-2 2 2 0 0\n", + "shortw/projective-3/add-1998-cmo-2 shortw/projective-3/dbl-2007-bl-2 2 2 0 0\n", + "shortw/projective-3/add-1998-cmo-2 shortw/projective-3/dbl-2016-rcb 20 20 0 0\n", + "shortw/projective-3/add-1998-cmo-2 shortw/projective-3/dbl-1998-cmo 2 2 0 0\n", + "shortw/projective-3/add-1998-cmo shortw/projective-3/dbl-2015-rcb 20 20 0 0\n", + "shortw/projective-3/add-1998-cmo shortw/projective-3/dbl-2007-bl 2 2 0 0\n", + "shortw/projective-3/add-1998-cmo shortw/projective-3/dbl-2015-rcb-3 20 20 0 0\n", + "shortw/projective-3/add-1998-cmo shortw/projective-3/dbl-1998-cmo-2 2 2 0 0\n", + "shortw/projective-3/add-1998-cmo shortw/projective-3/dbl-2007-bl-2 2 2 0 0\n", + "shortw/projective-3/add-1998-cmo shortw/projective-3/dbl-2016-rcb 20 20 0 0\n", + "shortw/projective-3/add-1998-cmo shortw/projective-3/dbl-1998-cmo 2 2 0 0\n", + "shortw/projective-3/add-2015-rcb shortw/projective-3/dbl-2015-rcb 28 28 0 0\n", + "shortw/projective-3/add-2015-rcb shortw/projective-3/dbl-2007-bl 12 12 0 0\n", + "shortw/projective-3/add-2015-rcb shortw/projective-3/dbl-2015-rcb-3 28 28 0 0\n", + "shortw/projective-3/add-2015-rcb shortw/projective-3/dbl-1998-cmo-2 12 12 0 0\n", + "shortw/projective-3/add-2015-rcb shortw/projective-3/dbl-2007-bl-2 12 12 0 0\n", + "shortw/projective-3/add-2015-rcb shortw/projective-3/dbl-2016-rcb 28 28 0 0\n", + "shortw/projective-3/add-2015-rcb shortw/projective-3/dbl-1998-cmo 12 12 0 0\n", + "shortw/projective-3/add-2002-bj shortw/projective-3/dbl-2015-rcb 20 20 0 0\n", + "shortw/projective-3/add-2002-bj shortw/projective-3/dbl-2007-bl 2 2 0 0\n", + "shortw/projective-3/add-2002-bj shortw/projective-3/dbl-2015-rcb-3 20 20 0 0\n", + "shortw/projective-3/add-2002-bj shortw/projective-3/dbl-1998-cmo-2 2 2 0 0\n", + "shortw/projective-3/add-2002-bj shortw/projective-3/dbl-2007-bl-2 2 2 0 0\n", + "shortw/projective-3/add-2002-bj shortw/projective-3/dbl-2016-rcb 20 20 0 0\n", + "shortw/projective-3/add-2002-bj shortw/projective-3/dbl-1998-cmo 2 2 0 0\n", + "shortw/projective-3/add-2015-rcb-3 shortw/projective-3/dbl-2015-rcb 28 28 0 0\n", + "shortw/projective-3/add-2015-rcb-3 shortw/projective-3/dbl-2007-bl 12 12 0 0\n", + "shortw/projective-3/add-2015-rcb-3 shortw/projective-3/dbl-2015-rcb-3 28 28 0 0\n", + "shortw/projective-3/add-2015-rcb-3 shortw/projective-3/dbl-1998-cmo-2 12 12 0 0\n", + "shortw/projective-3/add-2015-rcb-3 shortw/projective-3/dbl-2007-bl-2 12 12 0 0\n", + "shortw/projective-3/add-2015-rcb-3 shortw/projective-3/dbl-2016-rcb 28 28 0 0\n", + "shortw/projective-3/add-2015-rcb-3 shortw/projective-3/dbl-1998-cmo 12 12 0 0\n", + "shortw/projective-3/add-2007-bl shortw/projective-3/dbl-2015-rcb 20 20 0 0\n", + "shortw/projective-3/add-2007-bl shortw/projective-3/dbl-2007-bl 2 2 0 0\n", + "shortw/projective-3/add-2007-bl shortw/projective-3/dbl-2015-rcb-3 20 20 0 0\n", + "shortw/projective-3/add-2007-bl shortw/projective-3/dbl-1998-cmo-2 2 2 0 0\n", + "shortw/projective-3/add-2007-bl shortw/projective-3/dbl-2007-bl-2 2 2 0 0\n", + "shortw/projective-3/add-2007-bl shortw/projective-3/dbl-2016-rcb 20 20 0 0\n", + "shortw/projective-3/add-2007-bl shortw/projective-3/dbl-1998-cmo 2 2 0 0\n", + "shortw/xyzz-3/add-2008-s shortw/xyzz-3/dbl-2008-s-1 2 2 0 0\n", + "shortw/xyzz-3/add-2008-s shortw/xyzz-3/dbl-2008-s-2 2 2 0 0\n", + "shortw/jacobian-3/add-1998-cmo-2 shortw/jacobian-3/dbl-1986-cc 2 2 0 0\n", + "shortw/jacobian-3/add-1998-cmo-2 shortw/jacobian-3/dbl-1998-hnm-2 2 2 0 0\n", + "shortw/jacobian-3/add-1998-cmo-2 shortw/jacobian-3/dbl-1998-hnm 2 2 0 0\n", + "shortw/jacobian-3/add-1998-cmo-2 shortw/jacobian-3/dbl-2007-bl 2 3 0 1\n", + "shortw/jacobian-3/add-1998-cmo-2 shortw/jacobian-3/dbl-2004-hmv 2 2 0 0\n", + "shortw/jacobian-3/add-1998-cmo-2 shortw/jacobian-3/dbl-1998-cmo-2 2 2 0 0\n", + "shortw/jacobian-3/add-1998-cmo-2 shortw/jacobian-3/dbl-2001-b 2 3 0 1\n", + "shortw/jacobian-3/add-1998-cmo-2 shortw/jacobian-3/dbl-1998-cmo 2 2 0 0\n", + "shortw/jacobian-3/add-1998-cmo-2 shortw/jacobian-3/dbl-1986-cc-2 2 2 0 0\n", + "shortw/jacobian-3/add-1998-cmo shortw/jacobian-3/dbl-1986-cc 2 2 0 0\n", + "shortw/jacobian-3/add-1998-cmo shortw/jacobian-3/dbl-1998-hnm-2 2 2 0 0\n", + "shortw/jacobian-3/add-1998-cmo shortw/jacobian-3/dbl-1998-hnm 2 2 0 0\n", + "shortw/jacobian-3/add-1998-cmo shortw/jacobian-3/dbl-2007-bl 2 3 0 1\n", + "shortw/jacobian-3/add-1998-cmo shortw/jacobian-3/dbl-2004-hmv 2 2 0 0\n", + "shortw/jacobian-3/add-1998-cmo shortw/jacobian-3/dbl-1998-cmo-2 2 2 0 0\n", + "shortw/jacobian-3/add-1998-cmo shortw/jacobian-3/dbl-2001-b 2 3 0 1\n", + "shortw/jacobian-3/add-1998-cmo shortw/jacobian-3/dbl-1998-cmo 2 2 0 0\n", + "shortw/jacobian-3/add-1998-cmo shortw/jacobian-3/dbl-1986-cc-2 2 2 0 0\n", + "shortw/jacobian-3/add-1998-hnm shortw/jacobian-3/dbl-1986-cc 2 2 0 0\n", + "shortw/jacobian-3/add-1998-hnm shortw/jacobian-3/dbl-1998-hnm-2 2 2 0 0\n", + "shortw/jacobian-3/add-1998-hnm shortw/jacobian-3/dbl-1998-hnm 2 2 0 0\n", + "shortw/jacobian-3/add-1998-hnm shortw/jacobian-3/dbl-2007-bl 2 3 0 1\n", + "shortw/jacobian-3/add-1998-hnm shortw/jacobian-3/dbl-2004-hmv 2 2 0 0\n", + "shortw/jacobian-3/add-1998-hnm shortw/jacobian-3/dbl-1998-cmo-2 2 2 0 0\n", + "shortw/jacobian-3/add-1998-hnm shortw/jacobian-3/dbl-2001-b 2 3 0 1\n", + "shortw/jacobian-3/add-1998-hnm shortw/jacobian-3/dbl-1998-cmo 2 2 0 0\n", + "shortw/jacobian-3/add-1998-hnm shortw/jacobian-3/dbl-1986-cc-2 2 2 0 0\n", + "shortw/jacobian-3/add-1986-cc shortw/jacobian-3/dbl-1986-cc 0 0 0 0\n", + "shortw/jacobian-3/add-1986-cc shortw/jacobian-3/dbl-1998-hnm-2 0 0 0 0\n", + "shortw/jacobian-3/add-1986-cc shortw/jacobian-3/dbl-1998-hnm 0 0 0 0\n", + "shortw/jacobian-3/add-1986-cc shortw/jacobian-3/dbl-2007-bl 0 1 0 1\n", + "shortw/jacobian-3/add-1986-cc shortw/jacobian-3/dbl-2004-hmv 0 0 0 0\n", + "shortw/jacobian-3/add-1986-cc shortw/jacobian-3/dbl-1998-cmo-2 0 0 0 0\n", + "shortw/jacobian-3/add-1986-cc shortw/jacobian-3/dbl-2001-b 0 1 0 1\n", + "shortw/jacobian-3/add-1986-cc shortw/jacobian-3/dbl-1998-cmo 0 0 0 0\n", + "shortw/jacobian-3/add-1986-cc shortw/jacobian-3/dbl-1986-cc-2 0 0 0 0\n", + "shortw/jacobian-3/add-2001-b shortw/jacobian-3/dbl-1986-cc 0 0 0 0\n", + "shortw/jacobian-3/add-2001-b shortw/jacobian-3/dbl-1998-hnm-2 0 0 0 0\n", + "shortw/jacobian-3/add-2001-b shortw/jacobian-3/dbl-1998-hnm 0 0 0 0\n", + "shortw/jacobian-3/add-2001-b shortw/jacobian-3/dbl-2007-bl 0 1 0 1\n", + "shortw/jacobian-3/add-2001-b shortw/jacobian-3/dbl-2004-hmv 0 0 0 0\n", + "shortw/jacobian-3/add-2001-b shortw/jacobian-3/dbl-1998-cmo-2 0 0 0 0\n", + "shortw/jacobian-3/add-2001-b shortw/jacobian-3/dbl-2001-b 0 1 0 1\n", + "shortw/jacobian-3/add-2001-b shortw/jacobian-3/dbl-1998-cmo 0 0 0 0\n", + "shortw/jacobian-3/add-2001-b shortw/jacobian-3/dbl-1986-cc-2 0 0 0 0\n", + "shortw/jacobian-3/add-2007-bl shortw/jacobian-3/dbl-1986-cc 2 3 0 1\n", + "shortw/jacobian-3/add-2007-bl shortw/jacobian-3/dbl-1998-hnm-2 2 3 0 1\n", + "shortw/jacobian-3/add-2007-bl shortw/jacobian-3/dbl-1998-hnm 2 3 0 1\n", + "shortw/jacobian-3/add-2007-bl shortw/jacobian-3/dbl-2007-bl 2 3 0 1\n", + "shortw/jacobian-3/add-2007-bl shortw/jacobian-3/dbl-2004-hmv 2 3 0 1\n", + "shortw/jacobian-3/add-2007-bl shortw/jacobian-3/dbl-1998-cmo-2 2 3 0 1\n", + "shortw/jacobian-3/add-2007-bl shortw/jacobian-3/dbl-2001-b 2 3 0 1\n", + "shortw/jacobian-3/add-2007-bl shortw/jacobian-3/dbl-1998-cmo 2 3 0 1\n", + "shortw/jacobian-3/add-2007-bl shortw/jacobian-3/dbl-1986-cc-2 2 3 0 1\n" + ] + } + ], "source": [ "for pair in point_map.keys():\n", " print(pair[0], pair[1],\n", @@ -395,36 +1026,969 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "id": "5ffc5564-a42b-4837-94bb-4ecb890b38b2", "metadata": {}, "outputs": [], "source": [ - "remapped_tree = build_distinguishing_tree(remapped_point_map)" + "remapped_tree = build_distinguishing_tree(remapped_point_map)\n", + "print_leaf_sizes(remapped_tree)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 22, "id": "5d2bbf5b-76e6-4137-9c32-cbd09a5c3600", "metadata": { "scrolled": true }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[x=8976497402921340665, y=14893197716203064256]\n", + "DomainParameters(EllipticCurve)\n", + "├── [x=8462011093657406711, y=9385955884972991198]\n", + "│ DomainParameters(EllipticCurve)\n", + "│ ├── [x=5303842224313800291, y=9121975806275757870]\n", + "│ │ DomainParameters(EllipticCurve)\n", + "│ │ ├── [x=7673299449516259275, y=4079088229980719011]\n", + "│ │ │ DomainParameters(EllipticCurve)\n", + "│ │ │ ├── [x=3909394990548410378, y=1271934111897046201]\n", + "│ │ │ │ DomainParameters(EllipticCurve)\n", + "│ │ │ │ ├── [x=198756535338419930, y=10649610515976041289]\n", + "│ │ │ │ │ DomainParameters(EllipticCurve)\n", + "│ │ │ │ │ ├── shortw/projective/add-2002-bj, shortw/projective/dbl-2016-rcb\n", + "│ │ │ │ │ │ shortw/projective/add-2007-bl, shortw/projective/dbl-2016-rcb\n", + "│ │ │ │ │ │ shortw/projective/add-2002-bj, shortw/projective/dbl-2015-rcb\n", + "│ │ │ │ │ │ shortw/projective/add-2007-bl, shortw/projective/dbl-2015-rcb\n", + "│ │ │ │ │ └── shortw/projective/add-2002-bj, shortw/projective/dbl-1998-cmo-2\n", + "│ │ │ │ │ shortw/projective/add-2002-bj, shortw/projective/dbl-2007-bl\n", + "│ │ │ │ │ shortw/projective/add-2002-bj, shortw/projective/dbl-1998-cmo\n", + "│ │ │ │ │ shortw/projective/add-2007-bl, shortw/projective/dbl-2007-bl\n", + "│ │ │ │ │ shortw/projective/add-2007-bl, shortw/projective/dbl-1998-cmo-2\n", + "│ │ │ │ │ shortw/projective/add-2007-bl, shortw/projective/dbl-1998-cmo\n", + "│ │ │ │ └── [x=4046881022602480857, y=16958156996739198810]\n", + "│ │ │ │ DomainParameters(EllipticCurve)\n", + "│ │ │ │ ├── shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-2007-bl\n", + "│ │ │ │ └── [x=4986377720346872951, y=8332168605444176038]\n", + "│ │ │ │ DomainParameters(EllipticCurve)\n", + "│ │ │ │ ├── shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-1998-hnm\n", + "│ │ │ │ └── shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-1986-cc\n", + "│ │ │ │ shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-1998-cmo-2\n", + "│ │ │ │ shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-1998-cmo\n", + "│ │ │ └── [x=4986377720346872951, y=8332168605444176038]\n", + "│ │ │ DomainParameters(EllipticCurve)\n", + "│ │ │ ├── [x=4173724707785958223, y=6577250203972113290]\n", + "│ │ │ │ DomainParameters(EllipticCurve)\n", + "│ │ │ │ ├── [x=4046881022602480857, y=16958156996739198810]\n", + "│ │ │ │ │ DomainParameters(EllipticCurve)\n", + "│ │ │ │ │ ├── shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-1998-hnm\n", + "│ │ │ │ │ └── shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-1998-hnm\n", + "│ │ │ │ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-1998-hnm\n", + "│ │ │ │ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-1998-hnm\n", + "│ │ │ │ └── shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-1998-hnm\n", + "│ │ │ │ shortw/jacobian/add-2001-b, shortw/jacobian/dbl-1998-hnm\n", + "│ │ │ └── [x=4046881022602480857, y=16958156996739198810]\n", + "│ │ │ DomainParameters(EllipticCurve)\n", + "│ │ │ ├── shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-2007-bl\n", + "│ │ │ │ shortw/jacobian/add-2001-b, shortw/jacobian/dbl-2007-bl\n", + "│ │ │ └── shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-1986-cc\n", + "│ │ │ shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-1998-cmo-2\n", + "│ │ │ shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-1998-cmo\n", + "│ │ │ shortw/jacobian/add-2001-b, shortw/jacobian/dbl-1986-cc\n", + "│ │ │ shortw/jacobian/add-2001-b, shortw/jacobian/dbl-1998-cmo-2\n", + "│ │ │ shortw/jacobian/add-2001-b, shortw/jacobian/dbl-1998-cmo\n", + "│ │ └── [x=4046881022602480857, y=16958156996739198810]\n", + "│ │ DomainParameters(EllipticCurve)\n", + "│ │ ├── shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-2007-bl\n", + "│ │ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-2007-bl\n", + "│ │ │ shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-1986-cc\n", + "│ │ │ shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-2007-bl\n", + "│ │ │ shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-1998-cmo-2\n", + "│ │ │ shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-1998-cmo\n", + "│ │ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-2007-bl\n", + "│ │ │ shortw/modified/add-2009-bl, shortw/modified/dbl-1998-cmo-2\n", + "│ │ │ shortw/modified/add-2009-bl, shortw/modified/dbl-2009-bl\n", + "│ │ └── [x=198756535338419930, y=10649610515976041289]\n", + "│ │ DomainParameters(EllipticCurve)\n", + "│ │ ├── shortw/projective/add-1998-cmo-2, shortw/projective/dbl-2016-rcb\n", + "│ │ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-2016-rcb\n", + "│ │ │ shortw/projective/add-1998-cmo-2, shortw/projective/dbl-2015-rcb\n", + "│ │ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-2015-rcb\n", + "│ │ └── shortw/projective/add-1998-cmo-2, shortw/projective/dbl-2007-bl\n", + "│ │ shortw/projective/add-1998-cmo-2, shortw/projective/dbl-1998-cmo-2\n", + "│ │ shortw/projective/add-1998-cmo-2, shortw/projective/dbl-1998-cmo\n", + "│ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-1998-cmo\n", + "│ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-2007-bl\n", + "│ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-1998-cmo-2\n", + "│ │ shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-1986-cc\n", + "│ │ shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-1998-cmo-2\n", + "│ │ shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-1998-cmo\n", + "│ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-1986-cc\n", + "│ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-1998-cmo-2\n", + "│ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-1998-cmo\n", + "│ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-1986-cc\n", + "│ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-1998-cmo-2\n", + "│ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-1998-cmo\n", + "│ │ shortw/xyzz/add-2008-s, shortw/xyzz/dbl-2008-s-1\n", + "│ │ shortw/modified/add-1998-cmo-2, shortw/modified/dbl-1998-cmo-2\n", + "│ │ shortw/modified/add-1998-cmo-2, shortw/modified/dbl-2009-bl\n", + "│ └── [x=933295826993298997, y=5255086850954974764]\n", + "│ DomainParameters(EllipticCurve)\n", + "│ ├── [x=5343745049373992004, y=1215580168733194775]\n", + "│ │ DomainParameters(EllipticCurve)\n", + "│ │ ├── shortw/projective/add-2016-rcb, shortw/projective/dbl-2016-rcb\n", + "│ │ │ shortw/projective/add-2015-rcb, shortw/projective/dbl-2016-rcb\n", + "│ │ │ shortw/projective/add-2016-rcb, shortw/projective/dbl-2015-rcb\n", + "│ │ │ shortw/projective/add-2015-rcb, shortw/projective/dbl-2015-rcb\n", + "│ │ └── shortw/projective/add-2016-rcb, shortw/projective/dbl-1998-cmo-2\n", + "│ │ shortw/projective/add-2016-rcb, shortw/projective/dbl-2007-bl\n", + "│ │ shortw/projective/add-2016-rcb, shortw/projective/dbl-1998-cmo\n", + "│ │ shortw/projective/add-2015-rcb, shortw/projective/dbl-1998-cmo-2\n", + "│ │ shortw/projective/add-2015-rcb, shortw/projective/dbl-2007-bl\n", + "│ │ shortw/projective/add-2015-rcb, shortw/projective/dbl-1998-cmo\n", + "│ └── [x=4504164893371726562, y=9004797292574688026]\n", + "│ DomainParameters(EllipticCurve)\n", + "│ ├── shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-1998-cmo-2\n", + "│ │ shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-2007-bl\n", + "│ │ shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-1986-cc\n", + "│ │ shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-1998-cmo\n", + "│ │ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-1986-cc\n", + "│ │ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-1998-cmo\n", + "│ │ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-2007-bl\n", + "│ │ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-1998-cmo-2\n", + "│ │ shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-1986-cc\n", + "│ │ shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-2007-bl\n", + "│ │ shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-1998-cmo-2\n", + "│ │ shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-1998-cmo\n", + "│ │ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-1986-cc\n", + "│ │ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-2007-bl\n", + "│ │ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-1998-cmo-2\n", + "│ │ shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-1986-cc\n", + "│ │ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-1998-cmo\n", + "│ │ shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-1998-cmo-2\n", + "│ │ shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-2007-bl\n", + "│ │ shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-1986-cc\n", + "│ │ shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-1998-cmo\n", + "│ │ shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-1998-cmo-2\n", + "│ │ shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-1998-cmo\n", + "│ │ shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-2007-bl\n", + "│ │ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-1998-hnm\n", + "│ │ shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-1998-hnm\n", + "│ │ shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-1998-hnm\n", + "│ │ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-1998-hnm\n", + "│ │ shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-1998-hnm\n", + "│ │ shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-1998-hnm\n", + "│ └── shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-2009-alnr\n", + "│ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-2009-alnr\n", + "│ shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-2009-alnr\n", + "│ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-2009-alnr\n", + "│ shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-2009-alnr\n", + "│ shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-2009-l\n", + "│ shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-2009-alnr\n", + "└── [x=7523181643117586774, y=861591372171155399]\n", + " DomainParameters(EllipticCurve)\n", + " ├── [x=3987108553814416983, y=10194401568277669542]\n", + " │ DomainParameters(EllipticCurve)\n", + " │ ├── shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-2007-bl\n", + " │ │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-2001-b\n", + " │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-2007-bl\n", + " │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-2001-b\n", + " │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1986-cc\n", + " │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-2007-bl\n", + " │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1998-cmo-2\n", + " │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-2001-b\n", + " │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1986-cc-2\n", + " │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1998-cmo\n", + " │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1998-hnm-2\n", + " │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1998-hnm\n", + " │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-2004-hmv\n", + " │ └── [x=161110322234615011, y=6188535790273537383]\n", + " │ DomainParameters(EllipticCurve)\n", + " │ ├── [x=7956235823516658822, y=9732780824814402521]\n", + " │ │ DomainParameters(EllipticCurve)\n", + " │ │ ├── shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2015-rcb-3\n", + " │ │ │ shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2016-rcb\n", + " │ │ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2015-rcb-3\n", + " │ │ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2016-rcb\n", + " │ │ └── shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2015-rcb\n", + " │ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2015-rcb\n", + " │ └── shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2007-bl\n", + " │ shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-1998-cmo-2\n", + " │ shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2007-bl-2\n", + " │ shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-1998-cmo\n", + " │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2007-bl\n", + " │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-1998-cmo-2\n", + " │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-1998-cmo\n", + " │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2007-bl-2\n", + " │ shortw/xyzz-3/add-2008-s, shortw/xyzz-3/dbl-2008-s-1\n", + " │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1986-cc\n", + " │ shortw/xyzz-3/add-2008-s, shortw/xyzz-3/dbl-2008-s-2\n", + " │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1998-cmo-2\n", + " │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1998-cmo\n", + " │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1986-cc-2\n", + " │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1986-cc\n", + " │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1998-cmo-2\n", + " │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1998-cmo\n", + " │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1998-hnm\n", + " │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1986-cc-2\n", + " │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1998-hnm-2\n", + " │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-2004-hmv\n", + " │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1998-hnm-2\n", + " │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1998-hnm\n", + " │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-2004-hmv\n", + " └── [x=3261882760552750749, y=4970255202323098987]\n", + " DomainParameters(EllipticCurve)\n", + " ├── [x=161110322234615011, y=6188535790273537383]\n", + " │ DomainParameters(EllipticCurve)\n", + " │ ├── [x=6741014024306303479, y=8089192144272372943]\n", + " │ │ DomainParameters(EllipticCurve)\n", + " │ │ ├── [x=7956235823516658822, y=9732780824814402521]\n", + " │ │ │ DomainParameters(EllipticCurve)\n", + " │ │ │ ├── shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2015-rcb-3\n", + " │ │ │ │ shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2016-rcb\n", + " │ │ │ │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2015-rcb-3\n", + " │ │ │ │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2015-rcb-3\n", + " │ │ │ │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2016-rcb\n", + " │ │ │ │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2016-rcb\n", + " │ │ │ └── shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2015-rcb\n", + " │ │ │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2015-rcb\n", + " │ │ │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2015-rcb\n", + " │ │ └── [x=7956235823516658822, y=9732780824814402521]\n", + " │ │ DomainParameters(EllipticCurve)\n", + " │ │ ├── shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2015-rcb-3\n", + " │ │ │ shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2016-rcb\n", + " │ │ │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2015-rcb-3\n", + " │ │ │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2016-rcb\n", + " │ │ └── shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2015-rcb\n", + " │ │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2015-rcb\n", + " │ └── shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2007-bl\n", + " │ shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-1998-cmo-2\n", + " │ shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2007-bl-2\n", + " │ shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-1998-cmo\n", + " │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-1998-cmo-2\n", + " │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2007-bl\n", + " │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2007-bl-2\n", + " │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2007-bl\n", + " │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-1998-cmo-2\n", + " │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-1998-cmo\n", + " │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2007-bl-2\n", + " │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-1998-cmo\n", + " └── [x=8583585759655994824, y=5121594309025134149]\n", + " DomainParameters(EllipticCurve)\n", + " ├── [x=3987108553814416983, y=10194401568277669542]\n", + " │ DomainParameters(EllipticCurve)\n", + " │ ├── shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-2007-bl\n", + " │ │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-2001-b\n", + " │ └── shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2007-bl\n", + " │ shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-1998-cmo-2\n", + " │ shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2007-bl-2\n", + " │ shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-1998-cmo\n", + " │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2007-bl\n", + " │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-1998-cmo-2\n", + " │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2007-bl-2\n", + " │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-1998-cmo\n", + " │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1986-cc\n", + " │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1998-cmo-2\n", + " │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1998-cmo\n", + " │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1986-cc-2\n", + " │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1998-hnm-2\n", + " │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1998-hnm\n", + " │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-2004-hmv\n", + " └── [x=3271642899270608132, y=4094231858049384691]\n", + " DomainParameters(EllipticCurve)\n", + " ├── [x=9185172264551501167, y=1489984362467478237]\n", + " │ DomainParameters(EllipticCurve)\n", + " │ ├── [x=9023895164928322279, y=3383060556063092686]\n", + " │ │ DomainParameters(EllipticCurve)\n", + " │ │ ├── shortw/projective-1/add-2002-bj, shortw/projective-1/dbl-2015-rcb\n", + " │ │ │ shortw/projective-1/add-2007-bl, shortw/projective-1/dbl-2015-rcb\n", + " │ │ └── shortw/projective-1/add-2002-bj, shortw/projective-1/dbl-2007-bl\n", + " │ │ shortw/projective-1/add-2002-bj, shortw/projective-1/dbl-1998-cmo-2\n", + " │ │ shortw/projective-1/add-2002-bj, shortw/projective-1/dbl-1998-cmo\n", + " │ │ shortw/projective-1/add-2007-bl, shortw/projective-1/dbl-2007-bl\n", + " │ │ shortw/projective-1/add-2007-bl, shortw/projective-1/dbl-1998-cmo-2\n", + " │ │ shortw/projective-1/add-2007-bl, shortw/projective-1/dbl-1998-cmo\n", + " │ └── [x=3760330877114905034, y=14518154872986670897]\n", + " │ DomainParameters(EllipticCurve)\n", + " │ ├── [x=9023895164928322279, y=3383060556063092686]\n", + " │ │ DomainParameters(EllipticCurve)\n", + " │ │ ├── shortw/projective-1/add-2002-bj-2, shortw/projective-1/dbl-2015-rcb\n", + " │ │ └── shortw/projective-1/add-2002-bj-2, shortw/projective-1/dbl-2007-bl\n", + " │ │ shortw/projective-1/add-2002-bj-2, shortw/projective-1/dbl-1998-cmo-2\n", + " │ │ shortw/projective-1/add-2002-bj-2, shortw/projective-1/dbl-1998-cmo\n", + " │ └── [x=9023895164928322279, y=11600196812807098545]\n", + " │ DomainParameters(EllipticCurve)\n", + " │ ├── shortw/projective-1/add-2015-rcb, shortw/projective-1/dbl-2015-rcb\n", + " │ └── shortw/projective-1/add-2015-rcb, shortw/projective-1/dbl-2007-bl\n", + " │ shortw/projective-1/add-2015-rcb, shortw/projective-1/dbl-1998-cmo\n", + " │ shortw/projective-1/add-2015-rcb, shortw/projective-1/dbl-1998-cmo-2\n", + " └── [x=3987108553814416983, y=10194401568277669542]\n", + " DomainParameters(EllipticCurve)\n", + " ├── shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-2007-bl\n", + " │ shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-2001-b\n", + " │ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-2007-bl\n", + " │ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-2001-b\n", + " └── [x=9023895164928322279, y=3383060556063092686]\n", + " DomainParameters(EllipticCurve)\n", + " ├── shortw/projective-1/add-1998-cmo-2, shortw/projective-1/dbl-2015-rcb\n", + " │ shortw/projective-1/add-1998-cmo, shortw/projective-1/dbl-2015-rcb\n", + " └── shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-2009-l\n", + " shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-2009-l\n", + " shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-2009-l\n", + " shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-2009-l\n", + " shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-2009-l\n", + " shortw/w12-0/add-2010-cln, shortw/w12-0/dbl-2010-cln\n", + " shortw/projective-1/add-1998-cmo-2, shortw/projective-1/dbl-2007-bl\n", + " shortw/projective-1/add-1998-cmo-2, shortw/projective-1/dbl-1998-cmo-2\n", + " shortw/projective-1/add-1998-cmo-2, shortw/projective-1/dbl-1998-cmo\n", + " shortw/projective-1/add-1998-cmo, shortw/projective-1/dbl-2007-bl\n", + " shortw/projective-1/add-1998-cmo, shortw/projective-1/dbl-1998-cmo-2\n", + " shortw/projective-1/add-1998-cmo, shortw/projective-1/dbl-1998-cmo\n", + " shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1986-cc\n", + " shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1998-cmo-2\n", + " shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1998-cmo\n", + " shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1986-cc-2\n", + " shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1986-cc\n", + " shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1998-cmo-2\n", + " shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1998-cmo\n", + " shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1986-cc-2\n", + " shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1998-hnm-2\n", + " shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1998-hnm\n", + " shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-2004-hmv\n", + " shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1998-hnm-2\n", + " shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1998-hnm\n", + " shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-2004-hmv\n" + ] + } + ], "source": [ "print(RenderTree(remapped_tree).by_attr(lambda n: n.name if n.name is not None else \"\\n\".join((\", \".join(str(formula) for formula in cfg) for cfg in n.cfgs))))" ] }, { "cell_type": "code", + "execution_count": 23, + "id": "3ea9912e", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "73994b6863b341ce9f96974b8880392e", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Remap: 0%| | 0/242 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def remap(coords, formulas, points, scalar):\n", + " mult = LTRMultiplier(*formulas, None, False, AccumulationOrder.PeqRP, True, True)\n", + " new_points = set()\n", + " param_map = {}\n", + " for point, params in tqdm(points):\n", + " if params not in param_map:\n", + " try:\n", + " param_map[params] = params.to_coords(coords)\n", + " except UnsatisfiedAssumptionError:\n", + " param_map[params] = None\n", + " continue\n", + " elif param_map[params] is None:\n", + " continue\n", + " mult.init(param_map[params], point.to_model(param_map[params].curve.coordinate_model, param_map[params].curve))\n", + " with local(DefaultContext()) as ctx:\n", + " try:\n", + " mult.multiply(scalar)\n", + " except UnsatisfiedAssumptionError:\n", + " continue\n", + " trace = []\n", + " def callback(action):\n", + " if isinstance(action, FormulaAction):\n", + " for intermediate in action.op_results:\n", + " trace.append(intermediate.value)\n", + " ctx.actions.walk(callback)\n", + " hit_zero = any(int(value) == 0 for value in trace)\n", + " #if hit_zero:\n", + " #new_points.add((point, params))\n", + " hit_zero = sum(int(value) == 0 for value in trace)\n", + " new_points.add((point, hit_zero, params))\n", + " return new_points\n", + "\n", + "remapped_point_map_dupl = {}\n", + "with ProcessPoolExecutor(max_workers=12) as pool:\n", + " futures = []\n", + " pairs = []\n", + " for coord_name, coords in model.coordinates.items():\n", + " formula_groups = [list(filter(lambda formula: isinstance(formula, formula_class) and (formula.name.startswith(\"add\") or formula.name.startswith(\"dbl\")), coords.formulas.values())) for formula_class in formula_classes]\n", + " formula_combinations = list(product(*formula_groups))\n", + " for formulas in formula_combinations:\n", + " #remap(coords, formulas, all_points, scalar)\n", + " #break\n", + " futures.append(pool.submit(remap, coords, formulas, all_points, scalar))\n", + " pairs.append(formulas)\n", + " #break\n", + " results = [None for _ in futures]\n", + " for future in tqdm(as_completed(futures), total=len(futures), desc=\"Remap\"):\n", + " j = futures.index(future)\n", + " remapped_point_map_dupl[pairs[j]] = future.result()" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "10b5059c", + "metadata": {}, + "outputs": [], + "source": [ + "remapped_tree_dupl = build_distinguishing_tree(remapped_point_map_dupl)\n", + "print_leaf_sizes(remapped_tree_dupl)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "c5d52e7a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[x=3261882760552750749, y=5224146365954570556]\n", + "0\n", + "DomainParameters(EllipticCurve)\n", + "├── [x=7523181643117586774, y=9332810196106514144]\n", + "│ 1\n", + "│ DomainParameters(EllipticCurve)\n", + "│ ├── [x=813939388429964455, y=6661172451039539927]\n", + "│ │ 3\n", + "│ │ DomainParameters(EllipticCurve)\n", + "│ │ ├── [x=6292247451345142082, y=7536413344159771043]\n", + "│ │ │ 4\n", + "│ │ │ DomainParameters(EllipticCurve)\n", + "│ │ │ ├── [x=3174880782688558524, y=15311888883183151212]\n", + "│ │ │ │ 0\n", + "│ │ │ │ DomainParameters(EllipticCurve)\n", + "│ │ │ │ ├── shortw/projective/add-1998-cmo-2, shortw/projective/dbl-2007-bl\n", + "│ │ │ │ │ shortw/projective/add-1998-cmo-2, shortw/projective/dbl-1998-cmo-2\n", + "│ │ │ │ │ shortw/projective/add-1998-cmo-2, shortw/projective/dbl-1998-cmo\n", + "│ │ │ │ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-1998-cmo-2\n", + "│ │ │ │ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-2007-bl\n", + "│ │ │ │ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-1998-cmo\n", + "│ │ │ │ └── [x=2931798833210310726, y=14893197716203064256]\n", + "│ │ │ │ 27\n", + "│ │ │ │ DomainParameters(EllipticCurve)\n", + "│ │ │ │ ├── [x=4701374179218306695, y=10529574804216309365]\n", + "│ │ │ │ │ 0\n", + "│ │ │ │ │ DomainParameters(EllipticCurve)\n", + "│ │ │ │ │ ├── shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-1986-cc\n", + "│ │ │ │ │ │ shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-1998-cmo-2\n", + "│ │ │ │ │ │ shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-1998-cmo\n", + "│ │ │ │ │ └── shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-1998-hnm\n", + "│ │ │ │ └── [x=6510762087270099859, y=8382435628932964398]\n", + "│ │ │ │ 26\n", + "│ │ │ │ DomainParameters(EllipticCurve)\n", + "│ │ │ │ ├── shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-2007-bl\n", + "│ │ │ │ └── shortw/modified/add-2009-bl, shortw/modified/dbl-1998-cmo-2\n", + "│ │ │ │ shortw/modified/add-2009-bl, shortw/modified/dbl-2009-bl\n", + "│ │ │ └── [x=2931798833210310726, y=14893197716203064256]\n", + "│ │ │ 26\n", + "│ │ │ DomainParameters(EllipticCurve)\n", + "│ │ │ ├── [x=4701374179218306695, y=10529574804216309365]\n", + "│ │ │ │ 0\n", + "│ │ │ │ DomainParameters(EllipticCurve)\n", + "│ │ │ │ ├── shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-1986-cc\n", + "│ │ │ │ │ shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-1998-cmo-2\n", + "│ │ │ │ │ shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-1998-cmo\n", + "│ │ │ │ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-1986-cc\n", + "│ │ │ │ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-1998-cmo\n", + "│ │ │ │ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-1998-cmo-2\n", + "│ │ │ │ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-1986-cc\n", + "│ │ │ │ │ shortw/xyzz/add-2008-s, shortw/xyzz/dbl-2008-s-1\n", + "│ │ │ │ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-1998-cmo\n", + "│ │ │ │ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-1998-cmo-2\n", + "│ │ │ │ └── shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-1998-hnm\n", + "│ │ │ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-1998-hnm\n", + "│ │ │ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-1998-hnm\n", + "│ │ │ └── [x=2695787092446081872, y=11530949965125792502]\n", + "│ │ │ 2\n", + "│ │ │ DomainParameters(EllipticCurve)\n", + "│ │ │ ├── shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-2007-bl\n", + "│ │ │ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-2007-bl\n", + "│ │ │ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-2007-bl\n", + "│ │ │ └── shortw/modified/add-1998-cmo-2, shortw/modified/dbl-2009-bl\n", + "│ │ │ shortw/modified/add-1998-cmo-2, shortw/modified/dbl-1998-cmo-2\n", + "│ │ └── [x=3987108553814416983, y=10194401568277669542]\n", + "│ │ 0\n", + "│ │ DomainParameters(EllipticCurve)\n", + "│ │ ├── shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2007-bl\n", + "│ │ │ shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2007-bl-2\n", + "│ │ │ shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-1998-cmo-2\n", + "│ │ │ shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-1998-cmo\n", + "│ │ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2007-bl\n", + "│ │ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-1998-cmo-2\n", + "│ │ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2007-bl-2\n", + "│ │ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-1998-cmo\n", + "│ │ │ shortw/xyzz-3/add-2008-s, shortw/xyzz-3/dbl-2008-s-1\n", + "│ │ │ shortw/xyzz-3/add-2008-s, shortw/xyzz-3/dbl-2008-s-2\n", + "│ │ │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1986-cc\n", + "│ │ │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1998-cmo-2\n", + "│ │ │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1998-cmo\n", + "│ │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1986-cc\n", + "│ │ │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1986-cc-2\n", + "│ │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1998-cmo-2\n", + "│ │ │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1998-hnm-2\n", + "│ │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1998-cmo\n", + "│ │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1986-cc-2\n", + "│ │ │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1998-hnm\n", + "│ │ │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-2004-hmv\n", + "│ │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1998-hnm-2\n", + "│ │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1998-hnm\n", + "│ │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-2004-hmv\n", + "│ │ └── [x=3987108553814416983, y=10194401568277669542]\n", + "│ │ 1\n", + "│ │ DomainParameters(EllipticCurve)\n", + "│ │ ├── shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1986-cc\n", + "│ │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1998-cmo-2\n", + "│ │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1998-cmo\n", + "│ │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1986-cc-2\n", + "│ │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1998-hnm-2\n", + "│ │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1998-hnm\n", + "│ │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-2004-hmv\n", + "│ │ └── [x=3987108553814416983, y=10194401568277669542]\n", + "│ │ 2\n", + "│ │ DomainParameters(EllipticCurve)\n", + "│ │ ├── shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-2007-bl\n", + "│ │ │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-2001-b\n", + "│ │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-2007-bl\n", + "│ │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-2001-b\n", + "│ │ └── shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-2007-bl\n", + "│ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-2001-b\n", + "│ └── [x=8583585759655994824, y=5072807259252535394]\n", + "│ 2\n", + "│ DomainParameters(EllipticCurve)\n", + "│ ├── [x=813939388429964455, y=6661172451039539927]\n", + "│ │ 3\n", + "│ │ DomainParameters(EllipticCurve)\n", + "│ │ ├── [x=9207640209484078691, y=13054112271424076721]\n", + "│ │ │ 41\n", + "│ │ │ DomainParameters(EllipticCurve)\n", + "│ │ │ ├── [x=6292247451345142082, y=7536413344159771043]\n", + "│ │ │ │ 3\n", + "│ │ │ │ DomainParameters(EllipticCurve)\n", + "│ │ │ │ ├── [x=7904229027765000239, y=3153037537088752648]\n", + "│ │ │ │ │ 962\n", + "│ │ │ │ │ DomainParameters(EllipticCurve)\n", + "│ │ │ │ │ ├── shortw/projective/add-2002-bj, shortw/projective/dbl-1998-cmo-2\n", + "│ │ │ │ │ └── [x=5610676601755833088, y=2256671746760711811]\n", + "│ │ │ │ │ 1012\n", + "│ │ │ │ │ DomainParameters(EllipticCurve)\n", + "│ │ │ │ │ ├── shortw/projective/add-2002-bj, shortw/projective/dbl-2007-bl\n", + "│ │ │ │ │ └── shortw/projective/add-2002-bj, shortw/projective/dbl-1998-cmo\n", + "│ │ │ │ └── [x=5610676601755833088, y=9274278218365080692]\n", + "│ │ │ │ 1085\n", + "│ │ │ │ DomainParameters(EllipticCurve)\n", + "│ │ │ │ ├── shortw/projective/add-2007-bl, shortw/projective/dbl-2007-bl\n", + "│ │ │ │ └── [x=9979302445253644651, y=5489702477279405897]\n", + "│ │ │ │ 1035\n", + "│ │ │ │ DomainParameters(EllipticCurve)\n", + "│ │ │ │ ├── shortw/projective/add-2007-bl, shortw/projective/dbl-1998-cmo-2\n", + "│ │ │ │ └── shortw/projective/add-2007-bl, shortw/projective/dbl-1998-cmo\n", + "│ │ │ └── [x=4701374179218306695, y=10529574804216309365]\n", + "│ │ │ 0\n", + "│ │ │ DomainParameters(EllipticCurve)\n", + "│ │ │ ├── [x=3174880782688558524, y=15311888883183151212]\n", + "│ │ │ │ 0\n", + "│ │ │ │ DomainParameters(EllipticCurve)\n", + "│ │ │ │ ├── shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-1986-cc\n", + "│ │ │ │ │ shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-1998-cmo-2\n", + "│ │ │ │ │ shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-1998-cmo\n", + "│ │ │ │ └── shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-2007-bl\n", + "│ │ │ └── shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-1998-hnm\n", + "│ │ └── [x=3987108553814416983, y=10194401568277669542]\n", + "│ │ 0\n", + "│ │ DomainParameters(EllipticCurve)\n", + "│ │ ├── shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2007-bl\n", + "│ │ │ shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-1998-cmo-2\n", + "│ │ │ shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2007-bl-2\n", + "│ │ │ shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-1998-cmo\n", + "│ │ │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2007-bl\n", + "│ │ │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2007-bl-2\n", + "│ │ │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-1998-cmo-2\n", + "│ │ │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-1998-cmo\n", + "│ │ │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1986-cc\n", + "│ │ │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1998-cmo-2\n", + "│ │ │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1998-cmo\n", + "│ │ │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1986-cc-2\n", + "│ │ │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1998-hnm-2\n", + "│ │ │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1998-hnm\n", + "│ │ │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-2004-hmv\n", + "│ │ └── shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-2007-bl\n", + "│ │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-2001-b\n", + "│ └── [x=813939388429964455, y=6661172451039539927]\n", + "│ 3\n", + "│ DomainParameters(EllipticCurve)\n", + "│ ├── [x=5303842224313800291, y=2978129968532308991]\n", + "│ │ 2\n", + "│ │ DomainParameters(EllipticCurve)\n", + "│ │ ├── [x=4701374179218306695, y=10529574804216309365]\n", + "│ │ │ 0\n", + "│ │ │ DomainParameters(EllipticCurve)\n", + "│ │ │ ├── [x=3174880782688558524, y=15311888883183151212]\n", + "│ │ │ │ 0\n", + "│ │ │ │ DomainParameters(EllipticCurve)\n", + "│ │ │ │ ├── shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-1986-cc\n", + "│ │ │ │ │ shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-1998-cmo-2\n", + "│ │ │ │ │ shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-1998-cmo\n", + "│ │ │ │ └── shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-2007-bl\n", + "│ │ │ └── shortw/jacobian/add-2001-b, shortw/jacobian/dbl-1998-hnm\n", + "│ │ └── [x=4701374179218306695, y=10529574804216309365]\n", + "│ │ 0\n", + "│ │ DomainParameters(EllipticCurve)\n", + "│ │ ├── [x=3174880782688558524, y=15311888883183151212]\n", + "│ │ │ 0\n", + "│ │ │ DomainParameters(EllipticCurve)\n", + "│ │ │ ├── shortw/jacobian/add-2001-b, shortw/jacobian/dbl-1986-cc\n", + "│ │ │ │ shortw/jacobian/add-2001-b, shortw/jacobian/dbl-1998-cmo-2\n", + "│ │ │ │ shortw/jacobian/add-2001-b, shortw/jacobian/dbl-1998-cmo\n", + "│ │ │ └── shortw/jacobian/add-2001-b, shortw/jacobian/dbl-2007-bl\n", + "│ │ └── shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-1998-hnm\n", + "│ └── [x=3987108553814416983, y=10194401568277669542]\n", + "│ 0\n", + "│ DomainParameters(EllipticCurve)\n", + "│ ├── shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1986-cc\n", + "│ │ shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1998-cmo-2\n", + "│ │ shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1998-cmo\n", + "│ │ shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1986-cc-2\n", + "│ │ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1986-cc\n", + "│ │ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1998-cmo-2\n", + "│ │ shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1998-hnm-2\n", + "│ │ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1986-cc-2\n", + "│ │ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1998-cmo\n", + "│ │ shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1998-hnm\n", + "│ │ shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-2004-hmv\n", + "│ │ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1998-hnm\n", + "│ │ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1998-hnm-2\n", + "│ │ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-2004-hmv\n", + "│ └── shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-2007-bl\n", + "│ shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-2001-b\n", + "│ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-2007-bl\n", + "│ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-2001-b\n", + "└── [x=330803148782512684, y=3479385230159377146]\n", + " 0\n", + " DomainParameters(EllipticCurve)\n", + " ├── [x=5290749974607723184, y=5916599314601128558]\n", + " │ 3\n", + " │ DomainParameters(EllipticCurve)\n", + " │ ├── [x=8583585759655994824, y=5121594309025134149]\n", + " │ │ 0\n", + " │ │ DomainParameters(EllipticCurve)\n", + " │ │ ├── [x=5121176033986057907, y=12787271129661728530]\n", + " │ │ │ 2\n", + " │ │ │ DomainParameters(EllipticCurve)\n", + " │ │ │ ├── shortw/projective/add-2016-rcb, shortw/projective/dbl-1998-cmo-2\n", + " │ │ │ │ shortw/projective/add-2016-rcb, shortw/projective/dbl-2007-bl\n", + " │ │ │ │ shortw/projective/add-2016-rcb, shortw/projective/dbl-1998-cmo\n", + " │ │ │ │ shortw/projective/add-2015-rcb, shortw/projective/dbl-1998-cmo-2\n", + " │ │ │ │ shortw/projective/add-2015-rcb, shortw/projective/dbl-2007-bl\n", + " │ │ │ │ shortw/projective/add-2015-rcb, shortw/projective/dbl-1998-cmo\n", + " │ │ │ └── shortw/projective/add-1998-cmo-2, shortw/projective/dbl-2016-rcb\n", + " │ │ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-2016-rcb\n", + " │ │ │ shortw/projective/add-1998-cmo-2, shortw/projective/dbl-2015-rcb\n", + " │ │ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-2015-rcb\n", + " │ │ └── [x=9185172264551501167, y=1489984362467478237]\n", + " │ │ 0\n", + " │ │ DomainParameters(EllipticCurve)\n", + " │ │ ├── [x=5121176033986057907, y=12787271129661728530]\n", + " │ │ │ 2\n", + " │ │ │ DomainParameters(EllipticCurve)\n", + " │ │ │ ├── shortw/projective-1/add-2015-rcb, shortw/projective-1/dbl-2007-bl\n", + " │ │ │ │ shortw/projective-1/add-2015-rcb, shortw/projective-1/dbl-1998-cmo\n", + " │ │ │ │ shortw/projective-1/add-2015-rcb, shortw/projective-1/dbl-1998-cmo-2\n", + " │ │ │ └── [x=3271642899270608132, y=4094231858049384691]\n", + " │ │ │ 0\n", + " │ │ │ DomainParameters(EllipticCurve)\n", + " │ │ │ ├── shortw/projective-1/add-1998-cmo-2, shortw/projective-1/dbl-2015-rcb\n", + " │ │ │ │ shortw/projective-1/add-1998-cmo, shortw/projective-1/dbl-2015-rcb\n", + " │ │ │ └── shortw/projective-1/add-2002-bj-2, shortw/projective-1/dbl-2015-rcb\n", + " │ │ └── [x=4810169051756113129, y=9663791351713124974]\n", + " │ │ 1\n", + " │ │ DomainParameters(EllipticCurve)\n", + " │ │ ├── [x=6292247451345142082, y=7536413344159771043]\n", + " │ │ │ 3\n", + " │ │ │ DomainParameters(EllipticCurve)\n", + " │ │ │ ├── shortw/projective/add-2002-bj, shortw/projective/dbl-2016-rcb\n", + " │ │ │ │ shortw/projective/add-2002-bj, shortw/projective/dbl-2015-rcb\n", + " │ │ │ └── shortw/projective/add-2007-bl, shortw/projective/dbl-2016-rcb\n", + " │ │ │ shortw/projective/add-2007-bl, shortw/projective/dbl-2015-rcb\n", + " │ │ └── shortw/projective-1/add-2002-bj, shortw/projective-1/dbl-2015-rcb\n", + " │ │ shortw/projective-1/add-2007-bl, shortw/projective-1/dbl-2015-rcb\n", + " │ └── [x=3760330877114905034, y=465102495883520334]\n", + " │ 0\n", + " │ DomainParameters(EllipticCurve)\n", + " │ ├── [x=3271642899270608132, y=4094231858049384691]\n", + " │ │ 0\n", + " │ │ DomainParameters(EllipticCurve)\n", + " │ │ ├── shortw/projective-1/add-1998-cmo-2, shortw/projective-1/dbl-1998-cmo-2\n", + " │ │ │ shortw/projective-1/add-1998-cmo-2, shortw/projective-1/dbl-1998-cmo\n", + " │ │ │ shortw/projective-1/add-1998-cmo-2, shortw/projective-1/dbl-2007-bl\n", + " │ │ │ shortw/projective-1/add-1998-cmo, shortw/projective-1/dbl-1998-cmo-2\n", + " │ │ │ shortw/projective-1/add-1998-cmo, shortw/projective-1/dbl-2007-bl\n", + " │ │ │ shortw/projective-1/add-1998-cmo, shortw/projective-1/dbl-1998-cmo\n", + " │ │ └── [x=4810169051756113129, y=9663791351713124974]\n", + " │ │ 1\n", + " │ │ DomainParameters(EllipticCurve)\n", + " │ │ ├── shortw/projective/add-2016-rcb, shortw/projective/dbl-2016-rcb\n", + " │ │ │ shortw/projective/add-2015-rcb, shortw/projective/dbl-2016-rcb\n", + " │ │ │ shortw/projective/add-2016-rcb, shortw/projective/dbl-2015-rcb\n", + " │ │ │ shortw/projective/add-2015-rcb, shortw/projective/dbl-2015-rcb\n", + " │ │ └── shortw/projective-1/add-2015-rcb, shortw/projective-1/dbl-2015-rcb\n", + " │ └── [x=9185172264551501167, y=1489984362467478237]\n", + " │ 0\n", + " │ DomainParameters(EllipticCurve)\n", + " │ ├── shortw/projective-1/add-2002-bj-2, shortw/projective-1/dbl-2007-bl\n", + " │ │ shortw/projective-1/add-2002-bj-2, shortw/projective-1/dbl-1998-cmo\n", + " │ │ shortw/projective-1/add-2002-bj-2, shortw/projective-1/dbl-1998-cmo-2\n", + " │ └── shortw/projective-1/add-2002-bj, shortw/projective-1/dbl-2007-bl\n", + " │ shortw/projective-1/add-2002-bj, shortw/projective-1/dbl-1998-cmo-2\n", + " │ shortw/projective-1/add-2002-bj, shortw/projective-1/dbl-1998-cmo\n", + " │ shortw/projective-1/add-2007-bl, shortw/projective-1/dbl-2007-bl\n", + " │ shortw/projective-1/add-2007-bl, shortw/projective-1/dbl-1998-cmo-2\n", + " │ shortw/projective-1/add-2007-bl, shortw/projective-1/dbl-1998-cmo\n", + " └── [x=9207640209484078691, y=13054112271424076721]\n", + " 26\n", + " DomainParameters(EllipticCurve)\n", + " ├── [x=2931798833210310726, y=14893197716203064256]\n", + " │ 26\n", + " │ DomainParameters(EllipticCurve)\n", + " │ ├── shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-1986-cc\n", + " │ │ shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-1998-cmo\n", + " │ │ shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-1998-cmo-2\n", + " │ │ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-1986-cc\n", + " │ │ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-1998-cmo-2\n", + " │ │ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-1998-cmo\n", + " │ │ shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-1986-cc\n", + " │ │ shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-1998-cmo-2\n", + " │ │ shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-1998-cmo\n", + " │ │ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-1986-cc\n", + " │ │ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-1998-cmo-2\n", + " │ │ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-1998-cmo\n", + " │ │ shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-1998-cmo-2\n", + " │ │ shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-1986-cc\n", + " │ │ shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-1998-cmo\n", + " │ │ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-1998-hnm\n", + " │ │ shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-1998-hnm\n", + " │ │ shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-1998-hnm\n", + " │ │ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-1998-hnm\n", + " │ │ shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-1998-hnm\n", + " │ └── [x=2984901480071412866, y=14893197716203064256]\n", + " │ 28\n", + " │ DomainParameters(EllipticCurve)\n", + " │ ├── shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-2007-bl\n", + " │ │ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-2007-bl\n", + " │ │ shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-2007-bl\n", + " │ │ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-2007-bl\n", + " │ │ shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-2007-bl\n", + " │ └── [x=8976497402921340665, y=14893197716203064256]\n", + " │ 27\n", + " │ DomainParameters(EllipticCurve)\n", + " │ ├── shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-1986-cc\n", + " │ │ shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-1998-cmo-2\n", + " │ │ shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-1998-cmo\n", + " │ │ shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-1998-hnm\n", + " │ └── shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-2007-bl\n", + " └── [x=3261882760552750749, y=5224146365954570556]\n", + " 3\n", + " DomainParameters(EllipticCurve)\n", + " ├── [x=7820832125962317615, y=9334214407275119717]\n", + " │ 0\n", + " │ DomainParameters(EllipticCurve)\n", + " │ ├── [x=6741014024306303479, y=2105209424005296600]\n", + " │ │ 5\n", + " │ │ DomainParameters(EllipticCurve)\n", + " │ │ ├── shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2007-bl\n", + " │ │ │ shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2007-bl-2\n", + " │ │ │ shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-1998-cmo-2\n", + " │ │ │ shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-1998-cmo\n", + " │ │ │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2007-bl\n", + " │ │ │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-1998-cmo-2\n", + " │ │ │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2007-bl-2\n", + " │ │ │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-1998-cmo\n", + " │ │ └── shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2007-bl\n", + " │ │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-1998-cmo-2\n", + " │ │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2007-bl-2\n", + " │ │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-1998-cmo\n", + " │ └── [x=8583585759655994824, y=5072807259252535394]\n", + " │ 0\n", + " │ DomainParameters(EllipticCurve)\n", + " │ ├── [x=7018390556762767964, y=1959409399271527243]\n", + " │ │ 0\n", + " │ │ DomainParameters(EllipticCurve)\n", + " │ │ ├── shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2015-rcb-3\n", + " │ │ │ shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2016-rcb\n", + " │ │ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2015-rcb-3\n", + " │ │ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2016-rcb\n", + " │ │ └── shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2015-rcb\n", + " │ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2015-rcb\n", + " │ └── [x=7018390556762767964, y=1959409399271527243]\n", + " │ 0\n", + " │ DomainParameters(EllipticCurve)\n", + " │ ├── shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2015-rcb-3\n", + " │ │ shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2016-rcb\n", + " │ │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2015-rcb-3\n", + " │ │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2016-rcb\n", + " │ └── shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2015-rcb\n", + " │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2015-rcb\n", + " └── [x=5643623786928772539, y=13627860160399064610]\n", + " 0\n", + " DomainParameters(EllipticCurve)\n", + " ├── [x=2931798833210310726, y=14893197716203064256]\n", + " │ 0\n", + " │ DomainParameters(EllipticCurve)\n", + " │ ├── shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-2009-l\n", + " │ │ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-2009-l\n", + " │ │ shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-2009-l\n", + " │ │ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-2009-l\n", + " │ │ shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-2009-l\n", + " │ └── [x=2931798833210310726, y=14893197716203064256]\n", + " │ 2\n", + " │ DomainParameters(EllipticCurve)\n", + " │ ├── shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-2009-alnr\n", + " │ │ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-2009-alnr\n", + " │ │ shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-2009-alnr\n", + " │ │ shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-2009-alnr\n", + " │ │ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-2009-alnr\n", + " │ └── [x=8976497402921340665, y=14893197716203064256]\n", + " │ 1\n", + " │ DomainParameters(EllipticCurve)\n", + " │ ├── shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-2009-l\n", + " │ └── shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-2009-alnr\n", + " └── [x=7018390556762767964, y=1959409399271527243]\n", + " 0\n", + " DomainParameters(EllipticCurve)\n", + " ├── [x=6741014024306303479, y=2105209424005296600]\n", + " │ 5\n", + " │ DomainParameters(EllipticCurve)\n", + " │ ├── shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2015-rcb-3\n", + " │ │ shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2016-rcb\n", + " │ │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2015-rcb-3\n", + " │ │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2016-rcb\n", + " │ └── shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2015-rcb-3\n", + " │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2016-rcb\n", + " └── [x=6741014024306303479, y=2105209424005296600]\n", + " 5\n", + " DomainParameters(EllipticCurve)\n", + " ├── shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2015-rcb\n", + " │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2015-rcb\n", + " └── [x=8583585759655994824, y=5072807259252535394]\n", + " 0\n", + " DomainParameters(EllipticCurve)\n", + " ├── shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2015-rcb\n", + " └── shortw/w12-0/add-2010-cln, shortw/w12-0/dbl-2010-cln\n" + ] + } + ], + "source": [ + "print(RenderTree(remapped_tree_dupl).by_attr(lambda n: n.name if n.name is not None else \"\\n\".join((\", \".join(str(formula) for formula in cfg) for cfg in n.cfgs))))" + ] + }, + { + "cell_type": "code", "execution_count": null, + "id": "47d2056f", + "metadata": {}, + "outputs": [], + "source": [ + "def remap(coords, formulas, points, scalar):\n", + " mult = LTRMultiplier(*formulas, None, False, AccumulationOrder.PeqRP, True, True)\n", + " new_points = set()\n", + " param_map = {}\n", + " for point, params in tqdm(points):\n", + " if params not in param_map:\n", + " try:\n", + " param_map[params] = params.to_coords(coords)\n", + " except UnsatisfiedAssumptionError:\n", + " param_map[params] = None\n", + " continue\n", + " elif param_map[params] is None:\n", + " continue\n", + " mult.init(param_map[params], point.to_model(param_map[params].curve.coordinate_model, param_map[params].curve))\n", + " with local(DefaultContext()) as ctx:\n", + " try:\n", + " mult.multiply(scalar)\n", + " except UnsatisfiedAssumptionError:\n", + " continue\n", + " trace = []\n", + " def callback(action):\n", + " if isinstance(action, FormulaAction):\n", + " for intermediate in action.op_results:\n", + " trace.append(intermediate.value)\n", + " ctx.actions.walk(callback)\n", + " #hit_zero = any(int(value) == 0 for value in trace)\n", + " #if hit_zero:\n", + " #new_points.add((point, params))\n", + " hit_zero = tuple(map(lambda x: int(x) == 0,trace))\n", + " new_points.add((point, hit_zero, params))\n", + " return new_points\n", + "\n", + "remapped_point_map_loc = {}\n", + "with ProcessPoolExecutor(max_workers=12) as pool:\n", + " futures = []\n", + " pairs = []\n", + " for coord_name, coords in model.coordinates.items():\n", + " formula_groups = [list(filter(lambda formula: isinstance(formula, formula_class) and (formula.name.startswith(\"add\") or formula.name.startswith(\"dbl\")), coords.formulas.values())) for formula_class in formula_classes]\n", + " formula_combinations = list(product(*formula_groups))\n", + " for formulas in formula_combinations:\n", + " #remap(coords, formulas, all_points, scalar)\n", + " #break\n", + " futures.append(pool.submit(remap, coords, formulas, all_points, scalar))\n", + " pairs.append(formulas)\n", + " #break\n", + " results = [None for _ in futures]\n", + " for future in tqdm(as_completed(futures), total=len(futures), desc=\"Remap\"):\n", + " j = futures.index(future)\n", + " remapped_point_map_loc[pairs[j]] = future.result()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c3a632fb", + "metadata": {}, + "outputs": [], + "source": [ + "remapped_tree_loc = build_distinguishing_tree(remapped_point_map_loc)\n", + "print_leaf_sizes(remapped_tree_loc)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cf37df73", + "metadata": {}, + "outputs": [], + "source": [ + "print(RenderTree(remapped_tree_loc).by_attr(lambda n: n.name if n.name is not None else \"\\n\".join((\", \".join(str(formula) for formula in cfg) for cfg in n.cfgs))))" + ] + }, + { + "cell_type": "code", + "execution_count": 27, "id": "d258bc29-b24f-4d57-a183-cb5d58e3f20f", "metadata": {}, "outputs": [], "source": [ "fset_map = {}\n", "for coord_name, coords in model.coordinates.items():\n", - " formula_groups = [list(filter(lambda formula: isinstance(formula, formula_class), coords.formulas.values())) for formula_class in formula_classes]\n", + " formula_groups = [list(filter(lambda formula: isinstance(formula, formula_class) and (formula.name.startswith(\"add\") or formula.name.startswith(\"dbl\")), coords.formulas.values())) for formula_class in formula_classes]\n", " factor_sets = {}\n", " for formula_group in formula_groups:\n", " for formula in formula_group:\n", @@ -440,32 +2004,346 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 28, "id": "085c37db-ffbf-4f9e-87d3-5c13ecfeadca", "metadata": {}, "outputs": [], "source": [ - "fset_tree = build_distinguishing_tree(fset_map)" + "fset_tree = build_distinguishing_tree(fset_map)\n", + "print_leaf_sizes(fset_tree)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 30, "id": "9f0dc435-e08a-45d0-846d-ee865d6a4b7c", "metadata": { "scrolled": true }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Poly(x1 + 1, x1, domain='ZZ')\n", + "├── Poly(2*x1**3 - 3*x1**2*x2 + x2**3 - y1**2 + 2*y1*y2 - y2**2, x1, x2, y1, y2, domain='ZZ')\n", + "│ ├── Poly(x1**3 - 3*x1**2*x2 + 3*x1*x2**2 - x2**3 + y1**2 - 2*y1*y2 + y2**2, x1, x2, y1, y2, domain='ZZ')\n", + "│ │ ├── Poly(-6*x1 - y1**2 + 3*b, x1, y1, b, domain='ZZ')\n", + "│ │ │ ├── Poly(x1**2 + 3, x1, domain='ZZ')\n", + "│ │ │ │ ├── shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2015-rcb\n", + "│ │ │ │ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2015-rcb\n", + "│ │ │ │ └── shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2015-rcb-3\n", + "│ │ │ │ shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2016-rcb\n", + "│ │ │ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2015-rcb-3\n", + "│ │ │ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2016-rcb\n", + "│ │ │ └── Poly(9*x1**4 - 18*x1**2 - 4*x1*y1**2 + 9, x1, y1, domain='ZZ')\n", + "│ │ │ ├── Poly(x1**2 - 3, x1, domain='ZZ')\n", + "│ │ │ │ ├── shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1998-hnm\n", + "│ │ │ │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1998-hnm\n", + "│ │ │ │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1998-hnm\n", + "│ │ │ │ └── shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1998-hnm-2\n", + "│ │ │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1998-hnm-2\n", + "│ │ │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1998-hnm-2\n", + "│ │ │ └── shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2007-bl\n", + "│ │ │ shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-1998-cmo-2\n", + "│ │ │ shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-2007-bl-2\n", + "│ │ │ shortw/projective-3/add-1998-cmo-2, shortw/projective-3/dbl-1998-cmo\n", + "│ │ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2007-bl\n", + "│ │ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-1998-cmo-2\n", + "│ │ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-2007-bl-2\n", + "│ │ │ shortw/projective-3/add-1998-cmo, shortw/projective-3/dbl-1998-cmo\n", + "│ │ │ shortw/xyzz-3/add-2008-s, shortw/xyzz-3/dbl-2008-s-1\n", + "│ │ │ shortw/xyzz-3/add-2008-s, shortw/xyzz-3/dbl-2008-s-2\n", + "│ │ │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1986-cc\n", + "│ │ │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-2007-bl\n", + "│ │ │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-2004-hmv\n", + "│ │ │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1998-cmo-2\n", + "│ │ │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-2001-b\n", + "│ │ │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1998-cmo\n", + "│ │ │ shortw/jacobian-3/add-1998-cmo-2, shortw/jacobian-3/dbl-1986-cc-2\n", + "│ │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1986-cc\n", + "│ │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-2007-bl\n", + "│ │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-2004-hmv\n", + "│ │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1998-cmo-2\n", + "│ │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-2001-b\n", + "│ │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1998-cmo\n", + "│ │ │ shortw/jacobian-3/add-1998-cmo, shortw/jacobian-3/dbl-1986-cc-2\n", + "│ │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1986-cc\n", + "│ │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-2007-bl\n", + "│ │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-2004-hmv\n", + "│ │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1998-cmo-2\n", + "│ │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-2001-b\n", + "│ │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1998-cmo\n", + "│ │ │ shortw/jacobian-3/add-2007-bl, shortw/jacobian-3/dbl-1986-cc-2\n", + "│ │ └── Poly(9*x1**4 - 18*x1**2 - 4*x1*y1**2 + 9, x1, y1, domain='ZZ')\n", + "│ │ ├── Poly(x1**2 - 3, x1, domain='ZZ')\n", + "│ │ │ ├── shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1998-hnm\n", + "│ │ │ │ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1998-hnm\n", + "│ │ │ └── shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1998-hnm-2\n", + "│ │ │ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1998-hnm-2\n", + "│ │ └── shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1986-cc\n", + "│ │ shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-2007-bl\n", + "│ │ shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-2004-hmv\n", + "│ │ shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1998-cmo-2\n", + "│ │ shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-2001-b\n", + "│ │ shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1998-cmo\n", + "│ │ shortw/jacobian-3/add-1986-cc, shortw/jacobian-3/dbl-1986-cc-2\n", + "│ │ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1986-cc\n", + "│ │ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-2007-bl\n", + "│ │ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-2004-hmv\n", + "│ │ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1998-cmo-2\n", + "│ │ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-2001-b\n", + "│ │ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1998-cmo\n", + "│ │ shortw/jacobian-3/add-2001-b, shortw/jacobian-3/dbl-1986-cc-2\n", + "│ └── Poly(3*x1**4 - 6*x1**2 - 4*x1*y1**2 + 3, x1, y1, domain='ZZ')\n", + "│ ├── Poly(x1*y2 + x2*y1, x1, x2, y1, y2, domain='ZZ')\n", + "│ │ ├── Poly(x1*b + x2*b - 3, x1, x2, b, domain='ZZ')\n", + "│ │ │ ├── shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2007-bl\n", + "│ │ │ │ shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-1998-cmo-2\n", + "│ │ │ │ shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2007-bl-2\n", + "│ │ │ │ shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-1998-cmo\n", + "│ │ │ │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2007-bl\n", + "│ │ │ │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-1998-cmo-2\n", + "│ │ │ │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2007-bl-2\n", + "│ │ │ │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-1998-cmo\n", + "│ │ │ └── shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2007-bl\n", + "│ │ │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-1998-cmo-2\n", + "│ │ │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2007-bl-2\n", + "│ │ │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-1998-cmo\n", + "│ │ └── Poly(x1**2 + x1*x2 + x2**2 - 3, x1, x2, domain='ZZ')\n", + "│ │ ├── shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2007-bl\n", + "│ │ │ shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-1998-cmo-2\n", + "│ │ │ shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2007-bl-2\n", + "│ │ │ shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-1998-cmo\n", + "│ │ │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2007-bl\n", + "│ │ │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-1998-cmo-2\n", + "│ │ │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2007-bl-2\n", + "│ │ │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-1998-cmo\n", + "│ │ └── Poly(9*x1**4 - 18*x1**2 - 4*x1*y1**2 + 9, x1, y1, domain='ZZ')\n", + "│ │ ├── Poly(x1**2 - 3, x1, domain='ZZ')\n", + "│ │ │ ├── shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1998-hnm\n", + "│ │ │ └── shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1998-hnm-2\n", + "│ │ └── shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1986-cc\n", + "│ │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-2007-bl\n", + "│ │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-2004-hmv\n", + "│ │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1998-cmo-2\n", + "│ │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-2001-b\n", + "│ │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1998-cmo\n", + "│ │ shortw/jacobian-3/add-1998-hnm, shortw/jacobian-3/dbl-1986-cc-2\n", + "│ └── Poly(-6*x1 - y1**2 + 3*b, x1, y1, b, domain='ZZ')\n", + "│ ├── Poly(x1*y2 + x2*y1, x1, x2, y1, y2, domain='ZZ')\n", + "│ │ ├── Poly(x1*b + x2*b - 3, x1, x2, b, domain='ZZ')\n", + "│ │ │ ├── Poly(x1**2 + 3, x1, domain='ZZ')\n", + "│ │ │ │ ├── shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2015-rcb\n", + "│ │ │ │ │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2015-rcb\n", + "│ │ │ │ └── shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2015-rcb-3\n", + "│ │ │ │ shortw/projective-3/add-2016-rcb, shortw/projective-3/dbl-2016-rcb\n", + "│ │ │ │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2015-rcb-3\n", + "│ │ │ │ shortw/projective-3/add-2015-rcb-3, shortw/projective-3/dbl-2016-rcb\n", + "│ │ │ └── Poly(x1**2 + 3, x1, domain='ZZ')\n", + "│ │ │ ├── shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2015-rcb\n", + "│ │ │ └── shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2015-rcb-3\n", + "│ │ │ shortw/projective-3/add-2015-rcb, shortw/projective-3/dbl-2016-rcb\n", + "│ │ └── Poly(x1**2 + 3, x1, domain='ZZ')\n", + "│ │ ├── shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2015-rcb\n", + "│ │ │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2015-rcb\n", + "│ │ └── shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2015-rcb-3\n", + "│ │ shortw/projective-3/add-2002-bj, shortw/projective-3/dbl-2016-rcb\n", + "│ │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2015-rcb-3\n", + "│ │ shortw/projective-3/add-2007-bl, shortw/projective-3/dbl-2016-rcb\n", + "│ └── Poly(9*x1**4 + 6*x1**2*a - 12*x1*y1**2 + a**2, x1, y1, a, domain='ZZ')\n", + "│ ├── shortw/projective/add-2016-rcb, shortw/projective/dbl-2007-bl\n", + "│ │ shortw/projective/add-2016-rcb, shortw/projective/dbl-1998-cmo-2\n", + "│ │ shortw/projective/add-2016-rcb, shortw/projective/dbl-1998-cmo\n", + "│ │ shortw/projective/add-2015-rcb, shortw/projective/dbl-2007-bl\n", + "│ │ shortw/projective/add-2015-rcb, shortw/projective/dbl-1998-cmo-2\n", + "│ │ shortw/projective/add-2015-rcb, shortw/projective/dbl-1998-cmo\n", + "│ └── Poly(-x1 - x2 + 3*b, x1, x2, b, domain='ZZ')\n", + "│ ├── Poly(x1**2 + 1, x1, domain='ZZ')\n", + "│ │ ├── shortw/projective-1/add-2015-rcb, shortw/projective-1/dbl-2015-rcb\n", + "│ │ └── shortw/projective-1/add-2015-rcb, shortw/projective-1/dbl-2007-bl\n", + "│ │ shortw/projective-1/add-2015-rcb, shortw/projective-1/dbl-1998-cmo-2\n", + "│ │ shortw/projective-1/add-2015-rcb, shortw/projective-1/dbl-1998-cmo\n", + "│ └── shortw/projective/add-2016-rcb, shortw/projective/dbl-2015-rcb\n", + "│ shortw/projective/add-2016-rcb, shortw/projective/dbl-2016-rcb\n", + "│ shortw/projective/add-2015-rcb, shortw/projective/dbl-2015-rcb\n", + "│ shortw/projective/add-2015-rcb, shortw/projective/dbl-2016-rcb\n", + "└── Poly(3*x1**2 + a, x1, a, domain='ZZ')\n", + " ├── Poly(x1**3 - 3*x1**2*x2 + 3*x1*x2**2 - x2**3 + y1**2 - 2*y1*y2 + y2**2, x1, x2, y1, y2, domain='ZZ')\n", + " │ ├── Poly(2*x1*a + y1**2 + 3*b, x1, y1, a, b, domain='ZZ')\n", + " │ │ ├── shortw/projective/add-1998-cmo-2, shortw/projective/dbl-2015-rcb\n", + " │ │ │ shortw/projective/add-1998-cmo-2, shortw/projective/dbl-2016-rcb\n", + " │ │ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-2015-rcb\n", + " │ │ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-2016-rcb\n", + " │ │ └── Poly(x1**2 + a, x1, a, domain='ZZ')\n", + " │ │ ├── shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-1998-hnm\n", + " │ │ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-1998-hnm\n", + " │ │ │ shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-1998-hnm\n", + " │ │ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-1998-hnm\n", + " │ │ └── shortw/projective/add-1998-cmo-2, shortw/projective/dbl-2007-bl\n", + " │ │ shortw/projective/add-1998-cmo-2, shortw/projective/dbl-1998-cmo-2\n", + " │ │ shortw/projective/add-1998-cmo-2, shortw/projective/dbl-1998-cmo\n", + " │ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-2007-bl\n", + " │ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-1998-cmo-2\n", + " │ │ shortw/projective/add-1998-cmo, shortw/projective/dbl-1998-cmo\n", + " │ │ shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-1986-cc\n", + " │ │ shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-2007-bl\n", + " │ │ shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-1998-cmo-2\n", + " │ │ shortw/jacobian/add-1998-cmo-2, shortw/jacobian/dbl-1998-cmo\n", + " │ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-1986-cc\n", + " │ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-2007-bl\n", + " │ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-1998-cmo-2\n", + " │ │ shortw/jacobian/add-1998-cmo, shortw/jacobian/dbl-1998-cmo\n", + " │ │ shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-1986-cc\n", + " │ │ shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-2007-bl\n", + " │ │ shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-1998-cmo-2\n", + " │ │ shortw/jacobian/add-2007-bl, shortw/jacobian/dbl-1998-cmo\n", + " │ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-1986-cc\n", + " │ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-2007-bl\n", + " │ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-1998-cmo-2\n", + " │ │ shortw/jacobian/add-bc-r1rv76-jac, shortw/jacobian/dbl-1998-cmo\n", + " │ │ shortw/xyzz/add-2008-s, shortw/xyzz/dbl-2008-s-1\n", + " │ │ shortw/modified/add-1998-cmo-2, shortw/modified/dbl-2009-bl\n", + " │ │ shortw/modified/add-1998-cmo-2, shortw/modified/dbl-1998-cmo-2\n", + " │ │ shortw/modified/add-2009-bl, shortw/modified/dbl-2009-bl\n", + " │ │ shortw/modified/add-2009-bl, shortw/modified/dbl-1998-cmo-2\n", + " │ └── Poly(x1**2 + x1*x2 + x2**2 + a, x1, x2, a, domain='ZZ')\n", + " │ ├── Poly(2*x1*a + y1**2 + 3*b, x1, y1, a, b, domain='ZZ')\n", + " │ │ ├── shortw/projective/add-2002-bj, shortw/projective/dbl-2015-rcb\n", + " │ │ │ shortw/projective/add-2002-bj, shortw/projective/dbl-2016-rcb\n", + " │ │ │ shortw/projective/add-2007-bl, shortw/projective/dbl-2015-rcb\n", + " │ │ │ shortw/projective/add-2007-bl, shortw/projective/dbl-2016-rcb\n", + " │ │ └── shortw/projective/add-2002-bj, shortw/projective/dbl-2007-bl\n", + " │ │ shortw/projective/add-2002-bj, shortw/projective/dbl-1998-cmo-2\n", + " │ │ shortw/projective/add-2002-bj, shortw/projective/dbl-1998-cmo\n", + " │ │ shortw/projective/add-2007-bl, shortw/projective/dbl-2007-bl\n", + " │ │ shortw/projective/add-2007-bl, shortw/projective/dbl-1998-cmo-2\n", + " │ │ shortw/projective/add-2007-bl, shortw/projective/dbl-1998-cmo\n", + " │ └── Poly(3*x1**3 - 3*x1**2*x2 - 3*x1*x2**2 + 3*x2**3 - 2*y1**2 + 4*y1*y2 - 2*y2**2, x1, x2, y1, y2, domain='ZZ')\n", + " │ ├── Poly(x1**2 + a, x1, a, domain='ZZ')\n", + " │ │ ├── shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-1998-hnm\n", + " │ │ └── shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-1986-cc\n", + " │ │ shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-2007-bl\n", + " │ │ shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-1998-cmo-2\n", + " │ │ shortw/jacobian/add-1998-hnm, shortw/jacobian/dbl-1998-cmo\n", + " │ └── Poly(x1**2 + a, x1, a, domain='ZZ')\n", + " │ ├── shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-1998-hnm\n", + " │ │ shortw/jacobian/add-2001-b, shortw/jacobian/dbl-1998-hnm\n", + " │ └── shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-1986-cc\n", + " │ shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-2007-bl\n", + " │ shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-1998-cmo-2\n", + " │ shortw/jacobian/add-1986-cc, shortw/jacobian/dbl-1998-cmo\n", + " │ shortw/jacobian/add-2001-b, shortw/jacobian/dbl-1986-cc\n", + " │ shortw/jacobian/add-2001-b, shortw/jacobian/dbl-2007-bl\n", + " │ shortw/jacobian/add-2001-b, shortw/jacobian/dbl-1998-cmo-2\n", + " │ shortw/jacobian/add-2001-b, shortw/jacobian/dbl-1998-cmo\n", + " └── Poly(x1**3 - 3*x1**2*x2 + 3*x1*x2**2 - x2**3 + y1**2 - 2*y1*y2 + y2**2, x1, x2, y1, y2, domain='ZZ')\n", + " ├── Poly(3*x1**3 - 4*y1**2, x1, y1, domain='ZZ')\n", + " │ ├── Poly(9*x1**3 - 4*y1**2, x1, y1, domain='ZZ')\n", + " │ │ ├── shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-1998-hnm\n", + " │ │ │ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-1998-hnm\n", + " │ │ │ shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-1998-hnm\n", + " │ │ └── shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-1986-cc\n", + " │ │ shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-2007-bl\n", + " │ │ shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-2009-l\n", + " │ │ shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-1998-cmo-2\n", + " │ │ shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-1998-cmo\n", + " │ │ shortw/jacobian-0/add-1998-cmo-2, shortw/jacobian-0/dbl-2009-alnr\n", + " │ │ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-1986-cc\n", + " │ │ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-2007-bl\n", + " │ │ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-2009-l\n", + " │ │ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-1998-cmo-2\n", + " │ │ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-1998-cmo\n", + " │ │ shortw/jacobian-0/add-1998-cmo, shortw/jacobian-0/dbl-2009-alnr\n", + " │ │ shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-1986-cc\n", + " │ │ shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-2007-bl\n", + " │ │ shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-2009-l\n", + " │ │ shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-1998-cmo-2\n", + " │ │ shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-1998-cmo\n", + " │ │ shortw/jacobian-0/add-2007-bl, shortw/jacobian-0/dbl-2009-alnr\n", + " │ └── Poly(-2*x1 + 3*b, x1, b, domain='ZZ')\n", + " │ ├── shortw/projective-1/add-1998-cmo-2, shortw/projective-1/dbl-2015-rcb\n", + " │ │ shortw/projective-1/add-1998-cmo, shortw/projective-1/dbl-2015-rcb\n", + " │ └── shortw/projective-1/add-1998-cmo-2, shortw/projective-1/dbl-2007-bl\n", + " │ shortw/projective-1/add-1998-cmo-2, shortw/projective-1/dbl-1998-cmo-2\n", + " │ shortw/projective-1/add-1998-cmo-2, shortw/projective-1/dbl-1998-cmo\n", + " │ shortw/projective-1/add-1998-cmo, shortw/projective-1/dbl-2007-bl\n", + " │ shortw/projective-1/add-1998-cmo, shortw/projective-1/dbl-1998-cmo-2\n", + " │ shortw/projective-1/add-1998-cmo, shortw/projective-1/dbl-1998-cmo\n", + " └── Poly(2*x1**3 - 3*x1**2*x2 + x2**3 - y1**2 + 2*y1*y2 - y2**2, x1, x2, y1, y2, domain='ZZ')\n", + " ├── Poly(9*x1**3 - 4*y1**2, x1, y1, domain='ZZ')\n", + " │ ├── shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-1998-hnm\n", + " │ │ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-1998-hnm\n", + " │ └── Poly(3*x1**3 - 4*y1**2, x1, y1, domain='ZZ')\n", + " │ ├── shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-1986-cc\n", + " │ │ shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-2007-bl\n", + " │ │ shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-2009-l\n", + " │ │ shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-1998-cmo-2\n", + " │ │ shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-1998-cmo\n", + " │ │ shortw/jacobian-0/add-1986-cc, shortw/jacobian-0/dbl-2009-alnr\n", + " │ │ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-1986-cc\n", + " │ │ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-2007-bl\n", + " │ │ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-2009-l\n", + " │ │ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-1998-cmo-2\n", + " │ │ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-1998-cmo\n", + " │ │ shortw/jacobian-0/add-2001-b, shortw/jacobian-0/dbl-2009-alnr\n", + " │ └── shortw/w12-0/add-2010-cln, shortw/w12-0/dbl-2010-cln\n", + " └── Poly(9*x1**4 - 6*x1**2 - 12*x1*y1**2 + 1, x1, y1, domain='ZZ')\n", + " ├── Poly(x1 + x2 - 1, x1, x2, domain='ZZ')\n", + " │ ├── shortw/projective-1/add-2002-bj-2, shortw/projective-1/dbl-2007-bl\n", + " │ │ shortw/projective-1/add-2002-bj-2, shortw/projective-1/dbl-1998-cmo-2\n", + " │ │ shortw/projective-1/add-2002-bj-2, shortw/projective-1/dbl-1998-cmo\n", + " │ └── shortw/projective-1/add-2002-bj, shortw/projective-1/dbl-2007-bl\n", + " │ shortw/projective-1/add-2002-bj, shortw/projective-1/dbl-1998-cmo-2\n", + " │ shortw/projective-1/add-2002-bj, shortw/projective-1/dbl-1998-cmo\n", + " │ shortw/projective-1/add-2007-bl, shortw/projective-1/dbl-2007-bl\n", + " │ shortw/projective-1/add-2007-bl, shortw/projective-1/dbl-1998-cmo-2\n", + " │ shortw/projective-1/add-2007-bl, shortw/projective-1/dbl-1998-cmo\n", + " └── Poly(3*x1**3 - 3*x1**2*x2 - 3*x1*x2**2 + 3*x2**3 - 2*y1**2 + 4*y1*y2 - 2*y2**2, x1, x2, y1, y2, domain='ZZ')\n", + " ├── Poly(9*x1**3 - 4*y1**2, x1, y1, domain='ZZ')\n", + " │ ├── shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-1998-hnm\n", + " │ └── shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-1986-cc\n", + " │ shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-2007-bl\n", + " │ shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-2009-l\n", + " │ shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-1998-cmo-2\n", + " │ shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-1998-cmo\n", + " │ shortw/jacobian-0/add-1998-hnm, shortw/jacobian-0/dbl-2009-alnr\n", + " └── Poly(x1 + x2 - 1, x1, x2, domain='ZZ')\n", + " ├── shortw/projective-1/add-2002-bj-2, shortw/projective-1/dbl-2015-rcb\n", + " └── shortw/projective-1/add-2002-bj, shortw/projective-1/dbl-2015-rcb\n", + " shortw/projective-1/add-2007-bl, shortw/projective-1/dbl-2015-rcb\n" + ] + } + ], "source": [ "print(RenderTree(fset_tree).by_attr(lambda n: n.name if n.name is not None else \"\\n\".join((\", \".join(str(formula) for formula in cfg) for cfg in n.cfgs))))" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "id": "6db4910f-c492-462b-9d0e-effe3e7bfed9", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-------------- filter_nonhomo=True affine=True --------------\n" + ] + }, + { + "ename": "NameError", + "evalue": "name 'dbls' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[20], line 4\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[39mfor\u001b[39;00m affine \u001b[39min\u001b[39;00m (\u001b[39mTrue\u001b[39;00m, \u001b[39mFalse\u001b[39;00m):\n\u001b[1;32m 3\u001b[0m \u001b[39mprint\u001b[39m(\u001b[39mf\u001b[39m\u001b[39m\"\u001b[39m\u001b[39m-------------- filter_nonhomo=\u001b[39m\u001b[39m{\u001b[39;00mfilter_nonhomo\u001b[39m}\u001b[39;00m\u001b[39m affine=\u001b[39m\u001b[39m{\u001b[39;00maffine\u001b[39m}\u001b[39;00m\u001b[39m --------------\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[0;32m----> 4\u001b[0m fset_map \u001b[39m=\u001b[39m {dbl: compute_factor_set(dbl, filter_nonhomo\u001b[39m=\u001b[39mfilter_nonhomo, affine\u001b[39m=\u001b[39maffine) \u001b[39mfor\u001b[39;00m dbl \u001b[39min\u001b[39;00m dbls}\n\u001b[1;32m 5\u001b[0m fset_tree \u001b[39m=\u001b[39m build_distinguishing_tree(fset_map)\n\u001b[1;32m 6\u001b[0m \u001b[39mprint\u001b[39m(RenderTree(fset_tree)\u001b[39m.\u001b[39mby_attr(\u001b[39mlambda\u001b[39;00m n: n\u001b[39m.\u001b[39mname \u001b[39mif\u001b[39;00m n\u001b[39m.\u001b[39mname \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mNone\u001b[39;00m \u001b[39melse\u001b[39;00m n\u001b[39m.\u001b[39mcfgs))\n", + "\u001b[0;31mNameError\u001b[0m: name 'dbls' is not defined" + ] + } + ], "source": [ "for filter_nonhomo in (True, False):\n", " for affine in (True, False):\n", @@ -521,7 +2399,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.5" + "version": "3.10.12" } }, "nbformat": 4, |
