Metamath Proof Explorer


Theorem rngoisoco

Description: Obsolete theorem, use rimco instead. The composition of two ring isomorphisms is a ring isomorphism. (Contributed by Jeff Madsen, 16-Jun-2011) (Proof modification is discouraged.) (New usage is discouraged.)

Ref Expression
Assertion rngoisoco ⊢ R ∈ RingOps ∧ S ∈ RingOps ∧ T ∈ RingOps ∧ F ∈ R RingOpsIso S ∧ G ∈ S RingOpsIso T → G ∘ F ∈ R RingOpsIso T

Proof

Step Hyp Ref Expression
1 rngoisohom ⊢ R ∈ RingOps ∧ S ∈ RingOps ∧ F ∈ R RingOpsIso S → F ∈ R RingOpsHom S
2 1 3expa ⊢ R ∈ RingOps ∧ S ∈ RingOps ∧ F ∈ R RingOpsIso S → F ∈ R RingOpsHom S
3 2 3adantl3 ⊢ R ∈ RingOps ∧ S ∈ RingOps ∧ T ∈ RingOps ∧ F ∈ R RingOpsIso S → F ∈ R RingOpsHom S
4 rngoisohom ⊢ S ∈ RingOps ∧ T ∈ RingOps ∧ G ∈ S RingOpsIso T → G ∈ S RingOpsHom T
5 4 3expa ⊢ S ∈ RingOps ∧ T ∈ RingOps ∧ G ∈ S RingOpsIso T → G ∈ S RingOpsHom T
6 5 3adantl1 ⊢ R ∈ RingOps ∧ S ∈ RingOps ∧ T ∈ RingOps ∧ G ∈ S RingOpsIso T → G ∈ S RingOpsHom T
7 3 6 anim12dan ⊢ R ∈ RingOps ∧ S ∈ RingOps ∧ T ∈ RingOps ∧ F ∈ R RingOpsIso S ∧ G ∈ S RingOpsIso T → F ∈ R RingOpsHom S ∧ G ∈ S RingOpsHom T
8 rngohomco ⊢ R ∈ RingOps ∧ S ∈ RingOps ∧ T ∈ RingOps ∧ F ∈ R RingOpsHom S ∧ G ∈ S RingOpsHom T → G ∘ F ∈ R RingOpsHom T
9 7 8 syldan ⊢ R ∈ RingOps ∧ S ∈ RingOps ∧ T ∈ RingOps ∧ F ∈ R RingOpsIso S ∧ G ∈ S RingOpsIso T → G ∘ F ∈ R RingOpsHom T
10 eqid ⊢ 1 st ⁡ S = 1 st ⁡ S
11 eqid ⊢ ran ⁡ 1 st ⁡ S = ran ⁡ 1 st ⁡ S
12 eqid ⊢ 1 st ⁡ T = 1 st ⁡ T
13 eqid ⊢ ran ⁡ 1 st ⁡ T = ran ⁡ 1 st ⁡ T
14 10 11 12 13 rngoiso1o ⊢ S ∈ RingOps ∧ T ∈ RingOps ∧ G ∈ S RingOpsIso T → G : ran ⁡ 1 st ⁡ S ⟶ 1-1 onto ran ⁡ 1 st ⁡ T
15 14 3expa ⊢ S ∈ RingOps ∧ T ∈ RingOps ∧ G ∈ S RingOpsIso T → G : ran ⁡ 1 st ⁡ S ⟶ 1-1 onto ran ⁡ 1 st ⁡ T
16 15 3adantl1 ⊢ R ∈ RingOps ∧ S ∈ RingOps ∧ T ∈ RingOps ∧ G ∈ S RingOpsIso T → G : ran ⁡ 1 st ⁡ S ⟶ 1-1 onto ran ⁡ 1 st ⁡ T
17 16 adantrl ⊢ R ∈ RingOps ∧ S ∈ RingOps ∧ T ∈ RingOps ∧ F ∈ R RingOpsIso S ∧ G ∈ S RingOpsIso T → G : ran ⁡ 1 st ⁡ S ⟶ 1-1 onto ran ⁡ 1 st ⁡ T
18 eqid ⊢ 1 st ⁡ R = 1 st ⁡ R
19 eqid ⊢ ran ⁡ 1 st ⁡ R = ran ⁡ 1 st ⁡ R
20 18 19 10 11 rngoiso1o ⊢ R ∈ RingOps ∧ S ∈ RingOps ∧ F ∈ R RingOpsIso S → F : ran ⁡ 1 st ⁡ R ⟶ 1-1 onto ran ⁡ 1 st ⁡ S
21 20 3expa ⊢ R ∈ RingOps ∧ S ∈ RingOps ∧ F ∈ R RingOpsIso S → F : ran ⁡ 1 st ⁡ R ⟶ 1-1 onto ran ⁡ 1 st ⁡ S
22 21 3adantl3 ⊢ R ∈ RingOps ∧ S ∈ RingOps ∧ T ∈ RingOps ∧ F ∈ R RingOpsIso S → F : ran ⁡ 1 st ⁡ R ⟶ 1-1 onto ran ⁡ 1 st ⁡ S
23 22 adantrr ⊢ R ∈ RingOps ∧ S ∈ RingOps ∧ T ∈ RingOps ∧ F ∈ R RingOpsIso S ∧ G ∈ S RingOpsIso T → F : ran ⁡ 1 st ⁡ R ⟶ 1-1 onto ran ⁡ 1 st ⁡ S
24 f1oco ⊢ G : ran ⁡ 1 st ⁡ S ⟶ 1-1 onto ran ⁡ 1 st ⁡ T ∧ F : ran ⁡ 1 st ⁡ R ⟶ 1-1 onto ran ⁡ 1 st ⁡ S → G ∘ F : ran ⁡ 1 st ⁡ R ⟶ 1-1 onto ran ⁡ 1 st ⁡ T
25 17 23 24 syl2anc ⊢ R ∈ RingOps ∧ S ∈ RingOps ∧ T ∈ RingOps ∧ F ∈ R RingOpsIso S ∧ G ∈ S RingOpsIso T → G ∘ F : ran ⁡ 1 st ⁡ R ⟶ 1-1 onto ran ⁡ 1 st ⁡ T
26 18 19 12 13 isrngoiso ⊢ R ∈ RingOps ∧ T ∈ RingOps → G ∘ F ∈ R RingOpsIso T ↔ G ∘ F ∈ R RingOpsHom T ∧ G ∘ F : ran ⁡ 1 st ⁡ R ⟶ 1-1 onto ran ⁡ 1 st ⁡ T
27 26 3adant2 ⊢ R ∈ RingOps ∧ S ∈ RingOps ∧ T ∈ RingOps → G ∘ F ∈ R RingOpsIso T ↔ G ∘ F ∈ R RingOpsHom T ∧ G ∘ F : ran ⁡ 1 st ⁡ R ⟶ 1-1 onto ran ⁡ 1 st ⁡ T
28 27 adantr ⊢ R ∈ RingOps ∧ S ∈ RingOps ∧ T ∈ RingOps ∧ F ∈ R RingOpsIso S ∧ G ∈ S RingOpsIso T → G ∘ F ∈ R RingOpsIso T ↔ G ∘ F ∈ R RingOpsHom T ∧ G ∘ F : ran ⁡ 1 st ⁡ R ⟶ 1-1 onto ran ⁡ 1 st ⁡ T
29 9 25 28 mpbir2and ⊢ R ∈ RingOps ∧ S ∈ RingOps ∧ T ∈ RingOps ∧ F ∈ R RingOpsIso S ∧ G ∈ S RingOpsIso T → G ∘ F ∈ R RingOpsIso T