module mutual-rec where open import map open import even-odd using ( Even[_] ; Odd[_] ; ⊢Even ; ⊢Odd ; even-suc[_] ; even-zero[] ; odd-suc[_]) 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 we would like to run adm on, and the specification with respect to which we are considering it.
t = even-suc[ odd-suc[ even-zero[] ] ]
⊢Even[β₁] : Γβ₁ ∥ ∅ ⊢ Even[ varᵀ β₁ ]
⊢Even[β₁] = ⊢Even (var-intro ∋-last)
C,s = adm t ⊢Even[β₁] [| varᵀ f |] (record { curr = 1 }) []