Add figures, Kempe-cycle section, and restriction experiments
Adds two TikZ figures (boundary-state worst cases and annular cycle counterexample), a new subsection on Kempe-cycle conservation across medial tires, and the experiment scripts/findings for the medial tire restriction search and annular cycle condition check. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+358
@@ -0,0 +1,358 @@
|
||||
"""Check the medial annular-cycle almost-two-colour condition.
|
||||
|
||||
For each generated plane triangulation G and each requested level source:
|
||||
|
||||
1. Build the full medial graph M(G).
|
||||
2. Find depth-component tire annular medial subgraphs.
|
||||
3. Enumerate simple cycles in those annular subgraphs.
|
||||
4. Search for a proper vertex 3-colouring of M(G) such that every
|
||||
such cycle uses two colours except at at most one vertex.
|
||||
|
||||
Run with Sage, for example:
|
||||
|
||||
sage -python papers/medial_tire_decompositions_of_plane_triangulations/experiments/check_medial_annular_cycle_condition.py --n-min 4 --n-max 8
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
from collections import defaultdict, deque
|
||||
from itertools import combinations
|
||||
from typing import Any, Iterable, Iterator, Sequence, cast
|
||||
|
||||
from sage.all import Graph, graphs # type: ignore[attr-defined] # pylint: disable=no-name-in-module
|
||||
from sage.graphs.graph_coloring import all_graph_colorings # type: ignore[attr-defined] # pylint: disable=no-name-in-module
|
||||
|
||||
|
||||
Edge = tuple[Any, Any]
|
||||
Coloring = dict[Edge, int]
|
||||
Source = tuple[Any, ...]
|
||||
|
||||
|
||||
def vertex_key(v: Any) -> str:
|
||||
return repr(v)
|
||||
|
||||
|
||||
def edge_key(u: Any, v: Any) -> Edge:
|
||||
return (u, v) if vertex_key(u) <= vertex_key(v) else (v, u)
|
||||
|
||||
|
||||
def is_induced_cycle(g: Graph, vertices: Sequence[Any]) -> bool:
|
||||
if len(vertices) < 3:
|
||||
return False
|
||||
h = cast(Graph, g.subgraph(list(vertices)))
|
||||
return h.is_connected() and h.num_edges() == len(vertices) and all(
|
||||
h.degree(v) == 2 for v in h.vertices()
|
||||
)
|
||||
|
||||
|
||||
def induced_cycle_sources(g: Graph, max_size: int | None = None) -> Iterator[Source]:
|
||||
vertices = sorted(g.vertices(), key=vertex_key)
|
||||
upper = len(vertices) if max_size is None else min(max_size, len(vertices))
|
||||
for k in range(3, upper + 1):
|
||||
for subset in combinations(vertices, k):
|
||||
if is_induced_cycle(g, subset):
|
||||
yield tuple(subset)
|
||||
|
||||
|
||||
def level_sources(g: Graph, mode: str, max_cycle_source_size: int | None) -> Iterator[Source]:
|
||||
if mode in ("vertex", "all"):
|
||||
for v in sorted(g.vertices(), key=vertex_key):
|
||||
yield (v,)
|
||||
if mode in ("cycle", "all"):
|
||||
yield from induced_cycle_sources(g, max_cycle_source_size)
|
||||
|
||||
|
||||
def distances_from_source(g: Graph, source: Source) -> dict[Any, int]:
|
||||
if len(source) == 1:
|
||||
return dict(g.shortest_path_lengths(source[0]))
|
||||
distances = {v: 0 for v in source}
|
||||
queue: deque[Any] = deque(source)
|
||||
while queue:
|
||||
v = queue.popleft()
|
||||
for w in g.neighbor_iterator(v):
|
||||
if w in distances:
|
||||
continue
|
||||
distances[w] = distances[v] + 1
|
||||
queue.append(w)
|
||||
return distances
|
||||
|
||||
|
||||
def embedded_copy(g: Graph) -> Graph:
|
||||
emb = cast(Graph, g.copy())
|
||||
if not emb.is_planar(set_embedding=True):
|
||||
raise ValueError("graph is not planar")
|
||||
return emb
|
||||
|
||||
|
||||
def medial_graph(g: Graph) -> Graph:
|
||||
"""Build the full medial graph from the embedding rotation at vertices."""
|
||||
emb = embedded_copy(g)
|
||||
rotation = emb.get_embedding()
|
||||
m = Graph()
|
||||
medial_vertices = [edge_key(u, v) for u, v, _ in emb.edge_iterator()]
|
||||
m.add_vertices(medial_vertices)
|
||||
for v, neighbors in rotation.items():
|
||||
if len(neighbors) < 2:
|
||||
continue
|
||||
n = len(neighbors)
|
||||
for i in range(n):
|
||||
e1 = edge_key(v, neighbors[i])
|
||||
e2 = edge_key(v, neighbors[(i + 1) % n])
|
||||
if e1 != e2:
|
||||
m.add_edge(e1, e2)
|
||||
return m
|
||||
|
||||
|
||||
def face_vertices(face: Sequence[tuple[Any, Any]]) -> set[Any]:
|
||||
out: set[Any] = set()
|
||||
for u, v in face:
|
||||
out.add(u)
|
||||
out.add(v)
|
||||
return out
|
||||
|
||||
|
||||
def face_edges(face: Sequence[tuple[Any, Any]]) -> set[Edge]:
|
||||
return {edge_key(u, v) for u, v in face}
|
||||
|
||||
|
||||
def dual_components_by_depth(
|
||||
g: Graph, source: Source
|
||||
) -> list[tuple[int, list[int], set[Edge]]]:
|
||||
"""Return (depth, face-indices, annular-edge-set) for each depth component."""
|
||||
emb = embedded_copy(g)
|
||||
distances = distances_from_source(emb, source)
|
||||
faces = emb.faces()
|
||||
f_vertices = [face_vertices(face) for face in faces]
|
||||
f_edges = [face_edges(face) for face in faces]
|
||||
depths = [min(distances[v] for v in verts) for verts in f_vertices]
|
||||
|
||||
edge_faces: dict[Edge, list[int]] = defaultdict(list)
|
||||
for idx, edges in enumerate(f_edges):
|
||||
for edge in edges:
|
||||
edge_faces[edge].append(idx)
|
||||
|
||||
dual_adj: dict[int, set[int]] = defaultdict(set)
|
||||
for incident in edge_faces.values():
|
||||
for a in range(len(incident)):
|
||||
for b in range(a + 1, len(incident)):
|
||||
dual_adj[incident[a]].add(incident[b])
|
||||
dual_adj[incident[b]].add(incident[a])
|
||||
|
||||
components = []
|
||||
seen = [False] * len(faces)
|
||||
for start in range(len(faces)):
|
||||
if seen[start]:
|
||||
continue
|
||||
depth = depths[start]
|
||||
comp = [start]
|
||||
seen[start] = True
|
||||
stack = [start]
|
||||
while stack:
|
||||
f = stack.pop()
|
||||
for h in dual_adj[f]:
|
||||
if not seen[h] and depths[h] == depth:
|
||||
seen[h] = True
|
||||
comp.append(h)
|
||||
stack.append(h)
|
||||
|
||||
annular_edges: set[Edge] = set()
|
||||
for f in comp:
|
||||
for u, v in f_edges[f]:
|
||||
if {distances[u], distances[v]} == {depth, depth + 1}:
|
||||
annular_edges.add(edge_key(u, v))
|
||||
if len(annular_edges) >= 3:
|
||||
components.append((depth, comp, annular_edges))
|
||||
return components
|
||||
|
||||
|
||||
def simple_cycle_vertex_sets(g: Graph) -> set[frozenset[Any]]:
|
||||
vertices = sorted(g.vertices(), key=repr)
|
||||
index = {v: i for i, v in enumerate(vertices)}
|
||||
cycles: set[frozenset[Any]] = set()
|
||||
|
||||
def dfs(start: Any, current: Any, path: list[Any], seen: set[Any]) -> None:
|
||||
for nxt in g.neighbor_iterator(current):
|
||||
if nxt == start:
|
||||
if len(path) >= 3:
|
||||
cycles.add(frozenset(path))
|
||||
continue
|
||||
if nxt in seen or index[nxt] <= index[start]:
|
||||
continue
|
||||
seen.add(nxt)
|
||||
path.append(nxt)
|
||||
dfs(start, nxt, path, seen)
|
||||
path.pop()
|
||||
seen.remove(nxt)
|
||||
|
||||
for start in vertices:
|
||||
dfs(start, start, [start], {start})
|
||||
return cycles
|
||||
|
||||
|
||||
def annular_medial_cycles(g: Graph, source: Source) -> list[frozenset[Edge]]:
|
||||
m = medial_graph(g)
|
||||
cycles: list[frozenset[Edge]] = []
|
||||
seen: set[frozenset[Edge]] = set()
|
||||
for _depth, _faces, annular_edges in dual_components_by_depth(g, source):
|
||||
sub = cast(Graph, m.subgraph(list(annular_edges)))
|
||||
for cycle in simple_cycle_vertex_sets(sub):
|
||||
typed = frozenset(cast(Iterable[Edge], cycle))
|
||||
if typed not in seen:
|
||||
seen.add(typed)
|
||||
cycles.append(typed)
|
||||
return cycles
|
||||
|
||||
|
||||
def almost_two_coloured(cycle: frozenset[Edge], coloring: Coloring) -> bool:
|
||||
counts = defaultdict(int)
|
||||
for vertex in cycle:
|
||||
counts[coloring[vertex]] += 1
|
||||
return min(counts.get(c, 0) for c in range(3)) <= 1
|
||||
|
||||
|
||||
def first_cycle_violation(
|
||||
cycles: Sequence[frozenset[Edge]], coloring: Coloring
|
||||
) -> frozenset[Edge] | None:
|
||||
for cycle in cycles:
|
||||
if not almost_two_coloured(cycle, coloring):
|
||||
return cycle
|
||||
return None
|
||||
|
||||
|
||||
def color_counts(cycle: frozenset[Edge], coloring: Coloring) -> dict[int, int]:
|
||||
counts = {0: 0, 1: 0, 2: 0}
|
||||
for vertex in cycle:
|
||||
counts[coloring[vertex]] += 1
|
||||
return counts
|
||||
|
||||
|
||||
def coloring_witness(
|
||||
m: Graph,
|
||||
cycles: Sequence[frozenset[Edge]],
|
||||
max_colorings: int | None,
|
||||
) -> tuple[Coloring | None, int, bool, frozenset[Edge] | None, Coloring | None]:
|
||||
checked = 0
|
||||
last_violation = None
|
||||
for raw in all_graph_colorings(m, 3, vertex_color_dict=True):
|
||||
coloring = cast(Coloring, raw)
|
||||
checked += 1
|
||||
violation = first_cycle_violation(cycles, coloring)
|
||||
if violation is None:
|
||||
return coloring, checked, True, None, None
|
||||
last_violation = violation
|
||||
if max_colorings is not None and checked >= max_colorings:
|
||||
return None, checked, False, last_violation, coloring
|
||||
return None, checked, True, last_violation, coloring
|
||||
|
||||
|
||||
def source_label(source: Source) -> str:
|
||||
if len(source) == 1:
|
||||
return f"vertex:{source[0]}"
|
||||
return "cycle:{" + ",".join(map(str, source)) + "}"
|
||||
|
||||
|
||||
def graphs_to_check(n: int, max_graphs: int | None):
|
||||
for idx, g in enumerate(graphs.triangulations(n)):
|
||||
if max_graphs is not None and idx >= max_graphs:
|
||||
break
|
||||
yield idx, cast(Graph, g)
|
||||
|
||||
|
||||
def run(args: argparse.Namespace) -> None:
|
||||
total_cases = 0
|
||||
skipped_no_cycles = 0
|
||||
witnesses = 0
|
||||
failures = []
|
||||
inconclusive = []
|
||||
|
||||
for n in range(args.n_min, args.n_max + 1):
|
||||
print(f"n={n}")
|
||||
for graph_idx, g in graphs_to_check(n, args.max_graphs_per_n):
|
||||
m = medial_graph(g)
|
||||
sources = list(level_sources(g, args.sources, args.max_cycle_source_size))
|
||||
if args.max_sources_per_graph is not None:
|
||||
sources = sources[: args.max_sources_per_graph]
|
||||
for source in sources:
|
||||
cycles = annular_medial_cycles(g, source)
|
||||
if not cycles:
|
||||
skipped_no_cycles += 1
|
||||
continue
|
||||
total_cases += 1
|
||||
witness, checked, exhausted, violation, last_coloring = coloring_witness(
|
||||
m, cycles, args.max_colorings
|
||||
)
|
||||
if witness is not None:
|
||||
witnesses += 1
|
||||
if args.verbose:
|
||||
print(
|
||||
f" graph={graph_idx} source={source_label(source)} "
|
||||
f"cycles={len(cycles)} witness_after={checked}"
|
||||
)
|
||||
continue
|
||||
record = {
|
||||
"n": n,
|
||||
"graph_idx": graph_idx,
|
||||
"graph_edges": sorted(edge_key(u, v) for u, v, _ in g.edge_iterator()),
|
||||
"source": source_label(source),
|
||||
"cycles": len(cycles),
|
||||
"checked": checked,
|
||||
"exhausted": exhausted,
|
||||
"violation_size": len(violation) if violation else None,
|
||||
}
|
||||
if args.failure_details and violation is not None and last_coloring is not None:
|
||||
record["violation_cycle"] = sorted(violation)
|
||||
record["violation_counts"] = color_counts(violation, last_coloring)
|
||||
record["violation_coloring"] = {
|
||||
edge: last_coloring[edge] for edge in sorted(violation)
|
||||
}
|
||||
if exhausted:
|
||||
failures.append(record)
|
||||
print(" FAILURE", record)
|
||||
if args.stop_on_failure:
|
||||
print_summary(total_cases, skipped_no_cycles, witnesses, failures, inconclusive)
|
||||
return
|
||||
else:
|
||||
inconclusive.append(record)
|
||||
print(" INCONCLUSIVE", record)
|
||||
|
||||
print_summary(total_cases, skipped_no_cycles, witnesses, failures, inconclusive)
|
||||
|
||||
|
||||
def print_summary(
|
||||
total_cases: int,
|
||||
skipped_no_cycles: int,
|
||||
witnesses: int,
|
||||
failures: Sequence[dict],
|
||||
inconclusive: Sequence[dict],
|
||||
) -> None:
|
||||
print()
|
||||
print("summary")
|
||||
print(f" checked source decompositions with annular cycles: {total_cases}")
|
||||
print(f" skipped source decompositions with no annular cycles: {skipped_no_cycles}")
|
||||
print(f" witnesses found: {witnesses}")
|
||||
print(f" failures: {len(failures)}")
|
||||
print(f" inconclusive: {len(inconclusive)}")
|
||||
if failures:
|
||||
print(f" first failure: {failures[0]}")
|
||||
if inconclusive:
|
||||
print(f" first inconclusive: {inconclusive[0]}")
|
||||
|
||||
|
||||
def main() -> None:
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("--n-min", type=int, default=4)
|
||||
parser.add_argument("--n-max", type=int, default=8)
|
||||
parser.add_argument("--sources", choices=("vertex", "cycle", "all"), default="vertex")
|
||||
parser.add_argument("--max-cycle-source-size", type=int, default=6)
|
||||
parser.add_argument("--max-graphs-per-n", type=int)
|
||||
parser.add_argument("--max-sources-per-graph", type=int)
|
||||
parser.add_argument("--max-colorings", type=int)
|
||||
parser.add_argument("--stop-on-failure", action="store_true")
|
||||
parser.add_argument("--failure-details", action="store_true")
|
||||
parser.add_argument("--verbose", action="store_true")
|
||||
run(parser.parse_args())
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
+83
@@ -0,0 +1,83 @@
|
||||
# Medial Annular Cycle Condition Findings
|
||||
|
||||
Question: for an actual plane triangulation and a tire decomposition,
|
||||
does there exist a proper vertex 3-coloring of the full medial graph
|
||||
such that every medial annular simple cycle uses two colors except at
|
||||
at most one vertex?
|
||||
|
||||
The experiment is graph-level, not local-pattern-level:
|
||||
|
||||
1. Build the full medial graph `M(G)` from the embedding rotation.
|
||||
2. Enumerate proper vertex 3-colorings of `M(G)`.
|
||||
3. For each level-source tire decomposition, build the annular medial
|
||||
subgraph of each depth-component tire.
|
||||
4. Enumerate simple cycles in those annular medial subgraphs.
|
||||
5. Search for a proper medial coloring satisfying the almost-two-color
|
||||
condition on every such cycle.
|
||||
|
||||
## First Counterexample Found
|
||||
|
||||
Command:
|
||||
|
||||
```bash
|
||||
sage -python papers/medial_tire_decompositions_of_plane_triangulations/experiments/check_medial_annular_cycle_condition.py --n-min 7 --n-max 7 --stop-on-failure --failure-details
|
||||
```
|
||||
|
||||
Result:
|
||||
|
||||
```text
|
||||
n=7
|
||||
FAILURE {
|
||||
'n': 7,
|
||||
'graph_idx': 0,
|
||||
'graph_edges': [
|
||||
(1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (1, 7),
|
||||
(2, 3), (2, 6), (2, 7), (3, 4), (3, 5), (3, 6),
|
||||
(4, 5), (5, 6), (6, 7)
|
||||
],
|
||||
'source': 'vertex:1',
|
||||
'cycles': 1,
|
||||
'checked': 6,
|
||||
'exhausted': True,
|
||||
'violation_size': 6,
|
||||
'violation_cycle': [
|
||||
(1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (1, 7)
|
||||
],
|
||||
'violation_counts': {0: 2, 1: 2, 2: 2},
|
||||
'violation_coloring': {
|
||||
(1, 2): 2, (1, 3): 1, (1, 4): 0,
|
||||
(1, 5): 2, (1, 6): 0, (1, 7): 1
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Interpretation: for the vertex-source decomposition at source `1`, the
|
||||
only annular medial simple cycle is the six medial vertices
|
||||
corresponding to the six edges incident to `1`. Sage enumerated all six
|
||||
proper vertex 3-colorings of the full medial graph. Every one violates
|
||||
the almost-two-color condition on that cycle; the displayed coloring has
|
||||
color counts `{0: 2, 1: 2, 2: 2}` on the annular cycle.
|
||||
|
||||
Thus the conjecture, in the form "for every possible tire decomposition
|
||||
there exists a proper medial 3-coloring satisfying the condition on all
|
||||
medial annular simple cycles", is false.
|
||||
|
||||
## Default Sweep
|
||||
|
||||
Command:
|
||||
|
||||
```bash
|
||||
sage -python papers/medial_tire_decompositions_of_plane_triangulations/experiments/check_medial_annular_cycle_condition.py --n-min 4 --n-max 8
|
||||
```
|
||||
|
||||
Summary:
|
||||
|
||||
```text
|
||||
checked source decompositions with annular cycles: 168
|
||||
skipped source decompositions with no annular cycles: 0
|
||||
witnesses found: 111
|
||||
failures: 57
|
||||
inconclusive: 0
|
||||
```
|
||||
|
||||
Failures begin at `n=7` for vertex-source decompositions.
|
||||
+178
@@ -0,0 +1,178 @@
|
||||
# Medial Tire Restriction Findings
|
||||
|
||||
Question: among possible full medial tire graphs, which examples most
|
||||
restrict the inner boundary coloring relative to the outer boundary
|
||||
coloring?
|
||||
|
||||
## Model
|
||||
|
||||
The experiment uses the ambient full-medial tread model.
|
||||
|
||||
- Annular medial vertices form a cycle `A_0, ..., A_{n-1}`.
|
||||
- Each annular face contributes one boundary-medial vertex `B_i`.
|
||||
- `B_i` is adjacent to `A_i` and `A_{i+1}`.
|
||||
- `B_i` is tagged `O` or `I` according to whether the corresponding
|
||||
primal boundary edge lies on the outer or inner boundary.
|
||||
|
||||
Boundary states are quotient by color permutations only. Boundary
|
||||
order is fixed: rotations and reversals are not identified.
|
||||
|
||||
Inner chords of the inner outerplanar graph do not affect this ambient
|
||||
full medial tire graph, because they are not incident to annular tread
|
||||
faces.
|
||||
|
||||
## Metrics
|
||||
|
||||
For the quotient transfer relation
|
||||
|
||||
```text
|
||||
R_T subset outer_state_orbits x inner_state_orbits
|
||||
```
|
||||
|
||||
the script reports:
|
||||
|
||||
- `min_outer_extensions`: minimum number of compatible inner state
|
||||
orbits over realized outer state orbits.
|
||||
- `avg_outer_extensions`: average number of compatible inner state
|
||||
orbits over realized outer state orbits.
|
||||
- `relation_density_all`: `|R_T|` divided by all possible outer/inner
|
||||
state orbit pairs.
|
||||
- `blocked_outer_orbits`: number of outer boundary state orbits that
|
||||
are not compatible with any inner boundary state orbit.
|
||||
- `blocked_inner_orbits`: number of inner boundary state orbits that
|
||||
are not compatible with any outer boundary state orbit.
|
||||
|
||||
## Exhaustive Sweep Through 10 Faces
|
||||
|
||||
Command:
|
||||
|
||||
```bash
|
||||
python3 papers/medial_tire_decompositions_of_plane_triangulations/experiments/medial_tire_restriction_search.py --exhaustive --min-faces 6 --max-faces 10 --limit 3
|
||||
```
|
||||
|
||||
Result:
|
||||
|
||||
```text
|
||||
graphs analyzed: 1974
|
||||
boundary states quotient by color permutations only; no rotations or reversals
|
||||
|
||||
most restrictive by min_outer_extensions
|
||||
types=IIIOOO
|
||||
faces=6 outer=3 inner=3 outer_orbits=5 inner_orbits=5
|
||||
realized_outer=4 realized_inner=4 relation=10
|
||||
blocked_outer=1 (0.200) blocked_inner=1 (0.200)
|
||||
min_outer_extensions=1 avg_outer_extensions=2.500
|
||||
density_all=0.400000 density_realized_outer=0.500000
|
||||
worst_outer_states=((0, 1, 2),)
|
||||
types=IIOIOO
|
||||
faces=6 outer=3 inner=3 outer_orbits=5 inner_orbits=5
|
||||
realized_outer=5 realized_inner=5 relation=9
|
||||
blocked_outer=0 (0.000) blocked_inner=0 (0.000)
|
||||
min_outer_extensions=1 avg_outer_extensions=1.800
|
||||
density_all=0.360000 density_realized_outer=0.360000
|
||||
worst_outer_states=((0, 0, 1), (0, 1, 2))
|
||||
types=IIOOIO
|
||||
faces=6 outer=3 inner=3 outer_orbits=5 inner_orbits=5
|
||||
realized_outer=5 realized_inner=5 relation=9
|
||||
blocked_outer=0 (0.000) blocked_inner=0 (0.000)
|
||||
min_outer_extensions=1 avg_outer_extensions=1.800
|
||||
density_all=0.360000 density_realized_outer=0.360000
|
||||
worst_outer_states=((0, 1, 1), (0, 1, 2))
|
||||
|
||||
most restrictive by avg_outer_extensions
|
||||
types=IIOOOO
|
||||
faces=6 outer=4 inner=2 outer_orbits=14 inner_orbits=2
|
||||
realized_outer=8 realized_inner=2 relation=8
|
||||
blocked_outer=6 (0.429) blocked_inner=0 (0.000)
|
||||
min_outer_extensions=1 avg_outer_extensions=1.000
|
||||
density_all=0.285714 density_realized_outer=0.500000
|
||||
types=IOIOOO
|
||||
faces=6 outer=4 inner=2 outer_orbits=14 inner_orbits=2
|
||||
realized_outer=9 realized_inner=2 relation=9
|
||||
blocked_outer=5 (0.357) blocked_inner=0 (0.000)
|
||||
min_outer_extensions=1 avg_outer_extensions=1.000
|
||||
density_all=0.321429 density_realized_outer=0.500000
|
||||
types=IOOIOO
|
||||
faces=6 outer=4 inner=2 outer_orbits=14 inner_orbits=2
|
||||
realized_outer=9 realized_inner=2 relation=9
|
||||
blocked_outer=5 (0.357) blocked_inner=0 (0.000)
|
||||
min_outer_extensions=1 avg_outer_extensions=1.000
|
||||
density_all=0.321429 density_realized_outer=0.500000
|
||||
|
||||
most restrictive by relation_density_all
|
||||
types=IIIIIIIIIO
|
||||
faces=10 outer=1 inner=9 outer_orbits=1 inner_orbits=3281
|
||||
realized_outer=1 realized_inner=171 relation=171
|
||||
blocked_outer=0 (0.000) blocked_inner=3110 (0.948)
|
||||
min_outer_extensions=171 avg_outer_extensions=171.000
|
||||
density_all=0.052118 density_realized_outer=0.052118
|
||||
```
|
||||
|
||||
## Random Sweep Through 14 Faces
|
||||
|
||||
Command:
|
||||
|
||||
```bash
|
||||
python3 papers/medial_tire_decompositions_of_plane_triangulations/experiments/medial_tire_restriction_search.py --samples 5000 --max-faces 14 --limit 3
|
||||
```
|
||||
|
||||
Result:
|
||||
|
||||
```text
|
||||
graphs analyzed: 3227
|
||||
|
||||
most restrictive by min_outer_extensions
|
||||
types=IIIOOO
|
||||
min_outer_extensions=1 avg_outer_extensions=2.500
|
||||
density_all=0.400000 density_realized_outer=0.500000
|
||||
types=IIOIOO
|
||||
min_outer_extensions=1 avg_outer_extensions=1.800
|
||||
density_all=0.360000 density_realized_outer=0.360000
|
||||
types=IIOOIO
|
||||
min_outer_extensions=1 avg_outer_extensions=1.800
|
||||
density_all=0.360000 density_realized_outer=0.360000
|
||||
|
||||
most restrictive by avg_outer_extensions
|
||||
types=IIOOOO
|
||||
min_outer_extensions=1 avg_outer_extensions=1.000
|
||||
density_all=0.285714 density_realized_outer=0.500000
|
||||
types=IOIOOO
|
||||
min_outer_extensions=1 avg_outer_extensions=1.000
|
||||
density_all=0.321429 density_realized_outer=0.500000
|
||||
types=IOOIOO
|
||||
min_outer_extensions=1 avg_outer_extensions=1.000
|
||||
density_all=0.321429 density_realized_outer=0.500000
|
||||
|
||||
most restrictive by relation_density_all
|
||||
types=IIIOIIIIIIIIII
|
||||
faces=14 outer=1 inner=13 relation=2731
|
||||
min_outer_extensions=2731 avg_outer_extensions=2731.000
|
||||
density_all=0.010278 density_realized_outer=0.010278
|
||||
types=OOOOOOOIOOOOOO
|
||||
faces=14 outer=13 inner=1 relation=2731
|
||||
min_outer_extensions=1 avg_outer_extensions=1.000
|
||||
density_all=0.010278 density_realized_outer=1.000000
|
||||
types=IIIOOIIIIIIIII
|
||||
faces=14 outer=2 inner=12 relation=2048
|
||||
min_outer_extensions=683 avg_outer_extensions=1024.000
|
||||
density_all=0.011561 density_realized_outer=0.011561
|
||||
```
|
||||
|
||||
## Interpretation
|
||||
|
||||
The most restrictive small examples for extension counts appear at six
|
||||
annular faces. Alternating or clustered `O/I` boundary-face patterns
|
||||
with a small boundary on one side can force each realized outer state
|
||||
to a single inner orbit.
|
||||
|
||||
The raw density metric favors highly unbalanced boundaries, such as one
|
||||
outer boundary state position and many inner positions. This may be a
|
||||
less useful notion of "worst case" unless boundary sizes are fixed or
|
||||
the density is normalized within a fixed `(outer, inner)` size class.
|
||||
|
||||
The blocked-state metrics make the asymmetry explicit. For instance,
|
||||
`IIIOOO` blocks one of the five possible outer state orbits, while
|
||||
`IIOIOO` and `IIOOIO` block none but still contain outer states with a
|
||||
unique compatible inner state orbit. Highly unbalanced cases can block
|
||||
most state orbits on the larger boundary simply because the annular
|
||||
cycle has far fewer colorings than the unconstrained ordered boundary.
|
||||
+294
@@ -0,0 +1,294 @@
|
||||
"""Search boundary-state restrictions for possible full medial tire graphs.
|
||||
|
||||
Model.
|
||||
A full medial tire graph has an annular medial cycle A_0,...,A_{n-1}.
|
||||
Each annular face contributes one boundary-medial vertex B_i adjacent
|
||||
to A_i and A_{i+1}; B_i is tagged as outer or inner. This is the
|
||||
ambient tread-face model from the medial tire decomposition paper.
|
||||
|
||||
Boundary order is the cyclic order inherited from the annular face
|
||||
sequence. Boundary states are quotient by S_3 color relabeling only:
|
||||
no rotations or reversals are identified.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import itertools
|
||||
import random
|
||||
from collections import defaultdict
|
||||
from dataclasses import dataclass
|
||||
from functools import lru_cache
|
||||
|
||||
|
||||
Coloring = tuple[int, ...]
|
||||
|
||||
|
||||
def canonical_color_orbit(coloring: Coloring) -> Coloring:
|
||||
"""Canonical representative modulo color renaming, preserving order."""
|
||||
mapping: dict[int, int] = {}
|
||||
out = []
|
||||
for color in coloring:
|
||||
if color not in mapping:
|
||||
mapping[color] = len(mapping)
|
||||
out.append(mapping[color])
|
||||
return tuple(out)
|
||||
|
||||
|
||||
@lru_cache(maxsize=None)
|
||||
def all_state_orbits(length: int) -> frozenset[Coloring]:
|
||||
return frozenset({
|
||||
canonical_color_orbit(tuple(colors))
|
||||
for colors in itertools.product(range(3), repeat=length)
|
||||
})
|
||||
|
||||
|
||||
@lru_cache(maxsize=None)
|
||||
def cycle_3_colorings(n: int) -> list[Coloring]:
|
||||
colors = [-1] * n
|
||||
out: list[Coloring] = []
|
||||
|
||||
def rec(idx: int) -> None:
|
||||
if idx == n:
|
||||
if colors[-1] != colors[0]:
|
||||
out.append(tuple(colors))
|
||||
return
|
||||
for color in range(3):
|
||||
if idx > 0 and colors[idx - 1] == color:
|
||||
continue
|
||||
if idx == n - 1 and colors[0] == color:
|
||||
continue
|
||||
colors[idx] = color
|
||||
rec(idx + 1)
|
||||
colors[idx] = -1
|
||||
|
||||
rec(0)
|
||||
return out
|
||||
|
||||
|
||||
def boundary_coloring_from_annular(
|
||||
annular_coloring: Coloring,
|
||||
face_types: str,
|
||||
boundary_type: str,
|
||||
) -> Coloring:
|
||||
values = []
|
||||
n = len(face_types)
|
||||
for idx, face_type in enumerate(face_types):
|
||||
if face_type != boundary_type:
|
||||
continue
|
||||
left = annular_coloring[idx]
|
||||
right = annular_coloring[(idx + 1) % n]
|
||||
values.append(({0, 1, 2} - {left, right}).pop())
|
||||
return tuple(values)
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class RestrictionMetrics:
|
||||
face_types: str
|
||||
n_faces: int
|
||||
n_outer: int
|
||||
n_inner: int
|
||||
outer_orbits: int
|
||||
inner_orbits: int
|
||||
realized_outer_orbits: int
|
||||
realized_inner_orbits: int
|
||||
blocked_outer_orbits: int
|
||||
blocked_inner_orbits: int
|
||||
blocked_outer_fraction: float
|
||||
blocked_inner_fraction: float
|
||||
relation_size: int
|
||||
min_outer_extensions: int
|
||||
avg_outer_extensions: float
|
||||
relation_density_all: float
|
||||
relation_density_realized_outer: float
|
||||
worst_outer_states: tuple[Coloring, ...]
|
||||
|
||||
|
||||
@lru_cache(maxsize=None)
|
||||
def analyze_face_types(face_types: str) -> RestrictionMetrics:
|
||||
n = len(face_types)
|
||||
n_outer = face_types.count("O")
|
||||
n_inner = face_types.count("I")
|
||||
possible_outer = all_state_orbits(n_outer)
|
||||
possible_inner = all_state_orbits(n_inner)
|
||||
|
||||
relation: set[tuple[Coloring, Coloring]] = set()
|
||||
by_outer: dict[Coloring, set[Coloring]] = defaultdict(set)
|
||||
|
||||
for annular in cycle_3_colorings(n):
|
||||
outer = canonical_color_orbit(
|
||||
boundary_coloring_from_annular(annular, face_types, "O")
|
||||
)
|
||||
inner = canonical_color_orbit(
|
||||
boundary_coloring_from_annular(annular, face_types, "I")
|
||||
)
|
||||
relation.add((outer, inner))
|
||||
by_outer[outer].add(inner)
|
||||
|
||||
realized_outer = set(by_outer)
|
||||
realized_inner = {inner for _, inner in relation}
|
||||
extension_counts = {outer: len(inners) for outer, inners in by_outer.items()}
|
||||
min_extensions = min(extension_counts.values()) if extension_counts else 0
|
||||
worst_outer = tuple(
|
||||
sorted(outer for outer, count in extension_counts.items() if count == min_extensions)
|
||||
)
|
||||
avg_extensions = (
|
||||
sum(extension_counts.values()) / len(extension_counts)
|
||||
if extension_counts
|
||||
else 0.0
|
||||
)
|
||||
all_denominator = len(possible_outer) * len(possible_inner)
|
||||
realized_denominator = len(realized_outer) * len(possible_inner)
|
||||
|
||||
return RestrictionMetrics(
|
||||
face_types=face_types,
|
||||
n_faces=n,
|
||||
n_outer=n_outer,
|
||||
n_inner=n_inner,
|
||||
outer_orbits=len(possible_outer),
|
||||
inner_orbits=len(possible_inner),
|
||||
realized_outer_orbits=len(realized_outer),
|
||||
realized_inner_orbits=len(realized_inner),
|
||||
blocked_outer_orbits=len(possible_outer) - len(realized_outer),
|
||||
blocked_inner_orbits=len(possible_inner) - len(realized_inner),
|
||||
blocked_outer_fraction=(
|
||||
(len(possible_outer) - len(realized_outer)) / len(possible_outer)
|
||||
if possible_outer
|
||||
else 0.0
|
||||
),
|
||||
blocked_inner_fraction=(
|
||||
(len(possible_inner) - len(realized_inner)) / len(possible_inner)
|
||||
if possible_inner
|
||||
else 0.0
|
||||
),
|
||||
relation_size=len(relation),
|
||||
min_outer_extensions=min_extensions,
|
||||
avg_outer_extensions=avg_extensions,
|
||||
relation_density_all=len(relation) / all_denominator if all_denominator else 0.0,
|
||||
relation_density_realized_outer=(
|
||||
len(relation) / realized_denominator if realized_denominator else 0.0
|
||||
),
|
||||
worst_outer_states=worst_outer[:5],
|
||||
)
|
||||
|
||||
|
||||
def random_face_types(rng: random.Random, n: int, min_outer: int, min_inner: int) -> str:
|
||||
if min_outer + min_inner > n:
|
||||
raise ValueError("minimum outer/inner counts exceed n")
|
||||
values = ["O"] * min_outer + ["I"] * min_inner
|
||||
values.extend(rng.choice("OI") for _ in range(n - len(values)))
|
||||
rng.shuffle(values)
|
||||
return "".join(values)
|
||||
|
||||
|
||||
def all_face_types(n: int, min_outer: int, min_inner: int):
|
||||
for values in itertools.product("OI", repeat=n):
|
||||
face_types = "".join(values)
|
||||
if face_types.count("O") >= min_outer and face_types.count("I") >= min_inner:
|
||||
yield face_types
|
||||
|
||||
|
||||
def best_by(metrics: list[RestrictionMetrics], key_name: str, limit: int):
|
||||
return sorted(metrics, key=lambda m: (getattr(m, key_name), m.n_faces, m.face_types))[
|
||||
:limit
|
||||
]
|
||||
|
||||
|
||||
def print_metric(metric: RestrictionMetrics) -> None:
|
||||
print(f" types={metric.face_types}")
|
||||
print(
|
||||
f" faces={metric.n_faces} outer={metric.n_outer} inner={metric.n_inner} "
|
||||
f"outer_orbits={metric.outer_orbits} inner_orbits={metric.inner_orbits}"
|
||||
)
|
||||
print(
|
||||
f" realized_outer={metric.realized_outer_orbits} "
|
||||
f"realized_inner={metric.realized_inner_orbits} relation={metric.relation_size}"
|
||||
)
|
||||
print(
|
||||
f" blocked_outer={metric.blocked_outer_orbits} "
|
||||
f"({metric.blocked_outer_fraction:.3f}) "
|
||||
f"blocked_inner={metric.blocked_inner_orbits} "
|
||||
f"({metric.blocked_inner_fraction:.3f})"
|
||||
)
|
||||
print(
|
||||
f" min_outer_extensions={metric.min_outer_extensions} "
|
||||
f"avg_outer_extensions={metric.avg_outer_extensions:.3f}"
|
||||
)
|
||||
print(
|
||||
f" density_all={metric.relation_density_all:.6f} "
|
||||
f"density_realized_outer={metric.relation_density_realized_outer:.6f}"
|
||||
)
|
||||
print(f" worst_outer_states={metric.worst_outer_states}")
|
||||
|
||||
|
||||
def run(args: argparse.Namespace) -> None:
|
||||
rng = random.Random(args.seed)
|
||||
seen: set[str] = set()
|
||||
metrics: list[RestrictionMetrics] = []
|
||||
|
||||
if args.exhaustive:
|
||||
for n in range(args.min_faces, args.max_faces + 1):
|
||||
for face_types in all_face_types(n, args.min_outer, args.min_inner):
|
||||
metrics.append(analyze_face_types(face_types))
|
||||
else:
|
||||
for _ in range(args.samples):
|
||||
n = rng.randint(args.min_faces, args.max_faces)
|
||||
face_types = random_face_types(rng, n, args.min_outer, args.min_inner)
|
||||
if face_types in seen:
|
||||
continue
|
||||
seen.add(face_types)
|
||||
metrics.append(analyze_face_types(face_types))
|
||||
|
||||
print(f"graphs analyzed: {len(metrics)}")
|
||||
print(
|
||||
"boundary states quotient by color permutations only; "
|
||||
"no rotations or reversals"
|
||||
)
|
||||
print()
|
||||
|
||||
print("most restrictive by min_outer_extensions")
|
||||
for metric in best_by(metrics, "min_outer_extensions", args.limit):
|
||||
print_metric(metric)
|
||||
print()
|
||||
|
||||
print("most restrictive by avg_outer_extensions")
|
||||
for metric in best_by(metrics, "avg_outer_extensions", args.limit):
|
||||
print_metric(metric)
|
||||
print()
|
||||
|
||||
print("most restrictive by relation_density_all")
|
||||
for metric in best_by(metrics, "relation_density_all", args.limit):
|
||||
print_metric(metric)
|
||||
print()
|
||||
|
||||
print("most restrictive by blocked_outer_orbits")
|
||||
for metric in sorted(
|
||||
metrics,
|
||||
key=lambda m: (-m.blocked_outer_orbits, m.n_faces, m.face_types),
|
||||
)[: args.limit]:
|
||||
print_metric(metric)
|
||||
print()
|
||||
|
||||
print("most restrictive by blocked_outer_fraction")
|
||||
for metric in sorted(
|
||||
metrics,
|
||||
key=lambda m: (-m.blocked_outer_fraction, m.n_faces, m.face_types),
|
||||
)[: args.limit]:
|
||||
print_metric(metric)
|
||||
|
||||
|
||||
def main() -> None:
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("--min-faces", type=int, default=6)
|
||||
parser.add_argument("--max-faces", type=int, default=10)
|
||||
parser.add_argument("--samples", type=int, default=1000)
|
||||
parser.add_argument("--seed", type=int, default=0)
|
||||
parser.add_argument("--min-outer", type=int, default=1)
|
||||
parser.add_argument("--min-inner", type=int, default=1)
|
||||
parser.add_argument("--limit", type=int, default=5)
|
||||
parser.add_argument("--exhaustive", action="store_true")
|
||||
run(parser.parse_args())
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -15,20 +15,25 @@
|
||||
\newlabel{def:medial-restriction-relation}{{3.5}{3}}
|
||||
\citation{bauerfeld-nested-tire-decompositions}
|
||||
\citation{bauerfeld-nested-tire-decompositions}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Three six-face full medial tire graphs found by the boundary-state restriction search. Black vertices are annular medial vertices; blue vertices are outer boundary medial vertices and red vertices are inner boundary medial vertices. The word below each diagram records the outer/inner type of the six annular faces in cyclic order. Boundary states are identified only up to colour permutation, not by rotation or reflection of the boundary order.}}{4}{}\protected@file@percent }
|
||||
\newlabel{fig:medial-restriction-worst-cases}{{1}{4}}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces A proper vertex $3$-colouring of the full medial graph of the first seven-vertex counterexample found by the experiment. The medial vertex labelled $ij$ corresponds to the edge $(i,j)$ of the triangulation. For the vertex-source decomposition at source $1$, the highlighted annular medial cycle has colour counts $(2,2,2)$, so it is not coloured with two colours except at at most one vertex.}}{4}{}\protected@file@percent }
|
||||
\newlabel{fig:medial-annular-cycle-counterexample}{{2}{4}}
|
||||
\@writefile{toc}{\contentsline {section}{\tocsection {}{4}{Decomposition}}{4}{}\protected@file@percent }
|
||||
\newlabel{cor:medial-tire-decomposition}{{4.1}{4}}
|
||||
\newlabel{def:compatible-family}{{4.2}{4}}
|
||||
\newlabel{prop:gluing-criterion}{{4.3}{4}}
|
||||
\@writefile{toc}{\contentsline {section}{\tocsection {}{5}{A medial pigeonhole programme}}{4}{}\protected@file@percent }
|
||||
\newlabel{def:compatible-family}{{4.2}{5}}
|
||||
\newlabel{prop:gluing-criterion}{{4.3}{5}}
|
||||
\@writefile{toc}{\contentsline {section}{\tocsection {}{5}{A medial pigeonhole programme}}{5}{}\protected@file@percent }
|
||||
\newlabel{def:medial-boundary-state}{{5.1}{5}}
|
||||
\newlabel{conj:medial-chain-pigeonhole}{{5.2}{5}}
|
||||
\newlabel{conj:medial-route-fct}{{5.3}{6}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\tocsubsection {}{5.1}{Kempe-cycle conservation across medial tires}}{6}{}\protected@file@percent }
|
||||
\bibcite{bauerfeld-nested-tire-decompositions}{1}
|
||||
\bibcite{tait-original}{2}
|
||||
\newlabel{tocindent-1}{0pt}
|
||||
\newlabel{tocindent0}{12.7778pt}
|
||||
\newlabel{tocindent1}{17.77782pt}
|
||||
\newlabel{tocindent2}{0pt}
|
||||
\newlabel{tocindent2}{29.38873pt}
|
||||
\newlabel{tocindent3}{0pt}
|
||||
\newlabel{def:medial-boundary-state}{{5.1}{5}}
|
||||
\newlabel{conj:medial-chain-pigeonhole}{{5.2}{5}}
|
||||
\newlabel{conj:medial-route-fct}{{5.3}{5}}
|
||||
\@writefile{toc}{\contentsline {section}{\tocsection {}{}{References}}{5}{}\protected@file@percent }
|
||||
\gdef \@abspage@last{5}
|
||||
\@writefile{toc}{\contentsline {section}{\tocsection {}{}{References}}{8}{}\protected@file@percent }
|
||||
\gdef \@abspage@last{8}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
# Fdb version 3
|
||||
["pdflatex"] 1780947173 "paper.tex" "paper.pdf" "paper" 1780947174
|
||||
["pdflatex"] 1780957013 "/Users/didericis/Code/math-research/papers/medial_tire_decompositions_of_plane_triangulations/paper.tex" "paper.pdf" "paper" 1780957014
|
||||
"/Users/didericis/Code/math-research/papers/medial_tire_decompositions_of_plane_triangulations/paper.tex" 1780957012 31877 e1531fb82c355208b5b7c8e57cfb6e8a ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/map/fontname/texfonts.map" 1577235249 3524 cb3e574dea2d1052e39280babc910dc8 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm" 1246382020 1004 54797486969f23fa377b128694d548df ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex8.tfm" 1246382020 988 bdf658c3bfc2d96d3c8b02cfc1c94c20 ""
|
||||
@@ -22,6 +23,7 @@
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmsy8.tfm" 1136768653 1120 8b7d695260f3cff42e636090a8002094 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmti10.tfm" 1136768653 1480 aa8e34af0eb6a2941b776984cf1dfdc4 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmti8.tfm" 1136768653 1504 1747189e0441d1c18f3ea56fafc1c480 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmtt8.tfm" 1136768653 768 d7b9a2629a0c353102ad947dc9221d49 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb" 1248133631 34811 78b52f49e893bcba91bd7581cdc144c0 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx8.pfb" 1248133631 32166 b0c356b15f19587482a9217ce1d8fa67 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmcsc10.pfb" 1248133631 32001 6aeea3afe875097b1eb0da29acd61e28 ""
|
||||
@@ -39,6 +41,7 @@
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy7.pfb" 1248133631 32716 08e384dc442464e7285e891af9f45947 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmti10.pfb" 1248133631 37944 359e864bd06cde3b1cf57bb20757fb06 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmti8.pfb" 1248133631 35660 fb24af7afbadb71801619f1415838111 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmtt8.pfb" 1248133631 24287 6b803fa9eb1ddff9112e00519b09dd9e ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/symbols/msam10.pfb" 1248133631 31764 459c573c03a4949a528c2cc7f557e217 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/context/base/mkii/supp-pdf.mkii" 1461363279 71627 94eb9990bed73c364d7f53f960cc8c5b ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex" 1601326656 992 855ff26741653ab54814101ca36e153c ""
|
||||
@@ -130,8 +133,8 @@
|
||||
"/usr/local/texlive/2022/texmf-var/fonts/map/pdftex/updmap/pdftex.map" 1647878959 4410336 7d30a02e9fa9a16d7d1f8d037ba69641 ""
|
||||
"/usr/local/texlive/2022/texmf-var/web2c/pdftex/pdflatex.fmt" 1665017617 2826443 7e98410c533054b636c6470db83a27bc ""
|
||||
"/usr/local/texlive/2022/texmf.cnf" 1647878952 577 209b46be99c9075fd74d4c0369380e8c ""
|
||||
"paper.aux" 1780947174 1788 71344323fa0ab784f122b28ddb4904e9 "pdflatex"
|
||||
"paper.tex" 1780947165 17102 9b6f3bfc4420a1cb800822639b666f73 ""
|
||||
"paper.aux" 1780957014 3096 87a6f727fdb250a8819be3b4fc862d4e "pdflatex"
|
||||
"paper.tex" 1780957012 31877 e1531fb82c355208b5b7c8e57cfb6e8a ""
|
||||
(generated)
|
||||
"paper.aux"
|
||||
"paper.log"
|
||||
|
||||
@@ -2,7 +2,7 @@ PWD /Users/didericis/Code/math-research/papers/medial_tire_decompositions_of_pla
|
||||
INPUT /usr/local/texlive/2022/texmf.cnf
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/web2c/texmf.cnf
|
||||
INPUT /usr/local/texlive/2022/texmf-var/web2c/pdftex/pdflatex.fmt
|
||||
INPUT paper.tex
|
||||
INPUT /Users/didericis/Code/math-research/papers/medial_tire_decompositions_of_plane_triangulations/paper.tex
|
||||
OUTPUT paper.log
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amscls/amsart.cls
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amscls/amsart.cls
|
||||
@@ -452,6 +452,7 @@ INPUT /usr/local/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmti10.tfm
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmss10.tfm
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmss8.tfm
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmss8.tfm
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmtt8.tfm
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmbx8.tfm
|
||||
INPUT paper.aux
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb
|
||||
@@ -471,4 +472,5 @@ INPUT /usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy6.pf
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy7.pfb
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmti10.pfb
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmti8.pfb
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmtt8.pfb
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/symbols/msam10.pfb
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022) (preloaded format=pdflatex 2022.10.5) 8 JUN 2026 15:32
|
||||
This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022) (preloaded format=pdflatex 2022.10.5) 8 JUN 2026 18:16
|
||||
entering extended mode
|
||||
restricted \write18 enabled.
|
||||
file:line:error style messages enabled.
|
||||
%&-line parsing enabled.
|
||||
**paper.tex
|
||||
(./paper.tex
|
||||
**/Users/didericis/Code/math-research/papers/medial_tire_decompositions_of_plane_triangulations/paper.tex
|
||||
(/Users/didericis/Code/math-research/papers/medial_tire_decompositions_of_plane_triangulations/paper.tex
|
||||
LaTeX2e <2021-11-15> patch level 1
|
||||
L3 programming layer <2022-02-24>
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/amscls/amsart.cls
|
||||
L3 programming layer <2022-02-24> (/usr/local/texlive/2022/texmf-dist/tex/latex/amscls/amsart.cls
|
||||
Document Class: amsart 2020/05/29 v2.20.6
|
||||
\linespacing=\dimen138
|
||||
\normalparindent=\dimen139
|
||||
@@ -18,17 +18,14 @@ Package: amsmath 2021/10/15 v2.17l AMS math features
|
||||
For additional information on amsmath, use the `?' option.
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amstext.sty
|
||||
Package: amstext 2021/08/26 v2.01 AMS text
|
||||
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsgen.sty
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsgen.sty
|
||||
File: amsgen.sty 1999/11/30 v2.0 generic functions
|
||||
\@emptytoks=\toks16
|
||||
\ex@=\dimen140
|
||||
))
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsbsy.sty
|
||||
)) (/usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsbsy.sty
|
||||
Package: amsbsy 1999/11/29 v1.2d Bold Symbols
|
||||
\pmbraise@=\dimen141
|
||||
)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsopn.sty
|
||||
) (/usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsopn.sty
|
||||
Package: amsopn 2021/08/26 v2.02 operator names
|
||||
)
|
||||
\inf@bad=\count185
|
||||
@@ -69,13 +66,10 @@ LaTeX Font Info: Redeclaring font encoding OMS on input line 744.
|
||||
LaTeX Info: Redefining \[ on input line 2938.
|
||||
LaTeX Info: Redefining \] on input line 2939.
|
||||
)
|
||||
LaTeX Font Info: Trying to load font information for U+msa on input line 397
|
||||
.
|
||||
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/umsa.fd
|
||||
LaTeX Font Info: Trying to load font information for U+msa on input line 397.
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/umsa.fd
|
||||
File: umsa.fd 2013/01/14 v3.01 AMS symbols A
|
||||
)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/amsfonts.sty
|
||||
) (/usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/amsfonts.sty
|
||||
Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support
|
||||
\symAMSa=\mathgroup4
|
||||
\symAMSb=\mathgroup5
|
||||
@@ -106,63 +100,42 @@ LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold'
|
||||
\thm@postskip=\skip55
|
||||
\thm@headsep=\skip56
|
||||
\dth@everypar=\toks26
|
||||
)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/amssymb.sty
|
||||
) (/usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/amssymb.sty
|
||||
Package: amssymb 2013/01/14 v3.01 AMS font symbols
|
||||
)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/graphics/graphicx.sty
|
||||
) (/usr/local/texlive/2022/texmf-dist/tex/latex/graphics/graphicx.sty
|
||||
Package: graphicx 2021/09/16 v1.2d Enhanced LaTeX Graphics (DPC,SPQR)
|
||||
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/graphics/keyval.sty
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/graphics/keyval.sty
|
||||
Package: keyval 2014/10/28 v1.15 key=value parser (DPC)
|
||||
\KV@toks@=\toks27
|
||||
)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/graphics/graphics.sty
|
||||
) (/usr/local/texlive/2022/texmf-dist/tex/latex/graphics/graphics.sty
|
||||
Package: graphics 2021/03/04 v1.4d Standard LaTeX Graphics (DPC,SPQR)
|
||||
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/graphics/trig.sty
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/graphics/trig.sty
|
||||
Package: trig 2021/08/11 v1.11 sin cos tan (DPC)
|
||||
)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
|
||||
) (/usr/local/texlive/2022/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
|
||||
File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration
|
||||
)
|
||||
Package graphics Info: Driver file: pdftex.def on input line 107.
|
||||
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/graphics-def/pdftex.def
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/graphics-def/pdftex.def
|
||||
File: pdftex.def 2020/10/05 v1.2a Graphics/color driver for pdftex
|
||||
))
|
||||
\Gin@req@height=\dimen150
|
||||
\Gin@req@width=\dimen151
|
||||
)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.te
|
||||
x
|
||||
) (/usr/local/texlive/2022/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty (/usr/local/texlive/2022/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty (/usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex
|
||||
\pgfutil@everybye=\toks28
|
||||
\pgfutil@tempdima=\dimen152
|
||||
\pgfutil@tempdimb=\dimen153
|
||||
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-li
|
||||
sts.tex))
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-lists.tex)) (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def
|
||||
\pgfutil@abb=\box53
|
||||
) (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/pgf.revision.tex)
|
||||
) (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/pgf.revision.tex)
|
||||
Package: pgfrcs 2021/05/15 v3.1.9a (3.1.9a)
|
||||
))
|
||||
Package: pgf 2021/05/15 v3.1.9a (3.1.9a)
|
||||
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty (/usr/local/texlive/2022/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex
|
||||
Package: pgfsys 2021/05/15 v3.1.9a (3.1.9a)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex
|
||||
\pgfkeys@pathtoks=\toks29
|
||||
\pgfkeys@temptoks=\toks30
|
||||
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.c
|
||||
ode.tex
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.code.tex
|
||||
\pgfkeys@tmptoks=\toks31
|
||||
))
|
||||
\pgf@x=\dimen154
|
||||
@@ -185,33 +158,23 @@ ode.tex
|
||||
\t@pgf@tokb=\toks33
|
||||
\t@pgf@tokc=\toks34
|
||||
\pgf@sys@id@count=\count276
|
||||
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg
|
||||
File: pgf.cfg 2021/05/15 v3.1.9a (3.1.9a)
|
||||
)
|
||||
Driver file for pgf: pgfsys-pdftex.def
|
||||
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.d
|
||||
ef
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def
|
||||
File: pgfsys-pdftex.def 2021/05/15 v3.1.9a (3.1.9a)
|
||||
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-p
|
||||
df.def
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def
|
||||
File: pgfsys-common-pdf.def 2021/05/15 v3.1.9a (3.1.9a)
|
||||
)))
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.
|
||||
code.tex
|
||||
))) (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex
|
||||
File: pgfsyssoftpath.code.tex 2021/05/15 v3.1.9a (3.1.9a)
|
||||
\pgfsyssoftpath@smallbuffer@items=\count277
|
||||
\pgfsyssoftpath@bigbuffer@items=\count278
|
||||
)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.
|
||||
code.tex
|
||||
) (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex
|
||||
File: pgfsysprotocol.code.tex 2021/05/15 v3.1.9a (3.1.9a)
|
||||
)) (/usr/local/texlive/2022/texmf-dist/tex/latex/xcolor/xcolor.sty
|
||||
Package: xcolor 2021/10/31 v2.13 LaTeX color extensions (UK)
|
||||
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/graphics-cfg/color.cfg
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/graphics-cfg/color.cfg
|
||||
File: color.cfg 2016/01/02 v1.6 sample color configuration
|
||||
)
|
||||
Package xcolor Info: Driver file: pdftex.def on input line 227.
|
||||
@@ -224,43 +187,18 @@ Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1372.
|
||||
Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1373.
|
||||
Package xcolor Info: Model `Gray' substituted by `gray' on input line 1374.
|
||||
Package xcolor Info: Model `wave' substituted by `hsb' on input line 1375.
|
||||
)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex
|
||||
) (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex
|
||||
Package: pgfcore 2021/05/15 v3.1.9a (3.1.9a)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex) (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex
|
||||
\pgfmath@dimen=\dimen164
|
||||
\pgfmath@count=\count279
|
||||
\pgfmath@box=\box54
|
||||
\pgfmath@toks=\toks35
|
||||
\pgfmath@stack@operand=\toks36
|
||||
\pgfmath@stack@operation=\toks37
|
||||
)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.
|
||||
tex
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic
|
||||
.code.tex)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigo
|
||||
nometric.code.tex)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.rando
|
||||
m.code.tex)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.compa
|
||||
rison.code.tex)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.
|
||||
code.tex)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round
|
||||
.code.tex)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.
|
||||
code.tex)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integ
|
||||
erarithmetics.code.tex)))
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex
|
||||
) (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code.tex) (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonometric.code.tex) (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.code.tex) (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison.code.tex) (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code.tex) (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code.tex) (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code.tex) (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerarithmetics.code.tex))) (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex
|
||||
\c@pgfmathroundto@lastzeros=\count280
|
||||
)) (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfint.code.tex)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.co
|
||||
de.tex
|
||||
)) (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfint.code.tex) (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.tex
|
||||
File: pgfcorepoints.code.tex 2021/05/15 v3.1.9a (3.1.9a)
|
||||
\pgf@picminx=\dimen165
|
||||
\pgf@picmaxx=\dimen166
|
||||
@@ -276,127 +214,76 @@ File: pgfcorepoints.code.tex 2021/05/15 v3.1.9a (3.1.9a)
|
||||
\pgf@yy=\dimen176
|
||||
\pgf@zx=\dimen177
|
||||
\pgf@zy=\dimen178
|
||||
)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconst
|
||||
ruct.code.tex
|
||||
) (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct.code.tex
|
||||
File: pgfcorepathconstruct.code.tex 2021/05/15 v3.1.9a (3.1.9a)
|
||||
\pgf@path@lastx=\dimen179
|
||||
\pgf@path@lasty=\dimen180
|
||||
)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage
|
||||
.code.tex
|
||||
) (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code.tex
|
||||
File: pgfcorepathusage.code.tex 2021/05/15 v3.1.9a (3.1.9a)
|
||||
\pgf@shorten@end@additional=\dimen181
|
||||
\pgf@shorten@start@additional=\dimen182
|
||||
)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.co
|
||||
de.tex
|
||||
) (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex
|
||||
File: pgfcorescopes.code.tex 2021/05/15 v3.1.9a (3.1.9a)
|
||||
\pgfpic=\box55
|
||||
\pgf@hbox=\box56
|
||||
\pgf@layerbox@main=\box57
|
||||
\pgf@picture@serial@count=\count281
|
||||
)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicst
|
||||
ate.code.tex
|
||||
) (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.code.tex
|
||||
File: pgfcoregraphicstate.code.tex 2021/05/15 v3.1.9a (3.1.9a)
|
||||
\pgflinewidth=\dimen183
|
||||
)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransform
|
||||
ations.code.tex
|
||||
) (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformations.code.tex
|
||||
File: pgfcoretransformations.code.tex 2021/05/15 v3.1.9a (3.1.9a)
|
||||
\pgf@pt@x=\dimen184
|
||||
\pgf@pt@y=\dimen185
|
||||
\pgf@pt@temp=\dimen186
|
||||
)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.cod
|
||||
e.tex
|
||||
) (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex
|
||||
File: pgfcorequick.code.tex 2021/05/15 v3.1.9a (3.1.9a)
|
||||
)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.c
|
||||
ode.tex
|
||||
) (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.tex
|
||||
File: pgfcoreobjects.code.tex 2021/05/15 v3.1.9a (3.1.9a)
|
||||
)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathproce
|
||||
ssing.code.tex
|
||||
) (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex
|
||||
File: pgfcorepathprocessing.code.tex 2021/05/15 v3.1.9a (3.1.9a)
|
||||
)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.co
|
||||
de.tex
|
||||
) (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.tex
|
||||
File: pgfcorearrows.code.tex 2021/05/15 v3.1.9a (3.1.9a)
|
||||
\pgfarrowsep=\dimen187
|
||||
)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.cod
|
||||
e.tex
|
||||
) (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex
|
||||
File: pgfcoreshade.code.tex 2021/05/15 v3.1.9a (3.1.9a)
|
||||
\pgf@max=\dimen188
|
||||
\pgf@sys@shading@range@num=\count282
|
||||
\pgf@shadingcount=\count283
|
||||
)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.cod
|
||||
e.tex
|
||||
) (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex
|
||||
File: pgfcoreimage.code.tex 2021/05/15 v3.1.9a (3.1.9a)
|
||||
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.
|
||||
code.tex
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code.tex
|
||||
File: pgfcoreexternal.code.tex 2021/05/15 v3.1.9a (3.1.9a)
|
||||
\pgfexternal@startupbox=\box58
|
||||
))
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.co
|
||||
de.tex
|
||||
)) (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.tex
|
||||
File: pgfcorelayers.code.tex 2021/05/15 v3.1.9a (3.1.9a)
|
||||
)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretranspare
|
||||
ncy.code.tex
|
||||
) (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.code.tex
|
||||
File: pgfcoretransparency.code.tex 2021/05/15 v3.1.9a (3.1.9a)
|
||||
)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.
|
||||
code.tex
|
||||
) (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code.tex
|
||||
File: pgfcorepatterns.code.tex 2021/05/15 v3.1.9a (3.1.9a)
|
||||
)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorerdf.code.
|
||||
tex
|
||||
) (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorerdf.code.tex
|
||||
File: pgfcorerdf.code.tex 2021/05/15 v3.1.9a (3.1.9a)
|
||||
)))
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.cod
|
||||
e.tex
|
||||
))) (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex
|
||||
File: pgfmoduleshapes.code.tex 2021/05/15 v3.1.9a (3.1.9a)
|
||||
\pgfnodeparttextbox=\box59
|
||||
)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.
|
||||
tex
|
||||
) (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex
|
||||
File: pgfmoduleplot.code.tex 2021/05/15 v3.1.9a (3.1.9a)
|
||||
)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version
|
||||
-0-65.sty
|
||||
) (/usr/local/texlive/2022/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty
|
||||
Package: pgfcomp-version-0-65 2021/05/15 v3.1.9a (3.1.9a)
|
||||
\pgf@nodesepstart=\dimen189
|
||||
\pgf@nodesepend=\dimen190
|
||||
)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version
|
||||
-1-18.sty
|
||||
) (/usr/local/texlive/2022/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty
|
||||
Package: pgfcomp-version-1-18 2021/05/15 v3.1.9a (3.1.9a)
|
||||
))
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgffor.sty
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex)
|
||||
) (/usr/local/texlive/2022/texmf-dist/tex/latex/pgf/math/pgfmath.sty
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex))
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex
|
||||
)) (/usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgffor.sty (/usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex)) (/usr/local/texlive/2022/texmf-dist/tex/latex/pgf/math/pgfmath.sty (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex)) (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex
|
||||
Package: pgffor 2021/05/15 v3.1.9a (3.1.9a)
|
||||
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex)
|
||||
\pgffor@iter=\dimen191
|
||||
\pgffor@skip=\dimen192
|
||||
\pgffor@stack=\toks38
|
||||
\pgffor@toks=\toks39
|
||||
))
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.cod
|
||||
e.tex
|
||||
)) (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex
|
||||
Package: tikz 2021/05/15 v3.1.9a (3.1.9a)
|
||||
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothan
|
||||
dlers.code.tex
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.tex
|
||||
File: pgflibraryplothandlers.code.tex 2021/05/15 v3.1.9a (3.1.9a)
|
||||
\pgf@plot@mark@count=\count284
|
||||
\pgfplotmarksize=\dimen193
|
||||
@@ -417,34 +304,26 @@ File: pgflibraryplothandlers.code.tex 2021/05/15 v3.1.9a (3.1.9a)
|
||||
\tikznumberofchildren=\count286
|
||||
\tikznumberofcurrentchild=\count287
|
||||
\tikz@fig@count=\count288
|
||||
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.cod
|
||||
e.tex
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex
|
||||
File: pgfmodulematrix.code.tex 2021/05/15 v3.1.9a (3.1.9a)
|
||||
\pgfmatrixcurrentrow=\count289
|
||||
\pgfmatrixcurrentcolumn=\count290
|
||||
\pgf@matrix@numberofcolumns=\count291
|
||||
)
|
||||
\tikz@expandcount=\count292
|
||||
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/frontendlayer/tikz/librarie
|
||||
s/tikzlibrarytopaths.code.tex
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytopaths.code.tex
|
||||
File: tikzlibrarytopaths.code.tex 2021/05/15 v3.1.9a (3.1.9a)
|
||||
)))
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/frontendlayer/tikz/librarie
|
||||
s/tikzlibrarybackgrounds.code.tex
|
||||
))) (/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarybackgrounds.code.tex
|
||||
File: tikzlibrarybackgrounds.code.tex 2021/05/15 v3.1.9a (3.1.9a)
|
||||
\pgf@layerbox@background=\box64
|
||||
\pgf@layerboxsaved@background=\box65
|
||||
)
|
||||
\c@theorem=\count293
|
||||
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
|
||||
File: l3backend-pdftex.def 2022-02-07 L3 backend support: PDF output (pdfTeX)
|
||||
\l__color_backend_stack_int=\count294
|
||||
\l__pdf_internal_box=\box66
|
||||
)
|
||||
(./paper.aux)
|
||||
) (./paper.aux)
|
||||
\openout1 = `paper.aux'.
|
||||
|
||||
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 29.
|
||||
@@ -462,17 +341,13 @@ LaTeX Font Info: ... okay on input line 29.
|
||||
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 29.
|
||||
LaTeX Font Info: ... okay on input line 29.
|
||||
LaTeX Font Info: Trying to load font information for U+msa on input line 29.
|
||||
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/umsa.fd
|
||||
File: umsa.fd 2013/01/14 v3.01 AMS symbols A
|
||||
)
|
||||
LaTeX Font Info: Trying to load font information for U+msb on input line 29.
|
||||
|
||||
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/umsb.fd
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/umsb.fd
|
||||
File: umsb.fd 2013/01/14 v3.01 AMS symbols B
|
||||
)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
|
||||
) (/usr/local/texlive/2022/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
|
||||
[Loading MPS to PDF converter (version 2006.09.02).]
|
||||
\scratchcounter=\count295
|
||||
\scratchdimen=\dimen259
|
||||
@@ -487,46 +362,30 @@ File: umsb.fd 2013/01/14 v3.01 AMS symbols B
|
||||
\everyMPtoPDFconversion=\toks41
|
||||
) (/usr/local/texlive/2022/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty
|
||||
Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf
|
||||
Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4
|
||||
85.
|
||||
Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 485.
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
|
||||
File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Live
|
||||
)) [1{/usr/local/texlive/2022/texmf-var/fonts/map/pdftex/updmap/pdftex.map}] [2]
|
||||
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
|
||||
File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv
|
||||
e
|
||||
))
|
||||
[1{/usr/local/texlive/2022/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
|
||||
[2] [3] [4] [5] (./paper.aux) )
|
||||
LaTeX Warning: `h' float specifier changed to `ht'.
|
||||
|
||||
|
||||
LaTeX Warning: `h' float specifier changed to `ht'.
|
||||
|
||||
[3] [4] [5] [6] [7] [8] (./paper.aux) )
|
||||
Here is how much of TeX's memory you used:
|
||||
13541 strings out of 478268
|
||||
270377 string characters out of 5846347
|
||||
536683 words of memory out of 5000000
|
||||
31371 multiletter control sequences out of 15000+600000
|
||||
476880 words of font info for 57 fonts, out of 8000000 for 9000
|
||||
14159 strings out of 478268
|
||||
280330 string characters out of 5846347
|
||||
592946 words of memory out of 5000000
|
||||
31987 multiletter control sequences out of 15000+600000
|
||||
477048 words of font info for 58 fonts, out of 8000000 for 9000
|
||||
1302 hyphenation exceptions out of 8191
|
||||
84i,8n,89p,414b,279s stack positions out of 10000i,1000n,20000p,200000b,200000s
|
||||
</usr/local/texlive/2022/texmf-dist/fonts/type1/
|
||||
public/amsfonts/cm/cmbx10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/p
|
||||
ublic/amsfonts/cm/cmbx8.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/pub
|
||||
lic/amsfonts/cm/cmcsc10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/pub
|
||||
lic/amsfonts/cm/cmmi10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/publ
|
||||
ic/amsfonts/cm/cmmi5.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public
|
||||
/amsfonts/cm/cmmi7.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/a
|
||||
msfonts/cm/cmmi8.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/ams
|
||||
fonts/cm/cmr10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfo
|
||||
nts/cm/cmr7.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts
|
||||
/cm/cmr8.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm
|
||||
/cmss10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/
|
||||
cmsy10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/c
|
||||
msy5.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cms
|
||||
y6.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy7
|
||||
.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmti10.
|
||||
pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmti8.pf
|
||||
b></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/symbols/msam1
|
||||
0.pfb>
|
||||
Output written on paper.pdf (5 pages, 232700 bytes).
|
||||
84i,8n,89p,676b,841s stack positions out of 10000i,1000n,20000p,200000b,200000s
|
||||
</usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx8.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmcsc10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi5.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi7.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi8.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr7.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr8.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmss10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy5.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy6.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy7.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmti10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmti8.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmtt8.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/symbols/msam10.pfb>
|
||||
Output written on paper.pdf (8 pages, 265030 bytes).
|
||||
PDF statistics:
|
||||
113 PDF objects out of 1000 (max. 8388607)
|
||||
69 compressed objects within 1 object stream
|
||||
129 PDF objects out of 1000 (max. 8388607)
|
||||
80 compressed objects within 1 object stream
|
||||
0 named destinations out of 1000 (max. 500000)
|
||||
13 words of extra memory for PDF output out of 10000 (max. 10000000)
|
||||
|
||||
|
||||
Binary file not shown.
@@ -234,6 +234,188 @@ same restriction to $A(T)$ are identical, so the restriction map is
|
||||
injective. The stated inequality follows.
|
||||
\end{proof}
|
||||
|
||||
\begin{figure}[h]
|
||||
\centering
|
||||
\begin{tikzpicture}[scale=0.82,
|
||||
ann/.style={circle, fill=black, inner sep=1.3pt},
|
||||
outv/.style={circle, draw=blue!70!black, fill=blue!12, inner sep=1.7pt},
|
||||
inv/.style={circle, draw=red!70!black, fill=red!12, inner sep=1.7pt},
|
||||
mededge/.style={black!62, line width=0.45pt},
|
||||
attach/.style={black!45, line width=0.38pt}]
|
||||
|
||||
\newcommand{\hexannulus}[1]{
|
||||
\coordinate (#1a0) at (90:1);
|
||||
\coordinate (#1a1) at (30:1);
|
||||
\coordinate (#1a2) at (-30:1);
|
||||
\coordinate (#1a3) at (-90:1);
|
||||
\coordinate (#1a4) at (-150:1);
|
||||
\coordinate (#1a5) at (150:1);
|
||||
\draw[mededge] (#1a0)--(#1a1)--(#1a2)--(#1a3)--(#1a4)--(#1a5)--cycle;
|
||||
\foreach \i in {0,...,5} \node[ann] at (#1a\i) {};
|
||||
}
|
||||
|
||||
\begin{scope}[shift={(-4.8,0)}]
|
||||
\hexannulus{x}
|
||||
\coordinate (xb0) at (60:0.48);
|
||||
\coordinate (xb1) at (0:0.48);
|
||||
\coordinate (xb2) at (-60:0.48);
|
||||
\coordinate (xb3) at (-120:1.46);
|
||||
\coordinate (xb4) at (180:1.46);
|
||||
\coordinate (xb5) at (120:1.46);
|
||||
\foreach \i/\j in {0/1,1/2,2/3,3/4,4/5} {
|
||||
\draw[attach] (xb\i)--(xa\i);
|
||||
\draw[attach] (xb\i)--(xa\j);
|
||||
}
|
||||
\draw[attach] (xb5)--(xa5);
|
||||
\draw[attach] (xb5)--(xa0);
|
||||
\foreach \i in {0,1,2} \node[inv] at (xb\i) {\scriptsize I};
|
||||
\foreach \i in {3,4,5} \node[outv] at (xb\i) {\scriptsize O};
|
||||
\node at (0,-1.86) {\scriptsize \texttt{IIIOOO}};
|
||||
\node at (0,-2.15) {\scriptsize $\min |R_T(\alpha)|=1$};
|
||||
\end{scope}
|
||||
|
||||
\begin{scope}
|
||||
\hexannulus{y}
|
||||
\coordinate (yb0) at (60:0.48);
|
||||
\coordinate (yb1) at (0:0.48);
|
||||
\coordinate (yb2) at (-60:1.46);
|
||||
\coordinate (yb3) at (-120:0.48);
|
||||
\coordinate (yb4) at (180:1.46);
|
||||
\coordinate (yb5) at (120:1.46);
|
||||
\foreach \i/\j in {0/1,1/2,2/3,3/4,4/5} {
|
||||
\draw[attach] (yb\i)--(ya\i);
|
||||
\draw[attach] (yb\i)--(ya\j);
|
||||
}
|
||||
\draw[attach] (yb5)--(ya5);
|
||||
\draw[attach] (yb5)--(ya0);
|
||||
\foreach \i in {0,1,3} \node[inv] at (yb\i) {\scriptsize I};
|
||||
\foreach \i in {2,4,5} \node[outv] at (yb\i) {\scriptsize O};
|
||||
\node at (0,-1.86) {\scriptsize \texttt{IIOIOO}};
|
||||
\node at (0,-2.15) {\scriptsize $\min |R_T(\alpha)|=1$};
|
||||
\end{scope}
|
||||
|
||||
\begin{scope}[shift={(4.8,0)}]
|
||||
\hexannulus{z}
|
||||
\coordinate (zb0) at (60:0.48);
|
||||
\coordinate (zb1) at (0:0.48);
|
||||
\coordinate (zb2) at (-60:1.46);
|
||||
\coordinate (zb3) at (-120:1.46);
|
||||
\coordinate (zb4) at (180:0.48);
|
||||
\coordinate (zb5) at (120:1.46);
|
||||
\foreach \i/\j in {0/1,1/2,2/3,3/4,4/5} {
|
||||
\draw[attach] (zb\i)--(za\i);
|
||||
\draw[attach] (zb\i)--(za\j);
|
||||
}
|
||||
\draw[attach] (zb5)--(za5);
|
||||
\draw[attach] (zb5)--(za0);
|
||||
\foreach \i in {0,1,4} \node[inv] at (zb\i) {\scriptsize I};
|
||||
\foreach \i in {2,3,5} \node[outv] at (zb\i) {\scriptsize O};
|
||||
\node at (0,-1.86) {\scriptsize \texttt{IIOOIO}};
|
||||
\node at (0,-2.15) {\scriptsize $\min |R_T(\alpha)|=1$};
|
||||
\end{scope}
|
||||
\end{tikzpicture}
|
||||
\caption{Three six-face full medial tire graphs found by the boundary-state
|
||||
restriction search. Black vertices are annular medial vertices; blue
|
||||
vertices are outer boundary medial vertices and red vertices are inner
|
||||
boundary medial vertices. The word below each diagram records the
|
||||
outer/inner type of the six annular faces in cyclic order. Boundary
|
||||
states are identified only up to colour permutation, not by rotation or
|
||||
reflection of the boundary order.}
|
||||
\label{fig:medial-restriction-worst-cases}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[h]
|
||||
\centering
|
||||
\begin{tikzpicture}[scale=0.82,
|
||||
mededge/.style={black!38, line width=0.42pt},
|
||||
cycleedge/.style={black, line width=1.25pt},
|
||||
czero/.style={circle, draw=blue!65!black, fill=blue!18, inner sep=1.6pt},
|
||||
cone/.style={circle, draw=red!65!black, fill=red!18, inner sep=1.6pt},
|
||||
ctwo/.style={circle, draw=green!45!black, fill=green!20, inner sep=1.6pt}]
|
||||
|
||||
\coordinate (n12) at (90:1.45);
|
||||
\coordinate (n13) at (30:1.45);
|
||||
\coordinate (n14) at (-30:1.45);
|
||||
\coordinate (n15) at (-90:1.45);
|
||||
\coordinate (n16) at (-150:1.45);
|
||||
\coordinate (n17) at (150:1.45);
|
||||
\coordinate (n23) at (1.85,1.55);
|
||||
\coordinate (n34) at (2.45,0.00);
|
||||
\coordinate (n45) at (1.85,-1.55);
|
||||
\coordinate (n56) at (-0.15,-2.45);
|
||||
\coordinate (n67) at (-1.85,-1.55);
|
||||
\coordinate (n27) at (-1.85,1.55);
|
||||
\coordinate (n26) at (-0.30,2.55);
|
||||
\coordinate (n36) at (0.30,0.55);
|
||||
\coordinate (n35) at (0.45,-0.85);
|
||||
|
||||
\draw[mededge] (n12)--(n13);
|
||||
\draw[mededge] (n12)--(n17);
|
||||
\draw[mededge] (n12)--(n23);
|
||||
\draw[mededge] (n12)--(n27);
|
||||
\draw[mededge] (n13)--(n14);
|
||||
\draw[mededge] (n13)--(n23);
|
||||
\draw[mededge] (n13)--(n34);
|
||||
\draw[mededge] (n14)--(n15);
|
||||
\draw[mededge] (n14)--(n34);
|
||||
\draw[mededge] (n14)--(n45);
|
||||
\draw[mededge] (n15)--(n16);
|
||||
\draw[mededge] (n15)--(n45);
|
||||
\draw[mededge] (n15)--(n56);
|
||||
\draw[mededge] (n16)--(n17);
|
||||
\draw[mededge] (n16)--(n56);
|
||||
\draw[mededge] (n16)--(n67);
|
||||
\draw[mededge] (n17)--(n27);
|
||||
\draw[mededge] (n17)--(n67);
|
||||
\draw[mededge] (n23)--(n26);
|
||||
\draw[mededge] (n23)--(n36);
|
||||
\draw[mededge] (n26)--(n27);
|
||||
\draw[mededge] (n26)--(n36);
|
||||
\draw[mededge] (n26)--(n67);
|
||||
\draw[mededge] (n27)--(n67);
|
||||
\draw[mededge] (n34)--(n35);
|
||||
\draw[mededge] (n34)--(n45);
|
||||
\draw[mededge] (n35)--(n36);
|
||||
\draw[mededge] (n35)--(n45);
|
||||
\draw[mededge] (n35)--(n56);
|
||||
\draw[mededge] (n36)--(n56);
|
||||
|
||||
\draw[cycleedge] (n12)--(n13)--(n14)--(n15)--(n16)--(n17)--cycle;
|
||||
|
||||
\node[czero] (v12) at (n12) {\scriptsize $12$};
|
||||
\node[cone] (v13) at (n13) {\scriptsize $13$};
|
||||
\node[ctwo] (v14) at (n14) {\scriptsize $14$};
|
||||
\node[czero] (v15) at (n15) {\scriptsize $15$};
|
||||
\node[ctwo] (v16) at (n16) {\scriptsize $16$};
|
||||
\node[cone] (v17) at (n17) {\scriptsize $17$};
|
||||
\node[ctwo] (v23) at (n23) {\scriptsize $23$};
|
||||
\node[cone] (v26) at (n26) {\scriptsize $26$};
|
||||
\node[ctwo] (v27) at (n27) {\scriptsize $27$};
|
||||
\node[czero] (v34) at (n34) {\scriptsize $34$};
|
||||
\node[ctwo] (v35) at (n35) {\scriptsize $35$};
|
||||
\node[czero] (v36) at (n36) {\scriptsize $36$};
|
||||
\node[cone] (v45) at (n45) {\scriptsize $45$};
|
||||
\node[cone] (v56) at (n56) {\scriptsize $56$};
|
||||
\node[czero] (v67) at (n67) {\scriptsize $67$};
|
||||
|
||||
\node[anchor=west] at (3.0,1.45) {\scriptsize colour $0$};
|
||||
\node[czero] at (2.82,1.45) {};
|
||||
\node[anchor=west] at (3.0,1.05) {\scriptsize colour $1$};
|
||||
\node[cone] at (2.82,1.05) {};
|
||||
\node[anchor=west] at (3.0,0.65) {\scriptsize colour $2$};
|
||||
\node[ctwo] at (2.82,0.65) {};
|
||||
\node[anchor=west, text width=2.35cm] at (2.82,-0.15)
|
||||
{\scriptsize thick cycle: annular medial cycle for source $1$};
|
||||
\end{tikzpicture}
|
||||
\caption{A proper vertex $3$-colouring of the full medial graph of the
|
||||
first seven-vertex counterexample found by the experiment. The medial
|
||||
vertex labelled $ij$ corresponds to the edge $(i,j)$ of the
|
||||
triangulation. For the vertex-source decomposition at source $1$, the
|
||||
highlighted annular medial cycle has colour counts $(2,2,2)$, so it is
|
||||
not coloured with two colours except at at most one vertex.}
|
||||
\label{fig:medial-annular-cycle-counterexample}
|
||||
\end{figure}
|
||||
|
||||
\begin{definition}[Boundary medial vertices]
|
||||
\label{def:boundary-medial-vertices}
|
||||
Let $T$ be a tire tread and let $\Gamma_T$ be the corresponding dual
|
||||
@@ -387,6 +569,221 @@ move the obstruction into finite boundary-state restrictions carried by
|
||||
annular medial tire pieces.
|
||||
\end{remark}
|
||||
|
||||
\subsection{Kempe-cycle conservation across medial tires}
|
||||
|
||||
We now record an additional structure carried by proper
|
||||
$3$-colourings of medial graphs. This structure will be useful for
|
||||
describing how colourings glue across level cycles.
|
||||
|
||||
Let $G$ be a plane triangulation and let $M=M(G)$ be its medial graph.
|
||||
Let
|
||||
\[
|
||||
\varphi:V(M)\to\{1,2,3\}
|
||||
\]
|
||||
be a proper $3$-colouring of $M$. For a two-element colour set
|
||||
$P=\{a,b\}\subseteq\{1,2,3\}$, let $M_P$ denote the subgraph of $M$
|
||||
induced by the vertices of colours $a$ and $b$.
|
||||
|
||||
Since $M$ is $4$-regular and $\varphi$ is proper, every vertex of
|
||||
$M_P$ has degree $2$ in $M_P$. Hence every component of $M_P$ is a
|
||||
cycle. We call these components the $P$-Kempe cycles of $\varphi$.
|
||||
|
||||
\begin{lemma}[Kempe cycles are cycles]
|
||||
Let $G$ be a plane triangulation, let $M=M(G)$, and let
|
||||
$\varphi$ be a proper $3$-colouring of $M$. For each
|
||||
$P\in\{\{1,2\},\{2,3\},\{3,1\}\}$, every component of $M_P$ is a cycle.
|
||||
\end{lemma}
|
||||
|
||||
\begin{proof}
|
||||
Let $v\in V(M_P)$. In the medial graph $M$, the vertex $v$ has degree
|
||||
$4$. Since $\varphi$ is a proper $3$-colouring, none of the neighbours
|
||||
of $v$ has colour $\varphi(v)$. Thus all four neighbours of $v$ have
|
||||
one of the two colours different from $\varphi(v)$.
|
||||
|
||||
In the medial graph of a plane triangulation, the neighbours of a
|
||||
medial vertex occur in two opposite pairs corresponding to the two
|
||||
faces incident with the corresponding edge of $G$. Around each such
|
||||
triangular face, the three medial vertices receive all three colours.
|
||||
Consequently, at $v$ there are exactly two neighbours of each colour
|
||||
different from $\varphi(v)$. It follows that, in the subgraph induced
|
||||
by any two colours $P$, every vertex has degree $2$. Hence each
|
||||
component of $M_P$ is a cycle.
|
||||
\end{proof}
|
||||
|
||||
Let $T$ be a medial tire region. We regard $T$ as an annular transition
|
||||
region whose boundary consists of one outer level cycle and finitely
|
||||
many inner level cycles:
|
||||
\[
|
||||
\partial T = C_0\sqcup C_1\sqcup\cdots\sqcup C_m.
|
||||
\]
|
||||
Here $C_0$ is the outer level cycle of $T$, and the cycles
|
||||
$C_1,\ldots,C_m$ are the inner level cycles. Each inner level cycle
|
||||
$C_i$ is also the outer level cycle of the corresponding child region
|
||||
in the tire tree.
|
||||
|
||||
The following lemma is the basic conservation principle.
|
||||
|
||||
\begin{lemma}[Kempe-cycle conservation across level cycles]
|
||||
Let $C$ be a level cycle of $M$ separating a parent side from a child
|
||||
side. Let $K$ be a $P$-Kempe cycle for some
|
||||
$P\in\{\{1,2\},\{2,3\},\{3,1\}\}$. Then $K$ cannot enter the child side
|
||||
of $C$ without also leaving it.
|
||||
|
||||
Equivalently, the incidences of $K$ with $C$ are paired by the
|
||||
components of $K$ lying on the child side of $C$, and also paired by the
|
||||
components of $K$ lying on the parent side of $C$.
|
||||
\end{lemma}
|
||||
|
||||
\begin{proof}
|
||||
By the preceding lemma, $K$ is a cycle. The level cycle $C$ separates
|
||||
the sphere into two closed regions, which we call the parent side and
|
||||
the child side. Consider the intersection of $K$ with one of these
|
||||
regions. Since $K$ is a cycle, no component of this intersection can
|
||||
have exactly one boundary endpoint on $C$. Each component is either
|
||||
closed within the region, or is a path with two boundary endpoints on
|
||||
$C$. Thus every entrance through $C$ is paired with an exit through
|
||||
$C$.
|
||||
\end{proof}
|
||||
|
||||
More generally, let $T$ be a medial tire region with boundary
|
||||
\[
|
||||
\partial T = C_0\sqcup C_1\sqcup\cdots\sqcup C_m.
|
||||
\]
|
||||
For a $P$-Kempe cycle $K$, every component of $K\cap T$ is either a
|
||||
cycle contained in $T$, or a path with two endpoints on
|
||||
$\partial T$. Thus the $P$-Kempe arcs inside $T$ define a pairing of
|
||||
the $P$-coloured boundary incidences of
|
||||
\[
|
||||
C_0\sqcup C_1\sqcup\cdots\sqcup C_m.
|
||||
\]
|
||||
This motivates the following refinement of boundary states.
|
||||
|
||||
\begin{definition}[Kempe-enhanced boundary state]
|
||||
Let $T$ be a medial tire region with outer level cycle $C_0$ and inner
|
||||
level cycles $C_1,\ldots,C_m$. Let
|
||||
\[
|
||||
\mathcal C(T)=C_0\sqcup C_1\sqcup\cdots\sqcup C_m.
|
||||
\]
|
||||
A \emph{Kempe-enhanced boundary state} on $T$ consists of the following
|
||||
data:
|
||||
\begin{enumerate}
|
||||
\item a boundary colouring
|
||||
\[
|
||||
\alpha:V(\mathcal C(T))\to\{1,2,3\};
|
||||
\]
|
||||
\item for each colour pair
|
||||
\[
|
||||
P\in\{\{1,2\},\{2,3\},\{3,1\}\},
|
||||
\]
|
||||
a pairing $\pi_P$ of the $P$-coloured boundary incidences of
|
||||
$\mathcal C(T)$ induced by the $P$-Kempe arcs lying inside $T$.
|
||||
\end{enumerate}
|
||||
We write such a state as
|
||||
\[
|
||||
\kappa=(\alpha,\pi_{12},\pi_{23},\pi_{31}).
|
||||
\]
|
||||
\end{definition}
|
||||
|
||||
Given a proper $3$-colouring $\varphi$ of the medial tire graph
|
||||
$M(T)$, the restriction of $\varphi$ to the boundary level cycles gives
|
||||
the boundary colouring $\alpha$, while the two-colour Kempe arcs inside
|
||||
$T$ give the pairings $\pi_{12},\pi_{23},\pi_{31}$. Thus $\varphi$
|
||||
determines a Kempe-enhanced boundary state, denoted
|
||||
\[
|
||||
\kappa_T(\varphi).
|
||||
\]
|
||||
|
||||
\begin{definition}[Kempe-enhanced restriction relation]
|
||||
The \emph{Kempe-enhanced restriction relation} of $T$ is
|
||||
\[
|
||||
\mathcal K_T
|
||||
=
|
||||
\left\{
|
||||
\kappa_T(\varphi):
|
||||
\varphi \text{ is a proper }3\text{-colouring of } M(T)
|
||||
\right\}.
|
||||
\]
|
||||
This refines the ordinary boundary-colouring relation by recording not
|
||||
only which boundary colourings extend across $T$, but also how the
|
||||
two-colour Kempe cycles are routed through the annular tire region.
|
||||
\end{definition}
|
||||
|
||||
The annular structure of a tire is useful in two distinct ways. First,
|
||||
it gives a bounded transition region between level cycles: the colouring
|
||||
of the annular medial cycle controls, and in many cases determines, the
|
||||
colouring of the remaining medial tire vertices. Thus the number of
|
||||
possible transition states is bounded in terms of the annular structure,
|
||||
rather than the total size of the subtree below the tire. Second, it
|
||||
describes how the outer level cycle and the inner level cycles are
|
||||
related by Kempe arcs. The level cycles are the gluing interfaces, while
|
||||
the annular tire is the transition operator between them.
|
||||
|
||||
\begin{definition}[Kempe-compatible gluing]
|
||||
Let $T$ be a medial tire region and let $U$ be a child region glued to
|
||||
$T$ along a common level cycle $C$. Thus $C$ is an inner level cycle of
|
||||
$T$ and the outer level cycle of $U$.
|
||||
|
||||
Let
|
||||
\[
|
||||
\kappa_T=(\alpha_T,\pi^T_{12},\pi^T_{23},\pi^T_{31})
|
||||
\in \mathcal K_T
|
||||
\]
|
||||
and
|
||||
\[
|
||||
\kappa_U=(\alpha_U,\pi^U_{12},\pi^U_{23},\pi^U_{31})
|
||||
\in \mathcal K_U.
|
||||
\]
|
||||
We say that $\kappa_T$ and $\kappa_U$ are \emph{Kempe-compatible along
|
||||
$C$} if:
|
||||
\begin{enumerate}
|
||||
\item the boundary colourings agree on $C$:
|
||||
\[
|
||||
\alpha_T|_{V(C)}=\alpha_U|_{V(C)};
|
||||
\]
|
||||
\item for each colour pair
|
||||
\[
|
||||
P\in\{\{1,2\},\{2,3\},\{3,1\}\},
|
||||
\]
|
||||
the pairings $\pi^T_P$ and $\pi^U_P$ compose along the
|
||||
$P$-coloured incidences of $C$ without producing an unpaired endpoint.
|
||||
\end{enumerate}
|
||||
When these conditions hold, the composed pairings determine a
|
||||
Kempe-enhanced boundary state on the exposed boundary of
|
||||
$T\cup_C U$.
|
||||
\end{definition}
|
||||
|
||||
In these terms, gluing local colourings is not merely a matter of
|
||||
matching boundary colours. The colourings must also route their
|
||||
two-colour Kempe arcs compatibly across every shared level cycle. The
|
||||
ordinary restriction relation records whether a boundary colouring can
|
||||
be extended locally; the Kempe-enhanced relation additionally records
|
||||
the conservation of Kempe-cycle flow through the annular transition
|
||||
region.
|
||||
|
||||
For a tire with one outer level cycle and several inner level cycles,
|
||||
\[
|
||||
\partial T=C_0\sqcup C_1\sqcup\cdots\sqcup C_m,
|
||||
\]
|
||||
the parent tire may correlate the boundary states on the different
|
||||
inner cycles. The Kempe-enhanced relation records this correlation as
|
||||
a system of pairings among the $P$-coloured incidences of all boundary
|
||||
level cycles simultaneously. Thus one should view a medial tire as a
|
||||
multi-output transition operator
|
||||
\[
|
||||
\mathcal K_T:
|
||||
C_0 \leadsto (C_1,\ldots,C_m),
|
||||
\]
|
||||
rather than as an independent collection of binary transitions.
|
||||
|
||||
The guiding principle is therefore:
|
||||
|
||||
\begin{quote}
|
||||
Level cycles are the interfaces used for gluing, while annular tire
|
||||
regions are the bounded transition regions that route Kempe cycles
|
||||
between those interfaces.
|
||||
\end{quote}
|
||||
|
||||
|
||||
\begin{thebibliography}{9}
|
||||
|
||||
\bibitem{bauerfeld-nested-tire-decompositions}
|
||||
|
||||
Reference in New Issue
Block a user