This is an inofficial mirror of http://metamath.tirix.org for personal testing of a visualizer extension only.
Description: The size of the image of a one-to-one function E under the range of a function F which is a one-to-one function into the domain of E equals the size of the function F . (Contributed by Alexander van der Vekens, 4-Feb-2018) (Proof shortened by AV, 4-May-2021)
| Ref | Expression | ||
|---|---|---|---|
| Assertion | hashimarn | ⊢ ( ( 𝐸 : dom 𝐸 –1-1→ ran 𝐸 ∧ 𝐸 ∈ 𝑉 ) → ( 𝐹 : ( 0 ..^ ( ♯ ‘ 𝐹 ) ) –1-1→ dom 𝐸 → ( ♯ ‘ ( 𝐸 “ ran 𝐹 ) ) = ( ♯ ‘ 𝐹 ) ) ) |
| Step | Hyp | Ref | Expression |
|---|---|---|---|
| 1 | f1f | ⊢ ( 𝐹 : ( 0 ..^ ( ♯ ‘ 𝐹 ) ) –1-1→ dom 𝐸 → 𝐹 : ( 0 ..^ ( ♯ ‘ 𝐹 ) ) ⟶ dom 𝐸 ) | |
| 2 | 1 | frnd | ⊢ ( 𝐹 : ( 0 ..^ ( ♯ ‘ 𝐹 ) ) –1-1→ dom 𝐸 → ran 𝐹 ⊆ dom 𝐸 ) |
| 3 | 2 | adantl | ⊢ ( ( ( 𝐸 : dom 𝐸 –1-1→ ran 𝐸 ∧ 𝐸 ∈ 𝑉 ) ∧ 𝐹 : ( 0 ..^ ( ♯ ‘ 𝐹 ) ) –1-1→ dom 𝐸 ) → ran 𝐹 ⊆ dom 𝐸 ) |
| 4 | ssdmres | ⊢ ( ran 𝐹 ⊆ dom 𝐸 ↔ dom ( 𝐸 ↾ ran 𝐹 ) = ran 𝐹 ) | |
| 5 | 3 4 | sylib | ⊢ ( ( ( 𝐸 : dom 𝐸 –1-1→ ran 𝐸 ∧ 𝐸 ∈ 𝑉 ) ∧ 𝐹 : ( 0 ..^ ( ♯ ‘ 𝐹 ) ) –1-1→ dom 𝐸 ) → dom ( 𝐸 ↾ ran 𝐹 ) = ran 𝐹 ) |
| 6 | 5 | fveq2d | ⊢ ( ( ( 𝐸 : dom 𝐸 –1-1→ ran 𝐸 ∧ 𝐸 ∈ 𝑉 ) ∧ 𝐹 : ( 0 ..^ ( ♯ ‘ 𝐹 ) ) –1-1→ dom 𝐸 ) → ( ♯ ‘ dom ( 𝐸 ↾ ran 𝐹 ) ) = ( ♯ ‘ ran 𝐹 ) ) |
| 7 | df-ima | ⊢ ( 𝐸 “ ran 𝐹 ) = ran ( 𝐸 ↾ ran 𝐹 ) | |
| 8 | 7 | fveq2i | ⊢ ( ♯ ‘ ( 𝐸 “ ran 𝐹 ) ) = ( ♯ ‘ ran ( 𝐸 ↾ ran 𝐹 ) ) |
| 9 | f1fun | ⊢ ( 𝐸 : dom 𝐸 –1-1→ ran 𝐸 → Fun 𝐸 ) | |
| 10 | funres | ⊢ ( Fun 𝐸 → Fun ( 𝐸 ↾ ran 𝐹 ) ) | |
| 11 | 10 | funfnd | ⊢ ( Fun 𝐸 → ( 𝐸 ↾ ran 𝐹 ) Fn dom ( 𝐸 ↾ ran 𝐹 ) ) |
| 12 | 9 11 | syl | ⊢ ( 𝐸 : dom 𝐸 –1-1→ ran 𝐸 → ( 𝐸 ↾ ran 𝐹 ) Fn dom ( 𝐸 ↾ ran 𝐹 ) ) |
| 13 | 12 | ad2antrr | ⊢ ( ( ( 𝐸 : dom 𝐸 –1-1→ ran 𝐸 ∧ 𝐸 ∈ 𝑉 ) ∧ 𝐹 : ( 0 ..^ ( ♯ ‘ 𝐹 ) ) –1-1→ dom 𝐸 ) → ( 𝐸 ↾ ran 𝐹 ) Fn dom ( 𝐸 ↾ ran 𝐹 ) ) |
| 14 | hashfn | ⊢ ( ( 𝐸 ↾ ran 𝐹 ) Fn dom ( 𝐸 ↾ ran 𝐹 ) → ( ♯ ‘ ( 𝐸 ↾ ran 𝐹 ) ) = ( ♯ ‘ dom ( 𝐸 ↾ ran 𝐹 ) ) ) | |
| 15 | 13 14 | syl | ⊢ ( ( ( 𝐸 : dom 𝐸 –1-1→ ran 𝐸 ∧ 𝐸 ∈ 𝑉 ) ∧ 𝐹 : ( 0 ..^ ( ♯ ‘ 𝐹 ) ) –1-1→ dom 𝐸 ) → ( ♯ ‘ ( 𝐸 ↾ ran 𝐹 ) ) = ( ♯ ‘ dom ( 𝐸 ↾ ran 𝐹 ) ) ) |
| 16 | ovex | ⊢ ( 0 ..^ ( ♯ ‘ 𝐹 ) ) ∈ V | |
| 17 | fex | ⊢ ( ( 𝐹 : ( 0 ..^ ( ♯ ‘ 𝐹 ) ) ⟶ dom 𝐸 ∧ ( 0 ..^ ( ♯ ‘ 𝐹 ) ) ∈ V ) → 𝐹 ∈ V ) | |
| 18 | 1 16 17 | sylancl | ⊢ ( 𝐹 : ( 0 ..^ ( ♯ ‘ 𝐹 ) ) –1-1→ dom 𝐸 → 𝐹 ∈ V ) |
| 19 | rnexg | ⊢ ( 𝐹 ∈ V → ran 𝐹 ∈ V ) | |
| 20 | 18 19 | syl | ⊢ ( 𝐹 : ( 0 ..^ ( ♯ ‘ 𝐹 ) ) –1-1→ dom 𝐸 → ran 𝐹 ∈ V ) |
| 21 | simpll | ⊢ ( ( ( 𝐸 : dom 𝐸 –1-1→ ran 𝐸 ∧ 𝐸 ∈ 𝑉 ) ∧ 𝐹 : ( 0 ..^ ( ♯ ‘ 𝐹 ) ) –1-1→ dom 𝐸 ) → 𝐸 : dom 𝐸 –1-1→ ran 𝐸 ) | |
| 22 | f1ssres | ⊢ ( ( 𝐸 : dom 𝐸 –1-1→ ran 𝐸 ∧ ran 𝐹 ⊆ dom 𝐸 ) → ( 𝐸 ↾ ran 𝐹 ) : ran 𝐹 –1-1→ ran 𝐸 ) | |
| 23 | 21 3 22 | syl2anc | ⊢ ( ( ( 𝐸 : dom 𝐸 –1-1→ ran 𝐸 ∧ 𝐸 ∈ 𝑉 ) ∧ 𝐹 : ( 0 ..^ ( ♯ ‘ 𝐹 ) ) –1-1→ dom 𝐸 ) → ( 𝐸 ↾ ran 𝐹 ) : ran 𝐹 –1-1→ ran 𝐸 ) |
| 24 | hashf1rn | ⊢ ( ( ran 𝐹 ∈ V ∧ ( 𝐸 ↾ ran 𝐹 ) : ran 𝐹 –1-1→ ran 𝐸 ) → ( ♯ ‘ ( 𝐸 ↾ ran 𝐹 ) ) = ( ♯ ‘ ran ( 𝐸 ↾ ran 𝐹 ) ) ) | |
| 25 | 20 23 24 | syl2an2 | ⊢ ( ( ( 𝐸 : dom 𝐸 –1-1→ ran 𝐸 ∧ 𝐸 ∈ 𝑉 ) ∧ 𝐹 : ( 0 ..^ ( ♯ ‘ 𝐹 ) ) –1-1→ dom 𝐸 ) → ( ♯ ‘ ( 𝐸 ↾ ran 𝐹 ) ) = ( ♯ ‘ ran ( 𝐸 ↾ ran 𝐹 ) ) ) |
| 26 | 15 25 | eqtr3d | ⊢ ( ( ( 𝐸 : dom 𝐸 –1-1→ ran 𝐸 ∧ 𝐸 ∈ 𝑉 ) ∧ 𝐹 : ( 0 ..^ ( ♯ ‘ 𝐹 ) ) –1-1→ dom 𝐸 ) → ( ♯ ‘ dom ( 𝐸 ↾ ran 𝐹 ) ) = ( ♯ ‘ ran ( 𝐸 ↾ ran 𝐹 ) ) ) |
| 27 | 8 26 | eqtr4id | ⊢ ( ( ( 𝐸 : dom 𝐸 –1-1→ ran 𝐸 ∧ 𝐸 ∈ 𝑉 ) ∧ 𝐹 : ( 0 ..^ ( ♯ ‘ 𝐹 ) ) –1-1→ dom 𝐸 ) → ( ♯ ‘ ( 𝐸 “ ran 𝐹 ) ) = ( ♯ ‘ dom ( 𝐸 ↾ ran 𝐹 ) ) ) |
| 28 | hashf1rn | ⊢ ( ( ( 0 ..^ ( ♯ ‘ 𝐹 ) ) ∈ V ∧ 𝐹 : ( 0 ..^ ( ♯ ‘ 𝐹 ) ) –1-1→ dom 𝐸 ) → ( ♯ ‘ 𝐹 ) = ( ♯ ‘ ran 𝐹 ) ) | |
| 29 | 16 28 | mpan | ⊢ ( 𝐹 : ( 0 ..^ ( ♯ ‘ 𝐹 ) ) –1-1→ dom 𝐸 → ( ♯ ‘ 𝐹 ) = ( ♯ ‘ ran 𝐹 ) ) |
| 30 | 29 | adantl | ⊢ ( ( ( 𝐸 : dom 𝐸 –1-1→ ran 𝐸 ∧ 𝐸 ∈ 𝑉 ) ∧ 𝐹 : ( 0 ..^ ( ♯ ‘ 𝐹 ) ) –1-1→ dom 𝐸 ) → ( ♯ ‘ 𝐹 ) = ( ♯ ‘ ran 𝐹 ) ) |
| 31 | 6 27 30 | 3eqtr4d | ⊢ ( ( ( 𝐸 : dom 𝐸 –1-1→ ran 𝐸 ∧ 𝐸 ∈ 𝑉 ) ∧ 𝐹 : ( 0 ..^ ( ♯ ‘ 𝐹 ) ) –1-1→ dom 𝐸 ) → ( ♯ ‘ ( 𝐸 “ ran 𝐹 ) ) = ( ♯ ‘ 𝐹 ) ) |
| 32 | 31 | ex | ⊢ ( ( 𝐸 : dom 𝐸 –1-1→ ran 𝐸 ∧ 𝐸 ∈ 𝑉 ) → ( 𝐹 : ( 0 ..^ ( ♯ ‘ 𝐹 ) ) –1-1→ dom 𝐸 → ( ♯ ‘ ( 𝐸 “ ran 𝐹 ) ) = ( ♯ ‘ 𝐹 ) ) ) |