module Noetherian where open import Prelude open import Data.List open import Data.List.Membership open import Data.List.Properties using (is-empty) module NonDec where data NoethAcc {A : Type a} (xs : List A) : Type a where noeth-acc : (∀ x → x ∉ xs → NoethAcc (x ∷ xs)) → NoethAcc xs Noetherian : Type a → Type a Noetherian A = NoethAcc {A = A} [] module Decidable where NoethFrom : List A → Type _ data NoethAcc {A : Type a} (x : A) (xs : List A) : Type a data NoethAcc x xs where done : x ∈ xs → NoethAcc x xs more : x ∉ xs → NoethFrom (x ∷ xs) → NoethAcc x xs NoethFrom xs = ∀ x → NoethAcc x xs Noetherian : Type a → Type a Noetherian A = NoethFrom {A = A} []