@@ -43,6 +43,7 @@ variable {X Y Z : Scheme.{u}} (𝒰 : OpenCover.{u} X) (f : X ⟶ Z) (g : Y ⟶
4343variable [∀ i, HasPullback (𝒰.f i ≫ f) g]
4444
4545/-- The intersection of `Uᵢ ×[Z] Y` and `Uⱼ ×[Z] Y` is given by (Uᵢ ×[ Z ] Y) ×[ X ] Uⱼ -/
46+ @[implicit_reducible]
4647def v (i j : 𝒰.I₀) : Scheme :=
4748 pullback ((pullback.fst (𝒰.f i ≫ f) g) ≫ 𝒰.f i) (𝒰.f j)
4849
@@ -59,30 +60,26 @@ def t (i j : 𝒰.I₀) : v 𝒰 f g i j ⟶ v 𝒰 f g j i := by
5960 · rw [pullbackSymmetry_hom_comp_snd_assoc, pullback.condition_assoc, Category.comp_id]
6061 · rw [Category.comp_id, Category.id_comp]
6162
62- set_option backward.isDefEq.respectTransparency false in
6363@ [simp, reassoc]
6464theorem t_fst_fst (i j : 𝒰.I₀) : t 𝒰 f g i j ≫ pullback.fst _ _ ≫ pullback.fst _ _ =
6565 pullback.snd _ _ := by
6666 simp only [t, Category.assoc, pullbackSymmetry_hom_comp_fst_assoc, pullbackAssoc_hom_snd_fst,
6767 pullback.lift_fst_assoc, pullbackSymmetry_hom_comp_snd, pullbackAssoc_inv_fst_fst,
6868 pullbackSymmetry_hom_comp_fst]
6969
70- set_option backward.isDefEq.respectTransparency false in
7170@ [simp, reassoc]
7271theorem t_fst_snd (i j : 𝒰.I₀) :
7372 t 𝒰 f g i j ≫ pullback.fst _ _ ≫ pullback.snd _ _ = pullback.fst _ _ ≫ pullback.snd _ _ := by
7473 simp only [t, Category.assoc, pullbackSymmetry_hom_comp_fst_assoc, pullbackAssoc_hom_snd_snd,
7574 pullback.lift_snd, Category.comp_id, pullbackAssoc_inv_snd, pullbackSymmetry_hom_comp_snd_assoc]
7675
77- set_option backward.isDefEq.respectTransparency false in
7876@ [simp, reassoc]
7977theorem t_snd (i j : 𝒰.I₀) : t 𝒰 f g i j ≫ pullback.snd _ _ =
8078 pullback.fst _ _ ≫ pullback.fst _ _ := by
8179 simp only [t, Category.assoc, pullbackSymmetry_hom_comp_snd, pullbackAssoc_hom_fst,
8280 pullback.lift_fst_assoc, pullbackSymmetry_hom_comp_fst, pullbackAssoc_inv_fst_snd,
8381 pullbackSymmetry_hom_comp_snd_assoc]
8482
85- set_option backward.isDefEq.respectTransparency false in
8683theorem t_id (i : 𝒰.I₀) : t 𝒰 f g i i = 𝟙 _ := by
8784 apply pullback.hom_ext <;> rw [Category.id_comp]
8885 · apply pullback.hom_ext
@@ -94,7 +91,6 @@ theorem t_id (i : 𝒰.I₀) : t 𝒰 f g i i = 𝟙 _ := by
9491abbrev fV (i j : 𝒰.I₀) : v 𝒰 f g i j ⟶ pullback (𝒰.f i ≫ f) g :=
9592 pullback.fst _ _
9693
97- set_option backward.isDefEq.respectTransparency false in
9894/-- The map `((Xᵢ ×[Z] Y) ×[X] Xⱼ) ×[Xᵢ ×[Z] Y] ((Xᵢ ×[Z] Y) ×[X] Xₖ)` ⟶
9995`((Xⱼ ×[Z] Y) ×[X] Xₖ) ×[Xⱼ ×[Z] Y] ((Xⱼ ×[Z] Y) ×[X] Xᵢ)` needed for gluing -/
10096def t' (i j k : 𝒰.I₀) :
@@ -106,7 +102,6 @@ def t' (i j k : 𝒰.I₀) :
106102 · simp_rw [Category.comp_id, t_fst_fst_assoc, ← pullback.condition]
107103 · rw [Category.comp_id, Category.id_comp]
108104
109- set_option backward.isDefEq.respectTransparency false in
110105@ [simp, reassoc]
111106theorem t'_fst_fst_fst (i j k : 𝒰.I₀) :
112107 t' 𝒰 f g i j k ≫ pullback.fst _ _ ≫ pullback.fst _ _ ≫ pullback.fst _ _ =
@@ -115,7 +110,6 @@ theorem t'_fst_fst_fst (i j k : 𝒰.I₀) :
115110 pullbackRightPullbackFstIso_inv_snd_fst_assoc, pullback.lift_fst_assoc, t_fst_fst,
116111 pullbackRightPullbackFstIso_hom_fst_assoc]
117112
118- set_option backward.isDefEq.respectTransparency false in
119113@ [simp, reassoc]
120114theorem t'_fst_fst_snd (i j k : 𝒰.I₀) :
121115 t' 𝒰 f g i j k ≫ pullback.fst _ _ ≫ pullback.fst _ _ ≫ pullback.snd _ _ =
@@ -124,7 +118,6 @@ theorem t'_fst_fst_snd (i j k : 𝒰.I₀) :
124118 pullbackRightPullbackFstIso_inv_snd_fst_assoc, pullback.lift_fst_assoc, t_fst_snd,
125119 pullbackRightPullbackFstIso_hom_fst_assoc]
126120
127- set_option backward.isDefEq.respectTransparency false in
128121@ [simp, reassoc]
129122theorem t'_fst_snd (i j k : 𝒰.I₀) :
130123 t' 𝒰 f g i j k ≫ pullback.fst _ _ ≫ pullback.snd _ _ =
@@ -133,7 +126,6 @@ theorem t'_fst_snd (i j k : 𝒰.I₀) :
133126 pullbackRightPullbackFstIso_inv_snd_snd, pullback.lift_snd, Category.comp_id,
134127 pullbackRightPullbackFstIso_hom_snd]
135128
136- set_option backward.isDefEq.respectTransparency false in
137129@ [simp, reassoc]
138130theorem t'_snd_fst_fst (i j k : 𝒰.I₀) :
139131 t' 𝒰 f g i j k ≫ pullback.snd _ _ ≫ pullback.fst _ _ ≫ pullback.fst _ _ =
@@ -142,7 +134,6 @@ theorem t'_snd_fst_fst (i j k : 𝒰.I₀) :
142134 pullbackRightPullbackFstIso_inv_fst_assoc, pullback.lift_fst_assoc, t_fst_fst,
143135 pullbackRightPullbackFstIso_hom_fst_assoc]
144136
145- set_option backward.isDefEq.respectTransparency false in
146137@ [simp, reassoc]
147138theorem t'_snd_fst_snd (i j k : 𝒰.I₀) :
148139 t' 𝒰 f g i j k ≫ pullback.snd _ _ ≫ pullback.fst _ _ ≫ pullback.snd _ _ =
@@ -151,7 +142,6 @@ theorem t'_snd_fst_snd (i j k : 𝒰.I₀) :
151142 pullbackRightPullbackFstIso_inv_fst_assoc, pullback.lift_fst_assoc, t_fst_snd,
152143 pullbackRightPullbackFstIso_hom_fst_assoc]
153144
154- set_option backward.isDefEq.respectTransparency false in
155145@ [simp, reassoc]
156146theorem t'_snd_snd (i j k : 𝒰.I₀) :
157147 t' 𝒰 f g i j k ≫ pullback.snd _ _ ≫ pullback.snd _ _ =
@@ -160,43 +150,36 @@ theorem t'_snd_snd (i j k : 𝒰.I₀) :
160150 pullbackRightPullbackFstIso_inv_fst_assoc, pullback.lift_fst_assoc, t_snd,
161151 pullbackRightPullbackFstIso_hom_fst_assoc]
162152
163- set_option backward.isDefEq.respectTransparency false in
164153theorem cocycle_fst_fst_fst (i j k : 𝒰.I₀) :
165154 t' 𝒰 f g i j k ≫ t' 𝒰 f g j k i ≫ t' 𝒰 f g k i j ≫ pullback.fst _ _ ≫ pullback.fst _ _ ≫
166155 pullback.fst _ _ = pullback.fst _ _ ≫ pullback.fst _ _ ≫ pullback.fst _ _ := by
167156 simp only [t'_fst_fst_fst, t'_fst_snd, t'_snd_snd]
168157
169- set_option backward.isDefEq.respectTransparency false in
170158theorem cocycle_fst_fst_snd (i j k : 𝒰.I₀) :
171159 t' 𝒰 f g i j k ≫ t' 𝒰 f g j k i ≫ t' 𝒰 f g k i j ≫ pullback.fst _ _ ≫ pullback.fst _ _ ≫
172160 pullback.snd _ _ = pullback.fst _ _ ≫ pullback.fst _ _ ≫ pullback.snd _ _ := by
173161 simp only [t'_fst_fst_snd]
174162
175- set_option backward.isDefEq.respectTransparency false in
176163theorem cocycle_fst_snd (i j k : 𝒰.I₀) :
177164 t' 𝒰 f g i j k ≫ t' 𝒰 f g j k i ≫ t' 𝒰 f g k i j ≫ pullback.fst _ _ ≫ pullback.snd _ _ =
178165 pullback.fst _ _ ≫ pullback.snd _ _ := by
179166 simp only [t'_fst_snd, t'_snd_snd, t'_fst_fst_fst]
180167
181- set_option backward.isDefEq.respectTransparency false in
182168theorem cocycle_snd_fst_fst (i j k : 𝒰.I₀) :
183169 t' 𝒰 f g i j k ≫ t' 𝒰 f g j k i ≫ t' 𝒰 f g k i j ≫ pullback.snd _ _ ≫ pullback.fst _ _ ≫
184170 pullback.fst _ _ = pullback.snd _ _ ≫ pullback.fst _ _ ≫ pullback.fst _ _ := by
185171 simp only [pullback.condition_assoc, t'_snd_fst_fst, t'_fst_snd, t'_snd_snd]
186172
187- set_option backward.isDefEq.respectTransparency false in
188173theorem cocycle_snd_fst_snd (i j k : 𝒰.I₀) :
189174 t' 𝒰 f g i j k ≫ t' 𝒰 f g j k i ≫ t' 𝒰 f g k i j ≫ pullback.snd _ _ ≫ pullback.fst _ _ ≫
190175 pullback.snd _ _ = pullback.snd _ _ ≫ pullback.fst _ _ ≫ pullback.snd _ _ := by
191176 simp only [pullback.condition_assoc, t'_snd_fst_snd]
192177
193- set_option backward.isDefEq.respectTransparency false in
194178theorem cocycle_snd_snd (i j k : 𝒰.I₀) :
195179 t' 𝒰 f g i j k ≫ t' 𝒰 f g j k i ≫ t' 𝒰 f g k i j ≫ pullback.snd _ _ ≫ pullback.snd _ _ =
196180 pullback.snd _ _ ≫ pullback.snd _ _ := by
197181 simp only [t'_snd_snd, t'_fst_fst_fst, t'_fst_snd]
198182
199- set_option backward.isDefEq.respectTransparency false in
200183-- `by tidy` should solve it, but it times out.
201184theorem cocycle (i j k : 𝒰.I₀) : t' 𝒰 f g i j k ≫ t' 𝒰 f g j k i ≫ t' 𝒰 f g k i j = 𝟙 _ := by
202185 apply pullback.hom_ext <;> rw [Category.id_comp]
@@ -211,7 +194,6 @@ theorem cocycle (i j k : 𝒰.I₀) : t' 𝒰 f g i j k ≫ t' 𝒰 f g j k i
211194 · simp_rw [Category.assoc, cocycle_snd_fst_snd 𝒰 f g i j k]
212195 · simp_rw [Category.assoc, cocycle_snd_snd 𝒰 f g i j k]
213196
214- set_option backward.isDefEq.respectTransparency false in
215197/-- Given `Uᵢ ×[Z] Y`, this is the glued fibred product `X ×[Z] Y`. -/
216198@ [simps U V f t t', simps -isSimp J]
217199def gluing : Scheme.GlueData.{u} where
@@ -237,13 +219,11 @@ def gluing : Scheme.GlueData.{u} where
237219lemma gluing_ι (j : 𝒰.I₀) :
238220 (gluing 𝒰 f g).ι j = Multicoequalizer.π (gluing 𝒰 f g).diagram j := rfl
239221
240- set_option backward.isDefEq.respectTransparency false in
241222/-- The first projection from the glued scheme into `X`. -/
242223def p1 : (gluing 𝒰 f g).glued ⟶ X := by
243224 apply Multicoequalizer.desc (gluing 𝒰 f g).diagram _ fun i ↦ pullback.fst _ _ ≫ 𝒰.f i
244225 simp [t_fst_fst_assoc, ← pullback.condition]
245226
246- set_option backward.isDefEq.respectTransparency false in
247227/-- The second projection from the glued scheme into `Y`. -/
248228def p2 : (gluing 𝒰 f g).glued ⟶ Y := by
249229 apply Multicoequalizer.desc _ _ fun i ↦ pullback.snd _ _
0 commit comments