annotate src/NSet.agda @ 1100:c90eec304cfa

PFOD
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 26 Dec 2022 14:00:57 +0900
parents 40345abc0949
children ca5bfb401ada
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1097
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 open import Level
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 module NSet (n : Level) where
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 open import logic
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 open import nat
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 open import Data.Nat hiding (suc ; zero)
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 open import Data.Nat.Properties
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 open import Relation.Binary hiding (_⇔_)
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 open import Relation.Binary.PropositionalEquality hiding ( [_] )
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 --
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 -- Primitive Set on ℕ
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 --
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 record NSet : Set (suc zero) where
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 field
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 def : ℕ → Set
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 --
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 -- Set as an equation on ℕ
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 --
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 eqa1 : NSet
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 eqa1 = record { def = λ x → x * x + 6 ≡ 5 * x }
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 open NSet
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 _∋_ : NSet → ℕ → Set
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 S ∋ x = def S x
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 eq1∋2 : eqa1 ∋ 2
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 eq1∋2 = refl
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 eq1∋3 : eqa1 ∋ 3
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 eq1∋3 = refl
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 --
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 -- The solution
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 --
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 eqa2 : NSet
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 eqa2 = record { def = λ x → (x ≡ 2) ∨ ( x ≡ 3 ) }
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 eq2∋3 : eqa2 ∋ 3
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 eq2∋3 = case2 refl
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 record _==_ ( a b : NSet ) : Set where
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 field
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 eq→ : ∀ { x : ℕ } → def a x → def b x
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 eq← : ∀ { x : ℕ } → def b x → def a x
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 _⊆_ : (a b : NSet ) → Set
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 _⊆_ a b = ∀ {x : ℕ} → def a x → def b x
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
53
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 eq2⊆eq1 : eqa2 ⊆ eqa1
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 eq2⊆eq1 {2} (case1 refl) = refl
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 eq2⊆eq1 {3} (case2 refl) = refl
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 -- the other way is slightly difficut
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
59
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 data ⊥ : Set where
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
61
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 ⊥-elim : {A : Set } → ⊥ → A
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 ⊥-elim ()
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 ¬_ : Set → Set
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 ¬ A = A → ⊥
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
67
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 n∅ : NSet
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 n∅ = record { def = λ y → y < 0 }
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
70
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 ¬n∅∋x : {x : ℕ } → ¬ ( n∅ ∋ x )
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 ¬n∅∋x ()
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
73
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
74 ¬n∅∋x' : {x : ℕ } → ¬ ( n∅ ∋ x )
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 ¬n∅∋x' {x} nx = ⊥-elim ( n1 nx ) where
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 n1 : x < 0 → ⊥
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
77 n1 ()
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
78
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 --
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
80 -- Set of subset of ℕ
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
81 --
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
82
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
83 record NSetSet : Set (suc zero) where
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
84 field
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 ndef : NSet → Set
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
86
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
87 open NSetSet
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
88
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
89 record _=n=_ ( a b : NSetSet ) : Set (suc zero) where
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
90 field
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
91 eq→ : ∀ { x : NSet } → ndef a x → ndef b x
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
92 eq← : ∀ { x : NSet } → ndef b x → ndef a x
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
93
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
94 eqa3 : NSetSet
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
95 eqa3 = record { ndef = λ x → x == eqa2 }
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
96
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
97 --
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
98 -- Can we defined hierarchy of Set in monothic and consitent way?
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
99 -- equations on Ordinal is an solution (Ordinal Definable Set)
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
100 -- but we need some axioms to achive ZF Set Theory
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
101 --
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
102
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
103
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
104
40345abc0949 add README
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
105