Metamath Proof Explorer


Theorem sdc

Description: Strong dependent choice. Suppose we may choose an element of A such that property ps holds, and suppose that if we have already chosen the first k elements (represented here by a function from 1 ... k to A ), we may choose another element so that all k + 1 elements taken together have property ps . Then there exists an infinite sequence of elements of A such that the first n terms of this sequence satisfy ps for all n . This theorem allows us to construct infinite seqeunces where each term depends on all the previous terms in the sequence. (Contributed by Jeff Madsen, 2-Sep-2009) (Proof shortened by Mario Carneiro, 3-Jun-2014)

Ref Expression
Hypotheses sdc.1 𝑍 = ( ℤ𝑀 )
sdc.2 ( 𝑔 = ( 𝑓 ↾ ( 𝑀 ... 𝑛 ) ) → ( 𝜓𝜒 ) )
sdc.3 ( 𝑛 = 𝑀 → ( 𝜓𝜏 ) )
sdc.4 ( 𝑛 = 𝑘 → ( 𝜓𝜃 ) )
sdc.5 ( ( 𝑔 = 𝑛 = ( 𝑘 + 1 ) ) → ( 𝜓𝜎 ) )
sdc.6 ( 𝜑𝐴𝑉 )
sdc.7 ( 𝜑𝑀 ∈ ℤ )
sdc.8 ( 𝜑 → ∃ 𝑔 ( 𝑔 : { 𝑀 } ⟶ 𝐴𝜏 ) )
sdc.9 ( ( 𝜑𝑘𝑍 ) → ( ( 𝑔 : ( 𝑀 ... 𝑘 ) ⟶ 𝐴𝜃 ) → ∃ ( : ( 𝑀 ... ( 𝑘 + 1 ) ) ⟶ 𝐴𝑔 = ( ↾ ( 𝑀 ... 𝑘 ) ) ∧ 𝜎 ) ) )
Assertion sdc ( 𝜑 → ∃ 𝑓 ( 𝑓 : 𝑍𝐴 ∧ ∀ 𝑛𝑍 𝜒 ) )

Proof

Step Hyp Ref Expression
1 sdc.1 𝑍 = ( ℤ𝑀 )
2 sdc.2 ( 𝑔 = ( 𝑓 ↾ ( 𝑀 ... 𝑛 ) ) → ( 𝜓𝜒 ) )
3 sdc.3 ( 𝑛 = 𝑀 → ( 𝜓𝜏 ) )
4 sdc.4 ( 𝑛 = 𝑘 → ( 𝜓𝜃 ) )
5 sdc.5 ( ( 𝑔 = 𝑛 = ( 𝑘 + 1 ) ) → ( 𝜓𝜎 ) )
6 sdc.6 ( 𝜑𝐴𝑉 )
7 sdc.7 ( 𝜑𝑀 ∈ ℤ )
8 sdc.8 ( 𝜑 → ∃ 𝑔 ( 𝑔 : { 𝑀 } ⟶ 𝐴𝜏 ) )
9 sdc.9 ( ( 𝜑𝑘𝑍 ) → ( ( 𝑔 : ( 𝑀 ... 𝑘 ) ⟶ 𝐴𝜃 ) → ∃ ( : ( 𝑀 ... ( 𝑘 + 1 ) ) ⟶ 𝐴𝑔 = ( ↾ ( 𝑀 ... 𝑘 ) ) ∧ 𝜎 ) ) )
10 eqid { 𝑔 ∣ ∃ 𝑛𝑍 ( 𝑔 : ( 𝑀 ... 𝑛 ) ⟶ 𝐴𝜓 ) } = { 𝑔 ∣ ∃ 𝑛𝑍 ( 𝑔 : ( 𝑀 ... 𝑛 ) ⟶ 𝐴𝜓 ) }
11 eqid 𝑍 = 𝑍
12 oveq2 ( 𝑛 = 𝑘 → ( 𝑀 ... 𝑛 ) = ( 𝑀 ... 𝑘 ) )
13 12 feq2d ( 𝑛 = 𝑘 → ( 𝑔 : ( 𝑀 ... 𝑛 ) ⟶ 𝐴𝑔 : ( 𝑀 ... 𝑘 ) ⟶ 𝐴 ) )
14 13 4 anbi12d ( 𝑛 = 𝑘 → ( ( 𝑔 : ( 𝑀 ... 𝑛 ) ⟶ 𝐴𝜓 ) ↔ ( 𝑔 : ( 𝑀 ... 𝑘 ) ⟶ 𝐴𝜃 ) ) )
15 14 cbvrexvw ( ∃ 𝑛𝑍 ( 𝑔 : ( 𝑀 ... 𝑛 ) ⟶ 𝐴𝜓 ) ↔ ∃ 𝑘𝑍 ( 𝑔 : ( 𝑀 ... 𝑘 ) ⟶ 𝐴𝜃 ) )
16 15 abbii { 𝑔 ∣ ∃ 𝑛𝑍 ( 𝑔 : ( 𝑀 ... 𝑛 ) ⟶ 𝐴𝜓 ) } = { 𝑔 ∣ ∃ 𝑘𝑍 ( 𝑔 : ( 𝑀 ... 𝑘 ) ⟶ 𝐴𝜃 ) }
17 eqid { ∣ ∃ 𝑘𝑍 ( : ( 𝑀 ... ( 𝑘 + 1 ) ) ⟶ 𝐴𝑓 = ( ↾ ( 𝑀 ... 𝑘 ) ) ∧ 𝜎 ) } = { ∣ ∃ 𝑘𝑍 ( : ( 𝑀 ... ( 𝑘 + 1 ) ) ⟶ 𝐴𝑓 = ( ↾ ( 𝑀 ... 𝑘 ) ) ∧ 𝜎 ) }
18 11 16 17 mpoeq123i ( 𝑗𝑍 , 𝑓 ∈ { 𝑔 ∣ ∃ 𝑛𝑍 ( 𝑔 : ( 𝑀 ... 𝑛 ) ⟶ 𝐴𝜓 ) } ↦ { ∣ ∃ 𝑘𝑍 ( : ( 𝑀 ... ( 𝑘 + 1 ) ) ⟶ 𝐴𝑓 = ( ↾ ( 𝑀 ... 𝑘 ) ) ∧ 𝜎 ) } ) = ( 𝑗𝑍 , 𝑓 ∈ { 𝑔 ∣ ∃ 𝑘𝑍 ( 𝑔 : ( 𝑀 ... 𝑘 ) ⟶ 𝐴𝜃 ) } ↦ { ∣ ∃ 𝑘𝑍 ( : ( 𝑀 ... ( 𝑘 + 1 ) ) ⟶ 𝐴𝑓 = ( ↾ ( 𝑀 ... 𝑘 ) ) ∧ 𝜎 ) } )
19 eqidd ( 𝑗 = 𝑦 → { ∣ ∃ 𝑘𝑍 ( : ( 𝑀 ... ( 𝑘 + 1 ) ) ⟶ 𝐴𝑓 = ( ↾ ( 𝑀 ... 𝑘 ) ) ∧ 𝜎 ) } = { ∣ ∃ 𝑘𝑍 ( : ( 𝑀 ... ( 𝑘 + 1 ) ) ⟶ 𝐴𝑓 = ( ↾ ( 𝑀 ... 𝑘 ) ) ∧ 𝜎 ) } )
20 eqeq1 ( 𝑓 = 𝑥 → ( 𝑓 = ( ↾ ( 𝑀 ... 𝑘 ) ) ↔ 𝑥 = ( ↾ ( 𝑀 ... 𝑘 ) ) ) )
21 20 3anbi2d ( 𝑓 = 𝑥 → ( ( : ( 𝑀 ... ( 𝑘 + 1 ) ) ⟶ 𝐴𝑓 = ( ↾ ( 𝑀 ... 𝑘 ) ) ∧ 𝜎 ) ↔ ( : ( 𝑀 ... ( 𝑘 + 1 ) ) ⟶ 𝐴𝑥 = ( ↾ ( 𝑀 ... 𝑘 ) ) ∧ 𝜎 ) ) )
22 21 rexbidv ( 𝑓 = 𝑥 → ( ∃ 𝑘𝑍 ( : ( 𝑀 ... ( 𝑘 + 1 ) ) ⟶ 𝐴𝑓 = ( ↾ ( 𝑀 ... 𝑘 ) ) ∧ 𝜎 ) ↔ ∃ 𝑘𝑍 ( : ( 𝑀 ... ( 𝑘 + 1 ) ) ⟶ 𝐴𝑥 = ( ↾ ( 𝑀 ... 𝑘 ) ) ∧ 𝜎 ) ) )
23 22 abbidv ( 𝑓 = 𝑥 → { ∣ ∃ 𝑘𝑍 ( : ( 𝑀 ... ( 𝑘 + 1 ) ) ⟶ 𝐴𝑓 = ( ↾ ( 𝑀 ... 𝑘 ) ) ∧ 𝜎 ) } = { ∣ ∃ 𝑘𝑍 ( : ( 𝑀 ... ( 𝑘 + 1 ) ) ⟶ 𝐴𝑥 = ( ↾ ( 𝑀 ... 𝑘 ) ) ∧ 𝜎 ) } )
24 19 23 cbvmpov ( 𝑗𝑍 , 𝑓 ∈ { 𝑔 ∣ ∃ 𝑛𝑍 ( 𝑔 : ( 𝑀 ... 𝑛 ) ⟶ 𝐴𝜓 ) } ↦ { ∣ ∃ 𝑘𝑍 ( : ( 𝑀 ... ( 𝑘 + 1 ) ) ⟶ 𝐴𝑓 = ( ↾ ( 𝑀 ... 𝑘 ) ) ∧ 𝜎 ) } ) = ( 𝑦𝑍 , 𝑥 ∈ { 𝑔 ∣ ∃ 𝑛𝑍 ( 𝑔 : ( 𝑀 ... 𝑛 ) ⟶ 𝐴𝜓 ) } ↦ { ∣ ∃ 𝑘𝑍 ( : ( 𝑀 ... ( 𝑘 + 1 ) ) ⟶ 𝐴𝑥 = ( ↾ ( 𝑀 ... 𝑘 ) ) ∧ 𝜎 ) } )
25 18 24 eqtr3i ( 𝑗𝑍 , 𝑓 ∈ { 𝑔 ∣ ∃ 𝑘𝑍 ( 𝑔 : ( 𝑀 ... 𝑘 ) ⟶ 𝐴𝜃 ) } ↦ { ∣ ∃ 𝑘𝑍 ( : ( 𝑀 ... ( 𝑘 + 1 ) ) ⟶ 𝐴𝑓 = ( ↾ ( 𝑀 ... 𝑘 ) ) ∧ 𝜎 ) } ) = ( 𝑦𝑍 , 𝑥 ∈ { 𝑔 ∣ ∃ 𝑛𝑍 ( 𝑔 : ( 𝑀 ... 𝑛 ) ⟶ 𝐴𝜓 ) } ↦ { ∣ ∃ 𝑘𝑍 ( : ( 𝑀 ... ( 𝑘 + 1 ) ) ⟶ 𝐴𝑥 = ( ↾ ( 𝑀 ... 𝑘 ) ) ∧ 𝜎 ) } )
26 1 2 3 4 5 6 7 8 9 10 25 sdclem1 ( 𝜑 → ∃ 𝑓 ( 𝑓 : 𝑍𝐴 ∧ ∀ 𝑛𝑍 𝜒 ) )