Zulip Chat Archive

Stream: general

Topic: are proofs irrelevant?


Kenny Lau (Jun 15 2018 at 14:13):

(working example, far from minimal, sorry for that)
https://gist.github.com/kckennylau/4a009e228980fdbe9f6c879f9fa0eca5
Excerpt:

instance abelianization.topological_group (G : Type*) [topological_space G] [group G]
  [topological_group G] : topological_group (abelianization G) :=

topological_group.coinduced (quot.mk (rel G)) quot.exists_rep $ λ S hs,
have ( x : { x // quot.mk (rel G) x = 1}, (λ y, x.1 * y) ⁻¹' S)
    = quot.mk (rel G) ⁻¹' (quot.mk (rel G) '' S),
  from set.ext $ λ z,
  ⟨λ S, ⟨⟨g, h1, rfl, h2, g * z, h2, by simp [is_group_hom.mul (quot.mk (rel G)), h1],
  λ g, h1, h2, ⟨_, ⟨⟨g * z⁻¹, by simp [is_group_hom.mul (quot.mk (rel G)), is_group_hom.inv (quot.mk (rel G)), h2], rfl, by simp [h1]⟩⟩,
this  is_open_Union $ λ x : {x // quot.mk (rel G) x = 1},
continuous_mul continuous_const continuous_id _ hs

/-{ continuous_mul := λ S hs1, is_open_prod_iff.2 $
    have _ := is_open_prod_iff.1 (topological_monoid.continuous_mul G _ hs1),
    by refine quot.ind (λ x, _); refine quot.ind (λ y, _);
    from λ h, let ⟨u, v, hu, hv, hxu, hyv, H⟩ := this x y h in
    ⟨quot.mk _ '' u, quot.mk _ '' v,
    show is_open (quot.mk (rel G) ⁻¹' (quot.mk (rel G) '' u)),
      from have (⋃ x : { x // quot.mk (rel G) x = 1}, (λ y, x.1 * y) ⁻¹' u)
          = quot.mk (rel G) ⁻¹' (quot.mk (rel G) '' u),
        from set.ext $ λ z,
        ⟨λ ⟨S, ⟨⟨g, h1⟩, rfl⟩, h2⟩, ⟨g * z, h2, by simp [is_group_hom.mul (quot.mk (rel G)), h1]⟩,
        λ ⟨g, h1, h2⟩, ⟨_, ⟨⟨g * z⁻¹, by simp [is_group_hom.mul (quot.mk (rel G)), is_group_hom.inv (quot.mk (rel G)), h2]⟩, rfl⟩, by simp [h1]⟩⟩,
      this ▸ is_open_Union $ λ x : {x // quot.mk (rel G) x = 1},
      (continuous_mul continuous_const continuous_id) _ hu,
    show is_open (quot.mk (rel G) ⁻¹' (quot.mk (rel G) '' v)),
      from have (⋃ x : { x // quot.mk (rel G) x = 1}, (λ y, x.1 * y) ⁻¹' v)
          = quot.mk (rel G) ⁻¹' (quot.mk (rel G) '' v),
        from set.ext $ λ z,
        ⟨λ ⟨S, ⟨⟨g, h1⟩, rfl⟩, h2⟩, ⟨g * z, h2, by simp [is_group_hom.mul (quot.mk (rel G)), h1]⟩,
        λ ⟨g, h1, h2⟩, ⟨_, ⟨⟨g * z⁻¹, by simp [is_group_hom.mul (quot.mk (rel G)), is_group_hom.inv (quot.mk (rel G)), h2]⟩, rfl⟩, by simp [h1]⟩⟩,
      this ▸ is_open_Union $ λ x : {x // quot.mk (rel G) x = 1},
      (continuous_mul continuous_const continuous_id) _ hv,
    ⟨x, hxu, rfl⟩, ⟨y, hyv, rfl⟩,
    λ ⟨p, q⟩, by refine quot.induction_on p (λ m, _);
      refine quot.induction_on q (λ n, _);
      from λ ⟨⟨P, hp1, hp2⟩, ⟨Q, hq1, hq2⟩⟩,
      suffices quot.mk (rel G) P * quot.mk (rel G) Q ∈ S,
      by rw [hp2, hq2] at this; simpa using this,
      @H (P, Q) ⟨hp1, hq1⟩⟩,
  continuous_inv := λ S hs,
    show is_open (quot.mk (rel G) ⁻¹' ((λ p : abelianization G, p⁻¹) ⁻¹' S)),
    from have (λ p : G, p⁻¹) ⁻¹' (quot.mk (rel G) ⁻¹' S)
        = quot.mk (rel G) ⁻¹' ((λ p : abelianization G, p⁻¹) ⁻¹' S),
      from set.ext $ λ z, by simp [is_group_hom.inv (quot.mk (rel G))],
    this ▸ (topological_group.continuous_inv G _ $
      continuous_coinduced_rng _ hs) }-/

Kenny Lau (Jun 15 2018 at 14:13):

Problem: If I use the first proof, then there is error below; if I use the second proof, then there is no error.

Kenny Lau (Jun 15 2018 at 14:13):

@Mario Carneiro please help

Mario Carneiro (Jun 15 2018 at 14:16):

why would they be the same?

Kenny Lau (Jun 15 2018 at 14:16):

because they're just proofs?

Mario Carneiro (Jun 15 2018 at 14:16):

it's an instance

Kenny Lau (Jun 15 2018 at 14:17):

what should I do?

Kenny Lau (Jun 15 2018 at 14:19):

ah I solved it by making topological_group.coinduced a theorem


Last updated: Dec 20 2023 at 11:08 UTC