MCPcopy Create free account
hub / github.com/google-deepmind/alphageometry / Node

Class Node

geometry.py:24–280  ·  view source on GitHub ↗

r"""Node in the proof state graph. Can be Point, Line, Circle, etc. Each node maintains a merge history to other nodes if they are (found out to be) equivalent a -> b - \ c -> d -> e -> f -> g d.merged_to = e d.rep = g d.merged_from = {a, b, c, d} d.equivs

Source from the content-addressed store, hash-verified

22
23
24class Node:
25 r"""Node in the proof state graph.
26
27 Can be Point, Line, Circle, etc.
28
29 Each node maintains a merge history to
30 other nodes if they are (found out to be) equivalent
31
32 a -> b -
33 \
34 c -> d -> e -> f -> g
35
36 d.merged_to = e
37 d.rep = g
38 d.merged_from = {a, b, c, d}
39 d.equivs = {a, b, c, d, e, f, g}
40 """
41
42 def __init__(self, name: str = '', graph: Any = None):
43 self.name = name or str(self)
44 self.graph = graph
45
46 self.edge_graph = {}
47 # Edge graph: what other nodes is connected to this node.
48 # edge graph = {
49 # other1: {self1: deps, self2: deps},
50 # other2: {self2: deps, self3: deps}
51 # }
52
53 self.merge_graph = {}
54 # Merge graph: history of merges with other nodes.
55 # merge_graph = {self1: {self2: deps1, self3: deps2}}
56
57 self.rep_by = None # represented by.
58 self.members = {self}
59
60 self._val = None
61 self._obj = None
62
63 self.deps = []
64
65 # numerical representation.
66 self.num = None
67 self.change = set() # what other nodes' num rely on this node?
68
69 def set_rep(self, node: Node) -> None:
70 if node == self:
71 return
72 self.rep_by = node
73 node.merge_edge_graph(self.edge_graph)
74 node.members.update(self.members)
75
76 def rep(self) -> Node:
77 x = self
78 while x.rep_by:
79 x = x.rep_by
80 return x
81

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected