From d40de259097c5e8d8fd35539560ca7c3d47523e7 Mon Sep 17 00:00:00 2001 From: Ryan Rueger Date: Sat, 1 Mar 2025 20:25:41 +0100 Subject: Initial Commit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Damien Robert Co-Authored-By: Frederik Vercauteren Co-Authored-By: Jonathan Komada Eriksen Co-Authored-By: Pierrick Dartois Co-Authored-By: Riccardo Invernizzi Co-Authored-By: Ryan Rueger [0.01s] Co-Authored-By: Benjamin Wesolowski Co-Authored-By: Arthur Herlédan Le Merdy Co-Authored-By: Boris Fouotsa --- theta_lib/isogenies/tree.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 theta_lib/isogenies/tree.py (limited to 'theta_lib/isogenies/tree.py') diff --git a/theta_lib/isogenies/tree.py b/theta_lib/isogenies/tree.py new file mode 100644 index 0000000..a6e3da3 --- /dev/null +++ b/theta_lib/isogenies/tree.py @@ -0,0 +1,28 @@ +from sage.all import * + +class Tree: + def __init__(self,node): + self._node=node + self._edges=[] + self._children=[] + + def add_child(self,child,edge): + self._children.append(child) + self._edges.append(edge) + + def look_node(self,node): + if self._node==node: + return self + elif len(self._children)>0: + for child in self._children: + t_node=child.look_node(node) + if t_node!=None: + return t_node + + def edge_product(self,L_factors,factor_node=ZZ(1)): + n=len(self._children) + L_prod=[(factor_node,self._node)] + for i in range(n): + L_prod+=self._children[i].edge_product(L_factors,factor_node*L_factors[self._edges[i]]) + return L_prod + -- cgit v1.2.3-70-g09d2