Zulip Chat Archive

Stream: maths

Topic: Identifying equal (?) sets


Ashvni Narayanan (Jul 29 2021 at 17:04):

def clopen_basis' : set (clopen_sets ((zmod d) × ℤ_[p])) :=
{x : clopen_sets ((zmod d) × ℤ_[p]) |  (n : ) (a : zmod (d * (p^n))),
  x = ⟨({a} : set (zmod d)).prod (set.preimage (padic_int.to_zmod_pow n) {(a : zmod (p^n))}),
    is_clopen_prod (is_clopen_discrete (a : zmod d))
      (proj_lim_preimage_clopen p d n a)  }

The definition above describes a clopen basis, of type set (clopen_sets ((zmod d) × ℤ_[p])) . I am trying to prove a lemma which gives me as input U : clopen_sets clopen_sets ((zmod d) × ℤ_[p]) and hU : U ∈ clopen_basis' p d. I want to use this information to construct V : clopen_basis' p d, such that, (mathematically) V = U. When I try set V := ⟨U, hU⟩ with hV,, I get the following error :

invalid constructor ...⟩, expected type is not an inductive type
  ?m_1

However, if I do have V : clopen_basis' p d := ⟨U, hU⟩, this works. This is not useful though, since Lean does not remember the proof of the statement.

Another option that works is set V := subtype.mk U hU with hV, however, it does not recognize V to have the desired type, instead, V has type {x // x ∈ clopen_basis' p d}. This makes complete sense, but there must be a way to identify this to be the same as clopen_basis' p d.

Any help is appreciated, thank you!

Adam Topaz (Jul 29 2021 at 17:07):

Does set V : clopen_basis' p d := ⟨U, hU⟩ with hV work? It's hard to tell what's going on without a #mwe

Ashvni Narayanan (Jul 29 2021 at 17:08):

Apologies, it is a little difficult to provide an MWE for this, let me try.

Ashvni Narayanan (Jul 29 2021 at 17:09):

Adam Topaz said:

Does set V : clopen_basis' p d := ⟨U, hU⟩ with hV work? It's hard to tell what's going on without a #mwe

I get the following error :

invalid definev tactic, value has type
  {x // x  clopen_basis' p d}
but is expected to have type
  clopen_basis' p d

Adam Topaz (Jul 29 2021 at 17:11):

Ah. Try set V : ↥(clopen_basis' p d) := ⟨U, hU⟩ with hV

Ashvni Narayanan (Jul 29 2021 at 17:12):

Ah, thank you!
Alternatively, I just realized I could convert clopen_basis' p d into a subtype, and that might just end up working out.

Adam Topaz (Jul 29 2021 at 17:14):

I don't really know what you're trying to prove here, but you might want to use docs#is_topological_basis_clopen

Adam Topaz (Jul 29 2021 at 17:14):

and docs#is_topological_basis_infi

Ashvni Narayanan (Jul 29 2021 at 17:17):

I will keep those in mind, thank you! :)

Adam Topaz (Jul 29 2021 at 17:18):

docs#topological_space.is_topological_basis.prod might also be useful


Last updated: Dec 20 2023 at 11:08 UTC