diff --git a/Notes/known_bugs.txt b/Notes/known_bugs.txt index 6554863..f3dbd80 100644 --- a/Notes/known_bugs.txt +++ b/Notes/known_bugs.txt @@ -34,3 +34,7 @@ this has the additional advantage that if f and/or g are defined using induction - unfold [foo] also does various (sometimes unwanted) reductions (as if you called esimp) - The Emacs flycheck mode has a hard time with nonrelative paths to files in the same directory. This means that for importing files from the Lean 2 HoTT library use absolute paths (e.g. `import algebra.group`) and for importing files in the Spectral repository use relative paths (e.g. for a file in the `homotopy` folder use `import ..algebra.subgroup`) + +- The induction tactic doesn't fail if it fails to solve the type class constraint. This means that it will accept the tactics until the end of the tactic proof, when it raises the error that the term has unsolved metavariables + +- Sometimes the lean-server doesn't give information anymore (and then it causes tab complete to hang). In this case, execute `M-x lean-server-restart-all-processes`. You can stop tab-complete from hanging by pressing `C-g` multiple times, once for each time you pressed TAB. diff --git a/homotopy/EM.hlean b/homotopy/EM.hlean index beb3119..9bdf616 100644 --- a/homotopy/EM.hlean +++ b/homotopy/EM.hlean @@ -583,4 +583,77 @@ namespace EM --EM_spectrum (πₛ[s] (spi X Y)) k ≃* spi X (λx, EM_spectrum (πₛ[s] (Y x))) k + /- fiber of EM_functor -/ + open fiber + definition is_trunc_fiber_EM1_functor {G H : Group} (φ : G →g H) : is_trunc 1 (pfiber (EM1_functor φ)) := + !is_trunc_fiber + + definition is_conn_fiber_EM1_functor {G H : Group} (φ : G →g H) : is_conn -1 (pfiber (EM1_functor φ)) := + begin + apply is_conn_fiber, apply is_conn_of_is_conn_succ + end + + definition is_trunc_fiber_EMadd1_functor {G H : AbGroup} (φ : G →g H) (n : ℕ) : + is_trunc (n+1) (pfiber (EMadd1_functor φ n)) := + begin + apply is_trunc_fiber + end + + definition is_conn_fiber_EMadd1_functor {G H : AbGroup} (φ : G →g H) (n : ℕ) : + is_conn (n.-1) (pfiber (EMadd1_functor φ n)) := + begin + apply is_conn_fiber, apply is_conn_of_is_conn_succ, apply is_conn_EMadd1, + apply is_conn_EMadd1 + end + + definition is_trunc_fiber_EM_functor {G H : AbGroup} (φ : G →g H) (n : ℕ) : + is_trunc n (pfiber (EM_functor φ n)) := + begin + apply is_trunc_fiber + end + + definition is_conn_fiber_EM_functor {G H : AbGroup} (φ : G →g H) (n : ℕ) : + is_conn (n.-2) (pfiber (EM_functor φ n)) := + begin + apply is_conn_fiber, apply is_conn_of_is_conn_succ + end + + section --move + open chain_complex succ_str + -- definition isomorphism_kernel_of_trivial {N : succ_str} (X : chain_complex N) {n : N} + -- (H1 : is_exact_at X n) (H2 : is_exact_at X (S n)) + -- (HX1 : is_contr (X n)) (HG2 : pgroup (X (S n))) + -- : Group_of_pgroup (X (S n)) ≃g kernel (homomorphism.mk (cc_to_fn X _) _) := + -- _ + + + end + -- definition is_equiv_of_trivial (X : chain_complex N) {n : N} + -- (H1 : is_exact_at X n) (H2 : is_exact_at X (S n)) + -- [HX1 : is_contr (X n)] [HX2 : is_contr (X (S (S (S n))))] + -- [pgroup (X (S n))] [pgroup (X (S (S n)))] [is_mul_hom (cc_to_fn X (S n))] + -- : is_equiv (cc_to_fn X (S n)) := + -- begin + -- apply is_equiv_of_is_surjective_of_is_embedding, + -- { apply is_embedding_of_trivial X, apply H2}, + -- { apply is_surjective_of_trivial X, apply H1}, + -- end + + + definition homotopy_group_fiber_EM1_functor {G H : Group} (φ : G →g H) : + π₁ (pfiber (EM1_functor φ)) ≃g kernel φ := + sorry + + definition homotopy_group_fiber_EMadd1_functor {G H : AbGroup} (φ : G →g H) (n : ℕ) : + πg[n+1] (pfiber (EMadd1_functor φ n)) ≃g kernel φ := + sorry + + /- TODO: move-/ + definition cokernel {G H : AbGroup} (φ : G →g H) : AbGroup := + quotient_ab_group (image_subgroup φ) + + definition trunc_fiber_EM1_functor {G H : Group} (φ : G →g H) : + ptrunc 0 (pfiber (EM1_functor φ)) ≃* sorry := + sorry + end EM diff --git a/move_to_lib.hlean b/move_to_lib.hlean index 412e8de..dfa5ddc 100644 --- a/move_to_lib.hlean +++ b/move_to_lib.hlean @@ -600,6 +600,16 @@ namespace is_conn open unit trunc_index nat is_trunc pointed.ops + definition is_conn_zero {A : Type} (a₀ : trunc 0 A) (p : Πa a' : A, ∥ a = a' ∥) : is_conn 0 A := + is_conn_succ_intro a₀ (λa a', is_conn_minus_one _ (p a a')) + + definition is_conn_zero_pointed {A : Type*} (p : Πa a' : A, ∥ a = a' ∥) : is_conn 0 A := + is_conn_zero (tr pt) p + + definition is_conn_fiber (n : ℕ₋₂) {A B : Type} (f : A → B) (b : B) [is_conn n A] [is_conn (n.+1) B] : + is_conn n (fiber f b) := + is_conn_equiv_closed_rev _ !fiber.sigma_char _ + definition is_conn_fun_compose {n : ℕ₋₂} {A B C : Type} (g : B → C) (f : A → B) (H : is_conn_fun n g) (K : is_conn_fun n f) : is_conn_fun n (g ∘ f) := sorry