Table of ContentsTable of Contents Mathbox for Paul Chapman < Previous   Next >
Related theorems
Unicode version

Theorem algcvg 13744
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` (F` X)) < (C` X).

If C is a countdown function for algorithm F, the sequence (C` (R` k)) 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.)

Hypotheses
Ref Expression
algcvg.1 |- S e. _V
algcvg.2 |- F:S-->S
algcvg.3 |- R = ((F o. (1st |` (S X. S))) seq0 (NN0 X. {A}))
algcvg.4 |- C:S-->NN0
algcvg.5 |- (z e. S -> ((C` (F` z)) =/= 0 -> (C` (F` z)) < (C` z)))
algcvg.6 |- N = (C` A)
Assertion
Ref Expression
algcvg |- (A e. S -> (C` (R` N)) = 0)
Distinct variable groups:   z,C   z,F   z,R   z,S

Proof of Theorem algcvg
StepHypRef Expression
1 algcvg.1 . . . 4 |- S e. _V
2 algcvg.2 . . . 4 |- F:S-->S
3 algcvg.3 . . . 4 |- R = ((F o. (1st |` (S X. S))) seq0 (NN0 X. {A}))
41, 2, 3algrf 13739 . . 3 |- (A e. S -> R:NN0-->S)
5 algcvg.4 . . . . 5 |- C:S-->NN0
65ffvelrni 4788 . . . 4 |- (A e. S -> (C` A) e. NN0)
7 algcvg.6 . . . 4 |- N = (C` A)
86, 7syl5eqel 1975 . . 3 |- (A e. S -> N e. NN0)
9 ffun 4565 . . . . 5 |- (C:S-->NN0 -> Fun C)
105, 9ax-mp 7 . . . 4 |- Fun C
11 fvco3 4739 . . . 4 |- ((Fun C /\ R:NN0-->S /\ N e. NN0) -> ((C o. R)` N) = (C` (R` N)))
1210, 11mp3an1 1178 . . 3 |- ((R:NN0-->S /\ N e. NN0) -> ((C o. R)` N) = (C` (R` N)))
134, 8, 12syl11anc 524 . 2 |- (A e. S -> ((C o. R)` N) = (C` (R` N)))
14 fco 4573 . . . . 5 |- ((C:S-->NN0 /\ R:NN0-->S) -> (C o. R):NN0-->NN0)
155, 14mpan 759 . . . 4 |- (R:NN0-->S -> (C o. R):NN0-->NN0)
164, 15syl 12 . . 3 |- (A e. S -> (C o. R):NN0-->NN0)
17 0nn0 7322 . . . . . . 7 |- 0 e. NN0
18 fvco3 4739 . . . . . . 7 |- ((Fun C /\ R:NN0-->S /\ 0 e. NN0) -> ((C o. R)` 0) = (C` (R` 0)))
1910, 17, 18mp3an13 1182 . . . . . 6 |- (R:NN0-->S -> ((C o. R)` 0) = (C` (R` 0)))
204, 19syl 12 . . . . 5 |- (A e. S -> ((C o. R)` 0) = (C` (R` 0)))
211, 2, 3algr0 13740 . . . . . 6 |- (A e. S -> (R` 0) = A)
2221fveq2d 4685 . . . . 5 |- (A e. S -> (C` (R` 0)) = (C` A))
2320, 22eqtrd 1925 . . . 4 |- (A e. S -> ((C o. R)` 0) = (C` A))
2423, 7syl6reqr 1947 . . 3 |- (A e. S -> N = ((C o. R)` 0))
25 ffvelrn 4787 . . . . . 6 |- ((R:NN0-->S /\ k e. NN0) -> (R` k) e. S)
2625, 4sylan 497 . . . . 5 |- ((A e. S /\ k e. NN0) -> (R` k) e. S)
27 fveq2 4681 . . . . . . . . 9 |- (z = (R` k) -> (F` z) = (F` (R` k)))
2827fveq2d 4685 . . . . . . . 8 |- (z = (R` k) -> (C` (F` z)) = (C` (F` (R` k))))
2928neeq1d 2028 . . . . . . 7 |- (z = (R` k) -> ((C` (F` z)) =/= 0 <-> (C` (F` (R` k))) =/= 0))
30 fveq2 4681 . . . . . . . 8 |- (z = (R` k) -> (C` z) = (C` (R` k)))
3128, 30breq12d 3351 . . . . . . 7 |- (z = (R` k) -> ((C` (F` z)) < (C` z) <-> (C` (F` (R` k))) < (C` (R` k))))
3229, 31imbi12d 688 . . . . . 6 |- (z = (R` k) -> (((C` (F` z)) =/= 0 -> (C` (F` z)) < (C` z)) <-> ((C` (F` (R` k))) =/= 0 -> (C` (F` (R` k))) < (C` (R` k)))))
33 algcvg.5 . . . . . . 7 |- (z e. S -> ((C` (F` z)) =/= 0 -> (C` (F` z)) < (C` z)))
3433rgen 2159 . . . . . 6 |- A.z e. S ((C` (F` z)) =/= 0 -> (C` (F` z)) < (C` z))
3532, 34vtoclri 2360 . . . . 5 |- ((R` k) e. S -> ((C` (F` (R` k))) =/= 0 -> (C` (F` (R` k))) < (C` (R` k))))
3626, 35syl 12 . . . 4 |- ((A e. S /\ k e. NN0) -> ((C` (F` (R` k))) =/= 0 -> (C` (F` (R` k))) < (C` (R` k))))
37 fvco3 4739 . . . . . . . . 9 |- ((Fun C /\ R:NN0-->S /\ (k + 1) e. NN0) -> ((C o. R)` (k + 1)) = (C` (R` (k + 1))))
3810, 37mp3an1 1178 . . . . . . . 8 |- ((R:NN0-->S /\ (k + 1) e. NN0) -> ((C o. R)` (k + 1)) = (C` (R` (k + 1))))
39 peano2nn0 7333 . . . . . . . 8 |- (k e. NN0 -> (k + 1) e. NN0)
4038, 4, 39syl2an 503 . . . . . . 7 |- ((A e. S /\ k e. NN0) -> ((C o. R)` (k + 1)) = (C` (R` (k + 1))))
411, 2, 3algrp1 13742 . . . . . . . 8 |- ((A e. S /\ k e. NN0) -> (R` (k + 1)) = (F` (R` k)))
4241fveq2d 4685 . . . . . . 7 |- ((A e. S /\ k e. NN0) -> (C` (R` (k + 1))) = (C` (F` (R` k))))
4340, 42eqtrd 1925 . . . . . 6 |- ((A e. S /\ k e. NN0) -> ((C o. R)` (k + 1)) = (C` (F` (R` k))))
4443neeq1d 2028 . . . . 5 |- ((A e. S /\ k e. NN0) -> (((C o. R)` (k + 1)) =/= 0 <-> (C` (F` (R` k))) =/= 0))
45 fvco3 4739 . . . . . . . 8 |- ((Fun C /\ R:NN0-->S /\ k e. NN0) -> ((C o. R)` k) = (C` (R` k)))
4610, 45mp3an1 1178 . . . . . . 7 |- ((R:NN0-->S /\ k e. NN0) -> ((C o. R)` k) = (C` (R` k)))
4746, 4sylan 497 . . . . . 6 |- ((A e. S /\ k e. NN0) -> ((C o. R)` k) = (C` (R` k)))
4843, 47breq12d 3351 . . . . 5 |- ((A e. S /\ k e. NN0) -> (((C o. R)` (k + 1)) < ((C o. R)` k) <-> (C` (F` (R` k))) < (C` (R` k))))
4944, 48imbi12d 688 . . . 4 |- ((A e. S /\ k e. NN0) -> ((((C o. R)` (k + 1)) =/= 0 -> ((C o. R)` (k + 1)) < ((C o. R)` k)) <-> ((C` (F` (R` k))) =/= 0 -> (C` (F` (R` k))) < (C` (R` k)))))
5036, 49mpbird 213 . . 3 |- ((A e. S /\ k e. NN0) -> (((C o. R)` (k + 1)) =/= 0 -> ((C o. R)` (k + 1)) < ((C o. R)` k)))
5116, 24, 50nn0seqcvgd 13659 . 2 |- (A e. S -> ((C o. R)` N) = 0)
5213, 51eqtr3d 1927 1 |- (A e. S -> (C` (R` N)) = 0)
Colors of variables: wff set class
Syntax hints:   -> wi 3   /\ wa 240   = wceq 1298   e. wcel 1300   =/= wne 2017  _Vcvv 2292  {csn 3044   class class class wbr 3338   X. cxp 3984   |` cres 3988   o. ccom 3990  Fun wfun 3992  -->wf 3994  ` cfv 3998  (class class class)co 4884  1stc1st 5018  0cc0 6386  1c1 6387   + caddc 6389  NN0cn0 6450   < clt 6653   seq0 cseq0 7775
This theorem is referenced by:  algcvga 13747
This theorem was proved from axioms:  ax-1 4  ax-2 5  ax-3 6  ax-mp 7  ax-7 1304  ax-gen 1305  ax-8 1306  ax-9 1307  ax-10 1308  ax-11 1309  ax-12 1310  ax-13 1311  ax-14 1312  ax-17 1317  ax-4 1319  ax-5o 1321  ax-6o 1324  ax-9o 1481  ax-10o 1500  ax-16 1580  ax-11o 1588  ax-ext 1865  ax-rep 3428  ax-sep 3438  ax-nul 3445  ax-pow 3481  ax-pr 3524  ax-un 3790  ax-inf2 5731
This theorem depends on definitions:  df-bi 164  df-or 241  df-an 242  df-3or 859  df-3an 860  df-ex 1327  df-sb 1536  df-eu 1775  df-mo 1776  df-clab 1872  df-cleq 1877  df-clel 1880  df-ne 2019  df-nel 2020  df-ral 2109  df-rex 2110  df-reu 2111  df-rab 2112  df-v 2294  df-sbc 2454  df-csb 2541  df-dif 2597  df-un 2600  df-in 2603  df-ss 2605  df-pss 2607  df-nul 2876  df-if 2983  df-pw 3035  df-sn 3049  df-pr 3050  df-tp 3052  df-op 3053  df-uni 3178  df-int 3215  df-iun 3257  df-br 3339  df-opab 3396  df-tr 3412  df-eprel 3583  df-id 3586  df-po 3591  df-so 3604  df-fr 3625  df-we 3644  df-ord 3660  df-on 3661  df-lim 3662  df-suc 3663  df-om 3950  df-xp 4000  df-rel 4001  df-cnv 4002  df-co 4003  df-dm 4004  df-rn 4005  df-res 4006  df-ima 4007  df-fun 4008  df-fn 4009  df-f 4010  df-f1 4011  df-fo 4012  df-f1o 4013  df-fv 4014  df-opr 4886  df-oprab 4887  df-mpt 5006  df-1st 5020  df-2nd 5021  df-iota 5089  df-rdg 5140  df-1o 5177  df-oadd 5179  df-omul 5180  df-er 5318  df-ec 5320  df-qs 5323  df-en 5427  df-dom 5428  df-sdom 5429  df-undef 5556  df-riota 5560  df-ni 6152  df-pli 6153  df-mi 6154  df-lti 6155  df-plpq 6187  df-mpq 6188  df-enq 6189  df-nq 6190  df-plq 6191  df-mq 6192  df-rq 6193  df-ltq 6194  df-1q 6195  df-np 6238  df-1p 6239  df-plp 6240  df-mp 6241  df-ltp 6242  df-plpr 6316  df-mpr 6317  df-enr 6318  df-nr 6319  df-plr 6320  df-mr 6321  df-ltr 6322  df-0r 6323  df-1r 6324  df-m1r 6325  df-c 6392  df-0 6393  df-1 6394  df-i 6395  df-r 6396  df-plus 6397  df-mul 6398  df-lt 6399  df-sub 6511  df-neg 6513  df-pnf 6654  df-mnf 6655  df-xr 6656  df-ltxr 6657  df-le 6658  df-n 7108  df-n0 7309  df-z 7345  df-uz 7587  df-seq1 7721  df-shft 7754  df-seqz 7776  df-seq0 7777
Copyright terms: Public domain