import logic

theorem tst (a b : Prop) (H : a ↔ b) : b ↔ a
:= have H1 [visible] : a → b, -- We need to mark H1 as fact, otherwise it is not visible by tactics
   from iff.elim_left H,
   by rapply iff.intro;
      apply (assume Ha, H1 Ha);
      apply (assume Hb, iff.elim_right H Hb)

theorem tst2 (a b : Prop) (H : a ↔ b) : b ↔ a
:= have H1 [visible] : a → b,
   from iff.elim_left H,
   begin
     rapply iff.intro,
     apply (assume Ha, H1 Ha),
     apply (assume Hb, iff.elim_right H Hb)
   end
