| Step | Hyp | Ref | Expression | 
						
							| 1 |  | hashcl |  |-  ( S e. Fin -> ( # ` S ) e. NN0 ) | 
						
							| 2 | 1 | adantl |  |-  ( ( S =/= (/) /\ S e. Fin ) -> ( # ` S ) e. NN0 ) | 
						
							| 3 |  | eqid |  |-  ( Z/nZ ` ( # ` S ) ) = ( Z/nZ ` ( # ` S ) ) | 
						
							| 4 | 3 | zncrng |  |-  ( ( # ` S ) e. NN0 -> ( Z/nZ ` ( # ` S ) ) e. CRing ) | 
						
							| 5 |  | crngring |  |-  ( ( Z/nZ ` ( # ` S ) ) e. CRing -> ( Z/nZ ` ( # ` S ) ) e. Ring ) | 
						
							| 6 |  | ringabl |  |-  ( ( Z/nZ ` ( # ` S ) ) e. Ring -> ( Z/nZ ` ( # ` S ) ) e. Abel ) | 
						
							| 7 | 2 4 5 6 | 4syl |  |-  ( ( S =/= (/) /\ S e. Fin ) -> ( Z/nZ ` ( # ` S ) ) e. Abel ) | 
						
							| 8 |  | hashnncl |  |-  ( S e. Fin -> ( ( # ` S ) e. NN <-> S =/= (/) ) ) | 
						
							| 9 | 8 | biimparc |  |-  ( ( S =/= (/) /\ S e. Fin ) -> ( # ` S ) e. NN ) | 
						
							| 10 |  | eqid |  |-  ( Base ` ( Z/nZ ` ( # ` S ) ) ) = ( Base ` ( Z/nZ ` ( # ` S ) ) ) | 
						
							| 11 | 3 10 | znhash |  |-  ( ( # ` S ) e. NN -> ( # ` ( Base ` ( Z/nZ ` ( # ` S ) ) ) ) = ( # ` S ) ) | 
						
							| 12 | 9 11 | syl |  |-  ( ( S =/= (/) /\ S e. Fin ) -> ( # ` ( Base ` ( Z/nZ ` ( # ` S ) ) ) ) = ( # ` S ) ) | 
						
							| 13 | 12 | eqcomd |  |-  ( ( S =/= (/) /\ S e. Fin ) -> ( # ` S ) = ( # ` ( Base ` ( Z/nZ ` ( # ` S ) ) ) ) ) | 
						
							| 14 |  | simpr |  |-  ( ( S =/= (/) /\ S e. Fin ) -> S e. Fin ) | 
						
							| 15 | 3 10 | znfi |  |-  ( ( # ` S ) e. NN -> ( Base ` ( Z/nZ ` ( # ` S ) ) ) e. Fin ) | 
						
							| 16 | 9 15 | syl |  |-  ( ( S =/= (/) /\ S e. Fin ) -> ( Base ` ( Z/nZ ` ( # ` S ) ) ) e. Fin ) | 
						
							| 17 |  | hashen |  |-  ( ( S e. Fin /\ ( Base ` ( Z/nZ ` ( # ` S ) ) ) e. Fin ) -> ( ( # ` S ) = ( # ` ( Base ` ( Z/nZ ` ( # ` S ) ) ) ) <-> S ~~ ( Base ` ( Z/nZ ` ( # ` S ) ) ) ) ) | 
						
							| 18 | 14 16 17 | syl2anc |  |-  ( ( S =/= (/) /\ S e. Fin ) -> ( ( # ` S ) = ( # ` ( Base ` ( Z/nZ ` ( # ` S ) ) ) ) <-> S ~~ ( Base ` ( Z/nZ ` ( # ` S ) ) ) ) ) | 
						
							| 19 | 13 18 | mpbid |  |-  ( ( S =/= (/) /\ S e. Fin ) -> S ~~ ( Base ` ( Z/nZ ` ( # ` S ) ) ) ) | 
						
							| 20 | 10 | isnumbasgrplem1 |  |-  ( ( ( Z/nZ ` ( # ` S ) ) e. Abel /\ S ~~ ( Base ` ( Z/nZ ` ( # ` S ) ) ) ) -> S e. ( Base " Abel ) ) | 
						
							| 21 | 7 19 20 | syl2anc |  |-  ( ( S =/= (/) /\ S e. Fin ) -> S e. ( Base " Abel ) ) | 
						
							| 22 | 21 | adantll |  |-  ( ( ( S e. dom card /\ S =/= (/) ) /\ S e. Fin ) -> S e. ( Base " Abel ) ) | 
						
							| 23 |  | 2nn0 |  |-  2 e. NN0 | 
						
							| 24 |  | eqid |  |-  ( Z/nZ ` 2 ) = ( Z/nZ ` 2 ) | 
						
							| 25 | 24 | zncrng |  |-  ( 2 e. NN0 -> ( Z/nZ ` 2 ) e. CRing ) | 
						
							| 26 |  | crngring |  |-  ( ( Z/nZ ` 2 ) e. CRing -> ( Z/nZ ` 2 ) e. Ring ) | 
						
							| 27 | 23 25 26 | mp2b |  |-  ( Z/nZ ` 2 ) e. Ring | 
						
							| 28 |  | eqid |  |-  ( ( Z/nZ ` 2 ) freeLMod S ) = ( ( Z/nZ ` 2 ) freeLMod S ) | 
						
							| 29 | 28 | frlmlmod |  |-  ( ( ( Z/nZ ` 2 ) e. Ring /\ S e. dom card ) -> ( ( Z/nZ ` 2 ) freeLMod S ) e. LMod ) | 
						
							| 30 | 27 29 | mpan |  |-  ( S e. dom card -> ( ( Z/nZ ` 2 ) freeLMod S ) e. LMod ) | 
						
							| 31 |  | lmodabl |  |-  ( ( ( Z/nZ ` 2 ) freeLMod S ) e. LMod -> ( ( Z/nZ ` 2 ) freeLMod S ) e. Abel ) | 
						
							| 32 | 30 31 | syl |  |-  ( S e. dom card -> ( ( Z/nZ ` 2 ) freeLMod S ) e. Abel ) | 
						
							| 33 | 32 | ad2antrr |  |-  ( ( ( S e. dom card /\ S =/= (/) ) /\ -. S e. Fin ) -> ( ( Z/nZ ` 2 ) freeLMod S ) e. Abel ) | 
						
							| 34 |  | eqid |  |-  ( Base ` ( ( Z/nZ ` 2 ) freeLMod S ) ) = ( Base ` ( ( Z/nZ ` 2 ) freeLMod S ) ) | 
						
							| 35 | 24 28 34 | frlmpwfi |  |-  ( S e. dom card -> ( Base ` ( ( Z/nZ ` 2 ) freeLMod S ) ) ~~ ( ~P S i^i Fin ) ) | 
						
							| 36 | 35 | ad2antrr |  |-  ( ( ( S e. dom card /\ S =/= (/) ) /\ -. S e. Fin ) -> ( Base ` ( ( Z/nZ ` 2 ) freeLMod S ) ) ~~ ( ~P S i^i Fin ) ) | 
						
							| 37 |  | simpll |  |-  ( ( ( S e. dom card /\ S =/= (/) ) /\ -. S e. Fin ) -> S e. dom card ) | 
						
							| 38 |  | numinfctb |  |-  ( ( S e. dom card /\ -. S e. Fin ) -> _om ~<_ S ) | 
						
							| 39 | 38 | adantlr |  |-  ( ( ( S e. dom card /\ S =/= (/) ) /\ -. S e. Fin ) -> _om ~<_ S ) | 
						
							| 40 |  | infpwfien |  |-  ( ( S e. dom card /\ _om ~<_ S ) -> ( ~P S i^i Fin ) ~~ S ) | 
						
							| 41 | 37 39 40 | syl2anc |  |-  ( ( ( S e. dom card /\ S =/= (/) ) /\ -. S e. Fin ) -> ( ~P S i^i Fin ) ~~ S ) | 
						
							| 42 |  | entr |  |-  ( ( ( Base ` ( ( Z/nZ ` 2 ) freeLMod S ) ) ~~ ( ~P S i^i Fin ) /\ ( ~P S i^i Fin ) ~~ S ) -> ( Base ` ( ( Z/nZ ` 2 ) freeLMod S ) ) ~~ S ) | 
						
							| 43 | 36 41 42 | syl2anc |  |-  ( ( ( S e. dom card /\ S =/= (/) ) /\ -. S e. Fin ) -> ( Base ` ( ( Z/nZ ` 2 ) freeLMod S ) ) ~~ S ) | 
						
							| 44 | 43 | ensymd |  |-  ( ( ( S e. dom card /\ S =/= (/) ) /\ -. S e. Fin ) -> S ~~ ( Base ` ( ( Z/nZ ` 2 ) freeLMod S ) ) ) | 
						
							| 45 | 34 | isnumbasgrplem1 |  |-  ( ( ( ( Z/nZ ` 2 ) freeLMod S ) e. Abel /\ S ~~ ( Base ` ( ( Z/nZ ` 2 ) freeLMod S ) ) ) -> S e. ( Base " Abel ) ) | 
						
							| 46 | 33 44 45 | syl2anc |  |-  ( ( ( S e. dom card /\ S =/= (/) ) /\ -. S e. Fin ) -> S e. ( Base " Abel ) ) | 
						
							| 47 | 22 46 | pm2.61dan |  |-  ( ( S e. dom card /\ S =/= (/) ) -> S e. ( Base " Abel ) ) |