Metamath Proof Explorer


Theorem isdlat

Description: Property of being a distributive lattice. (Contributed by Stefan O'Rear, 30-Jan-2015)

Ref Expression
Hypotheses isdlat.b 𝐵 = ( Base ‘ 𝐾 )
isdlat.j = ( join ‘ 𝐾 )
isdlat.m = ( meet ‘ 𝐾 )
Assertion isdlat ( 𝐾 ∈ DLat ↔ ( 𝐾 ∈ Lat ∧ ∀ 𝑥𝐵𝑦𝐵𝑧𝐵 ( 𝑥 ( 𝑦 𝑧 ) ) = ( ( 𝑥 𝑦 ) ( 𝑥 𝑧 ) ) ) )

Proof

Step Hyp Ref Expression
1 isdlat.b 𝐵 = ( Base ‘ 𝐾 )
2 isdlat.j = ( join ‘ 𝐾 )
3 isdlat.m = ( meet ‘ 𝐾 )
4 fveq2 ( 𝑘 = 𝐾 → ( Base ‘ 𝑘 ) = ( Base ‘ 𝐾 ) )
5 4 1 eqtr4di ( 𝑘 = 𝐾 → ( Base ‘ 𝑘 ) = 𝐵 )
6 fveq2 ( 𝑘 = 𝐾 → ( join ‘ 𝑘 ) = ( join ‘ 𝐾 ) )
7 6 2 eqtr4di ( 𝑘 = 𝐾 → ( join ‘ 𝑘 ) = )
8 fveq2 ( 𝑘 = 𝐾 → ( meet ‘ 𝑘 ) = ( meet ‘ 𝐾 ) )
9 8 3 eqtr4di ( 𝑘 = 𝐾 → ( meet ‘ 𝑘 ) = )
10 9 sbceq1d ( 𝑘 = 𝐾 → ( [ ( meet ‘ 𝑘 ) / 𝑚 ]𝑥𝑏𝑦𝑏𝑧𝑏 ( 𝑥 𝑚 ( 𝑦 𝑗 𝑧 ) ) = ( ( 𝑥 𝑚 𝑦 ) 𝑗 ( 𝑥 𝑚 𝑧 ) ) ↔ [ / 𝑚 ]𝑥𝑏𝑦𝑏𝑧𝑏 ( 𝑥 𝑚 ( 𝑦 𝑗 𝑧 ) ) = ( ( 𝑥 𝑚 𝑦 ) 𝑗 ( 𝑥 𝑚 𝑧 ) ) ) )
11 7 10 sbceqbid ( 𝑘 = 𝐾 → ( [ ( join ‘ 𝑘 ) / 𝑗 ] [ ( meet ‘ 𝑘 ) / 𝑚 ]𝑥𝑏𝑦𝑏𝑧𝑏 ( 𝑥 𝑚 ( 𝑦 𝑗 𝑧 ) ) = ( ( 𝑥 𝑚 𝑦 ) 𝑗 ( 𝑥 𝑚 𝑧 ) ) ↔ [ / 𝑗 ] [ / 𝑚 ]𝑥𝑏𝑦𝑏𝑧𝑏 ( 𝑥 𝑚 ( 𝑦 𝑗 𝑧 ) ) = ( ( 𝑥 𝑚 𝑦 ) 𝑗 ( 𝑥 𝑚 𝑧 ) ) ) )
12 5 11 sbceqbid ( 𝑘 = 𝐾 → ( [ ( Base ‘ 𝑘 ) / 𝑏 ] [ ( join ‘ 𝑘 ) / 𝑗 ] [ ( meet ‘ 𝑘 ) / 𝑚 ]𝑥𝑏𝑦𝑏𝑧𝑏 ( 𝑥 𝑚 ( 𝑦 𝑗 𝑧 ) ) = ( ( 𝑥 𝑚 𝑦 ) 𝑗 ( 𝑥 𝑚 𝑧 ) ) ↔ [ 𝐵 / 𝑏 ] [ / 𝑗 ] [ / 𝑚 ]𝑥𝑏𝑦𝑏𝑧𝑏 ( 𝑥 𝑚 ( 𝑦 𝑗 𝑧 ) ) = ( ( 𝑥 𝑚 𝑦 ) 𝑗 ( 𝑥 𝑚 𝑧 ) ) ) )
13 1 fvexi 𝐵 ∈ V
14 2 fvexi ∈ V
15 3 fvexi ∈ V
16 raleq ( 𝑏 = 𝐵 → ( ∀ 𝑧𝑏 ( 𝑥 𝑚 ( 𝑦 𝑗 𝑧 ) ) = ( ( 𝑥 𝑚 𝑦 ) 𝑗 ( 𝑥 𝑚 𝑧 ) ) ↔ ∀ 𝑧𝐵 ( 𝑥 𝑚 ( 𝑦 𝑗 𝑧 ) ) = ( ( 𝑥 𝑚 𝑦 ) 𝑗 ( 𝑥 𝑚 𝑧 ) ) ) )
17 16 raleqbi1dv ( 𝑏 = 𝐵 → ( ∀ 𝑦𝑏𝑧𝑏 ( 𝑥 𝑚 ( 𝑦 𝑗 𝑧 ) ) = ( ( 𝑥 𝑚 𝑦 ) 𝑗 ( 𝑥 𝑚 𝑧 ) ) ↔ ∀ 𝑦𝐵𝑧𝐵 ( 𝑥 𝑚 ( 𝑦 𝑗 𝑧 ) ) = ( ( 𝑥 𝑚 𝑦 ) 𝑗 ( 𝑥 𝑚 𝑧 ) ) ) )
18 17 raleqbi1dv ( 𝑏 = 𝐵 → ( ∀ 𝑥𝑏𝑦𝑏𝑧𝑏 ( 𝑥 𝑚 ( 𝑦 𝑗 𝑧 ) ) = ( ( 𝑥 𝑚 𝑦 ) 𝑗 ( 𝑥 𝑚 𝑧 ) ) ↔ ∀ 𝑥𝐵𝑦𝐵𝑧𝐵 ( 𝑥 𝑚 ( 𝑦 𝑗 𝑧 ) ) = ( ( 𝑥 𝑚 𝑦 ) 𝑗 ( 𝑥 𝑚 𝑧 ) ) ) )
19 simpr ( ( 𝑗 = 𝑚 = ) → 𝑚 = )
20 eqidd ( ( 𝑗 = 𝑚 = ) → 𝑥 = 𝑥 )
21 simpl ( ( 𝑗 = 𝑚 = ) → 𝑗 = )
22 21 oveqd ( ( 𝑗 = 𝑚 = ) → ( 𝑦 𝑗 𝑧 ) = ( 𝑦 𝑧 ) )
23 19 20 22 oveq123d ( ( 𝑗 = 𝑚 = ) → ( 𝑥 𝑚 ( 𝑦 𝑗 𝑧 ) ) = ( 𝑥 ( 𝑦 𝑧 ) ) )
24 19 oveqd ( ( 𝑗 = 𝑚 = ) → ( 𝑥 𝑚 𝑦 ) = ( 𝑥 𝑦 ) )
25 19 oveqd ( ( 𝑗 = 𝑚 = ) → ( 𝑥 𝑚 𝑧 ) = ( 𝑥 𝑧 ) )
26 21 24 25 oveq123d ( ( 𝑗 = 𝑚 = ) → ( ( 𝑥 𝑚 𝑦 ) 𝑗 ( 𝑥 𝑚 𝑧 ) ) = ( ( 𝑥 𝑦 ) ( 𝑥 𝑧 ) ) )
27 23 26 eqeq12d ( ( 𝑗 = 𝑚 = ) → ( ( 𝑥 𝑚 ( 𝑦 𝑗 𝑧 ) ) = ( ( 𝑥 𝑚 𝑦 ) 𝑗 ( 𝑥 𝑚 𝑧 ) ) ↔ ( 𝑥 ( 𝑦 𝑧 ) ) = ( ( 𝑥 𝑦 ) ( 𝑥 𝑧 ) ) ) )
28 27 ralbidv ( ( 𝑗 = 𝑚 = ) → ( ∀ 𝑧𝐵 ( 𝑥 𝑚 ( 𝑦 𝑗 𝑧 ) ) = ( ( 𝑥 𝑚 𝑦 ) 𝑗 ( 𝑥 𝑚 𝑧 ) ) ↔ ∀ 𝑧𝐵 ( 𝑥 ( 𝑦 𝑧 ) ) = ( ( 𝑥 𝑦 ) ( 𝑥 𝑧 ) ) ) )
29 28 2ralbidv ( ( 𝑗 = 𝑚 = ) → ( ∀ 𝑥𝐵𝑦𝐵𝑧𝐵 ( 𝑥 𝑚 ( 𝑦 𝑗 𝑧 ) ) = ( ( 𝑥 𝑚 𝑦 ) 𝑗 ( 𝑥 𝑚 𝑧 ) ) ↔ ∀ 𝑥𝐵𝑦𝐵𝑧𝐵 ( 𝑥 ( 𝑦 𝑧 ) ) = ( ( 𝑥 𝑦 ) ( 𝑥 𝑧 ) ) ) )
30 18 29 sylan9bb ( ( 𝑏 = 𝐵 ∧ ( 𝑗 = 𝑚 = ) ) → ( ∀ 𝑥𝑏𝑦𝑏𝑧𝑏 ( 𝑥 𝑚 ( 𝑦 𝑗 𝑧 ) ) = ( ( 𝑥 𝑚 𝑦 ) 𝑗 ( 𝑥 𝑚 𝑧 ) ) ↔ ∀ 𝑥𝐵𝑦𝐵𝑧𝐵 ( 𝑥 ( 𝑦 𝑧 ) ) = ( ( 𝑥 𝑦 ) ( 𝑥 𝑧 ) ) ) )
31 30 3impb ( ( 𝑏 = 𝐵𝑗 = 𝑚 = ) → ( ∀ 𝑥𝑏𝑦𝑏𝑧𝑏 ( 𝑥 𝑚 ( 𝑦 𝑗 𝑧 ) ) = ( ( 𝑥 𝑚 𝑦 ) 𝑗 ( 𝑥 𝑚 𝑧 ) ) ↔ ∀ 𝑥𝐵𝑦𝐵𝑧𝐵 ( 𝑥 ( 𝑦 𝑧 ) ) = ( ( 𝑥 𝑦 ) ( 𝑥 𝑧 ) ) ) )
32 13 14 15 31 sbc3ie ( [ 𝐵 / 𝑏 ] [ / 𝑗 ] [ / 𝑚 ]𝑥𝑏𝑦𝑏𝑧𝑏 ( 𝑥 𝑚 ( 𝑦 𝑗 𝑧 ) ) = ( ( 𝑥 𝑚 𝑦 ) 𝑗 ( 𝑥 𝑚 𝑧 ) ) ↔ ∀ 𝑥𝐵𝑦𝐵𝑧𝐵 ( 𝑥 ( 𝑦 𝑧 ) ) = ( ( 𝑥 𝑦 ) ( 𝑥 𝑧 ) ) )
33 12 32 bitrdi ( 𝑘 = 𝐾 → ( [ ( Base ‘ 𝑘 ) / 𝑏 ] [ ( join ‘ 𝑘 ) / 𝑗 ] [ ( meet ‘ 𝑘 ) / 𝑚 ]𝑥𝑏𝑦𝑏𝑧𝑏 ( 𝑥 𝑚 ( 𝑦 𝑗 𝑧 ) ) = ( ( 𝑥 𝑚 𝑦 ) 𝑗 ( 𝑥 𝑚 𝑧 ) ) ↔ ∀ 𝑥𝐵𝑦𝐵𝑧𝐵 ( 𝑥 ( 𝑦 𝑧 ) ) = ( ( 𝑥 𝑦 ) ( 𝑥 𝑧 ) ) ) )
34 df-dlat DLat = { 𝑘 ∈ Lat ∣ [ ( Base ‘ 𝑘 ) / 𝑏 ] [ ( join ‘ 𝑘 ) / 𝑗 ] [ ( meet ‘ 𝑘 ) / 𝑚 ]𝑥𝑏𝑦𝑏𝑧𝑏 ( 𝑥 𝑚 ( 𝑦 𝑗 𝑧 ) ) = ( ( 𝑥 𝑚 𝑦 ) 𝑗 ( 𝑥 𝑚 𝑧 ) ) }
35 33 34 elrab2 ( 𝐾 ∈ DLat ↔ ( 𝐾 ∈ Lat ∧ ∀ 𝑥𝐵𝑦𝐵𝑧𝐵 ( 𝑥 ( 𝑦 𝑧 ) ) = ( ( 𝑥 𝑦 ) ( 𝑥 𝑧 ) ) ) )