Theorem composition_is_map

Theorem. composition_is_map
map f X Y → map g Y Z → map (g ∘ f) X Z
Proof
01. 1 ⊢ map f X Y, hypo.
02. 2 ⊢ map g Y Z, hypo.
03. 1 ⊢ function f ∧ dom f = X ∧ rng f ⊆ Y, map_unfold 1.
04. 2 ⊢ function g ∧ dom g = Y ∧ rng g ⊆ Z, map_unfold 2.
05. 1 ⊢ function f, conj_elimll 3.
06. 1 ⊢ dom f = X, conj_elimlr 3.
07. 1 ⊢ rng f ⊆ Y, conj_elimr 3.
08. 2 ⊢ function g, conj_elimll 4.
09. 2 ⊢ dom g = Y, conj_elimlr 4.
10. 2 ⊢ rng g ⊆ Z, conj_elimr 4.
11. ⊢ relation (g ∘ f), composition_is_relation.
12. ⊢ rng (g ∘ f) ⊆ rng g, rng_composition.
13. 2 ⊢ rng (g ∘ f) ⊆ Z, incl_trans 12 10.
14. ⊢ dom (g ∘ f) ⊆ dom f, dom_composition.
15. 1 ⊢ dom f ⊆ X, incl_from_eq 6.
16. 1 ⊢ dom (g ∘ f) ⊆ X, incl_trans 14 15.
17. 17 ⊢ x ∈ X, hypo.
18. 1, 17 ⊢ ∃y. y ∈ Y ∧ y = app f x, map_app_exists 1 17.
19. 19 ⊢ y ∈ Y ∧ y = app f x, hypo.
20. 19 ⊢ y ∈ Y, conj_eliml 19.
21. 19 ⊢ y = app f x, conj_elimr 19.
22. 1, 17, 19 ⊢ (x, y) ∈ f, map_app_elim 1 17 21.
23. 2, 19 ⊢ ∃z. z ∈ Z ∧ z = app g y, map_app_exists 2 20.
24. 24 ⊢ z ∈ Z ∧ z = app g y, hypo.
25. 24 ⊢ z ∈ Z, conj_eliml 24.
26. 24 ⊢ z = app g y, conj_elimr 24.
27. 2, 19, 24 ⊢ (y, z) ∈ g, map_app_elim 2 20 26.
28. 1, 2, 17, 19, 24 ⊢ (x, z) ∈ g ∘ f, composition_intro 22 27.
29. 1, 2, 17, 19, 24 ⊢ x ∈ dom (g ∘ f), dom_intro 28.
30. 1, 2, 17, 19 ⊢ x ∈ dom (g ∘ f), ex_elim 23 29.
31. 1, 2, 17 ⊢ x ∈ dom (g ∘ f), ex_elim 18 30.
32. 1, 2 ⊢ x ∈ X → x ∈ dom (g ∘ f), subj_intro 31.
33. 1, 2 ⊢ ∀x. x ∈ X → x ∈ dom (g ∘ f), uq_intro 32.
34. 1, 2 ⊢ X ⊆ dom (g ∘ f), incl_intro 33.
35. 1, 2 ⊢ dom (g ∘ f) = X, incl_antisym 16 34.
36. 36 ⊢ (x, z1) ∈ g ∘ f, hypo.
37. 37 ⊢ (x, z2) ∈ g ∘ f, hypo.
38. 36 ⊢ ∃y. (x, y) ∈ f ∧ (y, z1) ∈ g, composition_elim 36.
39. 37 ⊢ ∃y. (x, y) ∈ f ∧ (y, z2) ∈ g, composition_elim 37.
40. 40 ⊢ (x, y1) ∈ f ∧ (y1, z1) ∈ g, hypo.
41. 41 ⊢ (x, y2) ∈ f ∧ (y2, z2) ∈ g, hypo.
42. 40 ⊢ (x, y1) ∈ f, conj_eliml 40.
43. 41 ⊢ (x, y2) ∈ f, conj_eliml 41.
44. 40 ⊢ (y1, z1) ∈ g, conj_elimr 40.
45. 41 ⊢ (y2, z2) ∈ g, conj_elimr 41.
46. 1, 40, 41 ⊢ y1 = y2, fn_unique_value 5 42 43.
47. 1, 40, 41 ⊢ (y1, z2) ∈ g, eq_subst_rev 46 45.
48. 1, 2, 40, 41 ⊢ z1 = z2, fn_unique_value 8 44 47.
49. 1, 2, 37, 40 ⊢ z1 = z2, ex_elim 39 48.
50. 1, 2, 36, 37 ⊢ z1 = z2, ex_elim 38 49.
51. 1, 2 ⊢ (x, z1) ∈ g ∘ f → (x, z2) ∈ g ∘ f → z1 = z2,
  subj_intro_ii 50.
52. 1, 2 ⊢ ∀z2. (x, z1) ∈ g ∘ f → (x, z2) ∈ g ∘ f → z1 = z2,
  uq_intro 51.
53. 1, 2 ⊢ ∀z1. ∀z2. (x, z1) ∈ g ∘ f → (x, z2) ∈ g ∘ f → z1 = z2,
  uq_intro 52.
54. 1, 2 ⊢ ∀x. ∀z1. ∀z2. (x, z1) ∈ g ∘ f → (x, z2) ∈ g ∘ f → z1 = z2,
  uq_intro 53.
55. 1, 2 ⊢ function (g ∘ f), function_intro 11 54.
56. 1, 2 ⊢ map (g ∘ f) X Z, map_intro 55 35 13.
composition_is_map. ⊢ map f X Y → map g Y Z → map (g ∘ f) X Z,
  subj_intro_ii 56.

Dependencies
The given proof depends on nine axioms:
comp, efq, eq_refl, eq_subst, ext, lem, pairing, subset, union.