Metamath Proof Explorer


Theorem finexttrb

Description: The extension E of K is finite if and only if E is finite over F and F is finite over K . Corollary 1.3 of Lang , p. 225. (Contributed by Thierry Arnoux, 30-Jul-2023)

Ref Expression
Assertion finexttrb ( ( 𝐸 /FldExt 𝐹𝐹 /FldExt 𝐾 ) → ( 𝐸 /FinExt 𝐾 ↔ ( 𝐸 /FinExt 𝐹𝐹 /FinExt 𝐾 ) ) )

Proof

Step Hyp Ref Expression
1 extdgmul ( ( 𝐸 /FldExt 𝐹𝐹 /FldExt 𝐾 ) → ( 𝐸 [:] 𝐾 ) = ( ( 𝐸 [:] 𝐹 ) ·e ( 𝐹 [:] 𝐾 ) ) )
2 1 eleq1d ( ( 𝐸 /FldExt 𝐹𝐹 /FldExt 𝐾 ) → ( ( 𝐸 [:] 𝐾 ) ∈ ℕ0 ↔ ( ( 𝐸 [:] 𝐹 ) ·e ( 𝐹 [:] 𝐾 ) ) ∈ ℕ0 ) )
3 fldexttr ( ( 𝐸 /FldExt 𝐹𝐹 /FldExt 𝐾 ) → 𝐸 /FldExt 𝐾 )
4 brfinext ( 𝐸 /FldExt 𝐾 → ( 𝐸 /FinExt 𝐾 ↔ ( 𝐸 [:] 𝐾 ) ∈ ℕ0 ) )
5 3 4 syl ( ( 𝐸 /FldExt 𝐹𝐹 /FldExt 𝐾 ) → ( 𝐸 /FinExt 𝐾 ↔ ( 𝐸 [:] 𝐾 ) ∈ ℕ0 ) )
6 brfinext ( 𝐸 /FldExt 𝐹 → ( 𝐸 /FinExt 𝐹 ↔ ( 𝐸 [:] 𝐹 ) ∈ ℕ0 ) )
7 brfinext ( 𝐹 /FldExt 𝐾 → ( 𝐹 /FinExt 𝐾 ↔ ( 𝐹 [:] 𝐾 ) ∈ ℕ0 ) )
8 6 7 bi2anan9 ( ( 𝐸 /FldExt 𝐹𝐹 /FldExt 𝐾 ) → ( ( 𝐸 /FinExt 𝐹𝐹 /FinExt 𝐾 ) ↔ ( ( 𝐸 [:] 𝐹 ) ∈ ℕ0 ∧ ( 𝐹 [:] 𝐾 ) ∈ ℕ0 ) ) )
9 extdgcl ( 𝐸 /FldExt 𝐹 → ( 𝐸 [:] 𝐹 ) ∈ ℕ0* )
10 9 adantr ( ( 𝐸 /FldExt 𝐹𝐹 /FldExt 𝐾 ) → ( 𝐸 [:] 𝐹 ) ∈ ℕ0* )
11 extdgcl ( 𝐹 /FldExt 𝐾 → ( 𝐹 [:] 𝐾 ) ∈ ℕ0* )
12 11 adantl ( ( 𝐸 /FldExt 𝐹𝐹 /FldExt 𝐾 ) → ( 𝐹 [:] 𝐾 ) ∈ ℕ0* )
13 extdggt0 ( 𝐸 /FldExt 𝐹 → 0 < ( 𝐸 [:] 𝐹 ) )
14 13 adantr ( ( 𝐸 /FldExt 𝐹𝐹 /FldExt 𝐾 ) → 0 < ( 𝐸 [:] 𝐹 ) )
15 14 gt0ne0d ( ( 𝐸 /FldExt 𝐹𝐹 /FldExt 𝐾 ) → ( 𝐸 [:] 𝐹 ) ≠ 0 )
16 extdggt0 ( 𝐹 /FldExt 𝐾 → 0 < ( 𝐹 [:] 𝐾 ) )
17 16 adantl ( ( 𝐸 /FldExt 𝐹𝐹 /FldExt 𝐾 ) → 0 < ( 𝐹 [:] 𝐾 ) )
18 17 gt0ne0d ( ( 𝐸 /FldExt 𝐹𝐹 /FldExt 𝐾 ) → ( 𝐹 [:] 𝐾 ) ≠ 0 )
19 nn0xmulclb ( ( ( ( 𝐸 [:] 𝐹 ) ∈ ℕ0* ∧ ( 𝐹 [:] 𝐾 ) ∈ ℕ0* ) ∧ ( ( 𝐸 [:] 𝐹 ) ≠ 0 ∧ ( 𝐹 [:] 𝐾 ) ≠ 0 ) ) → ( ( ( 𝐸 [:] 𝐹 ) ·e ( 𝐹 [:] 𝐾 ) ) ∈ ℕ0 ↔ ( ( 𝐸 [:] 𝐹 ) ∈ ℕ0 ∧ ( 𝐹 [:] 𝐾 ) ∈ ℕ0 ) ) )
20 10 12 15 18 19 syl22anc ( ( 𝐸 /FldExt 𝐹𝐹 /FldExt 𝐾 ) → ( ( ( 𝐸 [:] 𝐹 ) ·e ( 𝐹 [:] 𝐾 ) ) ∈ ℕ0 ↔ ( ( 𝐸 [:] 𝐹 ) ∈ ℕ0 ∧ ( 𝐹 [:] 𝐾 ) ∈ ℕ0 ) ) )
21 8 20 bitr4d ( ( 𝐸 /FldExt 𝐹𝐹 /FldExt 𝐾 ) → ( ( 𝐸 /FinExt 𝐹𝐹 /FinExt 𝐾 ) ↔ ( ( 𝐸 [:] 𝐹 ) ·e ( 𝐹 [:] 𝐾 ) ) ∈ ℕ0 ) )
22 2 5 21 3bitr4d ( ( 𝐸 /FldExt 𝐹𝐹 /FldExt 𝐾 ) → ( 𝐸 /FinExt 𝐾 ↔ ( 𝐸 /FinExt 𝐹𝐹 /FinExt 𝐾 ) ) )