2
module TypeConstructorsWhichPreserveGuardedness1 where
4
open import Imports.Coinduction
8
data _⊎_ (A B : Set) : Set where
12
record ∃ {A : Set} (B : A → Set) : Set where
18
data Rec (A : ∞ Set) : Set where
32
ℕ-rec : (P : ℕ → Set) →
34
(∀ n → P n → P (suc n)) →
36
ℕ-rec P z s (inj₁ _) = z
37
ℕ-rec P z s (inj₂ (fold n)) = s n (ℕ-rec P z s n)
48
ℕ = ∃ λ (c : ℕC) → ℕ′ c
58
suc n = (′suc , fold n)
60
ℕ-rec : (P : ℕ → Set) →
62
(∀ n → P n → P (suc n)) →
64
ℕ-rec P z s (′zero , _) = z
65
ℕ-rec P z s (′suc , fold n) = s n (ℕ-rec P z s n)