Zulip Chat Archive

Stream: new members

Topic: Moving the forall around


Callum Cassidy-Nolan (Mar 07 2022 at 01:33):

I'm working through this proof:

def intersection_of_topologies {X : Type*} {ι : Sort*}
  (f : ι  topological_space X) : topological_space X :=
{ is_open := λ s,  i, (f i).is_open s,
  is_open_univ :=
  begin
    intro i,
    exact (f i).is_open_univ,
  end,
  is_open_inter :=
  begin
    intros s t hos hot i,
    specialize hos i,
    specialize hot i,
    exact (f i).is_open_inter s t hos hot,
  end,
  is_open_sUnion :=
  begin
    intros s ht j,
    have x := (f j).is_open_sUnion s,
  end
   }

the tactic state looks like this:

tactic failed, there are unsolved goals
state:
X : Type ?,
ι : Sort ?,
f : ι  topological_space X,
s : set (set X),
ht :  (t : set X), t  s   (i : ι), (f i).is_open t,
j : ι,
x : ( (t : set X), t  s  (f j).is_open t)  (f j).is_open (⋃₀ s)
 (f j).is_open (⋃₀ s)

As you can see x and ht look quite similar, and I wish I could write exact x ht to finish the proof, but that won't work. It's like I need to use specialize but only on the right side of the implication of ht, I haven't been able to figure out how to do this, but I have tried writing rw imp_forall_iff at ht to bring the quantifier out front, but it didn't work either saying

rewrite tactic failed, did not find instance of the pattern in the target expression
  ?m_1  Π (x : ?m_2), ?m_3 x

Any tips on how to move forward with the proof?

Callum Cassidy-Nolan (Mar 07 2022 at 01:44):

The line have h : ∀ (t : set X), t ∈ s → (f j).is_open t, by tauto, suggested by Eric R solves it, is there a more explicit way to do this though?

Junyan Xu (Mar 07 2022 at 01:52):

It's surprising to me that simp_rw imp_forall_iff at ht also doesn't work, which should be able to rewrite under quantifier. The tactic-mode solution is apply x, intros t h, exact ht t h j, and if you want the term you'd do exact x (λ t h, ht t h j),


Last updated: Dec 20 2023 at 11:08 UTC