用Van Kampen定理证明:C2去掉若干仿射复直线后的基本群由绕每条直线的任意的meridian...
Создано: 25 мая 2026 г.
Отвечено с использованием GPT-5.5 Thinking от Chat01
Создано: 25 мая 2026 г.
Отвечено с использованием GPT-5.5 Thinking от Chat01
用Van Kampen定理证明:C2去掉若干仿射复直线后的基本群由绕每条直线的任意的meridian生成
python# Let's implement Stallings folding for subgroup of F(a,b), check membership. from collections import defaultdict, deque def inv_letter(c): return c.swapcase() def reduce_word(w): stack=[] for c in w: if stack and inv_letter(c)==stack[-1]: stack.pop() else: stack.append(c) return ''.join(stack) def inverse_word(w): return ''.join(inv_letter(c) for c in reversed(w)) def conjugate(w, x): return reduce_word(w+x+inverse_word(w)) # Stallings fold graph: vertices int, directed labeled edges with inverse edges. class DSU: def __init__(self,n=0): self.p=list(range(n)) def add(self): self.p.append(len(self.p)); return len(self.p)-1 def find(self,x): while self.p[x]!=x: self.p[x]=self.p[self.p[x]] x=self.p[x] return x def union(self,a,b): ra, rb=self.find(a), self.find(b) if ra==rb: return False self.p[rb]=ra return True def build_graph(gens): # initial bouquet paths d=DSU(1) edges=[] # (u,label,v) for w in gens: u=0 for i,c in enumerate(w): if i==len(w)-1: v=0 else: v=d.add() edges.append((u,c,v)) edges.append((v,inv_letter(c),u)) u=v changed=True while changed: changed=False # compress edges edges=[(d.find(u),c,d.find(v)) for u,c,v in edges] # fold: for each vertex,label, all targets same; for incoming? inverse included handles table={} for u,c,v in edges: key=(u,c) if key in table: if d.union(table[key], v): changed=True break else: table[key]=v # final compressed unique edges ed=set((d.find(u),c,d.find(v)) for u,c,v in edges) # remove duplicate # Build transition trans={} for u,c,v in ed: trans[(u,c)]=v # deterministic after folding base=d.find(0) return base, trans, set([d.find(i) for i in range(len(d.p))]) def accepts(gens,w): base, trans, verts=build_graph(gens) u=base for c in reduce_word(w): key=(u,c) if key not in trans: return False u=trans[key] return u==base a='a'; b='b' w=reduce_word('abAB') # [a,b]? a b A B m1='a' m2=conjugate(w,'b') m1,m2, accepts([m1,m2],'b'), accepts([m1,m2],'a') ('a', 'abAbaBA', False, True)
设
先把“任意的 meridian”精确化:下面证明的是标准的 Zariski–Van Kampen 版本——取一条通用仿射直线纤维,在其中绕 的交点各取一个小正向 meridian,则这些 meridians 生成 。若允许给 meridian 接任意复杂“长尾”,字面上的“任意一组选一个”需要额外说明;通常教材中的说法指这种几何 meridian 或其标准同伦类。
经过一个仿射坐标变换,可假设投影
满足:
记所有交点的 -坐标组成有限集
取
对于 ,纤维
是一条复直线去掉 个点,即
因此
是自由群,由绕这 个点的小圈生成。每个点正是 ,所以这些小圈就是绕各条直线 的 meridians,记为
考虑
因为在 上没有临界值,投影
是局部平凡纤维丛,纤维为 。于是 由两类元素生成:
现在把临界纤维也加回来。对每个 ,取小圆盘 ,令
用 Van Kampen 定理考察覆盖
局部地,若 对应于某个交点
那么在 中,只有这些直线的交点发生碰撞。Zariski–Van Kampen 的局部计算告诉我们:把 加入时,只产生关于
的关系,例如在普通二重点处得到交换关系
在 重交点处得到相应的循环关系。关键是:不会产生新的生成元;基空间中绕 的提升可以用这些纤维 meridians 表示并被消去。
因此 Van Kampen 定理给出的 的表示,其生成元可以全部取为
也就是说,
由绕每条直线 的 meridian 生成。
更具体地,Van Kampen 给出的是形如
所以不管交点关系多复杂,生成元始终只需要每条直线的一个 meridian。
我现在考虑的不是这种几何的构造,而是需要添加长尾的meridian,如要结论成立,需要什么样的约束?
不能只要求“每个都是绕对应直线一次的长尾 meridian”。这个条件只说明它们分别落在标准 meridian 的共轭类里;但“一组生成元的任意逐个共轭”一般不再生成整个群。
设固定一组 Van Kampen 的标准 meridian:
任意带长尾的、基于 的 -meridian 形如
正向时如此;若允许反向,则是 。
要让
仍然生成 ,需要对长尾 加约束。最干净的说法是:
这是充要条件,但它是群论条件。几何上通常用下面几类足够条件。
取一条通用纤维
从基点 到每个小圆 取弧 ,要求这些弧:
那么这些长尾 meridian 生成 。而 Zariski–Van Kampen 给出
所以它们在 中的像生成 。
这就是最常见、最安全的约束:长尾不能逐个任意选,而要作为一个整体构成 punctured line 的几何基。
如果从一组标准几何基
出发,对整组 meridian 同时施加一个 braid monodromy / Artin automorphism
得到
那么
仍然生成,因为自同构保持生成性。
几何上这对应于:长尾可以很长、可以绕来绕去,但它们必须是由一个整体的同伦或 braid 运动同时搬运得到的,而不是每条尾巴独立选择。
假设重新排序后
并且
或更容易检查地, 可以由已经恢复出的前面 meridian 表示。
那么归纳可得
因此所有标准 都落在 中,于是
几何上可以理解为:第 条长尾允许绕前面已经控制住的直线,但不能引入尚未控制的“非三角”依赖。
若所有 meridian 前面加的是同一个长尾 ,即
那么
所以“共同长尾”没有问题。问题出在“每条 meridian 独立加任意长尾”。
取两条平行复直线的补:
于是
其中 分别是两条直线的标准 meridian。
取
其中 是某个长尾。几何上 仍然是第二条直线的一个长尾 meridian。
令
选择 使得它在 中的像把 共轭成 。那么
于是
在这个商群里的像只是 ,而整个 的像是 。所以
这说明:即使每条都是对应直线的长尾 meridian,若长尾任意独立选择,生成性也会失败。
总结一下:要让结论成立,长尾需要是coherent 的。最标准的约束是:它们来自通用纤维中一组 distinguished paths,或来自这组路径的整体 braid / isotopy 变换。等价地从群论看,就是不能只要求 与 共轭,而要要求这些共轭后的元素仍然生成整个群。