Tehee
This commit is contained in:
51
mambo.agda
51
mambo.agda
@@ -17,6 +17,15 @@ data Σ (A : Type) (B : A -> Type) : Type where
|
|||||||
∃ : {A : Type} (B : A → Type) → Type
|
∃ : {A : Type} (B : A → Type) → Type
|
||||||
∃ {A} B = Σ A B
|
∃ {A} B = Σ A B
|
||||||
|
|
||||||
|
record _×_ (A B : Type) : Type where
|
||||||
|
field
|
||||||
|
fst : A
|
||||||
|
snd : B
|
||||||
|
|
||||||
|
data _∪_ (A B : Type) : Type where
|
||||||
|
inl : A → A ∪ B
|
||||||
|
inr : B → A ∪ B
|
||||||
|
|
||||||
data Formula : Type where
|
data Formula : Type where
|
||||||
⊥ : Formula
|
⊥ : Formula
|
||||||
atom : Nat → Formula
|
atom : Nat → Formula
|
||||||
@@ -72,15 +81,33 @@ record M (W : Type) : Type₁ where
|
|||||||
R : Rel W W
|
R : Rel W W
|
||||||
L : W → List Nat
|
L : W → List Nat
|
||||||
|
|
||||||
infixr 2 _,_⊩_
|
infix 2 _,_⊩_
|
||||||
data _,_⊩_ {W : Type} (Model : M W) (x : W) : (p : Formula) → Type where
|
_,_⊩_ : {W : Type} (Model : M W) (x : W) (p : Formula) → Type
|
||||||
top : Model , x ⊩ ⊤
|
Model , x ⊩ ⊥ = Bottom
|
||||||
atom : {p : Nat} → p ∈ (M.L Model x) → Model , x ⊩ atom p
|
Model , x ⊩ atom n = n ∈ M.L Model x
|
||||||
neg : {p : Formula} → ¬ (Model , x ⊩ p) → Model , x ⊩ ∼ p
|
Model , x ⊩ (∼ p) = ¬ (Model , x ⊩ p)
|
||||||
and : {p q : Formula} → Model , x ⊩ p → Model , x ⊩ q → Model , x ⊩ p ∧ q
|
Model , x ⊩ (p ∧ q) = (Model , x ⊩ p) × (Model , x ⊩ q)
|
||||||
orl : {p q : Formula} → Model , x ⊩ p → Model , x ⊩ p ∨ q
|
Model , x ⊩ (p ∨ q) = (Model , x ⊩ p) ∪ (Model , x ⊩ q)
|
||||||
orr : {p q : Formula} → Model , x ⊩ q → Model , x ⊩ p ∨ q
|
Model , x ⊩ p ⇒ q = Model , x ⊩ p → Model , x ⊩ q
|
||||||
impl : {p q : Formula} → Model , x ⊩ p → Model , x ⊩ q → Model , x ⊩ p ⇒ q
|
Model , x ⊩ (□ p) = ∀ y → M.R Model x y → Model , y ⊩ p
|
||||||
-- impln : {p q : Formula} → ¬ (Model , x ⊩ p) → Model , x ⊩ p ⇒ q
|
Model , x ⊩ (◇ p) = ∃ λ y → M.R Model x y → Model , y ⊩ p
|
||||||
box : {p : Formula} → (∀ (y : W) → M.R Model x y → Model , y ⊩ p) → Model , x ⊩ □ p
|
|
||||||
dia : {p : Formula} → (∃ λ (y : W) → M.R Model x y → Model , y ⊩ p) → Model , x ⊩ ◇ p
|
data R : Nat → Nat → Type where
|
||||||
|
zeroone : R 0 1
|
||||||
|
zerotwo : R 0 2
|
||||||
|
onetwo : R 1 2
|
||||||
|
|
||||||
|
ExampleModel : M Nat
|
||||||
|
ExampleModel .M.R = R
|
||||||
|
|
||||||
|
ExampleModel .M.L 0 = 0 ∷ []
|
||||||
|
ExampleModel .M.L 1 = 1 ∷ 2 ∷ []
|
||||||
|
ExampleModel .M.L 2 = 0 ∷ 2 ∷ []
|
||||||
|
ExampleModel .M.L _ = []
|
||||||
|
|
||||||
|
Example : ExampleModel , 0 ⊩ □ (atom 2)
|
||||||
|
Example y zeroone = succ 2 (2 ∷ []) (zero 2 [])
|
||||||
|
Example y zerotwo = succ 2 (2 ∷ []) (zero 2 [])
|
||||||
|
|
||||||
|
Example2 : ExampleModel , 0 ⊩ ◇ (atom 1)
|
||||||
|
Example2 = pair 1 (λ _ → zero 1 (2 ∷ []))
|
||||||
|
|||||||
Reference in New Issue
Block a user