{-# OPTIONS --overlapping-instances --instance-search-depth=10 #-} module Example.Free.Choice+State where open import Function open import Data.Unit open import Data.Bool open import Data.Nat open import Data.List open import Relation.Binary.PropositionalEquality open import Free open import Free.Choice open import Free.State ℕ open import Free.Nil open import Example.Free.State example₁ : Free (Choice ⊕ State ⊕ Nil) ℕ example₁ = do ‵put 1 b ← ‵or if b then ‵incr else (do ‵incr; ‵incr) ‵get test₁ : un ((given hChoice handle (flip (given hSt handle_) 0 example₁)) tt) ≡ 2 ∷ 3 ∷ [] test₁ = refl test₁′ : un (flip (given hSt handle_) 0 ((given hChoice handle example₁) tt)) ≡ 2 ∷ 4 ∷ [] test₁′ = refl