{-# OPTIONS --without-K --exact-split --safe #-}

open import Agda.Builtin.Equality

module Inductive.Constructors.W-types
  (A : Set) (B : A  Set)
  where

data W : Set where
  sup : (a : A) (f : B a  W)  W

El-W :  {e}  (M : W  Set e)
         (d : (a : A)
             (f : B a  W)
             (h : (b : B a)  M (f b))
              M (sup a f))
         (w : W)  M w

El-W M d (sup a f) = d a f λ b  El-W M d (f b)

C-W :  {e}  (M : W  Set e)
      (d : (a : A)
           (f : B a  W)
           (h : (b : B a)  M (f b))
            M (sup a f))
       (a : A) (f : B a  W)
       El-W M d (sup a f)  d a f λ b  El-W M d (f b)

C-W M d a f = refl