MPE Home Metamath Proof Explorer < Previous   Next >
Nearby theorems
Mirrors  >  Home  >  MPE Home  >  Th. List  >  algcvg Structured version   Visualization version   GIF version

Theorem algcvg 16595
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.)

Hypotheses
Ref Expression
algcvg.1 𝐹:𝑆𝑆
algcvg.2 𝑅 = seq0((𝐹 ∘ 1st ), (ℕ0 × {𝐴}))
algcvg.3 𝐶:𝑆⟶ℕ0
algcvg.4 (𝑧𝑆 → ((𝐶‘(𝐹𝑧)) ≠ 0 → (𝐶‘(𝐹𝑧)) < (𝐶𝑧)))
algcvg.5 𝑁 = (𝐶𝐴)
Assertion
Ref Expression
algcvg (𝐴𝑆 → (𝐶‘(𝑅𝑁)) = 0)
Distinct variable groups:   𝑧,𝐶   𝑧,𝐹   𝑧,𝑅   𝑧,𝑆
Allowed substitution hints:   𝐴(𝑧)   𝑁(𝑧)

Proof of Theorem algcvg
Dummy variable 𝑘 is distinct from all other variables.
StepHypRef Expression
1 nn0uz 12902 . . . 4 0 = (ℤ‘0)
2 algcvg.2 . . . 4 𝑅 = seq0((𝐹 ∘ 1st ), (ℕ0 × {𝐴}))
3 0zd 12608 . . . 4 (𝐴𝑆 → 0 ∈ ℤ)
4 id 22 . . . 4 (𝐴𝑆𝐴𝑆)
5 algcvg.1 . . . . 5 𝐹:𝑆𝑆
65a1i 11 . . . 4 (𝐴𝑆𝐹:𝑆𝑆)
71, 2, 3, 4, 6algrf 16592 . . 3 (𝐴𝑆𝑅:ℕ0𝑆)
8 algcvg.5 . . . 4 𝑁 = (𝐶𝐴)
9 algcvg.3 . . . . 5 𝐶:𝑆⟶ℕ0
109ffvelcdmi 7083 . . . 4 (𝐴𝑆 → (𝐶𝐴) ∈ ℕ0)
118, 10eqeltrid 2837 . . 3 (𝐴𝑆𝑁 ∈ ℕ0)
12 fvco3 6988 . . 3 ((𝑅:ℕ0𝑆𝑁 ∈ ℕ0) → ((𝐶𝑅)‘𝑁) = (𝐶‘(𝑅𝑁)))
137, 11, 12syl2anc 584 . 2 (𝐴𝑆 → ((𝐶𝑅)‘𝑁) = (𝐶‘(𝑅𝑁)))
14 fco 6740 . . . 4 ((𝐶:𝑆⟶ℕ0𝑅:ℕ0𝑆) → (𝐶𝑅):ℕ0⟶ℕ0)
159, 7, 14sylancr 587 . . 3 (𝐴𝑆 → (𝐶𝑅):ℕ0⟶ℕ0)
16 0nn0 12524 . . . . . 6 0 ∈ ℕ0
17 fvco3 6988 . . . . . 6 ((𝑅:ℕ0𝑆 ∧ 0 ∈ ℕ0) → ((𝐶𝑅)‘0) = (𝐶‘(𝑅‘0)))
187, 16, 17sylancl 586 . . . . 5 (𝐴𝑆 → ((𝐶𝑅)‘0) = (𝐶‘(𝑅‘0)))
191, 2, 3, 4algr0 16591 . . . . . 6 (𝐴𝑆 → (𝑅‘0) = 𝐴)
2019fveq2d 6890 . . . . 5 (𝐴𝑆 → (𝐶‘(𝑅‘0)) = (𝐶𝐴))
2118, 20eqtrd 2769 . . . 4 (𝐴𝑆 → ((𝐶𝑅)‘0) = (𝐶𝐴))
228, 21eqtr4id 2788 . . 3 (𝐴𝑆𝑁 = ((𝐶𝑅)‘0))
237ffvelcdmda 7084 . . . . 5 ((𝐴𝑆𝑘 ∈ ℕ0) → (𝑅𝑘) ∈ 𝑆)
24 2fveq3 6891 . . . . . . . 8 (𝑧 = (𝑅𝑘) → (𝐶‘(𝐹𝑧)) = (𝐶‘(𝐹‘(𝑅𝑘))))
2524neeq1d 2990 . . . . . . 7 (𝑧 = (𝑅𝑘) → ((𝐶‘(𝐹𝑧)) ≠ 0 ↔ (𝐶‘(𝐹‘(𝑅𝑘))) ≠ 0))
26 fveq2 6886 . . . . . . . 8 (𝑧 = (𝑅𝑘) → (𝐶𝑧) = (𝐶‘(𝑅𝑘)))
2724, 26breq12d 5136 . . . . . . 7 (𝑧 = (𝑅𝑘) → ((𝐶‘(𝐹𝑧)) < (𝐶𝑧) ↔ (𝐶‘(𝐹‘(𝑅𝑘))) < (𝐶‘(𝑅𝑘))))
2825, 27imbi12d 344 . . . . . 6 (𝑧 = (𝑅𝑘) → (((𝐶‘(𝐹𝑧)) ≠ 0 → (𝐶‘(𝐹𝑧)) < (𝐶𝑧)) ↔ ((𝐶‘(𝐹‘(𝑅𝑘))) ≠ 0 → (𝐶‘(𝐹‘(𝑅𝑘))) < (𝐶‘(𝑅𝑘)))))
29 algcvg.4 . . . . . 6 (𝑧𝑆 → ((𝐶‘(𝐹𝑧)) ≠ 0 → (𝐶‘(𝐹𝑧)) < (𝐶𝑧)))
3028, 29vtoclga 3560 . . . . 5 ((𝑅𝑘) ∈ 𝑆 → ((𝐶‘(𝐹‘(𝑅𝑘))) ≠ 0 → (𝐶‘(𝐹‘(𝑅𝑘))) < (𝐶‘(𝑅𝑘))))
3123, 30syl 17 . . . 4 ((𝐴𝑆𝑘 ∈ ℕ0) → ((𝐶‘(𝐹‘(𝑅𝑘))) ≠ 0 → (𝐶‘(𝐹‘(𝑅𝑘))) < (𝐶‘(𝑅𝑘))))
32 peano2nn0 12549 . . . . . . 7 (𝑘 ∈ ℕ0 → (𝑘 + 1) ∈ ℕ0)
33 fvco3 6988 . . . . . . 7 ((𝑅:ℕ0𝑆 ∧ (𝑘 + 1) ∈ ℕ0) → ((𝐶𝑅)‘(𝑘 + 1)) = (𝐶‘(𝑅‘(𝑘 + 1))))
347, 32, 33syl2an 596 . . . . . 6 ((𝐴𝑆𝑘 ∈ ℕ0) → ((𝐶𝑅)‘(𝑘 + 1)) = (𝐶‘(𝑅‘(𝑘 + 1))))
351, 2, 3, 4, 6algrp1 16593 . . . . . . 7 ((𝐴𝑆𝑘 ∈ ℕ0) → (𝑅‘(𝑘 + 1)) = (𝐹‘(𝑅𝑘)))
3635fveq2d 6890 . . . . . 6 ((𝐴𝑆𝑘 ∈ ℕ0) → (𝐶‘(𝑅‘(𝑘 + 1))) = (𝐶‘(𝐹‘(𝑅𝑘))))
3734, 36eqtrd 2769 . . . . 5 ((𝐴𝑆𝑘 ∈ ℕ0) → ((𝐶𝑅)‘(𝑘 + 1)) = (𝐶‘(𝐹‘(𝑅𝑘))))
3837neeq1d 2990 . . . 4 ((𝐴𝑆𝑘 ∈ ℕ0) → (((𝐶𝑅)‘(𝑘 + 1)) ≠ 0 ↔ (𝐶‘(𝐹‘(𝑅𝑘))) ≠ 0))
39 fvco3 6988 . . . . . 6 ((𝑅:ℕ0𝑆𝑘 ∈ ℕ0) → ((𝐶𝑅)‘𝑘) = (𝐶‘(𝑅𝑘)))
407, 39sylan 580 . . . . 5 ((𝐴𝑆𝑘 ∈ ℕ0) → ((𝐶𝑅)‘𝑘) = (𝐶‘(𝑅𝑘)))
4137, 40breq12d 5136 . . . 4 ((𝐴𝑆𝑘 ∈ ℕ0) → (((𝐶𝑅)‘(𝑘 + 1)) < ((𝐶𝑅)‘𝑘) ↔ (𝐶‘(𝐹‘(𝑅𝑘))) < (𝐶‘(𝑅𝑘))))
4231, 38, 413imtr4d 294 . . 3 ((𝐴𝑆𝑘 ∈ ℕ0) → (((𝐶𝑅)‘(𝑘 + 1)) ≠ 0 → ((𝐶𝑅)‘(𝑘 + 1)) < ((𝐶𝑅)‘𝑘)))
4315, 22, 42nn0seqcvgd 16589 . 2 (𝐴𝑆 → ((𝐶𝑅)‘𝑁) = 0)
4413, 43eqtr3d 2771 1 (𝐴𝑆 → (𝐶‘(𝑅𝑁)) = 0)
Colors of variables: wff setvar class
Syntax hints:  wi 4  wa 395   = wceq 1539  wcel 2107  wne 2931  {csn 4606   class class class wbr 5123   × cxp 5663  ccom 5669  wf 6537  cfv 6541  (class class class)co 7413  1st c1st 7994  0cc0 11137  1c1 11138   + caddc 11140   < clt 11277  0cn0 12509  seqcseq 14024
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1794  ax-4 1808  ax-5 1909  ax-6 1966  ax-7 2006  ax-8 2109  ax-9 2117  ax-10 2140  ax-11 2156  ax-12 2176  ax-ext 2706  ax-sep 5276  ax-nul 5286  ax-pow 5345  ax-pr 5412  ax-un 7737  ax-cnex 11193  ax-resscn 11194  ax-1cn 11195  ax-icn 11196  ax-addcl 11197  ax-addrcl 11198  ax-mulcl 11199  ax-mulrcl 11200  ax-mulcom 11201  ax-addass 11202  ax-mulass 11203  ax-distr 11204  ax-i2m1 11205  ax-1ne0 11206  ax-1rid 11207  ax-rnegex 11208  ax-rrecex 11209  ax-cnre 11210  ax-pre-lttri 11211  ax-pre-lttrn 11212  ax-pre-ltadd 11213  ax-pre-mulgt0 11214
This theorem depends on definitions:  df-bi 207  df-an 396  df-or 848  df-3or 1087  df-3an 1088  df-tru 1542  df-fal 1552  df-ex 1779  df-nf 1783  df-sb 2064  df-mo 2538  df-eu 2567  df-clab 2713  df-cleq 2726  df-clel 2808  df-nfc 2884  df-ne 2932  df-nel 3036  df-ral 3051  df-rex 3060  df-reu 3364  df-rab 3420  df-v 3465  df-sbc 3771  df-csb 3880  df-dif 3934  df-un 3936  df-in 3938  df-ss 3948  df-pss 3951  df-nul 4314  df-if 4506  df-pw 4582  df-sn 4607  df-pr 4609  df-op 4613  df-uni 4888  df-iun 4973  df-br 5124  df-opab 5186  df-mpt 5206  df-tr 5240  df-id 5558  df-eprel 5564  df-po 5572  df-so 5573  df-fr 5617  df-we 5619  df-xp 5671  df-rel 5672  df-cnv 5673  df-co 5674  df-dm 5675  df-rn 5676  df-res 5677  df-ima 5678  df-pred 6301  df-ord 6366  df-on 6367  df-lim 6368  df-suc 6369  df-iota 6494  df-fun 6543  df-fn 6544  df-f 6545  df-f1 6546  df-fo 6547  df-f1o 6548  df-fv 6549  df-riota 7370  df-ov 7416  df-oprab 7417  df-mpo 7418  df-om 7870  df-1st 7996  df-2nd 7997  df-frecs 8288  df-wrecs 8319  df-recs 8393  df-rdg 8432  df-er 8727  df-en 8968  df-dom 8969  df-sdom 8970  df-pnf 11279  df-mnf 11280  df-xr 11281  df-ltxr 11282  df-le 11283  df-sub 11476  df-neg 11477  df-nn 12249  df-n0 12510  df-z 12597  df-uz 12861  df-fz 13530  df-seq 14025
This theorem is referenced by:  algcvga  16598
  Copyright terms: Public domain W3C validator