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 }) []