| Step | 
						Hyp | 
						Ref | 
						Expression | 
					
						
							| 1 | 
							
								
							 | 
							lsmhash.p | 
							⊢  ⊕   =  ( LSSum ‘ 𝐺 )  | 
						
						
							| 2 | 
							
								
							 | 
							lsmhash.o | 
							⊢  0   =  ( 0g ‘ 𝐺 )  | 
						
						
							| 3 | 
							
								
							 | 
							lsmhash.z | 
							⊢ 𝑍  =  ( Cntz ‘ 𝐺 )  | 
						
						
							| 4 | 
							
								
							 | 
							lsmhash.t | 
							⊢ ( 𝜑  →  𝑇  ∈  ( SubGrp ‘ 𝐺 ) )  | 
						
						
							| 5 | 
							
								
							 | 
							lsmhash.u | 
							⊢ ( 𝜑  →  𝑈  ∈  ( SubGrp ‘ 𝐺 ) )  | 
						
						
							| 6 | 
							
								
							 | 
							lsmhash.i | 
							⊢ ( 𝜑  →  ( 𝑇  ∩  𝑈 )  =  {  0  } )  | 
						
						
							| 7 | 
							
								
							 | 
							lsmhash.s | 
							⊢ ( 𝜑  →  𝑇  ⊆  ( 𝑍 ‘ 𝑈 ) )  | 
						
						
							| 8 | 
							
								
							 | 
							lsmhash.1 | 
							⊢ ( 𝜑  →  𝑇  ∈  Fin )  | 
						
						
							| 9 | 
							
								
							 | 
							lsmhash.2 | 
							⊢ ( 𝜑  →  𝑈  ∈  Fin )  | 
						
						
							| 10 | 
							
								
							 | 
							ovexd | 
							⊢ ( 𝜑  →  ( 𝑇  ⊕  𝑈 )  ∈  V )  | 
						
						
							| 11 | 
							
								
							 | 
							eqid | 
							⊢ ( 𝑥  ∈  ( 𝑇  ⊕  𝑈 )  ↦  〈 ( ( 𝑇 ( proj1 ‘ 𝐺 ) 𝑈 ) ‘ 𝑥 ) ,  ( ( 𝑈 ( proj1 ‘ 𝐺 ) 𝑇 ) ‘ 𝑥 ) 〉 )  =  ( 𝑥  ∈  ( 𝑇  ⊕  𝑈 )  ↦  〈 ( ( 𝑇 ( proj1 ‘ 𝐺 ) 𝑈 ) ‘ 𝑥 ) ,  ( ( 𝑈 ( proj1 ‘ 𝐺 ) 𝑇 ) ‘ 𝑥 ) 〉 )  | 
						
						
							| 12 | 
							
								
							 | 
							eqid | 
							⊢ ( +g ‘ 𝐺 )  =  ( +g ‘ 𝐺 )  | 
						
						
							| 13 | 
							
								
							 | 
							eqid | 
							⊢ ( proj1 ‘ 𝐺 )  =  ( proj1 ‘ 𝐺 )  | 
						
						
							| 14 | 
							
								12 1 2 3 4 5 6 7 13
							 | 
							pj1f | 
							⊢ ( 𝜑  →  ( 𝑇 ( proj1 ‘ 𝐺 ) 𝑈 ) : ( 𝑇  ⊕  𝑈 ) ⟶ 𝑇 )  | 
						
						
							| 15 | 
							
								14
							 | 
							ffvelcdmda | 
							⊢ ( ( 𝜑  ∧  𝑥  ∈  ( 𝑇  ⊕  𝑈 ) )  →  ( ( 𝑇 ( proj1 ‘ 𝐺 ) 𝑈 ) ‘ 𝑥 )  ∈  𝑇 )  | 
						
						
							| 16 | 
							
								12 1 2 3 4 5 6 7 13
							 | 
							pj2f | 
							⊢ ( 𝜑  →  ( 𝑈 ( proj1 ‘ 𝐺 ) 𝑇 ) : ( 𝑇  ⊕  𝑈 ) ⟶ 𝑈 )  | 
						
						
							| 17 | 
							
								16
							 | 
							ffvelcdmda | 
							⊢ ( ( 𝜑  ∧  𝑥  ∈  ( 𝑇  ⊕  𝑈 ) )  →  ( ( 𝑈 ( proj1 ‘ 𝐺 ) 𝑇 ) ‘ 𝑥 )  ∈  𝑈 )  | 
						
						
							| 18 | 
							
								15 17
							 | 
							opelxpd | 
							⊢ ( ( 𝜑  ∧  𝑥  ∈  ( 𝑇  ⊕  𝑈 ) )  →  〈 ( ( 𝑇 ( proj1 ‘ 𝐺 ) 𝑈 ) ‘ 𝑥 ) ,  ( ( 𝑈 ( proj1 ‘ 𝐺 ) 𝑇 ) ‘ 𝑥 ) 〉  ∈  ( 𝑇  ×  𝑈 ) )  | 
						
						
							| 19 | 
							
								4 5
							 | 
							jca | 
							⊢ ( 𝜑  →  ( 𝑇  ∈  ( SubGrp ‘ 𝐺 )  ∧  𝑈  ∈  ( SubGrp ‘ 𝐺 ) ) )  | 
						
						
							| 20 | 
							
								
							 | 
							xp1st | 
							⊢ ( 𝑦  ∈  ( 𝑇  ×  𝑈 )  →  ( 1st  ‘ 𝑦 )  ∈  𝑇 )  | 
						
						
							| 21 | 
							
								
							 | 
							xp2nd | 
							⊢ ( 𝑦  ∈  ( 𝑇  ×  𝑈 )  →  ( 2nd  ‘ 𝑦 )  ∈  𝑈 )  | 
						
						
							| 22 | 
							
								20 21
							 | 
							jca | 
							⊢ ( 𝑦  ∈  ( 𝑇  ×  𝑈 )  →  ( ( 1st  ‘ 𝑦 )  ∈  𝑇  ∧  ( 2nd  ‘ 𝑦 )  ∈  𝑈 ) )  | 
						
						
							| 23 | 
							
								12 1
							 | 
							lsmelvali | 
							⊢ ( ( ( 𝑇  ∈  ( SubGrp ‘ 𝐺 )  ∧  𝑈  ∈  ( SubGrp ‘ 𝐺 ) )  ∧  ( ( 1st  ‘ 𝑦 )  ∈  𝑇  ∧  ( 2nd  ‘ 𝑦 )  ∈  𝑈 ) )  →  ( ( 1st  ‘ 𝑦 ) ( +g ‘ 𝐺 ) ( 2nd  ‘ 𝑦 ) )  ∈  ( 𝑇  ⊕  𝑈 ) )  | 
						
						
							| 24 | 
							
								19 22 23
							 | 
							syl2an | 
							⊢ ( ( 𝜑  ∧  𝑦  ∈  ( 𝑇  ×  𝑈 ) )  →  ( ( 1st  ‘ 𝑦 ) ( +g ‘ 𝐺 ) ( 2nd  ‘ 𝑦 ) )  ∈  ( 𝑇  ⊕  𝑈 ) )  | 
						
						
							| 25 | 
							
								4
							 | 
							adantr | 
							⊢ ( ( 𝜑  ∧  ( 𝑥  ∈  ( 𝑇  ⊕  𝑈 )  ∧  𝑦  ∈  ( 𝑇  ×  𝑈 ) ) )  →  𝑇  ∈  ( SubGrp ‘ 𝐺 ) )  | 
						
						
							| 26 | 
							
								5
							 | 
							adantr | 
							⊢ ( ( 𝜑  ∧  ( 𝑥  ∈  ( 𝑇  ⊕  𝑈 )  ∧  𝑦  ∈  ( 𝑇  ×  𝑈 ) ) )  →  𝑈  ∈  ( SubGrp ‘ 𝐺 ) )  | 
						
						
							| 27 | 
							
								6
							 | 
							adantr | 
							⊢ ( ( 𝜑  ∧  ( 𝑥  ∈  ( 𝑇  ⊕  𝑈 )  ∧  𝑦  ∈  ( 𝑇  ×  𝑈 ) ) )  →  ( 𝑇  ∩  𝑈 )  =  {  0  } )  | 
						
						
							| 28 | 
							
								7
							 | 
							adantr | 
							⊢ ( ( 𝜑  ∧  ( 𝑥  ∈  ( 𝑇  ⊕  𝑈 )  ∧  𝑦  ∈  ( 𝑇  ×  𝑈 ) ) )  →  𝑇  ⊆  ( 𝑍 ‘ 𝑈 ) )  | 
						
						
							| 29 | 
							
								
							 | 
							simprl | 
							⊢ ( ( 𝜑  ∧  ( 𝑥  ∈  ( 𝑇  ⊕  𝑈 )  ∧  𝑦  ∈  ( 𝑇  ×  𝑈 ) ) )  →  𝑥  ∈  ( 𝑇  ⊕  𝑈 ) )  | 
						
						
							| 30 | 
							
								20
							 | 
							ad2antll | 
							⊢ ( ( 𝜑  ∧  ( 𝑥  ∈  ( 𝑇  ⊕  𝑈 )  ∧  𝑦  ∈  ( 𝑇  ×  𝑈 ) ) )  →  ( 1st  ‘ 𝑦 )  ∈  𝑇 )  | 
						
						
							| 31 | 
							
								21
							 | 
							ad2antll | 
							⊢ ( ( 𝜑  ∧  ( 𝑥  ∈  ( 𝑇  ⊕  𝑈 )  ∧  𝑦  ∈  ( 𝑇  ×  𝑈 ) ) )  →  ( 2nd  ‘ 𝑦 )  ∈  𝑈 )  | 
						
						
							| 32 | 
							
								12 1 2 3 25 26 27 28 13 29 30 31
							 | 
							pj1eq | 
							⊢ ( ( 𝜑  ∧  ( 𝑥  ∈  ( 𝑇  ⊕  𝑈 )  ∧  𝑦  ∈  ( 𝑇  ×  𝑈 ) ) )  →  ( 𝑥  =  ( ( 1st  ‘ 𝑦 ) ( +g ‘ 𝐺 ) ( 2nd  ‘ 𝑦 ) )  ↔  ( ( ( 𝑇 ( proj1 ‘ 𝐺 ) 𝑈 ) ‘ 𝑥 )  =  ( 1st  ‘ 𝑦 )  ∧  ( ( 𝑈 ( proj1 ‘ 𝐺 ) 𝑇 ) ‘ 𝑥 )  =  ( 2nd  ‘ 𝑦 ) ) ) )  | 
						
						
							| 33 | 
							
								
							 | 
							eqcom | 
							⊢ ( ( ( 𝑇 ( proj1 ‘ 𝐺 ) 𝑈 ) ‘ 𝑥 )  =  ( 1st  ‘ 𝑦 )  ↔  ( 1st  ‘ 𝑦 )  =  ( ( 𝑇 ( proj1 ‘ 𝐺 ) 𝑈 ) ‘ 𝑥 ) )  | 
						
						
							| 34 | 
							
								
							 | 
							eqcom | 
							⊢ ( ( ( 𝑈 ( proj1 ‘ 𝐺 ) 𝑇 ) ‘ 𝑥 )  =  ( 2nd  ‘ 𝑦 )  ↔  ( 2nd  ‘ 𝑦 )  =  ( ( 𝑈 ( proj1 ‘ 𝐺 ) 𝑇 ) ‘ 𝑥 ) )  | 
						
						
							| 35 | 
							
								33 34
							 | 
							anbi12i | 
							⊢ ( ( ( ( 𝑇 ( proj1 ‘ 𝐺 ) 𝑈 ) ‘ 𝑥 )  =  ( 1st  ‘ 𝑦 )  ∧  ( ( 𝑈 ( proj1 ‘ 𝐺 ) 𝑇 ) ‘ 𝑥 )  =  ( 2nd  ‘ 𝑦 ) )  ↔  ( ( 1st  ‘ 𝑦 )  =  ( ( 𝑇 ( proj1 ‘ 𝐺 ) 𝑈 ) ‘ 𝑥 )  ∧  ( 2nd  ‘ 𝑦 )  =  ( ( 𝑈 ( proj1 ‘ 𝐺 ) 𝑇 ) ‘ 𝑥 ) ) )  | 
						
						
							| 36 | 
							
								32 35
							 | 
							bitrdi | 
							⊢ ( ( 𝜑  ∧  ( 𝑥  ∈  ( 𝑇  ⊕  𝑈 )  ∧  𝑦  ∈  ( 𝑇  ×  𝑈 ) ) )  →  ( 𝑥  =  ( ( 1st  ‘ 𝑦 ) ( +g ‘ 𝐺 ) ( 2nd  ‘ 𝑦 ) )  ↔  ( ( 1st  ‘ 𝑦 )  =  ( ( 𝑇 ( proj1 ‘ 𝐺 ) 𝑈 ) ‘ 𝑥 )  ∧  ( 2nd  ‘ 𝑦 )  =  ( ( 𝑈 ( proj1 ‘ 𝐺 ) 𝑇 ) ‘ 𝑥 ) ) ) )  | 
						
						
							| 37 | 
							
								
							 | 
							eqop | 
							⊢ ( 𝑦  ∈  ( 𝑇  ×  𝑈 )  →  ( 𝑦  =  〈 ( ( 𝑇 ( proj1 ‘ 𝐺 ) 𝑈 ) ‘ 𝑥 ) ,  ( ( 𝑈 ( proj1 ‘ 𝐺 ) 𝑇 ) ‘ 𝑥 ) 〉  ↔  ( ( 1st  ‘ 𝑦 )  =  ( ( 𝑇 ( proj1 ‘ 𝐺 ) 𝑈 ) ‘ 𝑥 )  ∧  ( 2nd  ‘ 𝑦 )  =  ( ( 𝑈 ( proj1 ‘ 𝐺 ) 𝑇 ) ‘ 𝑥 ) ) ) )  | 
						
						
							| 38 | 
							
								37
							 | 
							ad2antll | 
							⊢ ( ( 𝜑  ∧  ( 𝑥  ∈  ( 𝑇  ⊕  𝑈 )  ∧  𝑦  ∈  ( 𝑇  ×  𝑈 ) ) )  →  ( 𝑦  =  〈 ( ( 𝑇 ( proj1 ‘ 𝐺 ) 𝑈 ) ‘ 𝑥 ) ,  ( ( 𝑈 ( proj1 ‘ 𝐺 ) 𝑇 ) ‘ 𝑥 ) 〉  ↔  ( ( 1st  ‘ 𝑦 )  =  ( ( 𝑇 ( proj1 ‘ 𝐺 ) 𝑈 ) ‘ 𝑥 )  ∧  ( 2nd  ‘ 𝑦 )  =  ( ( 𝑈 ( proj1 ‘ 𝐺 ) 𝑇 ) ‘ 𝑥 ) ) ) )  | 
						
						
							| 39 | 
							
								36 38
							 | 
							bitr4d | 
							⊢ ( ( 𝜑  ∧  ( 𝑥  ∈  ( 𝑇  ⊕  𝑈 )  ∧  𝑦  ∈  ( 𝑇  ×  𝑈 ) ) )  →  ( 𝑥  =  ( ( 1st  ‘ 𝑦 ) ( +g ‘ 𝐺 ) ( 2nd  ‘ 𝑦 ) )  ↔  𝑦  =  〈 ( ( 𝑇 ( proj1 ‘ 𝐺 ) 𝑈 ) ‘ 𝑥 ) ,  ( ( 𝑈 ( proj1 ‘ 𝐺 ) 𝑇 ) ‘ 𝑥 ) 〉 ) )  | 
						
						
							| 40 | 
							
								11 18 24 39
							 | 
							f1o2d | 
							⊢ ( 𝜑  →  ( 𝑥  ∈  ( 𝑇  ⊕  𝑈 )  ↦  〈 ( ( 𝑇 ( proj1 ‘ 𝐺 ) 𝑈 ) ‘ 𝑥 ) ,  ( ( 𝑈 ( proj1 ‘ 𝐺 ) 𝑇 ) ‘ 𝑥 ) 〉 ) : ( 𝑇  ⊕  𝑈 ) –1-1-onto→ ( 𝑇  ×  𝑈 ) )  | 
						
						
							| 41 | 
							
								10 40
							 | 
							hasheqf1od | 
							⊢ ( 𝜑  →  ( ♯ ‘ ( 𝑇  ⊕  𝑈 ) )  =  ( ♯ ‘ ( 𝑇  ×  𝑈 ) ) )  | 
						
						
							| 42 | 
							
								
							 | 
							hashxp | 
							⊢ ( ( 𝑇  ∈  Fin  ∧  𝑈  ∈  Fin )  →  ( ♯ ‘ ( 𝑇  ×  𝑈 ) )  =  ( ( ♯ ‘ 𝑇 )  ·  ( ♯ ‘ 𝑈 ) ) )  | 
						
						
							| 43 | 
							
								8 9 42
							 | 
							syl2anc | 
							⊢ ( 𝜑  →  ( ♯ ‘ ( 𝑇  ×  𝑈 ) )  =  ( ( ♯ ‘ 𝑇 )  ·  ( ♯ ‘ 𝑈 ) ) )  | 
						
						
							| 44 | 
							
								41 43
							 | 
							eqtrd | 
							⊢ ( 𝜑  →  ( ♯ ‘ ( 𝑇  ⊕  𝑈 ) )  =  ( ( ♯ ‘ 𝑇 )  ·  ( ♯ ‘ 𝑈 ) ) )  |