annotate Paper/src/MetaMetaCodeSegment.agda.replaced @ 5:339fb67b4375

INIT rbt.agda
author soto <soto@cr.ie.u-ryukyu.ac.jp>
date Sun, 07 Nov 2021 00:51:16 +0900
parents c59202657321
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 -- meta level
5
339fb67b4375 INIT rbt.agda
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2 liftContext : {X Y : Set} {{_ : N.DataSegment X}} {{_ : N.DataSegment Y}} !$\rightarrow$! N.CodeSegment X Y !$\rightarrow$! N.CodeSegment Context Context
339fb67b4375 INIT rbt.agda
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
3 liftContext {{x}} {{y}} (N.cs f) = N.cs (\c !$\rightarrow$! N.DataSegment.set y c (f (N.DataSegment.get x c)))
0
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
4
5
339fb67b4375 INIT rbt.agda
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
5 liftMeta : {X Y : Set} {{_ : M.DataSegment X}} {{_ : M.DataSegment Y}} !$\rightarrow$! N.CodeSegment X Y !$\rightarrow$! M.CodeSegment X Y
0
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 liftMeta (N.cs f) = M.cs f
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
7
5
339fb67b4375 INIT rbt.agda
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
8 gotoMeta : {I O : Set} {{_ : N.DataSegment I}} {{_ : N.DataSegment O}} !$\rightarrow$! M.CodeSegment Meta Meta !$\rightarrow$! N.CodeSegment I O !$\rightarrow$! Meta !$\rightarrow$! Meta
0
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 gotoMeta mCode code m = M.exec mCode (record m {next = (liftContext code)})
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
10
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 push : M.CodeSegment Meta Meta
5
339fb67b4375 INIT rbt.agda
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
12 push = M.cs (\m !$\rightarrow$! M.exec (liftMeta (Meta.next m)) (record m {c!$\prime$! = Context.c (Meta.context m)}))
0
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
13
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 -- normal level
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
15
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 cs2 : N.CodeSegment ds1 ds1
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 cs2 = N.cs id
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
18
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 cs1 : N.CodeSegment ds1 ds1
5
339fb67b4375 INIT rbt.agda
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
20 cs1 = N.cs (\d !$\rightarrow$! N.goto cs2 d)
0
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
21
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 cs0 : N.CodeSegment ds0 ds1
5
339fb67b4375 INIT rbt.agda
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
23 cs0 = N.cs (\d !$\rightarrow$! N.goto cs1 (record {c = (ds0.a d) + (ds0.b d)}))
0
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
24
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 -- meta level (with extended normal)
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 main : Meta
5
339fb67b4375 INIT rbt.agda
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
27 main = gotoMeta push cs0 (record {context = (record {a = 100 ; b = 50 ; c = 70}) ; c!$\prime$! = 0 ; next = (N.cs id)})
339fb67b4375 INIT rbt.agda
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
28 -- record {context = record {a = 100 ; b = 50 ; c = 150} ; c!$\prime$! = 70 ; next = (N.cs id)}
0
soto <soto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
29