Metamath Proof Explorer


Theorem algcvg

Description: One way to prove that an algorithm halts is to construct a countdown function C : S --> NN0 whose value is guaranteed to decrease for each iteration of F until it reaches 0 . That is, if X e. S is not a fixed point of F , then ( C( FX ) ) < ( CX ) .

If C is a countdown function for algorithm F , the sequence ( C( Rk ) ) reaches 0 after at most N steps, where N is the value of C for the initial state A . (Contributed by Paul Chapman, 22-Jun-2011)

Ref Expression
Hypotheses algcvg.1 F:SS
algcvg.2 R=seq0F1st0×A
algcvg.3 C:S0
algcvg.4 zSCFz0CFz<Cz
algcvg.5 N=CA
Assertion algcvg ASCRN=0

Proof

Step Hyp Ref Expression
1 algcvg.1 F:SS
2 algcvg.2 R=seq0F1st0×A
3 algcvg.3 C:S0
4 algcvg.4 zSCFz0CFz<Cz
5 algcvg.5 N=CA
6 nn0uz 0=0
7 0zd AS0
8 id ASAS
9 1 a1i ASF:SS
10 6 2 7 8 9 algrf ASR:0S
11 3 ffvelcdmi ASCA0
12 5 11 eqeltrid ASN0
13 fvco3 R:0SN0CRN=CRN
14 10 12 13 syl2anc ASCRN=CRN
15 fco C:S0R:0SCR:00
16 3 10 15 sylancr ASCR:00
17 0nn0 00
18 fvco3 R:0S00CR0=CR0
19 10 17 18 sylancl ASCR0=CR0
20 6 2 7 8 algr0 ASR0=A
21 20 fveq2d ASCR0=CA
22 19 21 eqtrd ASCR0=CA
23 5 22 eqtr4id ASN=CR0
24 10 ffvelcdmda ASk0RkS
25 2fveq3 z=RkCFz=CFRk
26 25 neeq1d z=RkCFz0CFRk0
27 fveq2 z=RkCz=CRk
28 25 27 breq12d z=RkCFz<CzCFRk<CRk
29 26 28 imbi12d z=RkCFz0CFz<CzCFRk0CFRk<CRk
30 29 4 vtoclga RkSCFRk0CFRk<CRk
31 24 30 syl ASk0CFRk0CFRk<CRk
32 peano2nn0 k0k+10
33 fvco3 R:0Sk+10CRk+1=CRk+1
34 10 32 33 syl2an ASk0CRk+1=CRk+1
35 6 2 7 8 9 algrp1 ASk0Rk+1=FRk
36 35 fveq2d ASk0CRk+1=CFRk
37 34 36 eqtrd ASk0CRk+1=CFRk
38 37 neeq1d ASk0CRk+10CFRk0
39 fvco3 R:0Sk0CRk=CRk
40 10 39 sylan ASk0CRk=CRk
41 37 40 breq12d ASk0CRk+1<CRkCFRk<CRk
42 31 38 41 3imtr4d ASk0CRk+10CRk+1<CRk
43 16 23 42 nn0seqcvgd ASCRN=0
44 14 43 eqtr3d ASCRN=0