module Signature.Tree where

open import Stdlib
open import Signature

module Model where

  data Tree (A : Set) : Set where
    leaf : Tree A
    node : (a : A)(lb : Tree A)(rb : Tree A)  Tree A

ΣTree : Set  Sig 
ΣTree A = OpTree  ArTree / TyTree
  where OpTree :   Set
        OpTree tt =   A

        ArTree : {tt : }  OpTree tt  Set
        ArTree (inj₁ tt) = 
        ArTree (inj₂ a) =   

        TyTree : {tt : }{op : OpTree tt}  ArTree op  
        TyTree _ = tt

Tree : Set  Set
Tree A = μ (ΣTree A) tt

leaf : ∀{A}  Tree A
leaf =  inj₁ tt ,  bot  ⊥-elim bot) 

node : ∀{A}  A  Tree A  Tree A  Tree A
node a l r =  inj₂ a ,  { (inj₁ tt)  l 
                           ; (inj₂ tt)  r })