67
|
1 n-push : {m : Meta} {{_ : M.DataSegment Meta}} (n : ℕ) -> M.CodeSegment Meta Meta
|
|
2 n-push {{mm}} (zero) = M.cs {{mm}} {{mm}} id
|
|
3 n-push {m} {{mm}} (suc n) = M.cs {{mm}} {{mm}} (\m -> M.exec {{mm}} {{mm}} (n-push {m} {{mm}} n) (pushOnce m))
|
|
4
|
|
5 n-pop : {m : Meta} {{_ : M.DataSegment Meta}} (n : ℕ) -> M.CodeSegment Meta Meta
|
|
6 n-pop {{mm}} (zero) = M.cs {{mm}} {{mm}} id
|
|
7 n-pop {m} {{mm}} (suc n) = M.cs {{mm}} {{mm}} (\m -> M.exec {{mm}} {{mm}} (n-pop {m} {{mm}} n) (popOnce m))
|
|
8
|
|
9 pop-n-push-type : ℕ -> ℕ -> ℕ -> SingleLinkedStack ℕ -> Set₁
|
|
10 pop-n-push-type n cn ce s = M.exec (M.csComp {meta} (M.cs popOnce) (n-push {meta} (suc n))) meta
|
|
11 ≡ M.exec (n-push {meta} n) meta
|
|
12 where
|
|
13 meta = id-meta cn ce s
|