annotate src/list-nat0.agda @ 1124:f683d96fbc93 default tip

safe fix done
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sun, 07 Jul 2024 22:28:50 +0900
parents ac53803b3b2a
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1124
f683d96fbc93 safe fix done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 949
diff changeset
1 {-# OPTIONS --cubical-compatible --safe #-}
153
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 module list-nat0 where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 open import Level
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5
1124
f683d96fbc93 safe fix done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 949
diff changeset
6 data i3 : Set where
f683d96fbc93 safe fix done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 949
diff changeset
7 a : i3
f683d96fbc93 safe fix done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 949
diff changeset
8 b : i3
f683d96fbc93 safe fix done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 949
diff changeset
9 c : i3
153
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 infixr 40 _::_
300
d6a6dd305da2 arrow and lambda fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 153
diff changeset
13 data List {a} (A : Set a) : Set a where
153
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 [] : List A
300
d6a6dd305da2 arrow and lambda fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 153
diff changeset
15 _::_ : A → List A → List A
153
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 infixl 30 _++_
300
d6a6dd305da2 arrow and lambda fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 153
diff changeset
19 -- _++_ : {a : Level } → {A : Set a} → List A → List A → List A
d6a6dd305da2 arrow and lambda fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 153
diff changeset
20 _++_ : ∀ {a} {A : Set a} → List A → List A → List A
153
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 [] ++ ys = ys
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 (x :: xs) ++ ys = x :: (xs ++ ys)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 l1 = a :: []
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 l2 = a :: b :: a :: c :: []
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 l3 = l1 ++ l2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 infixr 20 _==_
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31
300
d6a6dd305da2 arrow and lambda fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 153
diff changeset
32 data _==_ {n} {A : Set n} : List A → List A → Set n where
d6a6dd305da2 arrow and lambda fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 153
diff changeset
33 reflection : {x : List A} → x == x
d6a6dd305da2 arrow and lambda fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 153
diff changeset
34 eq-cons : {x y : List A} { a : A } → x == y → ( a :: x ) == ( a :: y )
d6a6dd305da2 arrow and lambda fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 153
diff changeset
35 trans-list : {x y z : List A} { a : A } → x == y → y == z → x == z
153
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 -- eq-nil : [] == []
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37
300
d6a6dd305da2 arrow and lambda fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 153
diff changeset
38 list-id-l : { A : Set } → { x : List A} → [] ++ x == x
153
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 list-id-l = reflection
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40
300
d6a6dd305da2 arrow and lambda fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 153
diff changeset
41 list-id-r : { A : Set } → ( x : List A ) → x ++ [] == x
153
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 list-id-r [] = reflection
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 list-id-r (x :: xs) = eq-cons ( list-id-r xs )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
44
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45
300
d6a6dd305da2 arrow and lambda fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 153
diff changeset
46 -- listAssoc : { A : Set } → { a b c : List A} → ( ( a ++ b ) ++ c ) == ( a ++ ( b ++ c ) )
153
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 -- listAssoc = eq-reflection
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48
300
d6a6dd305da2 arrow and lambda fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 153
diff changeset
49 list-assoc : {A : Set } → ( xs ys zs : List A ) →
153
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 ( ( xs ++ ys ) ++ zs ) == ( xs ++ ( ys ++ zs ) )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 list-assoc [] ys zs = reflection
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 list-assoc (x :: xs) ys zs = eq-cons ( list-assoc xs ys zs )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
53
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
54
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
55
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 open import Relation.Binary.PropositionalEquality
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 open ≡-Reasoning
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
58
300
d6a6dd305da2 arrow and lambda fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 153
diff changeset
59 cong1 : ∀{a} {A : Set a } {b} { B : Set b } →
d6a6dd305da2 arrow and lambda fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 153
diff changeset
60 ( f : A → B ) → {x : A } → {y : A} → x ≡ y → f x ≡ f y
153
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 cong1 f refl = refl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62
1124
f683d96fbc93 safe fix done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 949
diff changeset
63 -- lemma11 : ∀{n} → ( Set n ) IsRelatedTo ( Set n )
f683d96fbc93 safe fix done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 949
diff changeset
64 -- lemma11 = relTo refl
153
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
65
300
d6a6dd305da2 arrow and lambda fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 153
diff changeset
66 lemma12 : {L : Set} ( x : List L ) → x ++ x ≡ x ++ x
153
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 lemma12 x = begin x ++ x ∎
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
68
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69
300
d6a6dd305da2 arrow and lambda fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 153
diff changeset
70 ++-assoc : {L : Set} ( xs ys zs : List L ) → (xs ++ ys) ++ zs ≡ xs ++ (ys ++ zs)
d6a6dd305da2 arrow and lambda fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 153
diff changeset
71 ++-assoc [] ys zs = -- {A : Set} → -- let open ==-Reasoning A in
153
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 begin -- to prove ([] ++ ys) ++ zs ≡ [] ++ (ys ++ zs)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 ( [] ++ ys ) ++ zs
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
74 ≡⟨ refl ⟩
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 ys ++ zs
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 ≡⟨ refl ⟩
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
77 [] ++ ( ys ++ zs )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
78
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
79
300
d6a6dd305da2 arrow and lambda fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 153
diff changeset
80 ++-assoc (x :: xs) ys zs = -- {A : Set} → -- let open ==-Reasoning A in
153
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
81 begin -- to prove ((x :: xs) ++ ys) ++ zs ≡ (x :: xs) ++ (ys ++ zs)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 ((x :: xs) ++ ys) ++ zs
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
83 ≡⟨ refl ⟩
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
84 (x :: (xs ++ ys)) ++ zs
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 ≡⟨ refl ⟩
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
86 x :: ((xs ++ ys) ++ zs)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
87 ≡⟨ cong1 (_::_ x) (++-assoc xs ys zs) ⟩
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
88 x :: (xs ++ (ys ++ zs))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
89 ≡⟨ refl ⟩
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
90 (x :: xs) ++ (ys ++ zs)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
91
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
92
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
93
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
94
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
95
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
96
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
97 --data Bool : Set where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
98 -- true : Bool
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
99 -- false : Bool
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
100
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
101
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
102 --postulate Obj : Set
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
103
300
d6a6dd305da2 arrow and lambda fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 153
diff changeset
104 --postulate Hom : Obj → Obj → Set
153
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
105
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
106
300
d6a6dd305da2 arrow and lambda fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 153
diff changeset
107 --postulate id : { a : Obj } → Hom a a
153
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
108
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
109
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
110 --infixr 80 _○_
300
d6a6dd305da2 arrow and lambda fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 153
diff changeset
111 --postulate _○_ : { a b c : Obj } → Hom b c → Hom a b → Hom a c
153
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
112
300
d6a6dd305da2 arrow and lambda fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 153
diff changeset
113 -- postulate axId1 : {a b : Obj} → ( f : Hom a b ) → f == id ○ f
d6a6dd305da2 arrow and lambda fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 153
diff changeset
114 -- postulate axId2 : {a b : Obj} → ( f : Hom a b ) → f == f ○ id
153
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
115
300
d6a6dd305da2 arrow and lambda fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 153
diff changeset
116 --assoc : { a b c d : Obj } →
d6a6dd305da2 arrow and lambda fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 153
diff changeset
117 -- (f : Hom c d ) → (g : Hom b c) → (h : Hom a b) →
153
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
118 -- (f ○ g) ○ h == f ○ ( g ○ h)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
119
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
120
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
121 --a = Set
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
122
300
d6a6dd305da2 arrow and lambda fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 153
diff changeset
123 -- ListObj : {A : Set} → List A
153
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
124 -- ListObj = List Set
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
125
300
d6a6dd305da2 arrow and lambda fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 153
diff changeset
126 -- ListHom : ListObj → ListObj → Set
153
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
127