ILE Home Intuitionistic Logic Explorer < Previous   Next >
Nearby theorems
Mirrors  >  Home  >  ILE Home  >  Th. List  >  eucalginv GIF version

Theorem eucalginv 12249
Description: The invariant of the step function 𝐸 for Euclid's Algorithm is the gcd operator applied to the state. (Contributed by Paul Chapman, 31-Mar-2011.) (Revised by Mario Carneiro, 29-May-2014.)
Hypothesis
Ref Expression
eucalgval.1 𝐸 = (𝑥 ∈ ℕ0, 𝑦 ∈ ℕ0 ↦ if(𝑦 = 0, ⟨𝑥, 𝑦⟩, ⟨𝑦, (𝑥 mod 𝑦)⟩))
Assertion
Ref Expression
eucalginv (𝑋 ∈ (ℕ0 × ℕ0) → ( gcd ‘(𝐸𝑋)) = ( gcd ‘𝑋))
Distinct variable group:   𝑥,𝑦,𝑋
Allowed substitution hints:   𝐸(𝑥,𝑦)

Proof of Theorem eucalginv
StepHypRef Expression
1 eucalgval.1 . . . 4 𝐸 = (𝑥 ∈ ℕ0, 𝑦 ∈ ℕ0 ↦ if(𝑦 = 0, ⟨𝑥, 𝑦⟩, ⟨𝑦, (𝑥 mod 𝑦)⟩))
21eucalgval 12247 . . 3 (𝑋 ∈ (ℕ0 × ℕ0) → (𝐸𝑋) = if((2nd𝑋) = 0, 𝑋, ⟨(2nd𝑋), ( mod ‘𝑋)⟩))
32fveq2d 5565 . 2 (𝑋 ∈ (ℕ0 × ℕ0) → ( gcd ‘(𝐸𝑋)) = ( gcd ‘if((2nd𝑋) = 0, 𝑋, ⟨(2nd𝑋), ( mod ‘𝑋)⟩)))
4 1st2nd2 6242 . . . . . . . . 9 (𝑋 ∈ (ℕ0 × ℕ0) → 𝑋 = ⟨(1st𝑋), (2nd𝑋)⟩)
54adantr 276 . . . . . . . 8 ((𝑋 ∈ (ℕ0 × ℕ0) ∧ (2nd𝑋) ∈ ℕ) → 𝑋 = ⟨(1st𝑋), (2nd𝑋)⟩)
65fveq2d 5565 . . . . . . 7 ((𝑋 ∈ (ℕ0 × ℕ0) ∧ (2nd𝑋) ∈ ℕ) → ( mod ‘𝑋) = ( mod ‘⟨(1st𝑋), (2nd𝑋)⟩))
7 df-ov 5928 . . . . . . 7 ((1st𝑋) mod (2nd𝑋)) = ( mod ‘⟨(1st𝑋), (2nd𝑋)⟩)
86, 7eqtr4di 2247 . . . . . 6 ((𝑋 ∈ (ℕ0 × ℕ0) ∧ (2nd𝑋) ∈ ℕ) → ( mod ‘𝑋) = ((1st𝑋) mod (2nd𝑋)))
98oveq2d 5941 . . . . 5 ((𝑋 ∈ (ℕ0 × ℕ0) ∧ (2nd𝑋) ∈ ℕ) → ((2nd𝑋) gcd ( mod ‘𝑋)) = ((2nd𝑋) gcd ((1st𝑋) mod (2nd𝑋))))
10 nnz 9362 . . . . . . 7 ((2nd𝑋) ∈ ℕ → (2nd𝑋) ∈ ℤ)
1110adantl 277 . . . . . 6 ((𝑋 ∈ (ℕ0 × ℕ0) ∧ (2nd𝑋) ∈ ℕ) → (2nd𝑋) ∈ ℤ)
12 xp1st 6232 . . . . . . . . . 10 (𝑋 ∈ (ℕ0 × ℕ0) → (1st𝑋) ∈ ℕ0)
1312adantr 276 . . . . . . . . 9 ((𝑋 ∈ (ℕ0 × ℕ0) ∧ (2nd𝑋) ∈ ℕ) → (1st𝑋) ∈ ℕ0)
1413nn0zd 9463 . . . . . . . 8 ((𝑋 ∈ (ℕ0 × ℕ0) ∧ (2nd𝑋) ∈ ℕ) → (1st𝑋) ∈ ℤ)
15 zmodcl 10453 . . . . . . . 8 (((1st𝑋) ∈ ℤ ∧ (2nd𝑋) ∈ ℕ) → ((1st𝑋) mod (2nd𝑋)) ∈ ℕ0)
1614, 15sylancom 420 . . . . . . 7 ((𝑋 ∈ (ℕ0 × ℕ0) ∧ (2nd𝑋) ∈ ℕ) → ((1st𝑋) mod (2nd𝑋)) ∈ ℕ0)
1716nn0zd 9463 . . . . . 6 ((𝑋 ∈ (ℕ0 × ℕ0) ∧ (2nd𝑋) ∈ ℕ) → ((1st𝑋) mod (2nd𝑋)) ∈ ℤ)
18 gcdcom 12165 . . . . . 6 (((2nd𝑋) ∈ ℤ ∧ ((1st𝑋) mod (2nd𝑋)) ∈ ℤ) → ((2nd𝑋) gcd ((1st𝑋) mod (2nd𝑋))) = (((1st𝑋) mod (2nd𝑋)) gcd (2nd𝑋)))
1911, 17, 18syl2anc 411 . . . . 5 ((𝑋 ∈ (ℕ0 × ℕ0) ∧ (2nd𝑋) ∈ ℕ) → ((2nd𝑋) gcd ((1st𝑋) mod (2nd𝑋))) = (((1st𝑋) mod (2nd𝑋)) gcd (2nd𝑋)))
20 modgcd 12183 . . . . . 6 (((1st𝑋) ∈ ℤ ∧ (2nd𝑋) ∈ ℕ) → (((1st𝑋) mod (2nd𝑋)) gcd (2nd𝑋)) = ((1st𝑋) gcd (2nd𝑋)))
2114, 20sylancom 420 . . . . 5 ((𝑋 ∈ (ℕ0 × ℕ0) ∧ (2nd𝑋) ∈ ℕ) → (((1st𝑋) mod (2nd𝑋)) gcd (2nd𝑋)) = ((1st𝑋) gcd (2nd𝑋)))
229, 19, 213eqtrd 2233 . . . 4 ((𝑋 ∈ (ℕ0 × ℕ0) ∧ (2nd𝑋) ∈ ℕ) → ((2nd𝑋) gcd ( mod ‘𝑋)) = ((1st𝑋) gcd (2nd𝑋)))
23 nnne0 9035 . . . . . . . . 9 ((2nd𝑋) ∈ ℕ → (2nd𝑋) ≠ 0)
2423adantl 277 . . . . . . . 8 ((𝑋 ∈ (ℕ0 × ℕ0) ∧ (2nd𝑋) ∈ ℕ) → (2nd𝑋) ≠ 0)
2524neneqd 2388 . . . . . . 7 ((𝑋 ∈ (ℕ0 × ℕ0) ∧ (2nd𝑋) ∈ ℕ) → ¬ (2nd𝑋) = 0)
2625iffalsed 3572 . . . . . 6 ((𝑋 ∈ (ℕ0 × ℕ0) ∧ (2nd𝑋) ∈ ℕ) → if((2nd𝑋) = 0, 𝑋, ⟨(2nd𝑋), ( mod ‘𝑋)⟩) = ⟨(2nd𝑋), ( mod ‘𝑋)⟩)
2726fveq2d 5565 . . . . 5 ((𝑋 ∈ (ℕ0 × ℕ0) ∧ (2nd𝑋) ∈ ℕ) → ( gcd ‘if((2nd𝑋) = 0, 𝑋, ⟨(2nd𝑋), ( mod ‘𝑋)⟩)) = ( gcd ‘⟨(2nd𝑋), ( mod ‘𝑋)⟩))
28 df-ov 5928 . . . . 5 ((2nd𝑋) gcd ( mod ‘𝑋)) = ( gcd ‘⟨(2nd𝑋), ( mod ‘𝑋)⟩)
2927, 28eqtr4di 2247 . . . 4 ((𝑋 ∈ (ℕ0 × ℕ0) ∧ (2nd𝑋) ∈ ℕ) → ( gcd ‘if((2nd𝑋) = 0, 𝑋, ⟨(2nd𝑋), ( mod ‘𝑋)⟩)) = ((2nd𝑋) gcd ( mod ‘𝑋)))
305fveq2d 5565 . . . . 5 ((𝑋 ∈ (ℕ0 × ℕ0) ∧ (2nd𝑋) ∈ ℕ) → ( gcd ‘𝑋) = ( gcd ‘⟨(1st𝑋), (2nd𝑋)⟩))
31 df-ov 5928 . . . . 5 ((1st𝑋) gcd (2nd𝑋)) = ( gcd ‘⟨(1st𝑋), (2nd𝑋)⟩)
3230, 31eqtr4di 2247 . . . 4 ((𝑋 ∈ (ℕ0 × ℕ0) ∧ (2nd𝑋) ∈ ℕ) → ( gcd ‘𝑋) = ((1st𝑋) gcd (2nd𝑋)))
3322, 29, 323eqtr4d 2239 . . 3 ((𝑋 ∈ (ℕ0 × ℕ0) ∧ (2nd𝑋) ∈ ℕ) → ( gcd ‘if((2nd𝑋) = 0, 𝑋, ⟨(2nd𝑋), ( mod ‘𝑋)⟩)) = ( gcd ‘𝑋))
34 iftrue 3567 . . . . 5 ((2nd𝑋) = 0 → if((2nd𝑋) = 0, 𝑋, ⟨(2nd𝑋), ( mod ‘𝑋)⟩) = 𝑋)
3534fveq2d 5565 . . . 4 ((2nd𝑋) = 0 → ( gcd ‘if((2nd𝑋) = 0, 𝑋, ⟨(2nd𝑋), ( mod ‘𝑋)⟩)) = ( gcd ‘𝑋))
3635adantl 277 . . 3 ((𝑋 ∈ (ℕ0 × ℕ0) ∧ (2nd𝑋) = 0) → ( gcd ‘if((2nd𝑋) = 0, 𝑋, ⟨(2nd𝑋), ( mod ‘𝑋)⟩)) = ( gcd ‘𝑋))
37 xp2nd 6233 . . . 4 (𝑋 ∈ (ℕ0 × ℕ0) → (2nd𝑋) ∈ ℕ0)
38 elnn0 9268 . . . 4 ((2nd𝑋) ∈ ℕ0 ↔ ((2nd𝑋) ∈ ℕ ∨ (2nd𝑋) = 0))
3937, 38sylib 122 . . 3 (𝑋 ∈ (ℕ0 × ℕ0) → ((2nd𝑋) ∈ ℕ ∨ (2nd𝑋) = 0))
4033, 36, 39mpjaodan 799 . 2 (𝑋 ∈ (ℕ0 × ℕ0) → ( gcd ‘if((2nd𝑋) = 0, 𝑋, ⟨(2nd𝑋), ( mod ‘𝑋)⟩)) = ( gcd ‘𝑋))
413, 40eqtrd 2229 1 (𝑋 ∈ (ℕ0 × ℕ0) → ( gcd ‘(𝐸𝑋)) = ( gcd ‘𝑋))
Colors of variables: wff set class
Syntax hints:  wi 4  wa 104  wo 709   = wceq 1364  wcel 2167  wne 2367  ifcif 3562  cop 3626   × cxp 4662  cfv 5259  (class class class)co 5925  cmpo 5927  1st c1st 6205  2nd c2nd 6206  0cc0 7896  cn 9007  0cn0 9266  cz 9343   mod cmo 10431   gcd cgcd 12145
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-ia1 106  ax-ia2 107  ax-ia3 108  ax-in1 615  ax-in2 616  ax-io 710  ax-5 1461  ax-7 1462  ax-gen 1463  ax-ie1 1507  ax-ie2 1508  ax-8 1518  ax-10 1519  ax-11 1520  ax-i12 1521  ax-bndl 1523  ax-4 1524  ax-17 1540  ax-i9 1544  ax-ial 1548  ax-i5r 1549  ax-13 2169  ax-14 2170  ax-ext 2178  ax-coll 4149  ax-sep 4152  ax-nul 4160  ax-pow 4208  ax-pr 4243  ax-un 4469  ax-setind 4574  ax-iinf 4625  ax-cnex 7987  ax-resscn 7988  ax-1cn 7989  ax-1re 7990  ax-icn 7991  ax-addcl 7992  ax-addrcl 7993  ax-mulcl 7994  ax-mulrcl 7995  ax-addcom 7996  ax-mulcom 7997  ax-addass 7998  ax-mulass 7999  ax-distr 8000  ax-i2m1 8001  ax-0lt1 8002  ax-1rid 8003  ax-0id 8004  ax-rnegex 8005  ax-precex 8006  ax-cnre 8007  ax-pre-ltirr 8008  ax-pre-ltwlin 8009  ax-pre-lttrn 8010  ax-pre-apti 8011  ax-pre-ltadd 8012  ax-pre-mulgt0 8013  ax-pre-mulext 8014  ax-arch 8015  ax-caucvg 8016
This theorem depends on definitions:  df-bi 117  df-stab 832  df-dc 836  df-3or 981  df-3an 982  df-tru 1367  df-fal 1370  df-nf 1475  df-sb 1777  df-eu 2048  df-mo 2049  df-clab 2183  df-cleq 2189  df-clel 2192  df-nfc 2328  df-ne 2368  df-nel 2463  df-ral 2480  df-rex 2481  df-reu 2482  df-rmo 2483  df-rab 2484  df-v 2765  df-sbc 2990  df-csb 3085  df-dif 3159  df-un 3161  df-in 3163  df-ss 3170  df-nul 3452  df-if 3563  df-pw 3608  df-sn 3629  df-pr 3630  df-op 3632  df-uni 3841  df-int 3876  df-iun 3919  df-br 4035  df-opab 4096  df-mpt 4097  df-tr 4133  df-id 4329  df-po 4332  df-iso 4333  df-iord 4402  df-on 4404  df-ilim 4405  df-suc 4407  df-iom 4628  df-xp 4670  df-rel 4671  df-cnv 4672  df-co 4673  df-dm 4674  df-rn 4675  df-res 4676  df-ima 4677  df-iota 5220  df-fun 5261  df-fn 5262  df-f 5263  df-f1 5264  df-fo 5265  df-f1o 5266  df-fv 5267  df-riota 5880  df-ov 5928  df-oprab 5929  df-mpo 5930  df-1st 6207  df-2nd 6208  df-recs 6372  df-frec 6458  df-sup 7059  df-pnf 8080  df-mnf 8081  df-xr 8082  df-ltxr 8083  df-le 8084  df-sub 8216  df-neg 8217  df-reap 8619  df-ap 8626  df-div 8717  df-inn 9008  df-2 9066  df-3 9067  df-4 9068  df-n0 9267  df-z 9344  df-uz 9619  df-q 9711  df-rp 9746  df-fz 10101  df-fzo 10235  df-fl 10377  df-mod 10432  df-seqfrec 10557  df-exp 10648  df-cj 11024  df-re 11025  df-im 11026  df-rsqrt 11180  df-abs 11181  df-dvds 11970  df-gcd 12146
This theorem is referenced by:  eucalg  12252
  Copyright terms: Public domain W3C validator