Metamath Proof Explorer |
< Previous
Next >
Nearby theorems |
||
Mirrors > Home > MPE Home > Th. List > algcvg | Structured version Visualization version GIF version |
Description: One way to prove that an
algorithm halts is to construct a countdown
function 𝐶:𝑆⟶ℕ0 whose
value is guaranteed to decrease for
each iteration of 𝐹 until it reaches 0. That is, if 𝑋 ∈ 𝑆
is not a fixed point of 𝐹, then
(𝐶‘(𝐹‘𝑋)) < (𝐶‘𝑋).
If 𝐶 is a countdown function for algorithm 𝐹, the sequence (𝐶‘(𝑅‘𝑘)) reaches 0 after at most 𝑁 steps, where 𝑁 is the value of 𝐶 for the initial state 𝐴. (Contributed by Paul Chapman, 22-Jun-2011.) |
Ref | Expression |
---|---|
algcvg.1 | ⊢ 𝐹:𝑆⟶𝑆 |
algcvg.2 | ⊢ 𝑅 = seq0((𝐹 ∘ 1st ), (ℕ0 × {𝐴})) |
algcvg.3 | ⊢ 𝐶:𝑆⟶ℕ0 |
algcvg.4 | ⊢ (𝑧 ∈ 𝑆 → ((𝐶‘(𝐹‘𝑧)) ≠ 0 → (𝐶‘(𝐹‘𝑧)) < (𝐶‘𝑧))) |
algcvg.5 | ⊢ 𝑁 = (𝐶‘𝐴) |
Ref | Expression |
---|---|
algcvg | ⊢ (𝐴 ∈ 𝑆 → (𝐶‘(𝑅‘𝑁)) = 0) |
Step | Hyp | Ref | Expression |
---|---|---|---|
1 | nn0uz 12274 | . . . 4 ⊢ ℕ0 = (ℤ≥‘0) | |
2 | algcvg.2 | . . . 4 ⊢ 𝑅 = seq0((𝐹 ∘ 1st ), (ℕ0 × {𝐴})) | |
3 | 0zd 11987 | . . . 4 ⊢ (𝐴 ∈ 𝑆 → 0 ∈ ℤ) | |
4 | id 22 | . . . 4 ⊢ (𝐴 ∈ 𝑆 → 𝐴 ∈ 𝑆) | |
5 | algcvg.1 | . . . . 5 ⊢ 𝐹:𝑆⟶𝑆 | |
6 | 5 | a1i 11 | . . . 4 ⊢ (𝐴 ∈ 𝑆 → 𝐹:𝑆⟶𝑆) |
7 | 1, 2, 3, 4, 6 | algrf 15911 | . . 3 ⊢ (𝐴 ∈ 𝑆 → 𝑅:ℕ0⟶𝑆) |
8 | algcvg.5 | . . . 4 ⊢ 𝑁 = (𝐶‘𝐴) | |
9 | algcvg.3 | . . . . 5 ⊢ 𝐶:𝑆⟶ℕ0 | |
10 | 9 | ffvelrni 6844 | . . . 4 ⊢ (𝐴 ∈ 𝑆 → (𝐶‘𝐴) ∈ ℕ0) |
11 | 8, 10 | eqeltrid 2917 | . . 3 ⊢ (𝐴 ∈ 𝑆 → 𝑁 ∈ ℕ0) |
12 | fvco3 6754 | . . 3 ⊢ ((𝑅:ℕ0⟶𝑆 ∧ 𝑁 ∈ ℕ0) → ((𝐶 ∘ 𝑅)‘𝑁) = (𝐶‘(𝑅‘𝑁))) | |
13 | 7, 11, 12 | syl2anc 586 | . 2 ⊢ (𝐴 ∈ 𝑆 → ((𝐶 ∘ 𝑅)‘𝑁) = (𝐶‘(𝑅‘𝑁))) |
14 | fco 6525 | . . . 4 ⊢ ((𝐶:𝑆⟶ℕ0 ∧ 𝑅:ℕ0⟶𝑆) → (𝐶 ∘ 𝑅):ℕ0⟶ℕ0) | |
15 | 9, 7, 14 | sylancr 589 | . . 3 ⊢ (𝐴 ∈ 𝑆 → (𝐶 ∘ 𝑅):ℕ0⟶ℕ0) |
16 | 0nn0 11906 | . . . . . 6 ⊢ 0 ∈ ℕ0 | |
17 | fvco3 6754 | . . . . . 6 ⊢ ((𝑅:ℕ0⟶𝑆 ∧ 0 ∈ ℕ0) → ((𝐶 ∘ 𝑅)‘0) = (𝐶‘(𝑅‘0))) | |
18 | 7, 16, 17 | sylancl 588 | . . . . 5 ⊢ (𝐴 ∈ 𝑆 → ((𝐶 ∘ 𝑅)‘0) = (𝐶‘(𝑅‘0))) |
19 | 1, 2, 3, 4 | algr0 15910 | . . . . . 6 ⊢ (𝐴 ∈ 𝑆 → (𝑅‘0) = 𝐴) |
20 | 19 | fveq2d 6668 | . . . . 5 ⊢ (𝐴 ∈ 𝑆 → (𝐶‘(𝑅‘0)) = (𝐶‘𝐴)) |
21 | 18, 20 | eqtrd 2856 | . . . 4 ⊢ (𝐴 ∈ 𝑆 → ((𝐶 ∘ 𝑅)‘0) = (𝐶‘𝐴)) |
22 | 21, 8 | syl6reqr 2875 | . . 3 ⊢ (𝐴 ∈ 𝑆 → 𝑁 = ((𝐶 ∘ 𝑅)‘0)) |
23 | 7 | ffvelrnda 6845 | . . . . 5 ⊢ ((𝐴 ∈ 𝑆 ∧ 𝑘 ∈ ℕ0) → (𝑅‘𝑘) ∈ 𝑆) |
24 | 2fveq3 6669 | . . . . . . . 8 ⊢ (𝑧 = (𝑅‘𝑘) → (𝐶‘(𝐹‘𝑧)) = (𝐶‘(𝐹‘(𝑅‘𝑘)))) | |
25 | 24 | neeq1d 3075 | . . . . . . 7 ⊢ (𝑧 = (𝑅‘𝑘) → ((𝐶‘(𝐹‘𝑧)) ≠ 0 ↔ (𝐶‘(𝐹‘(𝑅‘𝑘))) ≠ 0)) |
26 | fveq2 6664 | . . . . . . . 8 ⊢ (𝑧 = (𝑅‘𝑘) → (𝐶‘𝑧) = (𝐶‘(𝑅‘𝑘))) | |
27 | 24, 26 | breq12d 5071 | . . . . . . 7 ⊢ (𝑧 = (𝑅‘𝑘) → ((𝐶‘(𝐹‘𝑧)) < (𝐶‘𝑧) ↔ (𝐶‘(𝐹‘(𝑅‘𝑘))) < (𝐶‘(𝑅‘𝑘)))) |
28 | 25, 27 | imbi12d 347 | . . . . . 6 ⊢ (𝑧 = (𝑅‘𝑘) → (((𝐶‘(𝐹‘𝑧)) ≠ 0 → (𝐶‘(𝐹‘𝑧)) < (𝐶‘𝑧)) ↔ ((𝐶‘(𝐹‘(𝑅‘𝑘))) ≠ 0 → (𝐶‘(𝐹‘(𝑅‘𝑘))) < (𝐶‘(𝑅‘𝑘))))) |
29 | algcvg.4 | . . . . . 6 ⊢ (𝑧 ∈ 𝑆 → ((𝐶‘(𝐹‘𝑧)) ≠ 0 → (𝐶‘(𝐹‘𝑧)) < (𝐶‘𝑧))) | |
30 | 28, 29 | vtoclga 3573 | . . . . 5 ⊢ ((𝑅‘𝑘) ∈ 𝑆 → ((𝐶‘(𝐹‘(𝑅‘𝑘))) ≠ 0 → (𝐶‘(𝐹‘(𝑅‘𝑘))) < (𝐶‘(𝑅‘𝑘)))) |
31 | 23, 30 | syl 17 | . . . 4 ⊢ ((𝐴 ∈ 𝑆 ∧ 𝑘 ∈ ℕ0) → ((𝐶‘(𝐹‘(𝑅‘𝑘))) ≠ 0 → (𝐶‘(𝐹‘(𝑅‘𝑘))) < (𝐶‘(𝑅‘𝑘)))) |
32 | peano2nn0 11931 | . . . . . . 7 ⊢ (𝑘 ∈ ℕ0 → (𝑘 + 1) ∈ ℕ0) | |
33 | fvco3 6754 | . . . . . . 7 ⊢ ((𝑅:ℕ0⟶𝑆 ∧ (𝑘 + 1) ∈ ℕ0) → ((𝐶 ∘ 𝑅)‘(𝑘 + 1)) = (𝐶‘(𝑅‘(𝑘 + 1)))) | |
34 | 7, 32, 33 | syl2an 597 | . . . . . 6 ⊢ ((𝐴 ∈ 𝑆 ∧ 𝑘 ∈ ℕ0) → ((𝐶 ∘ 𝑅)‘(𝑘 + 1)) = (𝐶‘(𝑅‘(𝑘 + 1)))) |
35 | 1, 2, 3, 4, 6 | algrp1 15912 | . . . . . . 7 ⊢ ((𝐴 ∈ 𝑆 ∧ 𝑘 ∈ ℕ0) → (𝑅‘(𝑘 + 1)) = (𝐹‘(𝑅‘𝑘))) |
36 | 35 | fveq2d 6668 | . . . . . 6 ⊢ ((𝐴 ∈ 𝑆 ∧ 𝑘 ∈ ℕ0) → (𝐶‘(𝑅‘(𝑘 + 1))) = (𝐶‘(𝐹‘(𝑅‘𝑘)))) |
37 | 34, 36 | eqtrd 2856 | . . . . 5 ⊢ ((𝐴 ∈ 𝑆 ∧ 𝑘 ∈ ℕ0) → ((𝐶 ∘ 𝑅)‘(𝑘 + 1)) = (𝐶‘(𝐹‘(𝑅‘𝑘)))) |
38 | 37 | neeq1d 3075 | . . . 4 ⊢ ((𝐴 ∈ 𝑆 ∧ 𝑘 ∈ ℕ0) → (((𝐶 ∘ 𝑅)‘(𝑘 + 1)) ≠ 0 ↔ (𝐶‘(𝐹‘(𝑅‘𝑘))) ≠ 0)) |
39 | fvco3 6754 | . . . . . 6 ⊢ ((𝑅:ℕ0⟶𝑆 ∧ 𝑘 ∈ ℕ0) → ((𝐶 ∘ 𝑅)‘𝑘) = (𝐶‘(𝑅‘𝑘))) | |
40 | 7, 39 | sylan 582 | . . . . 5 ⊢ ((𝐴 ∈ 𝑆 ∧ 𝑘 ∈ ℕ0) → ((𝐶 ∘ 𝑅)‘𝑘) = (𝐶‘(𝑅‘𝑘))) |
41 | 37, 40 | breq12d 5071 | . . . 4 ⊢ ((𝐴 ∈ 𝑆 ∧ 𝑘 ∈ ℕ0) → (((𝐶 ∘ 𝑅)‘(𝑘 + 1)) < ((𝐶 ∘ 𝑅)‘𝑘) ↔ (𝐶‘(𝐹‘(𝑅‘𝑘))) < (𝐶‘(𝑅‘𝑘)))) |
42 | 31, 38, 41 | 3imtr4d 296 | . . 3 ⊢ ((𝐴 ∈ 𝑆 ∧ 𝑘 ∈ ℕ0) → (((𝐶 ∘ 𝑅)‘(𝑘 + 1)) ≠ 0 → ((𝐶 ∘ 𝑅)‘(𝑘 + 1)) < ((𝐶 ∘ 𝑅)‘𝑘))) |
43 | 15, 22, 42 | nn0seqcvgd 15908 | . 2 ⊢ (𝐴 ∈ 𝑆 → ((𝐶 ∘ 𝑅)‘𝑁) = 0) |
44 | 13, 43 | eqtr3d 2858 | 1 ⊢ (𝐴 ∈ 𝑆 → (𝐶‘(𝑅‘𝑁)) = 0) |
Colors of variables: wff setvar class |
Syntax hints: → wi 4 ∧ wa 398 = wceq 1533 ∈ wcel 2110 ≠ wne 3016 {csn 4560 class class class wbr 5058 × cxp 5547 ∘ ccom 5553 ⟶wf 6345 ‘cfv 6349 (class class class)co 7150 1st c1st 7681 0cc0 10531 1c1 10532 + caddc 10534 < clt 10669 ℕ0cn0 11891 seqcseq 13363 |
This theorem was proved from axioms: ax-mp 5 ax-1 6 ax-2 7 ax-3 8 ax-gen 1792 ax-4 1806 ax-5 1907 ax-6 1966 ax-7 2011 ax-8 2112 ax-9 2120 ax-10 2141 ax-11 2157 ax-12 2173 ax-ext 2793 ax-sep 5195 ax-nul 5202 ax-pow 5258 ax-pr 5321 ax-un 7455 ax-cnex 10587 ax-resscn 10588 ax-1cn 10589 ax-icn 10590 ax-addcl 10591 ax-addrcl 10592 ax-mulcl 10593 ax-mulrcl 10594 ax-mulcom 10595 ax-addass 10596 ax-mulass 10597 ax-distr 10598 ax-i2m1 10599 ax-1ne0 10600 ax-1rid 10601 ax-rnegex 10602 ax-rrecex 10603 ax-cnre 10604 ax-pre-lttri 10605 ax-pre-lttrn 10606 ax-pre-ltadd 10607 ax-pre-mulgt0 10608 |
This theorem depends on definitions: df-bi 209 df-an 399 df-or 844 df-3or 1084 df-3an 1085 df-tru 1536 df-ex 1777 df-nf 1781 df-sb 2066 df-mo 2618 df-eu 2650 df-clab 2800 df-cleq 2814 df-clel 2893 df-nfc 2963 df-ne 3017 df-nel 3124 df-ral 3143 df-rex 3144 df-reu 3145 df-rab 3147 df-v 3496 df-sbc 3772 df-csb 3883 df-dif 3938 df-un 3940 df-in 3942 df-ss 3951 df-pss 3953 df-nul 4291 df-if 4467 df-pw 4540 df-sn 4561 df-pr 4563 df-tp 4565 df-op 4567 df-uni 4832 df-iun 4913 df-br 5059 df-opab 5121 df-mpt 5139 df-tr 5165 df-id 5454 df-eprel 5459 df-po 5468 df-so 5469 df-fr 5508 df-we 5510 df-xp 5555 df-rel 5556 df-cnv 5557 df-co 5558 df-dm 5559 df-rn 5560 df-res 5561 df-ima 5562 df-pred 6142 df-ord 6188 df-on 6189 df-lim 6190 df-suc 6191 df-iota 6308 df-fun 6351 df-fn 6352 df-f 6353 df-f1 6354 df-fo 6355 df-f1o 6356 df-fv 6357 df-riota 7108 df-ov 7153 df-oprab 7154 df-mpo 7155 df-om 7575 df-1st 7683 df-2nd 7684 df-wrecs 7941 df-recs 8002 df-rdg 8040 df-er 8283 df-en 8504 df-dom 8505 df-sdom 8506 df-pnf 10671 df-mnf 10672 df-xr 10673 df-ltxr 10674 df-le 10675 df-sub 10866 df-neg 10867 df-nn 11633 df-n0 11892 df-z 11976 df-uz 12238 df-fz 12887 df-seq 13364 |
This theorem is referenced by: algcvga 15917 |
Copyright terms: Public domain | W3C validator |