1
------------------------------------------------------------------------
2
-- The Agda standard library
5
------------------------------------------------------------------------
7
module Data.Nat.Primality where
10
open import Data.Fin as Fin hiding (_+_)
11
open import Data.Fin.Dec
13
open import Data.Nat.Divisibility
14
open import Relation.Nullary
15
open import Relation.Nullary.Decidable
16
open import Relation.Nullary.Negation
18
-- Definition of primality.
23
Prime (suc (suc n)) = (i : Fin n) → ¬ (2 + Fin.toℕ i ∣ 2 + n)
25
-- Decision procedure for primality.
27
prime? : ∀ n → Dec (Prime n)
30
prime? (suc (suc n)) = all? λ _ → ¬? (_ ∣? _)
34
-- Example: 2 is prime.
37
2-is-prime = from-yes (prime? 2)