diff cbc/stack-subtype-sample.agda @ 60:bd428bd6b394

Trying define n-push/n-pop
author atton <atton@cr.ie.u-ryukyu.ac.jp>
date Sat, 14 Jan 2017 00:00:40 +0000
parents ddcd652969e0
children 7af6c894f411
line wrap: on
line diff
--- a/cbc/stack-subtype-sample.agda	Thu Jan 12 02:48:09 2017 +0000
+++ b/cbc/stack-subtype-sample.agda	Sat Jan 14 00:00:40 2017 +0000
@@ -6,7 +6,7 @@
 
 open import stack-subtype ℕ  as S
 open import subtype Context as N
-open import subtype (MetaContext Context) as M
+open import subtype (Meta Context) as M
 
 
 record Num : Set where
@@ -18,8 +18,8 @@
   NumIsNormalDataSegment = record { get = (\c -> record { num = Context.n c})
                                   ; set = (\c n -> record c {n = Num.num n})}
   NumIsMetaDataSegment : M.DataSegment Num
-  NumIsMetaDataSegment = record { get = (\m -> record {num = Context.n (MetaContext.context m)})
-                                ; set = (\m n -> record m {context = record (MetaContext.context m) {n = Num.num n}})}
+  NumIsMetaDataSegment = record { get = (\m -> record {num = Context.n (Meta.context m)})
+                                ; set = (\m n -> record m {context = record (Meta.context m) {n = Num.num n}})}
 
 
 plus3 : Num -> Num
@@ -30,27 +30,27 @@
 
 
 setNext : {X Y : Set} {{x : N.DataSegment X}} {{y : N.DataSegment Y}}
-        -> (N.CodeSegment X Y) -> M.CodeSegment (MetaContext Context) (MetaContext Context)
+        -> (N.CodeSegment X Y) -> M.CodeSegment (Meta Context) (Meta Context)
 setNext c = M.cs (\mc -> record mc {nextCS = liftContext c})
 
-setElement : ℕ -> M.CodeSegment (MetaContext Context) (MetaContext Context)
-setElement x = M.cs (\mc -> record mc {context = record (MetaContext.context mc) {element = just x}})
+setElement : ℕ -> M.CodeSegment (Meta Context) (Meta Context)
+setElement x = M.cs (\mc -> record mc {context = record (Meta.context mc) {element = just x}})
 
 
 
-plus5AndPushWithPlus3 : {mc : MetaContext Context} {{_ : N.DataSegment Num}}
-               -> M.CodeSegment Num (MetaContext Context)
+plus5AndPushWithPlus3 : {mc : Meta Context} {{_ : N.DataSegment Num}}
+               -> M.CodeSegment Num (Meta Context)
 plus5AndPushWithPlus3 {mc} {{nn}} = M.cs (\n -> record {context = con n ; nextCS = (liftContext {{nn}} {{nn}} plus3CS) ; stack = st} )
   where
-    co    = MetaContext.context mc
+    co    = Meta.context mc
     con : Num -> Context
     con record { num = num } = N.DataSegment.set nn co record {num = num + 5}
-    st    = MetaContext.stack mc
+    st    = Meta.stack mc
 
 
 
 
-push-sample : {{_ : N.DataSegment Num}} {{_ : M.DataSegment Num}} ->  MetaContext Context
+push-sample : {{_ : N.DataSegment Num}} {{_ : M.DataSegment Num}} ->  Meta Context
 push-sample {{nd}} {{md}} = M.exec {{md}} (plus5AndPushWithPlus3 {mc} {{nd}}) mc
   where
     con  = record { n = 4 ; element = just 0}
@@ -64,7 +64,7 @@
 push-sample-equiv = refl
 
 
-pushed-sample : {m : MetaContext Context} {{_ : N.DataSegment Num}} {{_ : M.DataSegment Num}} ->  MetaContext Context
+pushed-sample : {m : Meta Context} {{_ : N.DataSegment Num}} {{_ : M.DataSegment Num}} ->  Meta Context
 pushed-sample {m} {{nd}} {{md}} = M.exec {{md}} (M.csComp {m} {{md}} pushSingleLinkedStackCS (plus5AndPushWithPlus3 {mc} {{nd}})) mc
   where
     con  = record { n = 4 ; element = just 0}
@@ -73,9 +73,14 @@
 
 
 
-pushed-sample-equiv : {m : MetaContext Context} -> pushed-sample {m} ≡ record { nextCS  = liftContext plus3CS
-                                                                               ; stack   = record { top = just (cons 0 nothing) }
-                                                                               ; context = record { n   = 12} }
+pushed-sample-equiv : {m : Meta Context} ->
+                      pushed-sample {m} ≡ record { nextCS  = liftContext plus3CS
+                                                  ; stack   = record { top = just (cons 0 nothing) }
+                                                  ; context = record { n   = 12} }
 pushed-sample-equiv = refl
 
 
+
+n-push : {{_ : M.DataSegment (Meta Context)}} -> Meta Context -> Meta Context
+n-push m = M.csComp (pushSingleLinkedStackCS) (setElement ?)
+