2015-05-06 12:51:06 -07:00
|
|
|
import data.set
|
|
|
|
open set function eq.ops
|
|
|
|
|
|
|
|
variables {X Y Z : Type}
|
|
|
|
|
|
|
|
lemma image_compose (f : Y → X) (g : X → Y) (a : set X) : (f ∘ g) '[a] = f '[g '[a]] :=
|
|
|
|
setext (take z,
|
|
|
|
iff.intro
|
|
|
|
(assume Hz,
|
|
|
|
obtain x Hx₁ Hx₂, from Hz,
|
2015-06-10 17:00:47 -07:00
|
|
|
by repeat (apply mem_image | assumption | reflexivity))
|
2015-05-06 12:51:06 -07:00
|
|
|
(assume Hz,
|
|
|
|
obtain y [x Hz₁ Hz₂] Hy₂, from Hz,
|
2015-06-10 17:00:47 -07:00
|
|
|
by repeat (apply mem_image | assumption | esimp [compose] | rewrite Hz₂)))
|