exit
open nat

-- definition id [unfold_full] {A : Type} (a : A) := a
definition compose {A B C : Type} (g : B → C) (f : A → B) (a : A) := g (f a)
notation g ∘ f := compose g f

example (a b : nat) (H : a = b) : id a = b :=
begin
  esimp,
  state,
  exact H
end

example (a b : nat) (H : a = b) : (id ∘ id) a = b :=
begin
  esimp,
  state,
  exact H
end

attribute compose [unfold_full]

example (a b : nat) (H : a = b) : (id ∘ id) a = b :=
begin
  esimp,
  state,
  exact H
end
