annotate a02/agda/dag.agda @ 406:a60132983557

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Wed, 08 Nov 2023 21:35:54 +0900
parents 407684f806e4
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
138
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 module dag where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 -- f0
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 -- -----→
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 -- t0 t1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 -- -----→
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 -- f1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9
330
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
10 data TwoObject : Set where -- vertex
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
11 t0 : TwoObject
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
12 t1 : TwoObject
138
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14
330
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
15 data TwoArrow : TwoObject → TwoObject → Set where -- edge
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
16 f0 : TwoArrow t0 t1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
17 f1 : TwoArrow t0 t1
138
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 -- r0
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 -- -----→
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 -- t0 t1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 -- ←-----
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 -- r1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 data Circle : TwoObject → TwoObject → Set where
330
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
27 r0 : Circle t0 t1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
28 r1 : Circle t1 t0
138
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29
330
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
30 --
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
31 -- Definition of ⊥ and ¬ in agda
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
32 --
138
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33
330
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
34 data ⊥ : Set where -- data with no consutructor
138
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35
330
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
36 ⊥-elim : {A : Set } → ⊥ → A -- function with no possible input
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
37 ⊥-elim () -- no constructor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
38
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
39 ¬_ : Set → Set -- A won't happen (This is a type, not an imlemetation )
138
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 ¬ A = A → ⊥
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 data Bool : Set where
330
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
43 true : Bool
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
44 false : Bool
138
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45
141
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
46 data connected { V : Set } ( E : V → V → Set ) ( x y : V ) : Set where
330
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
47 direct : E x y → connected E x y
141
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
48 indirect : { z : V } → E x z → connected {V} E z y → connected E x y
138
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49
330
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
50 -- this is similar to the List
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
51 data List ( A : Set ) : Set where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
52 nil : List A
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
53 cons : A → List A → List A
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
54
138
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 lemma1 : connected TwoArrow t0 t1
141
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
56 lemma1 = {!!}
138
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 lemma2 : ¬ ( connected TwoArrow t1 t0 )
141
b3f05cd08d24 clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 138
diff changeset
59 lemma2 = {!!}
138
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
60
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 -- lemma2 (direct ())
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 -- lemma2 (indirect () (direct _))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 -- lemma2 (indirect () (indirect _ _ ))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 lemma3 : connected Circle t0 t0
330
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
66 lemma3 = ?
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
67
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
68 -- decidabity
138
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 data Dec (P : Set) : Set where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 yes : P → Dec P
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 no : ¬ P → Dec P
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
73
330
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
74 reachable : { V : Set } ( E : V → V → Set ) ( x y : V ) → Set
138
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 reachable {V} E x y = Dec ( connected {V} E x y )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
76
330
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
77 dag : { V : Set } ( E : V → V → Set ) → Set
138
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 dag {V} E = ∀ (n : V) → ¬ ( connected E n n )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
79
330
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
80 -- dag {V} E = ∀ (n : V) → connected E n n → ⊥
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
81
138
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 lemma4 : dag TwoArrow
330
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
83 lemma4 = ?
138
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
84
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 lemma5 : ¬ ( dag Circle )
330
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
86 lemma5 x = ?
138
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
87
330
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
88 -- record Finite ( A : Set ) : Set where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
89 -- field
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
90 -- a : ?
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
91 --
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
92 -- record FiniteE {A : Set} ( E : A → A → Set ) : Set where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
93 -- field
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
94 -- a : ?
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
95 --
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
96 -- lemma6 : ( V : Set ) ( E : V → V → Set ) → Finite V → FiniteE E → ( x y : V ) → reachable E x y
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
97 -- lemma6 = ?
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
98 --
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 141
diff changeset
99 --