Forgot password
 Register account
View 4|Reply 0

[代数/数论] 模群 ${\rm PSL}_2 (\mathbb{Z})$ 是自动群

[Copy link]

3214

Threads

7831

Posts

52

Reputation

Show all posts

hbghlyj posted 2025-7-20 08:11 |Read mode
${\rm PSL}_2(\mathbb{Z})$ 可以由如下三个分式线性变换生成: $$Az=-\frac{1}{z},\quad Bz=z+1,\quad Cz=z-1.$$ 这个图展示的是模群 ${\rm PSL}_2(\mathbb{Z})$ 在上半平面的作用。

${\rm PSL}_2(\mathbb{Z})$ 中的任何元素 $g$ 都可以表示为 $A,B,C$ 的乘积,这乘积是一个由 $A,B,C$ 组成的单词,但是这个单词表示不是唯一的。我们可以给 $g$ 规定一个唯一的标准形式,即最短字典序表示。在 $g$ 的所有单词表示中,我们取其长度最短的,并且是字典序 $A< B< C$ 下最小的那个单词作为其标准表示。所有 $g\in {\rm PSL}_2(\mathbb{Z})$ 的最短字典序表示构成一个“语言”,叫做由群 ${\rm PSL}_2(\mathbb{Z})$ 的最短字典序语言 (shortlex language)。

精彩的地方来了:${\rm PSL}_2(\mathbb{Z})$ 的最短字典序语言是一个正则语言,即它可以由一个有限状态机生成,群中的元素与状态机识别的单词一一对应。这个状态机由下图所示:
比如 ${\rm PSL}_2(\mathbb{Z})$ 的长度为 1 的词有 A,B,C。
长度为 2 的词有 AB, AC, BA, CA。
长度为 3 的词有 ABA, ACA, BAB, BAC, CAB, CAC。以此类推。
  1. import itertools
  2. def is_accepted(word):
  3. state = 1
  4. for char in word:
  5. if state == 1: # Start state
  6. if char == 'A':
  7. state = 2
  8. elif char in ['B', 'C']:
  9. state = 3
  10. elif state == 2: # Last letter was A
  11. if char == 'A':
  12. state = 4 # Avoid A²
  13. elif char in ['B', 'C']:
  14. state = 3
  15. elif state == 3: # Last letter was B or C
  16. if char == 'A':
  17. state = 2
  18. elif char in ['B', 'C']:
  19. state = 4 # Avoid consecutive {B, C} that would reduce via B³=1 and C=B²
  20. elif state == 4: # Fail/sink state
  21. state = 4
  22. return state in [1, 2, 3]
  23. alph = ['A', 'B', 'C']
  24. accepted_by_length = {}
  25. rejected_by_length = {}
  26. for length in range(4):
  27. words = [''.join(combo) for combo in itertools.product(alph, repeat=length)]
  28. accepted = []
  29. rejected = []
  30. for w in words:
  31. if is_accepted(w):
  32. accepted.append(w)
  33. else:
  34. rejected.append(w)
  35. accepted_by_length[length] = accepted
  36. rejected_by_length[length] = rejected
  37. print("Accepted words by length:")
  38. for l, acc in accepted_by_length.items():
  39. print(f"Length {l}: {acc}")
  40. print("\nRejected words by length:")
  41. for l, rej in rejected_by_length.items():
  42. print(f"Length {l}: {rej}")
Copy the Code
于是我们可以很容易地不重复不遗漏地生成 ${\rm PSL}_2(\mathbb{Z})$ 的不超过给定长度的所有元素,将它们依次作用在图中的阴影区域上,就得了开头的密铺图形。a page on automata for PSL(2, Z) at geometry tools
你可能要问了:${\rm PSL}_2(\mathbb{Z})$ 是自动群这个事情是不是依赖于 A,B,C 这组特殊的生成元呢?如果换一组生成元,它对应的最短字典序语言还是正则语言吗?答案是肯定的,自动群与生成元的选取无关,它不依赖于特定的群表现。Word processing in groups. David Epstein.

Quick Reply

Advanced Mode
B Color Image Link Quote Code Smilies
You have to log in before you can reply Login | Register account

$\LaTeX$ formula tutorial

Mobile version

2025-7-20 15:19 GMT+8

Powered by Discuz!

Processed in 0.015808 seconds, 29 queries