comparison src/partfunc.agda @ 1472:d0b4be1cab0d

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 22 Jun 2024 19:23:56 +0900
parents 7d2bae0ff36b
children
comparison
equal deleted inserted replaced
1471:e970149a6af5 1472:d0b4be1cab0d
1 {-# OPTIONS --allow-unsolved-metas #-} 1 {-# OPTIONS --cubical-compatible --safe #-}
2 open import Level 2 open import Level
3 open import Relation.Nullary 3 open import Ordinals
4 open import Relation.Binary.PropositionalEquality
5 -- open import Ordinals
6 module partfunc {n : Level } where -- (O : Ordinals {n}) where
7
8 open import logic 4 open import logic
9 open import Relation.Binary 5 open import Relation.Nullary
10 open import Data.Empty 6
11 open import Data.Unit using ( ⊤ ; tt ) 7 open import Level
12 open import Data.List hiding (filter) 8 open import Ordinals
13 open import Data.Maybe 9 import HODBase
14 open import Relation.Binary 10 import OD
15 open import Relation.Binary.Core 11 open import Relation.Nullary
16 open import Data.Nat renaming ( zero to Zero ; suc to Suc ; ℕ to Nat ; _⊔_ to _n⊔_ ) 12 module partfunc {n : Level } (O : Ordinals {n} ) (HODAxiom : HODBase.ODAxiom O) (ho< : OD.ODAxiom-ho< O HODAxiom ) where
17 -- open import filter O 13
14 open import Relation.Binary.PropositionalEquality hiding ( [_] )
15 open import Data.Empty
16
17 import OrdUtil
18
19 open Ordinals.Ordinals O
20 open Ordinals.IsOrdinals isOrdinal
21 import ODUtil
22
23 open import logic
24 open import nat
25
26 open OrdUtil O
27 open ODUtil O HODAxiom ho<
18 28
19 open _∧_ 29 open _∧_
20 open _∨_ 30 open _∨_
21 open Bool 31 open Bool
22 32
33 open HODBase._==_
34
35 open HODBase.ODAxiom HODAxiom
36 open OD O HODAxiom
37
38 open HODBase.HOD
39
40
41 open import Relation.Nullary
42 open import Relation.Binary
43 open import Data.Empty
44 open import Relation.Binary
45 open import Relation.Binary.Core
46 open import Relation.Binary.PropositionalEquality
47 open import Data.Nat renaming ( zero to Zero ; suc to Suc ; ℕ to Nat ; _⊔_ to _n⊔_ )
48
49 open import Data.Empty
50 open import Data.Unit using ( ⊤ ; tt )
51 open import Data.List hiding (filter ; find)
52 open import Data.Maybe
53
54 open _∧_
55 open _∨_
56 open Bool
57
58 data Two : Set where
59 i0 : Two
60 i1 : Two
61
23 ---- 62 ----
24 -- 63 --
25 -- Partial Function without ZF 64 -- Partial Function without ZF
26 -- 65 --
27 66
28 record PFunc (Dom : Set n) (Cod : Set n) : Set (suc n) where 67 record PFunc {n m l : Level } (Dom : Set n) (Cod : Set m) : Set (suc (n ⊔ m ⊔ l)) where
29 field 68 field
30 dom : Dom → Set n 69 dom : Dom → Set l
31 pmap : (x : Dom ) → dom x → Cod 70 pmap : (x : Dom ) → dom x → Cod
32 meq : {x : Dom } → { p q : dom x } → pmap x p ≡ pmap x q 71 meq : {x : Dom } → { p q : dom x } → pmap x p ≡ pmap x q
33 72
34 ---- 73 ----
35 -- 74 --
36 -- PFunc (Lift n Nat) Cod is equivalent to List (Maybe Cod) 75 -- PFunc (Lift n Nat) Cod is equivalent to List (Maybe Cod)
37 -- 76 --
38 77
39 data Findp : {Cod : Set n} → List (Maybe Cod) → (x : Nat) → Set where 78 data Findp {n : Level} {Cod : Set n} : List (Maybe Cod) → (x : Nat) → Set (suc n) where
40 v0 : {Cod : Set n} → {f : List (Maybe Cod)} → ( v : Cod ) → Findp ( just v ∷ f ) Zero 79 v0 : {f : List (Maybe Cod)} → ( v : Cod ) → Findp ( just v ∷ f ) Zero
41 vn : {Cod : Set n} → {f : List (Maybe Cod)} {d : Maybe Cod} → {x : Nat} → Findp f x → Findp (d ∷ f) (Suc x) 80 vn : {f : List (Maybe Cod)} {d : Maybe Cod} → {x : Nat} → Findp f x → Findp (d ∷ f) (Suc x)
42 81
43 open PFunc 82 open PFunc
44 83
45 find : {Cod : Set n} → (f : List (Maybe Cod) ) → (x : Nat) → Findp f x → Cod 84 find : {n : Level} {Cod : Set n} → (f : List (Maybe Cod) ) → (x : Nat) → Findp f x → Cod
46 find (just v ∷ _) 0 (v0 v) = v 85 find (just v ∷ _) 0 (v0 v) = v
47 find (_ ∷ n) (Suc i) (vn p) = find n i p 86 find (_ ∷ n) (Suc i) (vn p) = find n i p
48 87
49 findpeq : {Cod : Set n} → (f : List (Maybe Cod)) → {x : Nat} {p q : Findp f x } → find f x p ≡ find f x q 88 findpeq : {n : Level} {Cod : Set n} → (f : List (Maybe Cod)) → {x : Nat} {p q : Findp f x } → find f x p ≡ find f x q
50 findpeq n {0} {v0 _} {v0 _} = refl 89 findpeq n {0} {v0 _} {v0 _} = refl
51 findpeq [] {Suc x} {()} 90 findpeq [] {Suc x} {()}
52 findpeq (just x₁ ∷ n) {Suc x} {vn p} {vn q} = findpeq n {x} {p} {q} 91 findpeq (just x₁ ∷ n) {Suc x} {vn p} {vn q} = findpeq n {x} {p} {q}
53 findpeq (nothing ∷ n) {Suc x} {vn p} {vn q} = findpeq n {x} {p} {q} 92 findpeq (nothing ∷ n) {Suc x} {vn p} {vn q} = findpeq n {x} {p} {q}
54 93
55 List→PFunc : {Cod : Set n} → List (Maybe Cod) → PFunc (Lift n Nat) Cod 94 List→PFunc : {Cod : Set (suc n)} → List (Maybe Cod) → PFunc (Lift n Nat) Cod
56 List→PFunc fp = record { dom = λ x → Lift n (Findp fp (lower x)) 95 List→PFunc fp = record { dom = λ x → Lift zero (Findp fp (lower x))
57 ; pmap = λ x y → find fp (lower x) (lower y) 96 ; pmap = λ x y → find fp (lower x) (lower y)
58 ; meq = λ {x} {p} {q} → findpeq fp {lower x} {lower p} {lower q} 97 ; meq = λ {x} {p} {q} → findpeq fp {lower x} {lower p} {lower q}
59 } 98 }
60 ---- 99 ----
61 -- 100 --
62 -- to List (Maybe Two) is a Latice 101 -- to List (Maybe Two) is a Latice
63 -- 102 --