# HG changeset patch # User Shinji KONO # Date 1624964612 -32400 # Node ID 9fc9e19f2c37dd52106b773666541eb8ea30da97 # Parent 9d2cba39b33ceebe383a11c98545110ca82f04c2 ... diff -r 9d2cba39b33c -r 9fc9e19f2c37 automaton-in-agda/src/prime.agda --- a/automaton-in-agda/src/prime.agda Tue Jun 29 18:37:42 2021 +0900 +++ b/automaton-in-agda/src/prime.agda Tue Jun 29 20:03:32 2021 +0900 @@ -101,60 +101,40 @@ ... | tri> ¬a ¬b c = np1 n m np 1 n≤j j1 = s≤s (s≤s z≤n) } where - pif3 : (n : ℕ) → n < 3 → 0 < n → gcd 3 n ≡ 1 - pif3 .1 (s≤s (s≤s z≤n)) _ = refl - pif3 .2 (s≤s (s≤s (s≤s z≤n))) _ = refl -prime-is-infinite (suc m) pmax = newPrime where - factorial : (n : ℕ) → ℕ - factorial zero = 1 - factorial (suc n) = (suc n) * (factorial n) - prime ¬a ¬b c = ⊥-elim ( pmax n c p ) - factorial-mono : (n : ℕ) → factorial n ≤ factorial (suc n) - factorial-mono n = begin +factorial : (n : ℕ) → ℕ +factorial zero = 1 +factorial (suc n) = (suc n) * (factorial n) +factorial-mono : (n : ℕ) → factorial n ≤ factorial (suc n) +factorial-mono n = begin factorial n ≤⟨ x≤x+y ⟩ factorial n + n * factorial n ≡⟨ refl ⟩ (suc n) * factorial n ≡⟨ refl ⟩ factorial (suc n) ∎ where open ≤-Reasoning - factorial≥1 : {m : ℕ} → 1 ≤ factorial m - factorial≥1 {zero} = ≤-refl - factorial≥1 {suc m} = begin +factorial≥1 : {m : ℕ} → 1 ≤ factorial m +factorial≥1 {zero} = ≤-refl +factorial≥1 {suc m} = begin 1 ≤⟨ s≤s z≤n ⟩ (suc m) * 1 ≤⟨ *-monoʳ-≤ (suc m) (factorial≥1 {m}) ⟩ (suc m) * factorial m ≡⟨ refl ⟩ factorial (suc m) ∎ where open ≤-Reasoning - mm : suc m < suc (factorial (suc m)) - f>m = begin - suc (suc m) ≡⟨ cong (λ k → 1 + suc k ) (+-comm _ m) ⟩ - suc (1 + 1 * m) ≡⟨ cong (λ k → suc (1 + k )) (*-comm 1 m) ⟩ - suc (1 + m * 1) ≤⟨ s≤s (s≤s (*-monoʳ-≤ m (factorial≥1 {m}) )) ⟩ - suc (1 + m * factorial m) ≤⟨ s≤s (+-monoˡ-≤ _ (factorial≥1 {m})) ⟩ - suc (factorial m + m * factorial m) ≡⟨ refl ⟩ - suc (factorial (suc m)) ∎ where open ≤-Reasoning - fact< : (m n : ℕ) → 0 < n → n < suc (suc m) → Dividable n ( factorial (suc m) ) - fact< zero 1 0 ¬a ¬b c = ⊥-elim ( nat-≤> c n ¬a ¬b c = ⊥-elim ( nat-≤> c nm : {m : ℕ} → suc m < suc (factorial (suc m)) +f>m {m} = begin + suc (suc m) ≡⟨ cong (λ k → 1 + suc k ) (+-comm _ m) ⟩ + suc (1 + 1 * m) ≡⟨ cong (λ k → suc (1 + k )) (*-comm 1 m) ⟩ + suc (1 + m * 1) ≤⟨ s≤s (s≤s (*-monoʳ-≤ m (factorial≥1 {m}) )) ⟩ + suc (1 + m * factorial m) ≤⟨ s≤s (+-monoˡ-≤ _ (factorial≥1 {m})) ⟩ + suc (factorial m + m * factorial m) ≡⟨ refl ⟩ + suc (factorial (suc m)) ∎ where open ≤-Reasoning + +prime-is-infinite : (max-prime : ℕ ) → ¬ ( (j : ℕ) → max-prime < j → ¬ Prime j ) +prime-is-infinite zero pmax = pmax 3 (s≤s z≤n) record { isPrime = λ n lt 01 = s≤s (s≤s z≤n) } where + pif3 : (n : ℕ) → n < 3 → 0 < n → gcd 3 n ≡ 1 + pif3 .1 (s≤s (s≤s z≤n)) _ = refl + pif3 .2 (s≤s (s≤s (s≤s z≤n))) _ = refl +prime-is-infinite (suc m) pmax = newPrime where + prime ¬a ¬b c = ⊥-elim ( pmax n c p ) fact : (n : ℕ) → Prime n → Dividable n ( factorial (suc m) ) fact n p = fact< m n (<-trans (s≤s z≤n) (Prime.p>1 p)) ( prime 1 → Dividable k i → ¬ Dividable k (suc i)