module Example.Free.State where

open import Data.Nat
open import Data.Product
open import Relation.Binary.PropositionalEquality

open import Free
open import Free.Nil
open import Free.State 

‵incr :  Δ  State  Δ′   Free Δ 
‵incr = do n  ‵get; ‵put (n + 1); ‵get

incr-test : un ((given hSt handle ‵incr) 0)  1
incr-test = refl

incr-test₁ : un ((given hSt₁ handle ‵incr) 0)  (1 , 1)
incr-test₁ = refl