split

The split tactic works on goals such as P Q or P Q. It breaks up one “compound” goal into one or more simpler goals. More formally, if the goal is a structure, that is, an inductive type with one constructor, split will turn the goal into goals asking for terms of all the types needed for the constructor.

Example (∧)

If the goal is

P Q : Prop,
⊢ P ∧ Q

then split changes this one goal into two goals, namely

P Q : Prop,
⊢ P

and

P Q : Prop,
⊢ Q

Here is a fully worked example.

example (P Q : Prop) (HP : P) (HQ : Q) : P  Q :=
begin
  split,
  { -- first goal is P
    exact HP
  },
  { -- second goal is Q
    exact HQ
  }
end

Example (↔)

A term of type P Q is constructed in Lean by giving terms of type P Q and Q P.

example (P Q : Prop) (HPQ : P  Q) (HQP : Q  P) : P  Q :=
begin
  split,
  { -- first goal is P → Q
    exact HPQ
  },
  { -- second goal is Q → P
    exact HQP
  }
end