Mercurial > hg > Members > atton > agda-proofs
annotate cbc/variable-tuple.agda @ 18:782a11f3eea4
Trying define input data segment
author | atton <atton@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 18 Dec 2016 06:41:39 +0000 |
parents | 7bfae9affc84 |
children | 853318ff55f9 |
rev | line source |
---|---|
17 | 1 module variable-tuple where |
2 | |
3 open import Data.Nat hiding (_<_ ; _>_) | |
4 open import Data.String | |
5 open import Data.List | |
18
782a11f3eea4
Trying define input data segment
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
6 open import Data.Unit |
17 | 7 open import Function using (_∘_) |
8 open import Relation.Binary.PropositionalEquality | |
9 | |
10 data Format : Set₁ where | |
11 FEnd : Format | |
12 FSet : Set -> Format -> Format | |
13 | |
14 <> : Format | |
15 <> = FEnd | |
16 | |
17 infix 51 _> | |
18 _> : (Format -> Format) -> Format | |
19 _> f = f FEnd | |
20 | |
21 infixl 52 _||_ | |
22 _||_ : (Format -> Format) -> Set -> (Format -> Format) | |
23 _||_ f1 s = f1 ∘ (FSet s) | |
24 | |
18
782a11f3eea4
Trying define input data segment
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
25 infix 53 <_ |
17 | 26 <_ : Set -> Format -> Format |
27 <_ s = FSet s | |
28 | |
29 | |
30 unit : Format | |
31 unit = <> | |
32 | |
33 single : Format | |
34 single = < ℕ > | |
35 | |
36 double : Format | |
37 double = < String || ℕ > | |
38 | |
39 triple : Format | |
40 triple = < String || ℕ || (List ℕ) > | |
18
782a11f3eea4
Trying define input data segment
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
41 |
782a11f3eea4
Trying define input data segment
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
42 |
782a11f3eea4
Trying define input data segment
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
43 DataSegment : {A : Set} -> Format -> Set |
782a11f3eea4
Trying define input data segment
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
44 DataSegment {A} FEnd = A |
782a11f3eea4
Trying define input data segment
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
45 DataSegment {A} (FSet x f) = x -> (DataSegment {A} f) |
782a11f3eea4
Trying define input data segment
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
46 |
782a11f3eea4
Trying define input data segment
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
47 |
782a11f3eea4
Trying define input data segment
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
48 data CodeSegment : Set₁ where |
782a11f3eea4
Trying define input data segment
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
49 cs : Format -> Format -> CodeSegment |
782a11f3eea4
Trying define input data segment
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
50 |
782a11f3eea4
Trying define input data segment
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
51 ods : CodeSegment -> List Set |
782a11f3eea4
Trying define input data segment
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
52 ods (cs ids FEnd) = [] |
782a11f3eea4
Trying define input data segment
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
53 ods (cs ids (FSet s f)) = s ∷ (ods (cs ids f)) |
782a11f3eea4
Trying define input data segment
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
54 |
782a11f3eea4
Trying define input data segment
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
55 ids : {A : Set} -> CodeSegment -> Set |
782a11f3eea4
Trying define input data segment
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
56 ids {A} (cs i o) = DataSegment {A} i |
782a11f3eea4
Trying define input data segment
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
57 |
782a11f3eea4
Trying define input data segment
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
58 |
782a11f3eea4
Trying define input data segment
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
59 ids-double : {A : Set} {a : A} -> ids {A} (cs double double) |
782a11f3eea4
Trying define input data segment
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
60 ids-double {_} {a} = \(s : String) -> \(n : ℕ) -> a |
782a11f3eea4
Trying define input data segment
atton <atton@cr.ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
61 |