module stlc.catComb.properities.propB where

open import stlc.catComb.properities.common
open import stlc.catComb.properities.propA

propB :  {A}  (s : CatCombValue A)   s
propB ⟨⟩ = unit
propB (`nat _) = nat
propB (s₁ , s₂) = pair  propB s₁ , propB s₂ 
propB (cur f s) = cur λ { s₁  propA f (pair  propB s , (_⇔_.from ⊩⇔⊩' s₁) ) }
--- COPRODUCT ---
propB (L s) = inl (propB s)
propB (R s) = inr (propB s)
--- LIST OBJECT ---
propB [] = nil
propB (h  t) = cons (propB h) (propB t)