Solution to Serre's Finite Group
如题
另证:令
如题
另证:令
for循环形如
1
2for VAR in ITERABLE:
BLOCK
如若ITERABLE中元素为tuple,也可以有如
1
2for VAR1,VAR2 in ITERABLE:
BLOCK
enumerate(ITERABLE)将一个可遍历的数据对象组合为一个索引序列(类型为enumerate),其元素为形如(index, item)的tuple。
range(start, stop[, step])生成可迭代的序列(类型为range),start默认为0,step默认为1。
Python有List
comprehension(列表推导式),形如[expression for item in iterable if condition == True]其中if条件默认为全部True。此外可以有[expression1 if condition1 else expression2 for item in iterable]的写法。
break可以结束最近的一个for或者while循环。
continue则是直接进入下一轮循环。
pass为空操作。
raise [exceptionName [(reason)]]会抛出异常,名称为exceptionName而描述为reason,形如exceptionName: reason。raise会抓取最近的报错信息(如在上一层try中被抛出的,try中异常被处理结束之后便不会再抛出),如果没有默认RuntimeError。
try和except可以不让程序报错的情况下尝试执行一段代码并就相关异常抛出进行处理,具体来说形如
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15try:
# ...some error prone code...
code block 1
except:
# ...do something with the error...
code block 2
except Exception_Name_1:
# ...do something with the error...
code block 3
else:
# ...to do when there is no error...
code block 4
finally:
#...some clean up code...
code block 5
如果出现异常(exception),那么将进入except:处理,默认任何异常都会进入except,而except Exception_Name_1只处理错误名称为Exception_Name_1的情形。finally:无论如何都会被执行。
电脑向python程序输入数据可以通过电脑键盘(keyboard)和输入文件(input data file)来输入,输出数据可以通过the monitor screen和输出文件来输出。
variable_name = input([prompt])prompt用于提示用户,从屏幕上输入的内容总是str类型。
print(..., end = str)可以使print输出...后再输出str,默认str为换行。
文件可以被大体分为binary files (二进制文件)和text files (文本文件),文本文件存储的是ASCII码。二进制文件一般包含headers以标识其文件内容,如果header无效则supporting programs可能不会打开这个二进制文件或者报告其损坏。二进制文件相对来说读取和存储速度更快,更少限制性而且更具安全性,但更容易损坏。
基于unix的操作系统中文件路径分隔符(delimiters)用/,对大小写敏感。而Windows则是\,对大小写不敏感。带有.或..的文件路径为相对路径,如..\langur.txt定位当前目录的父目录中名为langur.txt的文件,而..\langur.txt则定位当前目录,..\..\langur.txt定位父目录的父目录。
Python中os模块处理与操作系统的接口,需要import os。
os.getcwd()将返回当前工作目录的路径string。
os. listdir(dir)返回一个list,其中元素是dir中每个文件名称的string。dir默认是当前工作目录(string类型)。
os.remove(file)删除名为file的文件(file为string类型)。
os.rename(source, destination)将source重命名为destination。
os.mkdir(path)创建一个新目录path。
os.path.join(path, *paths)把一串路径串联成一个大路径。
os.path.exists(path)、os.path.isfile(path)和os.path.isdir(path)返回bool值判断是否存在如path所述的路径、目录和文件。
os.path.getmtime(path)返回path最新一次被修改的时间。
os.path.split(path)返回一对string,(head, tail),其中tail为字符串直至最末分隔符的后缀,其余在该分隔符前部分为head。
open ( file, mode, .. )会返回一个文件句柄,file为文件目录,可以绝对可以相对,mode是字符串以描述这个文件会如何被处理,具体来说的mode如下:
| 模式 | 描述 |
|---|---|
r |
以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
w |
打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
a |
打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
r+ |
打开一个文件用于读写。文件指针将会放在文件的开头。文件不存在时会报I/O错误。 |
a+ |
打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
w+ |
打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
rb |
以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。 |
wb |
以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
.read(n)将从文件中读入n个字节的内容,默认全部读入(不推荐)。.readline(n)将从文件读取整行包括换行符\n,如果指定了一个非负数的参数,则返回指定大小的字节数,包括\n字符。如果已经到文件末尾(碰到结束符EOF)则会返回空字符串。.readlines()返回一个list,每个元素都是文件中的一行。如果碰到EOF则会返回空字符串。for i in f,其中f为读入文件句柄,可以按行迭代文件内容。
读入的结尾需要关闭文件,即.close()。
with statement可以自动关闭文件,它形如:
1
2
3with open(file, mode) as file_handler:
Statement_1
Statement_2
with open(file, mode, encoding='')将确定读入时选择的编码。如encoding='ascii'、encoding='utf-8'分别对应ascii码和utf-8编码的情况。python3默认为utf-8。
file.write(byte)可以向file_handle对于文件中写入string。write不会自动补上换行符。与read时类似的也有file_handle.writelines(list)。(同样不会默认加\n)
.txt / .tsv文件用Tab制表符\t分隔,CSV(Comma Separated
Values)文件用,分隔。
import csv 可以调用CSV模块。
csv.reader(file, delimiter='')返回一个reader
object,可以按行迭代csvfile文件中读取内容(每行都返回为string),csvfile可以是文件或文件对象,也可以是类似文件的对象(如StringIO对象)。delimiter为分隔符,默认为逗号,也可以改为如'等。类似地,csv.writer返回将数据写入
CSV 文件的写入器对象
在csv文件中写入内容可以考虑
1
2
3csvwriter = csv.writer(csvfile, delimiter='')
csvwriter.writerow(row)
csvwriter.writerows(rows)
delimiter默认为逗号。row是一个列表,rows则是每行对应列表之列表。writerows会自动换行。
csv.DictReader(f, fieldnames=None, restkey=None, restval=None, dialect='excel', *args, **kwds)会返回一个类似reader的reader
object,但将每行中的信息映射到一个字典,该字典的keys由可选的fieldnames参数给出。fieldnames参数是一个序列。如果省略字段名,则文件f第一行中的值将用作字段名,并将从结果中省略。如果提供了字段名,将使用它们,并且第一行将包含在结果中。无论字段名是如何确定的,字典都会保留它们的原始顺序。例如csv.DictReader(f, fieldnames=['a', 'b', 'c'])则对应的keys是a,
b, c,而默认则是csv文件第一行对应内容。
如果一行的字段多于字段名,则将剩余的数据放入列表中,并使用由restkey指定的字段名(默认为None)存储。如果非空白行的字段少于字段名,则用restval的值(默认为None)填充缺失的值。
类似地还有csv.DictWriter(f, fieldnames, restval='', extrasaction='raise', dialect='excel', *args, **kwds)。它将创建一个对象,其操作方式与常规写入器类似,但将字典映射到输出行。fieldnames参数是一个键序列,用于标识传递给writerow方法的字典中的values写入文件f的顺序。它的用法例如
1
2
3
4
5
6
7
8
9
10import csv
with open('names.csv', 'w', newline='') as csvfile:
fieldnames = ['first_name', 'last_name']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
writer.writerow({'first_name': 'Baked', 'last_name': 'Beans'})
writer.writerow({'first_name': 'Lovely', 'last_name': 'Spam'})
writer.writerow({'first_name': 'Wonderful', 'last_name': 'Spam'})
在程序生命周期中创建的所有变量都临时存储在内存中,并在程序终止时消失。而pickle模块是Python专用的持久化模块,也就是让数据持久化保存。 “Pickling” 是将 Python 对象层次结构转换为字节流的过程,而 “unpickling” 是逆操作。
pickle.dump(pythonObject, pickleDestination, pickle_protocol=None, *, fix_imports=True)将python对象pythonObject转换成写入pickleDestination的字节流。类似地可以用pickle.load(f)。用pickle.dump和pickle.load读写文件时要用wb和rb模式。
pickle.dumps(pythonObject)返回pythonObject转换而来的二进制串。pickle.loads(bytes_object)有类似功用。
Booleans, Integers, Floats, Strings, Tuples, Lists, Sets, Dictionaries均能被pickle。
Borcherds交换代数网课的笔记
burnside多项式
对一般的不含幺环,我们某种意义上有办法把它变成一个含幺环,也就是“硬塞”一个新的单位元
注:unitization具有函子性,并且是
取
模
另一种观点是考虑群
令
Reading Section (Eisenbud'c Commutative Algebra): 1.4
Exercises: 1.1, 1.3, 1.4, 1.5
1.
2. 任何
3.
注意到
多元多项式环中理想的生成元数量并不能被未定元数控制。例如
Reading: Section 1,4
Exercises: 15.15 a
对
对
这涉及到无穷多次求和的操作,但注意到其中
证明
中一样将单项式列出,横轴为诸
注:5.3的证明对任何有限生成的自由Abel群均适用。
事实上上面证明了
Reading: Section 1.5
利用基定理可以证明一些不变量的有限生成性,至少是对有限群
注1:
注2:对满足
分裂,从而
现在回到6.1的证明:取
注1:此处的论证适用于一大类分次环。对分次环
注2:一般分次环中
应当注意到Reynolds算子对任意群和任意域并非总是存在,例如
此外对非紧群 
而这套论证在无穷维时则会基本失效,此时
Noether对定理6.2中
Reading: Section 1.7 (似乎实则应当1.11(?
Exercises: 1.22, 1.23
与诺特环的情形一致,我们有:
只需证
诺特环上
令
事实上这还能进一步推广:
证明则是完全相同的。
这里的自由解消并不保证有限,也不保证唯一,但Hilbert证明了对一些特定环和其上的模,自由解消总是有限而且某种意义上几乎唯一,可以从分次自由解消中取出某种“最小”解消,然后其它自由解消就相当于在其基础上加上如
则Hilbert的定理可以被陈述为:
这种消解的“几乎唯一”性给出了许多
诺特证明了任意特征域上的
令
注:诺特的证明相比Hilbert对特征零情形的证明,难以推广到无限群的情形。
对更一般的情形,我们有定理:
注1:Nagata证明了3推1,1推2某种意义上也是因为Nagata找到了一个G不是约化群时候不变量并非有限生成的例子,Haboush证明了2推3。
注2:条件3某种意义上在说存在一个非线性的Reynolds算子。在特征零的情况下,
注3(Borcherds猜测):
包括但不限于关于Fulton的Algebraic Curves中卡过我的/感觉有意思的/可能需要经常查看的/无端决定写在这里的东西。
考虑固定前
1.
2.
3.
对于1,假设存在多项式
注意到
反过来把
事实上此中有一些神奇的对应。不难证明
设
事实上我们也有
注意到我们考虑这种代数集和其理想之间的对应时完全没有用到多项式本身的性质。事实上
对
1.
2.
注意到
Hilbert弱零点定理可以被等价地叙述为如下定理的逆命题:若对
零点定理则可以被重述为如果
b.
参考了包括但不限于ProofWiki
注意到特征
如果
假设
考虑到
显然。
首先
先假设
只需注意到
(d)考虑
5.
6.
有
statement 语句
expression 表达式
operands 操作数(如6*7中的6)
declare 声明
assignment 赋值
Compound assignment operators 复合赋值运算符(如+=)
identifier
标识符(变量名,必须从字母或_开始,不能从数字开始,只能有字母数字下划线)
immutable 不可变的
calling function 调用函数
asterisk 星号
type()可判断数据类型。
round()四舍五入取整,math.ceil()/math.floor()上/下取整(需import math)
字符串不可修改。
用'、"、'''、"""之一括起来。
用+可连接两个string,用*(数字)可重复(数字)次。
用in或not in可判断字符串是不是另一个字符串的子串。
字符串可按ASCII码下字典序比较。
len()可以给出字符串长度。
从后往前遍历字符串可以用负数下标(如s[-1]是最后一个元素)。string_x [start: stop: step]可以给出子串,具体来说是start,start+step,...,step取负数可以反向字符串(如s[::-1]为翻转字符串),此时start大于等于stop才能取出子串。
string.lower()/string.upper()可以进行大写→小写/反之的操作。
string.replace(oldvalue, newvalue, count)返回把count个oldvalue替换为newvalue的string,默认全替换。
string.count(value, start, end)统计[start,end)中子串value的出现次数。
string.find(value, start, end)返回[start,end)中子串value第一次出现的位置,如无则返回-1。
string.split(separator, maxsplit)返回把string中按子串separator切分最多maxsplit次成的list。separator默认空格,maxsplit默认-1即全部切分。
string.startswith(value, start, end)/string.endswith(value, start, end)返回bool值,判断string是否以子串value起始/结尾。start/end默认是全序列。
string.strip(characters)/.lstrip(characters)/.rstrip(characters)返回string去除了起始和结尾/起始/结尾连续的字符characters的串,如果characters是字符串,那就去除全部起始结尾连续字符属于set(characters)中的串。characters默认为空格。
string.join(sequence)为将字符串的序列sequence中字符串连接起来,每两个相邻字符串中间插上一个string。
string.format(s1,s2,...)可用于格式化字符串,具体来说string中的{n}会被替换为sn,如果每一个括号都不填数那么默认从0开始依次增加(要么都填要么都不填)。
字符串有许多前缀。
| 前缀 | 功能 | 示例 | 说明 |
|---|---|---|---|
| r | 原始字符串字面量,阻止字符串中字符被解释为转义字符。
|
r'C:\Program Files\Python'便会使得字符串原样成为C:\Program Files\Python|
| b | 字节字符串字面量,表示字符串以字节序列的形式存储。 |
b'hello' | 主要用于处理二进制数据,例如文件I/O。 |
| f | f-字符串 (Formatted String
Literals),允许在字符串中嵌入表达式。 |
f'{name} is {age} years old' |
使用花括号{}将表达式嵌入到字符串中,并进行格式化。 |
list的+,*的用法与string相同,但list可以修改。
del a[i]可用来删去list中index为i的项,类似的也可以删去片段。
sum(list), max(list), min(list)
返回list的求和、最大值、最小值
list.append(elmnt)将elmnt加入到list结尾
list.extend(seq)将列表seq放在list结尾
list.insert(pos, elmnt)在pos位插入elmnt(原list[pos]向后移动)
list.pop(pos)删去list[pos]并将其返回。默认pos=-1,即删结尾元素。
list.remove(elmnt)将elmnt在list中第一次出现的位置删去,不返回值。
list.count(value)
list.index(elmnt)返回elmnt在list中第一次出现的位置
list.sort(reverse=True|False, key=myFunc)默认reverse=False,key为自定义的比较函数(默认<)
list.reverse()翻转list
tuple有序且不可变,有通常的指标、切片、+*操作。
elmnt in/not in tuple是bool值,表达elmnt在/不在tuple中。
len(),sum(),min(),max(),sorted(),count(),index()对于tuple均照常(sorted返回list)。
Tuple可以一次将多个分量以坐标形式(如pos = (x, y, z))packing起来,也可以按分量分别赋值给以逗号分隔开的多个变量(如x, y, z = pos)。
zip()可将多个list/tuple/string等打包成按分量的tuple并返回一个tuple的迭代器,用如list()可将之list化,合并按最短的那个为准(如list(zip([1,
2], [1, 2, 3]))是[(1, 1), (2, 2)])
Set无序而且不包含重复元素,可以包含unchangeable
objects(如number,string,tuple),但不能包含changeable
objects(如list,dictionary)。
用大括号如正常数学中那样可以创建一个集合。
Set中有照常的in、not in、len()、sorted()(sorted返回list)。
set1 & set2或set1.intersection(set2)是交集运算(均为返回交集但不修改原集合),同理|和.union()并,-和.difference()差,^和.symmetric_difference()是对称差。
set.add(elmnt)添加elmnt。
set.remove(item)删去item,如果不存在会报错。
set.discard(value)删去value,如果不存在不会报错。
set(list/string)可以将list/string转换为set
x.issubset(y)/.issuperset(y)判断x是否是y的子集/父集
Dictionary是无序的查找表,由(key,value)对组成,key只能是不可变对象,一key不可重复,value可以重复。
Dictionary可以通过如{ key1 : value1, key2 : value2, key3 : value3 }的大括号创建,也可通过如dict(a = 'a', b = 'b', t = 't')的用法创建,也可通过如dict([('one', 1), ('two', 2), ('three', 3)])的方式创建(里面dict()内小中括号并无区别,list和tuple都一样)。
dictionary_name[key] = value可以在dict中加入或更新key的value。
del dict[key]可以remove掉key,没有时会报错。
in和not in可以key判断在或不在字典中。
dict.keys()/.values()/.items()返回dict的key/value/(key,
value)的tuple组成的list。
dict.get(keyname, value)返回keyname对应的值,如不存在返回value。value默认为None。
dict.update(iterable)用可迭代的iterable来更新dict,可迭代的如某个dictionary或者(key,value)的list等等。
dict.pop(key)/.popitem(key)romove掉key并返回其value/(可以看作随机remove)remove掉并返回最后一个key-value对,没有时会报错。
print
以特定格式输出可以考虑modulo operator %,format()和f-strings。
sorted
sorted(iterable, cmp=None, key=None, reverse=False)对任何可迭代对象iterable排序并返回排序后的可迭代对象。例如sorted(list, reverse=True/False)返回list排序后的序列,默认从小到大排序(默认reverse=False),事实上迭代器都可以(如
reversed
和sorted同理。
map
map(function, iterable, ...)对参数序列iterable中每一个元素调用function。
eval()
eval(expression[, globals[, locals]])用于执行一个字符串表达式expression。
next()
next(iterable[, default])返回迭代器的下一个项目。default可选,用于设置在没有下一个元素时返回该默认值,如果不设置,又没有下一个元素则会触发
StopIteration 异常。
1. 对任意有限集
2.
f.i.p.无非紧性的逆否形式,因而自然等价于紧。
2024.9.27 xzq告诉我这个无非循环表示法,发现确实如此
在试图更清楚地表示出置换群的群结构时(例如画出更好看的乘法表等),我发现一种将
考虑将 更进一步的,置换乘法如
直观考虑的话,例如在1处放一个质点,被
我们熟知有柯西-黎曼方程
更进一步的,
事实上因为 绿、紫、红、蓝部分分别为
定义Wirtinger导数
这里
此时C-R方程可以被简单地表示为
为了解释考虑一个有启发性的例子。
设
Ahlfors - Complex Analysis
Borcherds的网课第五节
题破山寺后禅院 常建
清晨入古寺,初日照高林。
曲径通幽处,禅房花木深。
山光悦鸟性,潭影空人心。
万籁此俱寂,但余钟磬音。
> 空、透明、宁静、寂静的声音、柔和天光
送僧归日本 钱起
上国随缘住,来途若梦行。
浮天沧海远,去世法舟轻。
水月通禅寂,鱼龙听梵声。
惟怜一灯影,万里眼中明。
> 安宁、夜晚、安静的窃窃私语、轻轻的浪花声、灯火
寻隐者不遇 贾岛
松下问童子,言师采药去。
只在此山中,云深不知处。
> 雾气
鹿柴 王维
空山不见人,但闻人语响。
返景入深林,复照青苔上。
饮酒其五 陶渊明
结庐在人境,而无车马喧。
问君何能尔?心远地自偏。
采菊东篱下,悠然见南山。
山气日夕佳,飞鸟相与还。
此中有真意,欲辨已忘言。
归园田居其一 陶渊明
少无适俗韵,性本爱丘山。
误落尘网中,一去三十年。
羁鸟恋旧林,池鱼思故渊。
开荒南野际,守拙归园田。
方宅十余亩,草屋八九间。
榆柳荫后檐,桃李罗堂前。
暧暧远人村,依依墟里烟。
狗吠深巷中,鸡鸣桑树颠。
户庭无尘杂,虚室有余闲。
久在樊笼里,复得返自然。
辛丑岁七月赴假还江陵夜行涂口 陶渊明
闲居三十载,遂与尘事冥。
诗书敦宿好,林园无世情。
如何舍此去,遥遥至南荆!
叩枻新秋月,临流别友生。
凉风起将夕,夜景湛虚明。
昭昭天宇阔,皛皛川上平。
怀役不遑寐,中宵尚孤征。
商歌非吾事,依依在耦耕。
投冠旋旧墟,不为好爵萦。
养真衡茅下,庶以善自名。
> 星辰、晶莹、清澈、清凉、夜色、明亮
积雨辋川庄作 王维
积雨空林烟火迟,蒸藜炊黍饷东菑。
漠漠水田飞白鹭,阴阴夏木啭黄鹂。
山中习静观朝槿,松下清斋折露葵。
野老与人争席罢,海鸥何事更相疑。
> 闲适、清新、亲近、自由、空阔、晶莹
辋川闲居赠裴秀才迪 王维
寒山转苍翠,秋水日潺湲。
倚杖柴门外,临风听暮蝉。
渡头馀落日,墟里上孤烟。
复值接舆醉,狂歌五柳前。
下终南山过斛斯山人宿置酒 李白
暮从碧山下,山月随人归。
却顾所来径,苍苍横翠微。
相携及田家,童稚开荆扉。
绿竹入幽径,青萝拂行衣。
欢言得所憩,美酒聊共挥。
长歌吟松风,曲尽河星稀。
我醉君复乐,陶然共忘机。
归嵩山作 王维
清川带长薄,车马去闲闲。
流水如有意,暮禽相与还。
荒城临古渡,落日满秋山。
迢递嵩高下,归来且闭关。
溪居 柳宗元 (断章取义)
久为簪组累,幸此南夷谪。
闲依农圃邻,偶似山林客。
晓耕翻露草,夜榜响溪石。
来往不逢人,长歌楚天碧。
估客昼眠知浪静,舟人夜语觉潮生。 (断章取义×2)
春宿左省 杜甫 (断章取义×2)
花隐掖垣暮,啾啾栖鸟过。
星临万户动,月傍九霄多。
不寝听金钥,因风想玉珂。
明朝有封事,数问夜如何。