{-# OPTIONS --allow-unsolved-metas #-}

module Unifier where

open import Data.Nat.Base using (; zero; suc)
open import StateOfTheArt
  using ( _×_; 
        ; _,_
        ; _≡_; refl
        )


_ : _
_ = _




_ : (_  _)  (  )
_ = refl




_ : let ?A = _ in (?A  ?A)  (  )
_ = refl



_ : (  _)  (  )
_ = refl



_ : _  (_  _)
_ = refl


private
  variable
    A : Set


nary :   Set  Set
nary zero     A = A
nary (suc n)  A =   nary n A



at0 :  n  nary n A  A
at0 zero    f = f
at0 (suc n) f = at0 n (f 0)




_ : nary 1 _  (  )
_ = refl



_ : nary 0 _  (  )
_ = refl



_ : nary _ _  (  A)
_ = refl



_ : nary _   
_ = refl

_ : nary _   (  )
_ = refl

_ : nary _ (  )  (  )
_ = refl