annotate src/PFOD.agda @ 1397:94baa4bdfd7d

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Wed, 28 Jun 2023 07:34:01 +0900
parents 9e26c9abfafb
children 9d8fbfc5bf87
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 open import Level
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 open import Ordinals
433
e787d37d27a0 separate PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 431
diff changeset
3 module PFOD {n : Level } (O : Ordinals {n}) where
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 import filter
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 open import logic
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 -- open import partfunc {n} O
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 import OD
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 open import Relation.Nullary
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 open import Relation.Binary
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 open import Data.Empty
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 open import Relation.Binary
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 open import Relation.Binary.Core
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 open import Relation.Binary.PropositionalEquality
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 open import Data.Nat renaming ( zero to Zero ; suc to Suc ; ℕ to Nat ; _⊔_ to _n⊔_ )
1124
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1100
diff changeset
17 import BAlgebra
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18
1124
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1100
diff changeset
19 open BAlgebra O
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 open inOrdinal O
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 open OD O
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 open OD.OD
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 open ODAxiom odAxiom
1297
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1293
diff changeset
25 -- open ODAxiom-ho< odAxiom-ho<
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 import OrdUtil
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 import ODUtil
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 open Ordinals.Ordinals O
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 open Ordinals.IsOrdinals isOrdinal
1300
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
30 -- open Ordinals.IsNext isNext
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 open OrdUtil O
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 open ODUtil O
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 import ODC
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 open filter O
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 open _∧_
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 open _∨_
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 open Bool
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 open HOD
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 -------
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 -- the set of finite partial functions from ω to 2
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 --
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 --
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 open import Data.List hiding (filter)
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 open import Data.Maybe
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
53
1218
362e43a1477c brain damaged fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1174
diff changeset
54 open import ZProduct O
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
55
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 data Hω2 : (i : Nat) ( x : Ordinal ) → Set n where
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 hφ : Hω2 0 o∅
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 h0 : {i : Nat} {x : Ordinal } → Hω2 i x →
1301
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
59 Hω2 (Suc i) (& (Union (< nat→ω i , od∅ > , * x )))
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
60 h1 : {i : Nat} {x : Ordinal } → Hω2 i x →
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
61 Hω2 (Suc i) (& (Union (< nat→ω i , nat→ω 1 > , * x )))
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 he : {i : Nat} {x : Ordinal } → Hω2 i x →
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 Hω2 (Suc i) x
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 record Hω2r (x : Ordinal) : Set n where
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 field
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 count : Nat
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 hω2 : Hω2 count x
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 open Hω2r
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
71
1301
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
72 hw⊆POmega : {x : Ordinal} → Hω2r x → odef (Power (Power Omega )) x
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
73 hw⊆POmega {x} r = odmax1 (Hω2r.count r) (Hω2r.hω2 r) where
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
74 odmax1 : {y : Ordinal} (i : Nat) → Hω2 i y → odef (Power (Power Omega )) y
1300
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
75 odmax1 0 hφ z xz = ⊥-elim ( ¬x<0 (subst (λ k → odef k z) o∅≡od∅ xz ))
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
76 odmax1 (Suc i) (h0 {_} {y} hw) = pf01 where
1301
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
77 pf00 : odef ( Power (Power Omega)) y
1300
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
78 pf00 = odmax1 i hw
1301
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
79 pf01 : odef (Power (Power Omega)) (& (Union (< nat→ω i , nat→ω 0 > , * y)))
1300
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
80 pf01 z xz with subst (λ k → odef k z ) *iso xz
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
81 ... | record { owner = owner ; ao = case1 refl ; ox = ox } = pf02 where
1301
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
82 pf02 : (w : Ordinal) → odef (* z) w → Omega-d w
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
83 pf02 w zw with subst (λ k → odef k z) *iso ox
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
84 ... | case2 refl with subst (λ k → odef k w) *iso zw
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
85 ... | case1 refl = ω∋nat→ω {i}
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
86 ... | case2 refl = ω∋nat→ω {0}
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
87 pf02 w zw | case1 refl with subst (λ k → odef k w) *iso zw
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
88 ... | case1 refl = ω∋nat→ω {i}
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
89 ... | case2 refl = ω∋nat→ω {i}
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
90 ... | record { owner = owner ; ao = case2 refl ; ox = ox } = pf02 where
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
91 pf03 : odef ( Power (Power Omega)) y
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
92 pf03 = odmax1 i hw
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
93 pf02 : (w : Ordinal) → odef (* z) w → Omega-d w
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
94 pf02 w zw = odmax1 i hw _ (subst (λ k → odef (* k) z) (&iso) ox) _ zw
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
95 odmax1 (Suc i) (h1 {_} {y} hw) = pf01 where
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
96 pf00 : odef ( Power (Power Omega)) y
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
97 pf00 = odmax1 i hw
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
98 pf01 : odef (Power (Power Omega)) (& (Union (< nat→ω i , nat→ω 1 > , * y)))
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
99 pf01 z xz with subst (λ k → odef k z ) *iso xz
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
100 ... | record { owner = owner ; ao = case1 refl ; ox = ox } = pf02 where
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
101 pf02 : (w : Ordinal) → odef (* z) w → Omega-d w
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
102 pf02 w zw with subst (λ k → odef k z) *iso ox
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
103 ... | case2 refl with subst (λ k → odef k w) *iso zw
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
104 ... | case1 refl = ω∋nat→ω {i}
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
105 ... | case2 refl = ω∋nat→ω {1}
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
106 pf02 w zw | case1 refl with subst (λ k → odef k w) *iso zw
1300
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
107 ... | case1 refl = ω∋nat→ω {i}
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
108 ... | case2 refl = ω∋nat→ω {i}
1301
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
109 ... | record { owner = owner ; ao = case2 refl ; ox = ox } = pf02 where
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
110 pf03 : odef ( Power (Power Omega)) y
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
111 pf03 = odmax1 i hw
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
112 pf02 : (w : Ordinal) → odef (* z) w → Omega-d w
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
113 pf02 w zw = odmax1 i hw _ (subst (λ k → odef (* k) z) (&iso) ox) _ zw
1300
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
114 odmax1 (Suc i) (he {_} {y} hw) = pf00 where
1301
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
115 pf00 : odef ( Power (Power Omega)) y
1300
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
116 pf00 = odmax1 i hw
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
117
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
118 --
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
119 -- Set of limited partial function of Omega
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
120 --
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
121 HODω2 : HOD
1301
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
122 HODω2 = record { od = record { def = λ x → Hω2r x } ; odmax = & (Power (Power Omega))
1300
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
123 ; <odmax = λ lt → odef< (hw⊆POmega lt) }
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
124
1301
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
125 HODω2⊆Omega : {x : HOD} → HODω2 ∋ x → x ⊆ Power Omega
1300
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
126 HODω2⊆Omega {x} hx {z} wz = hw⊆POmega hx _ (subst (λ k → odef k z) (sym *iso) wz)
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
127
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
128 record HwStep : Set n where
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
129 field
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
130 x : Ordinal
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
131 i : Nat
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
132 isHw : Hω2 i x
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
133
1301
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
134 3→Hω2 : List (Maybe Two) → HOD
1300
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
135 3→Hω2 t = * (HwStep.x (list→hod t)) where
1301
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
136 list→hod : List (Maybe Two) → HwStep
1300
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
137 list→hod [] = record { x = o∅ ; i = 0 ; isHw = hφ }
1301
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
138 list→hod (just i0 ∷ t) = record { x = & (Union ( < nat→ω (HwStep.i pf01) , od∅ > , * x ))
1300
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
139 ; i = Suc (HwStep.i pf01) ; isHw = h0 (HwStep.isHw pf01) } where
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
140 pf01 : HwStep
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
141 pf01 = list→hod t
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
142 x = HwStep.x pf01
1301
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
143 list→hod (just i1 ∷ t) = record { x = & (Union ( < nat→ω (HwStep.i pf01) , nat→ω 1 > , * x ))
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
144 ; i = Suc (HwStep.i pf01) ; isHw = h1 (HwStep.isHw pf01) } where
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
145 pf01 : HwStep
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
146 pf01 = list→hod t
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
147 x = HwStep.x pf01
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
148 list→hod (nothing ∷ t) = list→hod t
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
149
1301
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
150 Hω2→3 : (x : HOD) → HODω2 ∋ x → List (Maybe Two)
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
151 Hω2→3 x = lemma where
1301
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
152 lemma : { y : Ordinal } → Hω2r y → List (Maybe Two)
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
153 lemma record { count = 0 ; hω2 = hφ } = []
1301
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
154 lemma record { count = (Suc i) ; hω2 = (h0 hω3) } = just i0 ∷ lemma record { count = i ; hω2 = hω3 }
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
155 lemma record { count = (Suc i) ; hω2 = (h1 hω3) } = just i0 ∷ lemma record { count = i ; hω2 = hω3 }
9e26c9abfafb fix PFOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1300
diff changeset
156 lemma record { count = (Suc i) ; hω2 = (he hω3) } = nothing ∷ lemma record { count = i ; hω2 = hω3 }
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
157
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
158 ω→2 : HOD
1300
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
159 ω→2 = Power Omega
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
160
1099
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1096
diff changeset
161 ω2→f : (x : HOD) → ω→2 ∋ x → Nat → Two
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1096
diff changeset
162 ω2→f x lt n with ODC.∋-p O x (nat→ω n)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1096
diff changeset
163 ω2→f x lt n | yes p = i1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1096
diff changeset
164 ω2→f x lt n | no ¬p = i0
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
165
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
166 fω→2-sel : ( f : Nat → Two ) (x : HOD) → Set n
1300
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
167 fω→2-sel f x = (Omega ∋ x) ∧ ( (lt : odef Omega (& x) ) → f (ω→nat x lt) ≡ i1 )
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
168
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
169 fω→2 : (Nat → Two) → HOD
1300
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
170 fω→2 f = Select Omega (fω→2-sel f)
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
171
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
172 open _==_
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
173
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
174 import Axiom.Extensionality.Propositional
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
175 postulate f-extensionality : { n m : Level} → Axiom.Extensionality.Propositional.Extensionality n m
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
176
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
177 ω2∋f : (f : Nat → Two) → ω→2 ∋ fω→2 f
1300
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
178 ω2∋f f = power← Omega (fω→2 f) (λ {x} lt → proj1 ((proj2 (selection {fω→2-sel f} {Omega} )) lt))
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
179
1300
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
180 ω→2f≡i1 : (X i : HOD) → (iω : Omega ∋ i) → (lt : ω→2 ∋ X ) → ω2→f X lt (ω→nat i iω) ≡ i1 → X ∋ i
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
181 ω→2f≡i1 X i iω lt eq with ODC.∋-p O X (nat→ω (ω→nat i iω))
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
182 ω→2f≡i1 X i iω lt eq | yes p = subst (λ k → X ∋ k ) (nat→ω-iso iω) p
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
183
1099
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1096
diff changeset
184 ω2→f-iso : (X : HOD) → ( lt : ω→2 ∋ X ) → fω→2 ( ω2→f X lt ) =h= X
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1096
diff changeset
185 eq→ (ω2→f-iso X lt) {x} ⟪ ωx , ⟪ ωx1 , iso ⟫ ⟫ = le00 where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1096
diff changeset
186 le00 : odef X x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1096
diff changeset
187 le00 = subst (λ k → odef X k) &iso ( ω→2f≡i1 _ _ ωx1 lt (iso ωx1) )
1300
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
188 eq← (ω2→f-iso X lt) {x} Xx = ⟪ subst (λ k → odef Omega k) &iso le02 , ⟪ le02 , le01 ⟫ ⟫ where
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
189 le02 : Omega ∋ * x
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
190 le02 = power→ Omega _ lt (subst (λ k → odef X k) (sym &iso) Xx)
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
191 le01 : (wx : odef Omega (& (* x))) → ω2→f X lt (ω→nat (* x) wx) ≡ i1
1100
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1099
diff changeset
192 le01 wx with ODC.∋-p O X (nat→ω (ω→nat _ wx) )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1099
diff changeset
193 ... | yes p = refl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1099
diff changeset
194 ... | no ¬p = ⊥-elim ( ¬p (subst (λ k → odef X k ) le03 Xx )) where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1099
diff changeset
195 le03 : x ≡ & (nat→ω (ω→nato wx))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1099
diff changeset
196 le03 = subst₂ (λ j k → j ≡ k ) &iso refl (cong (&) (sym ( nat→ω-iso wx ) ) )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1099
diff changeset
197
1099
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1096
diff changeset
198 fω→2-iso : (f : Nat → Two) → ω2→f ( fω→2 f ) (ω2∋f f) ≡ f
1100
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1099
diff changeset
199 fω→2-iso f = f-extensionality (λ x → le01 x ) where
1099
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1096
diff changeset
200 le01 : (x : Nat) → ω2→f (fω→2 f) (ω2∋f f) x ≡ f x
1100
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1099
diff changeset
201 le01 x with ODC.∋-p O (fω→2 f) (nat→ω x)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1099
diff changeset
202 le01 x | yes p = subst (λ k → i1 ≡ f k ) (ω→nat-iso0 x (proj1 (proj2 p)) (trans *iso *iso)) (sym ((proj2 (proj2 p)) le02)) where
1300
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
203 le02 : Omega-d (& (* (& (nat→ω x))))
1100
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1099
diff changeset
204 le02 = proj1 (proj2 p )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1099
diff changeset
205 le01 x | no ¬p = sym ( ¬i1→i0 le04 ) where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1099
diff changeset
206 le04 : ¬ f x ≡ i1
1300
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
207 le04 fx=1 = ¬p ⟪ ω∋nat→ω {x} , ⟪ subst (λ k → Omega-d k) (sym &iso) (ω∋nat→ω {x}) , le05 ⟫ ⟫ where
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1297
diff changeset
208 le05 : (lt : Omega-d (& (* (& (nat→ω x))))) → f (ω→nato lt) ≡ i1
1100
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1099
diff changeset
209 le05 lt = trans (cong f (ω→nat-iso0 x lt (trans *iso *iso))) fx=1
1099
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1096
diff changeset
210