It kinda works :D

This commit is contained in:
2025-12-25 13:58:52 +01:00
parent b322bac402
commit 45b888cc73

View File

@@ -36,9 +36,10 @@ data Formula : Type where
_⇒_ : Formula Formula Formula _⇒_ : Formula Formula Formula
infixr 4 _⇒_ infixr 4 _⇒_
infix 19 _∧_
variable variable
X Y Z : Formula A B C X Y Z : Formula
_⇔_ : Formula Formula Formula _⇔_ : Formula Formula Formula
X Y = (X Y) (Y X) X Y = (X Y) (Y X)
@@ -83,12 +84,12 @@ ExampleModel .M.L 1 = 1 ∷ 2 ∷ []
ExampleModel .M.L 2 = 0 2 [] ExampleModel .M.L 2 = 0 2 []
ExampleModel .M.L _ = [] ExampleModel .M.L _ = []
Example : ExampleModel , 0 (atom 2) ExampleSem : ExampleModel , 0 (atom 2)
Example y zeroone = succ 2 (2 []) (zero 2 []) ExampleSem y zeroone = succ 2 (2 []) (zero 2 [])
Example y zerotwo = succ 2 (2 []) (zero 2 []) ExampleSem y zerotwo = succ 2 (2 []) (zero 2 [])
Example2 : ExampleModel , 0 (atom 1) Example2Sem : ExampleModel , 0 (atom 1)
Example2 = pair 1 (λ _ zero 1 (2 [])) Example2Sem = pair 1 (λ _ zero 1 (2 []))
Context : Type Context : Type
Context = List Formula Context = List Formula
@@ -104,23 +105,35 @@ _++_ : {A : Type} → List A → List A → List A
[] ++ ys = ys [] ++ ys = ys
(xs , x) ++ ys = xs ++ (x ys) (xs , x) ++ ys = xs ++ (x ys)
boxed : Context Context infixr 2 _/_⊢_
boxed [] = [] data _/_⊢_ (Δ Γ : Context) : Formula Type where
boxed (xs , x) = boxed xs , x var : X Γ Δ / Γ X
mp : Δ / Γ X Y Δ / Γ X Δ / Γ Y
infixr 2 _⊢_ ∧ᵢ : Δ / Γ X Δ / Γ Y Δ / Γ X Y
data _⊢_ : Context Formula Type where ∧ₑ₁ : Δ / Γ X Y Δ / Γ X
var : X Γ Γ X ∧ₑ₂ : Δ / Γ X Y Δ / Γ Y
∧ᵢ : Γ X Γ Y Γ X Y ∨ᵢ₁ : Δ / Γ X Δ / Γ X Y
∧ₑ₁ : Γ X Y Γ X ∨ᵢ₂ : Δ / Γ Y Δ / Γ X Y
∧ₑ₂ : Γ X Y Γ Y ∨ₑ : Δ / Γ X Y Δ / Γ , X Z Δ / Γ , Y Z Δ / Γ Z
∨ᵢ₁ : Γ X Γ X Y ⇒ᵢ : Δ / Γ , X Y Δ / Γ X Y
∨ᵢ₂ : Γ Y Γ X Y ¬ᵢ : Δ / Γ , X Δ / Γ X
: Γ X Y Γ , X Z Γ , Y Z Γ Z ¬ : Δ / Γ X Δ / Γ X Δ / Γ
mp : Γ X Y Γ X Γ Y □ᵢ : [] / Δ X Δ / Γ X
⇒ᵢ : Γ , X Y Γ X Y □ₑ : Δ / Γ X (Δ , X) / Γ Y Δ / Γ Y
¬ᵢ : Γ , X Γ X
¬ₑ : Γ X Γ X Γ
□ₑ : Γ X X Δ Γ ++ boxed Δ Y
□ᵢ : X Δ Γ ++ boxed Δ X
-- TODO: Maybe make it KT45 -- TODO: Maybe make it KT45
K : [] / [] (X Y) ( X Y)
K {X} {Y} = ⇒ᵢ (⇒ᵢ (□ₑ (var (zero ( X) ([] , ( (X Y)))))
(□ₑ (var (succ ((X Y)) ([] , ( (X Y))) (zero ( (X Y)) [])))
(□ᵢ (mp
(var (zero (X Y) ([] , X)))
(var (succ X ([] , X) (zero X []))))))))
ExampleSyn : [] / [] X (Y X)
ExampleSyn {X} {Y} = ⇒ᵢ (□ₑ (var (zero ( X) [])) (□ᵢ (⇒ᵢ (var (succ X ([] , X) (zero X []))))))
ExampleSyn2 : [] / [] (A B) ( A B)
ExampleSyn2 {A} {B} = ⇒ᵢ (∧ᵢ (□ₑ (var (zero ( (A B)) [])) (□ᵢ (∧ₑ₁ (var (zero (A B) []))))) (□ₑ (var (zero ( (A B)) [])) (□ᵢ (∧ₑ₂ (var (zero (A B) []))))))
ExampleSyn3 : [] / [] ( A B) (A B)
ExampleSyn3 {A} {B} = ⇒ᵢ (□ₑ (∧ₑ₁ (var (zero (( A) ( B)) []))) (□ₑ (∧ₑ₂ (var (zero (( A) ( B)) []))) (□ᵢ (∧ᵢ (var (succ A ([] , A) (zero A []))) (var (zero B ([] , A)))))))