Skip to content

Commit

Permalink
lds
Browse files Browse the repository at this point in the history
  • Loading branch information
unhyperbolic committed Feb 19, 2024
1 parent 45b9224 commit c4c0a51
Showing 1 changed file with 64 additions and 20 deletions.
84 changes: 64 additions & 20 deletions python/len_spec/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,37 +48,77 @@ def mcomplex_for_len_spec(
c.normalize_cusps(areas)

_scale_vertices(mcomplex)

# tet.R13_vertices

return mcomplex

# mcomplex.GeneratorMatrices # psl2c
# mcomplex.num_generators
# tet.R13_vertices

# mcomplex.R13_baseTetInCenter

def compute_domain_tiles(mcomplex):
def compute_domain_tiles(mcomplex, verified):

RF = mcomplex.baseTetInRadius.parent()

pending_lifted_domains : Sequence[_pending_lifted_domains] = []

heapq.heappush(
pending_lifted_domains,
_PendingLiftedDomain(
matrix.identity(RF, 4), [], RF(-2)))

if verified:
minus_infinity = RF(-sage.all.Infinity)
else:
minus_infinity = RF(-1e20)

initial_domain = _PendingLiftedDomain(
matrix.identity(4, RF),
[],
minus_infinity)
visited_lifted_domains[initial_domain] = [ True ]

pending_lifted_domains : Sequence[_PendingLiftedDomains] = []
for i in range(mcomplex.num_generators):
for g in [ (i + 1), -(i + 1) ]:
heapq.heappush(
pending_lifted_domains,
_PendingLiftedDomain(
m, word + [ g ], RF(0)))

min_inner_product = -(mcomplex.baseTetInRadius/2).cosh()
visited_lifted_domains = get_hyperboloid_dict(
min_inner_product, verified=verified)
mcomplex.GeneratorMatrices[g], # Need o13 matrices
[ g ],
minus_infinity))

while True:
pending_lifted_domain : _PendingLiftedDomain = (
heapq.heappop(pending_lifted_domains))

if not visited_lifted_domains.add(pending_lifted_domain)
continue

yield pending_lifted_domain

for i in range(mcomplex.num_generators):
for g in [ (i + 1), -(i + 1) ]:
if g == -pending_lifted_domain.word[0]:
continue

m = pending_lifted_domain.o13_matrices * mcomplex.GeneratorMatrices[g]
heapq.heappush(
pending_lifted_domains,
_PendingLiftedDomain(
m,
pending_lifted_domain + [ g ],
compute_lower_bound_covered_radius(
mcomplex, m)))

class LiftedDomainSet:
"""
Abstracting
"""
def __init__(self, mcomplex, verified):
min_inner_product = -(mcomplex.baseTetInRadius/2).cosh()
self.hyperboloid_dict = get_hyperboloid_dict(
min_inner_product, verified=verified)
self.base_point = mcomplex.R13_baseTetInCenter

def add(self, lifted_domain):
p = lifted_domain.o13_matrix * self.base_point
visited = self.hyperboloid_dict.setdefault(p)
if visited[0]:
return False
visited[0] = True
return True

class _PendingLiftedDomain:
def __init__(self,
Expand All @@ -93,3 +133,7 @@ def __init__(self,

def __lt__(self, other):
return self._key < other._key

def compute_lower_bound_covered_radius(mcomplex, o13_matrix):

return 0

0 comments on commit c4c0a51

Please sign in to comment.