Metamath Proof Explorer


Theorem ofccat

Description: Letterwise operations on word concatenations. (Contributed by Thierry Arnoux, 28-Sep-2018)

Ref Expression
Hypotheses ofccat.1 ⊢ φ → E ∈ Word S
ofccat.2 ⊢ φ → F ∈ Word S
ofccat.3 ⊢ φ → G ∈ Word T
ofccat.4 ⊢ φ → H ∈ Word T
ofccat.5 ⊢ φ → E = G
ofccat.6 ⊢ φ → F = H
Assertion ofccat ⊢ φ → E ++ F R f G ++ H = E R f G ++ F R f H

Proof

Step Hyp Ref Expression
1 ofccat.1 ⊢ φ → E ∈ Word S
2 ofccat.2 ⊢ φ → F ∈ Word S
3 ofccat.3 ⊢ φ → G ∈ Word T
4 ofccat.4 ⊢ φ → H ∈ Word T
5 ofccat.5 ⊢ φ → E = G
6 ofccat.6 ⊢ φ → F = H
7 wrdf ⊢ E ∈ Word S → E : 0 ..^ E ⟶ S
8 ffn ⊢ E : 0 ..^ E ⟶ S → E Fn 0 ..^ E
9 1 7 8 3syl ⊢ φ → E Fn 0 ..^ E
10 wrdf ⊢ G ∈ Word T → G : 0 ..^ G ⟶ T
11 ffn ⊢ G : 0 ..^ G ⟶ T → G Fn 0 ..^ G
12 3 10 11 3syl ⊢ φ → G Fn 0 ..^ G
13 5 oveq2d ⊢ φ → 0 ..^ E = 0 ..^ G
14 13 fneq2d ⊢ φ → G Fn 0 ..^ E ↔ G Fn 0 ..^ G
15 12 14 mpbird ⊢ φ → G Fn 0 ..^ E
16 ovexd ⊢ φ → 0 ..^ E ∈ V
17 inidm ⊢ 0 ..^ E ∩ 0 ..^ E = 0 ..^ E
18 9 15 16 16 17 offn ⊢ φ → E R f G Fn 0 ..^ E
19 hashfn ⊢ E R f G Fn 0 ..^ E → E R f G = 0 ..^ E
20 18 19 syl ⊢ φ → E R f G = 0 ..^ E
21 wrdfin ⊢ E ∈ Word S → E ∈ Fin
22 hashcl ⊢ E ∈ Fin → E ∈ ℕ 0
23 1 21 22 3syl ⊢ φ → E ∈ ℕ 0
24 hashfzo0 ⊢ E ∈ ℕ 0 → 0 ..^ E = E
25 23 24 syl ⊢ φ → 0 ..^ E = E
26 20 25 eqtrd ⊢ φ → E R f G = E
27 26 adantr ⊢ φ ∧ i ∈ 0 ..^ E + F → E R f G = E
28 27 oveq2d ⊢ φ ∧ i ∈ 0 ..^ E + F → 0 ..^ E R f G = 0 ..^ E
29 28 eleq2d ⊢ φ ∧ i ∈ 0 ..^ E + F → i ∈ 0 ..^ E R f G ↔ i ∈ 0 ..^ E
30 9 ad2antrr ⊢ φ ∧ i ∈ 0 ..^ E + F ∧ i ∈ 0 ..^ E R f G → E Fn 0 ..^ E
31 15 ad2antrr ⊢ φ ∧ i ∈ 0 ..^ E + F ∧ i ∈ 0 ..^ E R f G → G Fn 0 ..^ E
32 ovexd ⊢ φ ∧ i ∈ 0 ..^ E + F ∧ i ∈ 0 ..^ E R f G → 0 ..^ E ∈ V
33 29 biimpa ⊢ φ ∧ i ∈ 0 ..^ E + F ∧ i ∈ 0 ..^ E R f G → i ∈ 0 ..^ E
34 fnfvof ⊢ E Fn 0 ..^ E ∧ G Fn 0 ..^ E ∧ 0 ..^ E ∈ V ∧ i ∈ 0 ..^ E → E R f G ⁡ i = E ⁡ i R G ⁡ i
35 30 31 32 33 34 syl22anc ⊢ φ ∧ i ∈ 0 ..^ E + F ∧ i ∈ 0 ..^ E R f G → E R f G ⁡ i = E ⁡ i R G ⁡ i
36 26 ad2antrr ⊢ φ ∧ i ∈ 0 ..^ E + F ∧ ¬ i ∈ 0 ..^ E R f G → E R f G = E
37 36 oveq2d ⊢ φ ∧ i ∈ 0 ..^ E + F ∧ ¬ i ∈ 0 ..^ E R f G → i − E R f G = i − E
38 37 fveq2d ⊢ φ ∧ i ∈ 0 ..^ E + F ∧ ¬ i ∈ 0 ..^ E R f G → F R f H ⁡ i − E R f G = F R f H ⁡ i − E
39 wrdf ⊢ F ∈ Word S → F : 0 ..^ F ⟶ S
40 ffn ⊢ F : 0 ..^ F ⟶ S → F Fn 0 ..^ F
41 2 39 40 3syl ⊢ φ → F Fn 0 ..^ F
42 41 ad2antrr ⊢ φ ∧ i ∈ 0 ..^ E + F ∧ ¬ i ∈ 0 ..^ E R f G → F Fn 0 ..^ F
43 wrdf ⊢ H ∈ Word T → H : 0 ..^ H ⟶ T
44 ffn ⊢ H : 0 ..^ H ⟶ T → H Fn 0 ..^ H
45 4 43 44 3syl ⊢ φ → H Fn 0 ..^ H
46 6 oveq2d ⊢ φ → 0 ..^ F = 0 ..^ H
47 46 fneq2d ⊢ φ → H Fn 0 ..^ F ↔ H Fn 0 ..^ H
48 45 47 mpbird ⊢ φ → H Fn 0 ..^ F
49 48 ad2antrr ⊢ φ ∧ i ∈ 0 ..^ E + F ∧ ¬ i ∈ 0 ..^ E R f G → H Fn 0 ..^ F
50 ovexd ⊢ φ ∧ i ∈ 0 ..^ E + F ∧ ¬ i ∈ 0 ..^ E R f G → 0 ..^ F ∈ V
51 simplr ⊢ φ ∧ i ∈ 0 ..^ E + F ∧ ¬ i ∈ 0 ..^ E R f G → i ∈ 0 ..^ E + F
52 simpr ⊢ φ ∧ i ∈ 0 ..^ E + F ∧ ¬ i ∈ 0 ..^ E R f G → ¬ i ∈ 0 ..^ E R f G
53 28 adantr ⊢ φ ∧ i ∈ 0 ..^ E + F ∧ ¬ i ∈ 0 ..^ E R f G → 0 ..^ E R f G = 0 ..^ E
54 52 53 neleqtrd ⊢ φ ∧ i ∈ 0 ..^ E + F ∧ ¬ i ∈ 0 ..^ E R f G → ¬ i ∈ 0 ..^ E
55 23 ad2antrr ⊢ φ ∧ i ∈ 0 ..^ E + F ∧ ¬ i ∈ 0 ..^ E R f G → E ∈ ℕ 0
56 55 nn0zd ⊢ φ ∧ i ∈ 0 ..^ E + F ∧ ¬ i ∈ 0 ..^ E R f G → E ∈ ℤ
57 wrdfin ⊢ F ∈ Word S → F ∈ Fin
58 hashcl ⊢ F ∈ Fin → F ∈ ℕ 0
59 2 57 58 3syl ⊢ φ → F ∈ ℕ 0
60 59 ad2antrr ⊢ φ ∧ i ∈ 0 ..^ E + F ∧ ¬ i ∈ 0 ..^ E R f G → F ∈ ℕ 0
61 60 nn0zd ⊢ φ ∧ i ∈ 0 ..^ E + F ∧ ¬ i ∈ 0 ..^ E R f G → F ∈ ℤ
62 fzocatel ⊢ i ∈ 0 ..^ E + F ∧ ¬ i ∈ 0 ..^ E ∧ E ∈ ℤ ∧ F ∈ ℤ → i − E ∈ 0 ..^ F
63 51 54 56 61 62 syl22anc ⊢ φ ∧ i ∈ 0 ..^ E + F ∧ ¬ i ∈ 0 ..^ E R f G → i − E ∈ 0 ..^ F
64 fnfvof ⊢ F Fn 0 ..^ F ∧ H Fn 0 ..^ F ∧ 0 ..^ F ∈ V ∧ i − E ∈ 0 ..^ F → F R f H ⁡ i − E = F ⁡ i − E R H ⁡ i − E
65 42 49 50 63 64 syl22anc ⊢ φ ∧ i ∈ 0 ..^ E + F ∧ ¬ i ∈ 0 ..^ E R f G → F R f H ⁡ i − E = F ⁡ i − E R H ⁡ i − E
66 38 65 eqtrd ⊢ φ ∧ i ∈ 0 ..^ E + F ∧ ¬ i ∈ 0 ..^ E R f G → F R f H ⁡ i − E R f G = F ⁡ i − E R H ⁡ i − E
67 29 35 66 ifbieq12d2 ⊢ φ ∧ i ∈ 0 ..^ E + F → if i ∈ 0 ..^ E R f G E R f G ⁡ i F R f H ⁡ i − E R f G = if i ∈ 0 ..^ E E ⁡ i R G ⁡ i F ⁡ i − E R H ⁡ i − E
68 67 mpteq2dva ⊢ φ → i ∈ 0 ..^ E + F ⟼ if i ∈ 0 ..^ E R f G E R f G ⁡ i F R f H ⁡ i − E R f G = i ∈ 0 ..^ E + F ⟼ if i ∈ 0 ..^ E E ⁡ i R G ⁡ i F ⁡ i − E R H ⁡ i − E
69 ovex ⊢ E R f G ∈ V
70 ovex ⊢ F R f H ∈ V
71 ccatfval ⊢ E R f G ∈ V ∧ F R f H ∈ V → E R f G ++ F R f H = i ∈ 0 ..^ E R f G + F R f H ⟼ if i ∈ 0 ..^ E R f G E R f G ⁡ i F R f H ⁡ i − E R f G
72 69 70 71 mp2an ⊢ E R f G ++ F R f H = i ∈ 0 ..^ E R f G + F R f H ⟼ if i ∈ 0 ..^ E R f G E R f G ⁡ i F R f H ⁡ i − E R f G
73 ovexd ⊢ φ → 0 ..^ F ∈ V
74 inidm ⊢ 0 ..^ F ∩ 0 ..^ F = 0 ..^ F
75 41 48 73 73 74 offn ⊢ φ → F R f H Fn 0 ..^ F
76 hashfn ⊢ F R f H Fn 0 ..^ F → F R f H = 0 ..^ F
77 75 76 syl ⊢ φ → F R f H = 0 ..^ F
78 hashfzo0 ⊢ F ∈ ℕ 0 → 0 ..^ F = F
79 59 78 syl ⊢ φ → 0 ..^ F = F
80 77 79 eqtrd ⊢ φ → F R f H = F
81 26 80 oveq12d ⊢ φ → E R f G + F R f H = E + F
82 81 oveq2d ⊢ φ → 0 ..^ E R f G + F R f H = 0 ..^ E + F
83 82 mpteq1d ⊢ φ → i ∈ 0 ..^ E R f G + F R f H ⟼ if i ∈ 0 ..^ E R f G E R f G ⁡ i F R f H ⁡ i − E R f G = i ∈ 0 ..^ E + F ⟼ if i ∈ 0 ..^ E R f G E R f G ⁡ i F R f H ⁡ i − E R f G
84 72 83 eqtrid ⊢ φ → E R f G ++ F R f H = i ∈ 0 ..^ E + F ⟼ if i ∈ 0 ..^ E R f G E R f G ⁡ i F R f H ⁡ i − E R f G
85 ovexd ⊢ φ → 0 ..^ E + F ∈ V
86 fvex ⊢ E ⁡ i ∈ V
87 fvex ⊢ F ⁡ i − E ∈ V
88 86 87 ifex ⊢ if i ∈ 0 ..^ E E ⁡ i F ⁡ i − E ∈ V
89 88 a1i ⊢ φ ∧ i ∈ 0 ..^ E + F → if i ∈ 0 ..^ E E ⁡ i F ⁡ i − E ∈ V
90 fvex ⊢ G ⁡ i ∈ V
91 fvex ⊢ H ⁡ i − G ∈ V
92 90 91 ifex ⊢ if i ∈ 0 ..^ G G ⁡ i H ⁡ i − G ∈ V
93 92 a1i ⊢ φ ∧ i ∈ 0 ..^ E + F → if i ∈ 0 ..^ G G ⁡ i H ⁡ i − G ∈ V
94 ccatfval ⊢ E ∈ Word S ∧ F ∈ Word S → E ++ F = i ∈ 0 ..^ E + F ⟼ if i ∈ 0 ..^ E E ⁡ i F ⁡ i − E
95 1 2 94 syl2anc ⊢ φ → E ++ F = i ∈ 0 ..^ E + F ⟼ if i ∈ 0 ..^ E E ⁡ i F ⁡ i − E
96 ccatfval ⊢ G ∈ Word T ∧ H ∈ Word T → G ++ H = i ∈ 0 ..^ G + H ⟼ if i ∈ 0 ..^ G G ⁡ i H ⁡ i − G
97 3 4 96 syl2anc ⊢ φ → G ++ H = i ∈ 0 ..^ G + H ⟼ if i ∈ 0 ..^ G G ⁡ i H ⁡ i − G
98 5 6 oveq12d ⊢ φ → E + F = G + H
99 98 oveq2d ⊢ φ → 0 ..^ E + F = 0 ..^ G + H
100 99 mpteq1d ⊢ φ → i ∈ 0 ..^ E + F ⟼ if i ∈ 0 ..^ G G ⁡ i H ⁡ i − G = i ∈ 0 ..^ G + H ⟼ if i ∈ 0 ..^ G G ⁡ i H ⁡ i − G
101 97 100 eqtr4d ⊢ φ → G ++ H = i ∈ 0 ..^ E + F ⟼ if i ∈ 0 ..^ G G ⁡ i H ⁡ i − G
102 85 89 93 95 101 offval2 ⊢ φ → E ++ F R f G ++ H = i ∈ 0 ..^ E + F ⟼ if i ∈ 0 ..^ E E ⁡ i F ⁡ i − E R if i ∈ 0 ..^ G G ⁡ i H ⁡ i − G
103 5 adantr ⊢ φ ∧ i ∈ 0 ..^ E + F → E = G
104 103 oveq2d ⊢ φ ∧ i ∈ 0 ..^ E + F → 0 ..^ E = 0 ..^ G
105 104 eleq2d ⊢ φ ∧ i ∈ 0 ..^ E + F → i ∈ 0 ..^ E ↔ i ∈ 0 ..^ G
106 103 oveq2d ⊢ φ ∧ i ∈ 0 ..^ E + F → i − E = i − G
107 106 fveq2d ⊢ φ ∧ i ∈ 0 ..^ E + F → H ⁡ i − E = H ⁡ i − G
108 105 107 ifbieq2d ⊢ φ ∧ i ∈ 0 ..^ E + F → if i ∈ 0 ..^ E G ⁡ i H ⁡ i − E = if i ∈ 0 ..^ G G ⁡ i H ⁡ i − G
109 108 oveq2d ⊢ φ ∧ i ∈ 0 ..^ E + F → if i ∈ 0 ..^ E E ⁡ i F ⁡ i − E R if i ∈ 0 ..^ E G ⁡ i H ⁡ i − E = if i ∈ 0 ..^ E E ⁡ i F ⁡ i − E R if i ∈ 0 ..^ G G ⁡ i H ⁡ i − G
110 109 mpteq2dva ⊢ φ → i ∈ 0 ..^ E + F ⟼ if i ∈ 0 ..^ E E ⁡ i F ⁡ i − E R if i ∈ 0 ..^ E G ⁡ i H ⁡ i − E = i ∈ 0 ..^ E + F ⟼ if i ∈ 0 ..^ E E ⁡ i F ⁡ i − E R if i ∈ 0 ..^ G G ⁡ i H ⁡ i − G
111 102 110 eqtr4d ⊢ φ → E ++ F R f G ++ H = i ∈ 0 ..^ E + F ⟼ if i ∈ 0 ..^ E E ⁡ i F ⁡ i − E R if i ∈ 0 ..^ E G ⁡ i H ⁡ i − E
112 ovif12 ⊢ if i ∈ 0 ..^ E E ⁡ i F ⁡ i − E R if i ∈ 0 ..^ E G ⁡ i H ⁡ i − E = if i ∈ 0 ..^ E E ⁡ i R G ⁡ i F ⁡ i − E R H ⁡ i − E
113 112 mpteq2i ⊢ i ∈ 0 ..^ E + F ⟼ if i ∈ 0 ..^ E E ⁡ i F ⁡ i − E R if i ∈ 0 ..^ E G ⁡ i H ⁡ i − E = i ∈ 0 ..^ E + F ⟼ if i ∈ 0 ..^ E E ⁡ i R G ⁡ i F ⁡ i − E R H ⁡ i − E
114 111 113 eqtrdi ⊢ φ → E ++ F R f G ++ H = i ∈ 0 ..^ E + F ⟼ if i ∈ 0 ..^ E E ⁡ i R G ⁡ i F ⁡ i − E R H ⁡ i − E
115 68 84 114 3eqtr4rd ⊢ φ → E ++ F R f G ++ H = E R f G ++ F R f H