module ex4-1 where open import map open import nat using (2Nat ; 5Nat) open import bool using (true[] ; false[]) open import seq using (Seq[_] ; ⊢Seq ; pair[_,_] ; const[_]) open import Data.List using ([] ; _∷_ ; [_]) open import Data.Vec renaming ([] to [||] ; _∷_ to _¦_ ; [_] to [|_|] )
We start with the declaration of variables that will be used in the call to adm.
β₁ : mix-var
β₁ = tvar 0
Γβ₁ : type-context {mix-var}
Γβ₁ = ⟦ [| β₁ |] ⟧
f : mix-var
f = fvar 0
We then define the term of Example 2.1, and the specification with respect to which we are considering it.
t : term-expr
t = pair[ pair[ const[ true[] ] , const[ 2Nat ] ] , const[ 5Nat ] ]
⊢Seq[β₁] : Γβ₁ ∥ ∅ ⊢ Seq[ varᵀ β₁ ]
⊢Seq[β₁] = ⊢Seq (var-intro ∋-last)
C,s = adm t ⊢Seq[β₁] [| varᵀ f |] (record { curr = 1 }) []