annotate cbc/atton-master-sample.agda @ 77:a2e6f61d5f2b default tip

Add modus-ponens
author atton <atton@cr.ie.u-ryukyu.ac.jp>
date Thu, 09 Feb 2017 06:32:03 +0000
parents a5cac9483f91
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
72
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 module atton-master-sample where
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 open import Data.Nat
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 open import Data.Unit
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 open import Function
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 Int = ℕ
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
7
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 record Context : Set where
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 field
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 a : Int
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 b : Int
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 c : Int
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
13
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
14
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 open import subtype Context
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
16
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
17
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
18
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 record ds0 : Set where
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 field
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 a : Int
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 b : Int
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
23
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 record ds1 : Set where
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 field
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 c : Int
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
27
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 instance
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 _ : DataSegment ds0
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 _ = record { set = (\c d -> record c {a = (ds0.a d) ; b = (ds0.b d)})
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 ; get = (\c -> record { a = (Context.a c) ; b = (Context.b c)})}
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 _ : DataSegment ds1
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 _ = record { set = (\c d -> record c {c = (ds1.c d)})
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 ; get = (\c -> record { c = (Context.c c)})}
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
35
73
a5cac9483f91 Cleanup sample
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents: 72
diff changeset
36 cs2 : CodeSegment ds1 ds1
a5cac9483f91 Cleanup sample
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents: 72
diff changeset
37 cs2 = cs id
72
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
38
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 cs1 : CodeSegment ds1 ds1
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 cs1 = cs (\d -> goto cs2 d)
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
41
73
a5cac9483f91 Cleanup sample
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents: 72
diff changeset
42 cs0 : CodeSegment ds0 ds1
a5cac9483f91 Cleanup sample
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents: 72
diff changeset
43 cs0 = cs (\d -> goto cs1 (record {c = (ds0.a d) + (ds0.b d)}))
72
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
44
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 main : ds1
dc8f140e299d Add sample for atton-master
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 main = goto cs0 (record {a = 100 ; b = 50})