Compare commits

...

6 Commits

Author SHA1 Message Date
252abbce78 Add more info in the readme 2026-01-02 18:29:22 +01:00
fa1519b019 Some more examples 2026-01-02 18:27:52 +01:00
f22c637eb0 Clean 2025-12-30 10:45:04 +01:00
ed29a2d98b fixup! Update sources 2025-12-30 10:44:03 +01:00
151be77c04 Use a stack instead 2025-12-30 10:43:25 +01:00
d74a05393a Cut it out :D 2025-12-30 10:43:25 +01:00
2 changed files with 121 additions and 67 deletions

View File

@@ -1,8 +1,10 @@
# mambo # Mambo
This was my weekend turned a bit more project from Christmas, really fun thinking thingy, would be interesting to show the relation to other similar systems as LTL and CTL.
## Resources used ## Resources used
- https://vcvpaiva.github.io/includes/pubs/2011-Basic_Constructive_Modality.pdf - https://vcvpaiva.github.io/includes/pubs/2011-Basic_Constructive_Modality.pdf
- https://arxiv.org/html/2408.16428v1 - https://arxiv.org/html/2408.16428v1
- https://www.sciencedirect.com/science/article/pii/S157106611000037X?ref=pdf_download&fr=RR-2&rr=9b2f4a90ee93dc47 - https://www.sciencedirect.com/science/article/pii/S157106611000037X
- https://builds.openlogicproject.org/courses/boxes-and-diamonds/bd-screen.pdf - https://builds.openlogicproject.org/courses/boxes-and-diamonds/bd-screen.pdf
- https://www.cambridge.org/us/universitypress/subjects/computer-science/programming-languages-and-applied-logic/logic-computer-science-modelling-and-reasoning-about-systems-2nd-edition?format=PB&isbn=9780521543101 - https://www.cambridge.org/us/universitypress/subjects/computer-science/programming-languages-and-applied-logic/logic-computer-science-modelling-and-reasoning-about-systems-2nd-edition?format=PB&isbn=9780521543101

View File

@@ -1,10 +1,14 @@
{-# OPTIONS --no-import-sorts #-} {-# OPTIONS --no-import-sorts #-}
open import Agda.Primitive renaming (Set to Type) open import Agda.Primitive renaming (Set to Type)
open import Agda.Builtin.Nat open import Agda.Builtin.Nat
open import Agda.Builtin.List
data Bottom : Type where data Bottom : Type where
infixl 10 _,_
data Stack (A : Type) : Type where
: Stack A
_,_ : Stack A A Stack A
¬ : Type Type ¬ : Type Type
¬ A = A Bottom ¬ A = A Bottom
@@ -58,14 +62,14 @@ X ⇔ Y = (X ⇒ Y) ∧ (Y ⇒ X)
p = ( ( p)) p = ( ( p))
infix 9 _∈_ infix 9 _∈_
data _∈_ {A : Type} : A List A Type where data _∈_ {A : Type} : A Stack A Type where
zero : (x : A) (xs : List A) x (x xs) zero : (x : A) (xs : Stack A) x (xs , x)
succ : {y : A} (x : A) (xs : List A) (x xs) (x (y xs)) succ : {y : A} (x : A) (xs : Stack A) (x xs) (x (xs , y))
record M (W : Type) : Type₁ where record M (W : Type) : Type₁ where
field field
R : Rel W W R : Rel W W
L : W List Nat L : W Stack Nat
infix 2 _,_⊩_ infix 2 _,_⊩_
_,_⊩_ : {W : Type} (Model : M W) (x : W) (p : Formula) Type _,_⊩_ : {W : Type} (Model : M W) (x : W) (p : Formula) Type
@@ -86,39 +90,37 @@ data R : Nat → Nat → Type where
ExampleModel : M Nat ExampleModel : M Nat
ExampleModel .M.R = R ExampleModel .M.R = R
ExampleModel .M.L 0 = 0 [] ExampleModel .M.L 0 = , 0
ExampleModel .M.L 1 = 1 2 [] ExampleModel .M.L 1 = , 2 , 1
ExampleModel .M.L 2 = 0 2 [] ExampleModel .M.L 2 = , 2 , 0
ExampleModel .M.L _ = [] ExampleModel .M.L _ =
KSem : ExampleModel , 0 (atom 1 atom 2) ( atom 1 atom 2) KSem : ExampleModel , 0 (atom 1 atom 2) ( atom 1 atom 2)
KSem x x₁ y zeroone = succ 2 (2 []) (zero 2 []) KSem x x₁ y zeroone = succ 2 ( , 2) (zero 2 )
KSem x x₁ y zerotwo = succ 2 (2 []) (zero 2 []) KSem x x₁ y zerotwo = succ 2 ( , 2) (zero 2 )
ExampleSem : ExampleModel , 0 (atom 2) ExampleSem : ExampleModel , 0 (atom 2)
ExampleSem y zeroone = succ 2 (2 []) (zero 2 []) ExampleSem y zeroone = succ 2 ( , 2) (zero 2 )
ExampleSem y zerotwo = succ 2 (2 []) (zero 2 []) ExampleSem y zerotwo = succ 2 ( , 2) (zero 2 )
Example2Sem : ExampleModel , 0 (atom 1) Example2Sem : ExampleModel , 0 (atom 1)
Example2Sem = pair 1 (λ _ zero 1 (2 [])) Example2Sem = pair 1 (λ _ zero 1 ( , 2))
Context : Type Context : Type
Context = List Formula Context = Stack Formula
variable variable
Γ Δ Γ' Δ' : Context Γ Δ Γ' Δ' : Context
infixl 10 _,_
pattern _,_ Γ X = X Γ
infix 9 _++_ infix 9 _++_
_++_ : {A : Type} List A List A List A _++_ : {A : Type} Stack A Stack A Stack A
[] ++ ys = ys xs ++ = xs
(x xs) ++ ys = x (xs ++ ys) xs ++ ys , y = (xs ++ ys) , y
infix 8 _⊆_ infix 8 _⊆_
_⊆_ : {A : Type} (Γ Γ' : List A) Type _⊆_ : {A : Type} (Γ Γ' : Stack A) Type
_⊆_ {A} Γ Γ' = {X} X Γ X Γ' _⊆_ {A} Γ Γ' = {X} X Γ X Γ'
infixr 2 _/_⊢_ infixr 2 _/_⊢_
@@ -135,18 +137,18 @@ data _/_⊢_ (Δ Γ : Context) : Formula → Type where
¬ᵢ : Δ / Γ , X Δ / Γ X ¬ᵢ : Δ / Γ , X Δ / Γ X
¬ₑ : Δ / Γ X Δ / Γ X Δ / Γ ¬ₑ : Δ / Γ X Δ / Γ X Δ / Γ
⊥ₑ : Δ / Γ Δ / Γ X ⊥ₑ : Δ / Γ Δ / Γ X
□ᵢ : [] / Δ X Δ / Γ X □ᵢ : / Δ X Δ / Γ X
□ₑ : Δ / Γ X (Δ , X) / Γ Y Δ / Γ Y □ₑ : Δ / Γ X (Δ , X) / Γ Y Δ / Γ Y
-- TODO: Maybe make it KT45 -- TODO: Maybe make it KT45
inSwap : {A : Type} {X Y Z : A} (Γ Γ' : List A) Z (Γ' ++ Γ , X , Y) Z (Γ' ++ Γ , Y , X) inSwap : {A : Type} {X Y Z : A} (Γ Γ' : Stack A) Z (Γ , X , Y ++ Γ') Z (Γ , Y , X ++ Γ')
inSwap Γ [] (zero x xs) = succ x (Γ , x) (zero x Γ) inSwap Γ (zero x xs) = succ x (Γ , x) (zero x Γ)
inSwap Γ [] (succ x xs (zero x₁ xs₁)) = zero x (Γ , _) inSwap Γ (succ x xs (zero x₁ xs₁)) = zero x (Γ , _)
inSwap Γ [] (succ x xs (succ x₁ xs₁ x₂)) = succ x (Γ , _) (succ x Γ x₂) inSwap Γ (succ x xs (succ x₁ xs₁ x₂)) = succ x (Γ , _) (succ x Γ x₂)
inSwap Γ (Γ' , x₁) (zero x xs) = zero x₁ (Γ' ++ Γ , _ , _) inSwap Γ (Γ' , x₁) (zero x xs) = zero x₁ (Γ , _ , _ ++ Γ')
inSwap Γ (Γ' , x₁) (succ x xs x₂) = succ x (Γ' ++ Γ , _ , _) (inSwap Γ Γ' x₂) inSwap Γ (Γ' , x₁) (succ x xs x₂) = succ x (Γ , _ , _ ++ Γ') (inSwap Γ Γ' x₂)
exchange : (Γ' : Context) Δ / Γ' ++ (Γ , A , B) C Δ / Γ' ++ (Γ , B , A) C exchange : (Γ' : Context) Δ / (Γ , A , B) ++ Γ' C Δ / (Γ , B , A) ++ Γ' C
exchange Γ' (var x) = var (inSwap _ Γ' x) exchange Γ' (var x) = var (inSwap _ Γ' x)
exchange Γ' (mp x x₁) = mp (exchange Γ' x) (exchange Γ' x₁) exchange Γ' (mp x x₁) = mp (exchange Γ' x) (exchange Γ' x₁)
exchange Γ' (∧ᵢ x x₁) = ∧ᵢ (exchange Γ' x) (exchange Γ' x₁) exchange Γ' (∧ᵢ x x₁) = ∧ᵢ (exchange Γ' x) (exchange Γ' x₁)
@@ -162,7 +164,7 @@ exchange Γ' (⊥ₑ x) = ⊥ₑ (exchange Γ' x)
exchange Γ' (□ᵢ x) = □ᵢ x exchange Γ' (□ᵢ x) = □ᵢ x
exchange Γ' (□ₑ x x₁) = □ₑ (exchange Γ' x) (exchange Γ' x₁) exchange Γ' (□ₑ x x₁) = □ₑ (exchange Γ' x) (exchange Γ' x₁)
exchange-modal : (Δ' : Context) Δ' ++ Δ , A , B / Γ C Δ' ++ Δ , B , A / Γ C exchange-modal : (Δ' : Context) Δ , A , B ++ Δ' / Γ C Δ , B , A ++ Δ' / Γ C
exchange-modal Δ' (var x) = var x exchange-modal Δ' (var x) = var x
exchange-modal Δ' (mp x x₁) = mp (exchange-modal Δ' x) (exchange-modal Δ' x₁) exchange-modal Δ' (mp x x₁) = mp (exchange-modal Δ' x) (exchange-modal Δ' x₁)
exchange-modal Δ' (∧ᵢ x x₁) = ∧ᵢ (exchange-modal Δ' x) (exchange-modal Δ' x₁) exchange-modal Δ' (∧ᵢ x x₁) = ∧ᵢ (exchange-modal Δ' x) (exchange-modal Δ' x₁)
@@ -178,25 +180,25 @@ exchange-modal Δ' (⊥ₑ x) = ⊥ₑ (exchange-modal Δ' x)
exchange-modal Δ' (□ᵢ x) = □ᵢ (exchange Δ' x) exchange-modal Δ' (□ᵢ x) = □ᵢ (exchange Δ' x)
exchange-modal Δ' (□ₑ x x₁) = □ₑ (exchange-modal Δ' x) (exchange-modal (Δ' , _) x₁) exchange-modal Δ' (□ₑ x x₁) = □ₑ (exchange-modal Δ' x) (exchange-modal (Δ' , _) x₁)
inBoth : {A : Type} {Γ Γ' : List A} {X : A} Γ Γ' (Γ , X) (Γ' , X) inBoth : {A : Type} {Γ Γ' : Stack A} {X : A} Γ Γ' (Γ , X) (Γ' , X)
inBoth {A} {Γ} {Γ'} {X} x {X₁} (zero x₁ xs) = zero X Γ' inBoth {A} {Γ} {Γ'} {X} x {X₁} (zero x₁ xs) = zero X Γ'
inBoth {A} {Γ} {Γ'} {X} x {X₁} (succ x₁ xs x₂) = succ X₁ Γ' (x x₂) inBoth {A} {Γ} {Γ'} {X} x {X₁} (succ x₁ xs x₂) = succ X₁ Γ' (x x₂)
weak : Δ / Γ A Γ Γ' Δ / Γ' A weak : Δ / Γ A Γ Γ' Δ / Γ' A
weak {Δ} {Γ} {A} {Γ'} (var x) x₁ = var (x₁ x) weak (var x) x₁ = var (x₁ x)
weak {Δ} {Γ} {A} {Γ'} (mp x x₂) x₁ = mp (weak x x₁) (weak x₂ x₁) weak (mp x x₂) x₁ = mp (weak x x₁) (weak x₂ x₁)
weak {Δ} {Γ} {A} {Γ'} (∧ᵢ x x₂) x₁ = ∧ᵢ (weak x x₁) (weak x₂ x₁) weak (∧ᵢ x x₂) x₁ = ∧ᵢ (weak x x₁) (weak x₂ x₁)
weak {Δ} {Γ} {A} {Γ'} (∧ₑ₁ x) x₁ = ∧ₑ₁ (weak x x₁) weak (∧ₑ₁ x) x₁ = ∧ₑ₁ (weak x x₁)
weak {Δ} {Γ} {A} {Γ'} (∧ₑ₂ x) x₁ = ∧ₑ₂ (weak x x₁) weak (∧ₑ₂ x) x₁ = ∧ₑ₂ (weak x x₁)
weak {Δ} {Γ} {A} {Γ'} (∨ᵢ₁ x) x₁ = ∨ᵢ₁ (weak x x₁) weak (∨ᵢ₁ x) x₁ = ∨ᵢ₁ (weak x x₁)
weak {Δ} {Γ} {A} {Γ'} (∨ᵢ₂ x) x₁ = ∨ᵢ₂ (weak x x₁) weak (∨ᵢ₂ x) x₁ = ∨ᵢ₂ (weak x x₁)
weak {Δ} {Γ} {A} {Γ'} (∨ₑ x x₂ x₃) x₁ = ∨ₑ (weak x x₁) (weak x₂ (inBoth x₁)) (weak x₃ (inBoth x₁)) weak (∨ₑ x x₂ x₃) x₁ = ∨ₑ (weak x x₁) (weak x₂ (inBoth x₁)) (weak x₃ (inBoth x₁))
weak {Δ} {Γ} {A} {Γ'} (⇒ᵢ x) x₁ = ⇒ᵢ (weak x (inBoth x₁)) weak (⇒ᵢ x) x₁ = ⇒ᵢ (weak x (inBoth x₁))
weak {Δ} {Γ} {A} {Γ'} (¬ᵢ x) x₁ = ¬ᵢ (weak x (inBoth x₁)) weak (¬ᵢ x) x₁ = ¬ᵢ (weak x (inBoth x₁))
weak {Δ} {Γ} {A} {Γ'} (¬ₑ x x₂) x₁ = ¬ₑ (weak x x₁) (weak x₂ x₁) weak (¬ₑ x x₂) x₁ = ¬ₑ (weak x x₁) (weak x₂ x₁)
weak {Δ} {Γ} {A} {Γ'} (⊥ₑ x) x₁ = ⊥ₑ (weak x x₁) weak (⊥ₑ x) x₁ = ⊥ₑ (weak x x₁)
weak {Δ} {Γ} {A} {Γ'} (□ᵢ x) x₁ = □ᵢ x weak (□ᵢ x) x₁ = □ᵢ x
weak {Δ} {Γ} {A} {Γ'} (□ₑ x x₂) x₁ = □ₑ (weak x x₁) (weak x₂ x₁) weak (□ₑ x x₂) x₁ = □ₑ (weak x x₁) (weak x₂ x₁)
weak-modal : Δ / Γ A Δ Δ' Δ' / Γ A weak-modal : Δ / Γ A Δ Δ' Δ' / Γ A
weak-modal (var x) x₁ = var x weak-modal (var x) x₁ = var x
@@ -214,21 +216,49 @@ weak-modal (⊥ₑ x) x₁ = ⊥ₑ (weak-modal x x₁)
weak-modal (□ᵢ x) x₁ = □ᵢ (weak x x₁) weak-modal (□ᵢ x) x₁ = □ᵢ (weak x x₁)
weak-modal (□ₑ x x₂) x₁ = □ₑ (weak-modal x x₁) (weak-modal x₂ (inBoth x₁)) weak-modal (□ₑ x x₂) x₁ = □ₑ (weak-modal x x₁) (weak-modal x₂ (inBoth x₁))
cut : (Γ' : Context) Δ / Γ A Δ / Γ' ++ (Γ , A) B Δ / Γ' ++ Γ B cut : (Γ' : Context) Δ / Γ A Δ / (Γ , A) ++ Γ' B Δ / Γ ++ Γ' B
cut Γ' x x₁ = {!!} cut x (var x₁) = mp (⇒ᵢ (var x₁)) x
cut (Γ' , x₂) x (var (zero x₁ xs)) = var (zero x₂ (_ ++ Γ'))
cut (Γ' , x₂) x (var (succ _ xs x₃)) = weak (cut Γ' x (var x₃)) λ {X} succ X (_ ++ Γ')
cut Γ' x (mp x₁ x₂) = mp (cut Γ' x x₁) (cut Γ' x x₂)
cut Γ' x (∧ᵢ x₁ x₂) = ∧ᵢ (cut Γ' x x₁) (cut Γ' x x₂)
cut Γ' x (∧ₑ₁ x₁) = ∧ₑ₁ (cut Γ' x x₁)
cut Γ' x (∧ₑ₂ x₁) = ∧ₑ₂ (cut Γ' x x₁)
cut Γ' x (∨ᵢ₁ x₁) = ∨ᵢ₁ (cut Γ' x x₁)
cut Γ' x (∨ᵢ₂ x₁) = ∨ᵢ₂ (cut Γ' x x₁)
cut Γ' x (∨ₑ x₁ x₂ x₃) = ∨ₑ (cut Γ' x x₁) (cut (Γ' , _) x x₂) (cut (Γ' , _ ) x x₃)
cut Γ' x (⇒ᵢ x₁) = ⇒ᵢ (cut (Γ' , _) x x₁)
cut Γ' x (¬ᵢ x₁) = ¬ᵢ (cut (Γ' , _) x x₁)
cut Γ' x (¬ₑ x₁ x₂) = ¬ₑ (cut Γ' x x₁) (cut Γ' x x₂)
cut Γ' x (⊥ₑ x₁) = ⊥ₑ (cut Γ' x x₁)
cut Γ' x (□ᵢ x₁) = □ᵢ x₁
cut Γ' x (□ₑ x₁ x₂) = □ₑ (cut Γ' x x₁) (cut Γ' (weak-modal x (λ {X = X₁} succ X₁ _)) x₂)
cut-modal : Δ / Γ A Δ' ++ (Δ , A) / Γ B Δ' ++ Δ / Γ B cut-modal : (Δ' : Context) / Δ A (Δ , A) ++ Δ' / Γ B Δ ++ Δ' / Γ B
cut-modal = {!!} cut-modal Δ' x (var x₁) = var x₁
cut-modal Δ' x (mp x₁ x₂) = mp (cut-modal Δ' x x₁) (cut-modal Δ' x x₂)
cut-modal Δ' x (∧ᵢ x₁ x₂) = ∧ᵢ (cut-modal Δ' x x₁) (cut-modal Δ' x x₂)
cut-modal Δ' x (∧ₑ₁ x₁) = ∧ₑ₁ (cut-modal Δ' x x₁)
cut-modal Δ' x (∧ₑ₂ x₁) = ∧ₑ₂ (cut-modal Δ' x x₁)
cut-modal Δ' x (∨ᵢ₁ x₁) = ∨ᵢ₁ (cut-modal Δ' x x₁)
cut-modal Δ' x (∨ᵢ₂ x₁) = ∨ᵢ₂ (cut-modal Δ' x x₁)
cut-modal Δ' x (∨ₑ x₁ x₂ x₃) = ∨ₑ (cut-modal Δ' x x₁) (cut-modal Δ' x x₂) (cut-modal Δ' x x₃)
cut-modal Δ' x (⇒ᵢ x₁) = ⇒ᵢ (cut-modal Δ' x x₁)
cut-modal Δ' x (¬ᵢ x₁) = ¬ᵢ (cut-modal Δ' x x₁)
cut-modal Δ' x (¬ₑ x₁ x₂) = ¬ₑ (cut-modal Δ' x x₁) (cut-modal Δ' x x₂)
cut-modal Δ' x (⊥ₑ x₁) = ⊥ₑ (cut-modal Δ' x x₁)
cut-modal Δ' x (□ᵢ x₁) = □ᵢ (cut Δ' x x₁)
cut-modal Δ' x (□ₑ x₁ x₂) = □ₑ (cut-modal Δ' x x₁) (cut-modal (Δ' , _) x x₂)
KSym : [] / [] (X Y) ( X Y) KSym : / (X Y) ( X Y)
KSym {X} {Y} = ⇒ᵢ (⇒ᵢ (□ₑ (var (zero ( X) ([] , ( (X Y))))) KSym {X} {Y} = ⇒ᵢ (⇒ᵢ (□ₑ (var (zero ( X) ( , ( (X Y)))))
(□ₑ (var (succ ((X Y)) ([] , ( (X Y))) (zero ( (X Y)) []))) (□ₑ (var (succ ((X Y)) ( , ( (X Y))) (zero ( (X Y)) )))
(□ᵢ (mp (□ᵢ (mp
(var (zero (X Y) ([] , X))) (var (zero (X Y) ( , X)))
(var (succ X ([] , X) (zero X [])))))))) (var (succ X ( , X) (zero X ))))))))
MTSym : [] / [] (A B) B A MTSym : / (A B) B A
MTSym {A} {B} = ⇒ᵢ (⇒ᵢ (¬ᵢ (¬ₑ (var (succ ( B) ([] , (A B) , ( B)) (zero ( B) ([] , (A B))))) (mp (var (succ (A B) ([] , (A B) , ( B)) (succ (A B) ([] , (A B)) (zero (A B) [])))) (var (zero A ([] , (A B) , ( B)))))))) MTSym {A} {B} = ⇒ᵢ (⇒ᵢ (¬ᵢ (¬ₑ (var (succ ( B) ( , (A B) , ( B)) (zero ( B) ( , (A B))))) (mp (var (succ (A B) ( , (A B) , ( B)) (succ (A B) ( , (A B)) (zero (A B) )))) (var (zero A ( , (A B) , ( B))))))))
DedSym : Δ / Γ A B Δ / Γ , A B DedSym : Δ / Γ A B Δ / Γ , A B
DedSym {Δ} {Γ} {A} {B} (var x) = mp (var (succ (A B) Γ x)) (var (zero A Γ)) DedSym {Δ} {Γ} {A} {B} (var x) = mp (var (succ (A B) Γ x)) (var (zero A Γ))
@@ -243,15 +273,37 @@ DedSym {Δ} {Γ} {A} {B} (□ₑ x x₁) = mp (weak (□ₑ x x₁) (λ {X = X
DedSymInv : Δ / Γ , A B Δ / Γ A B DedSymInv : Δ / Γ , A B Δ / Γ A B
DedSymInv {Δ} {Γ} {A} {B} x = ⇒ᵢ x DedSymInv {Δ} {Γ} {A} {B} x = ⇒ᵢ x
ExampleSyn : [] / [] X (Y X) ExampleSyn : / X (Y X)
ExampleSyn {X} {Y} = ⇒ᵢ (□ₑ (var (zero ( X) [])) (□ᵢ (⇒ᵢ (var (succ X ([] , X) (zero X [])))))) ExampleSyn {X} {Y} = ⇒ᵢ (□ₑ (var (zero ( X) )) (□ᵢ (⇒ᵢ (var (succ X ( , X) (zero X ))))))
ExampleSyn2 : [] / [] (A B) ( A B) ExampleSyn2 : / (A B) ( A B)
ExampleSyn2 {A} {B} = ⇒ᵢ (∧ᵢ (□ₑ (var (zero ( (A B)) [])) (□ᵢ (∧ₑ₁ (var (zero (A B) []))))) (□ₑ (var (zero ( (A B)) [])) (□ᵢ (∧ₑ₂ (var (zero (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) (A B)
ExampleSyn3 {A} {B} = ⇒ᵢ (□ₑ (∧ₑ₁ (var (zero (( A) ( B)) []))) (□ₑ (∧ₑ₂ (var (zero (( A) ( B)) []))) (□ᵢ (∧ᵢ (var (succ A ([] , A) (zero A []))) (var (zero B ([] , A))))))) ExampleSyn3 {A} {B} = ⇒ᵢ (□ₑ (∧ₑ₁ (var (zero (( A) ( B)) ))) (□ₑ (∧ₑ₂ (var (zero (( A) ( B)) ))) (□ᵢ (∧ᵢ (var (succ A ( , A) (zero A ))) (var (zero B ( , A)))))))
ExampleSyn4 : [] / [] (A B) ( A B) ExampleSyn4 : / (A B) ( A B)
ExampleSyn4 {A} {B} = ⇒ᵢ (⇒ᵢ (¬ᵢ (□ₑ (var (zero ( ( B)) ([] , ( (A B)) , ( A)))) (□ₑ (var (succ ( (A B)) ([] , ( (A B)) , ( A)) (succ ( (A B)) ([] , ( (A B))) (zero ( (A B)) [])))) (¬ₑ (var (succ ( ( ( A))) ([] , ( (A B)) , ( A)) ExampleSyn4 {A} {B} = ⇒ᵢ (⇒ᵢ (¬ᵢ (□ₑ (var (zero ( ( B)) ( , ( (A B)) , ( A)))) (□ₑ (var (succ ( (A B)) ( , ( (A B)) , ( A)) (succ ( (A B)) ( , ( (A B))) (zero ( (A B)) )))) (¬ₑ (var (succ ( ( ( A))) ( , ( (A B)) , ( A))
(zero ( ( ( A))) ([] , ( (A B)))))) (□ᵢ (¬ᵢ (¬ₑ (var (succ ( B) ([] , ( B) , (A B)) (succ ( B) ([] , ( B)) (zero ( B) [])))) (mp (var (succ (A B) ([] , ( B) , (A B)) (zero (A B) ([] , ( B))))) (var (zero A ([] , ( B) , (A B))))))))))))) (zero ( ( ( A))) ( , ( (A B)))))) (□ᵢ (¬ᵢ (¬ₑ (var (succ ( B) ( , ( B) , (A B)) (succ ( B) ( , ( B)) (zero ( B) )))) (mp (var (succ (A B) ( , ( B) , (A B)) (zero (A B) ( , ( B))))) (var (zero A ( , ( B) , (A B)))))))))))))
ExampleSyn5 : / ( A B ) ( A B )
ExampleSyn5 {A} {B} = ⇒ᵢ (⇒ᵢ (□ₑ (var (zero ( A) ( , ( (A B))))) (□ₑ (var (succ ( (A B)) ( , ( (A B))) (zero ( (A B)) ))) (□ᵢ (mp (var (zero (A B) ( , A))) (var (succ A ( , A) (zero A ))))))))
ExampleSyn6 : / ( A) ( A)
ExampleSyn6 {A} = ∧ᵢ (⇒ᵢ (var (zero ( ( ( A))) ))) (⇒ᵢ (var (zero ( A) )))
ExampleSyn7 : / A ( (A B) B)
ExampleSyn7 {A} {B} = ⇒ᵢ (⇒ᵢ (□ₑ (var (succ ( A) ( , ( A)) (zero ( A) ))) (¬ᵢ (□ₑ (var (zero ( ( B)) ( , ( A) , ( (A B))))) (¬ₑ (var (succ ( ( ( (A B)))) ( , ( A) , ( (A B)))
(zero ( ( ( (A B)))) ( , ( A))))) (□ᵢ (¬ᵢ (¬ₑ (var (succ ( B) ( , A , ( B)) (zero ( B) ( , A)))) (mp (var (zero (A B) ( , A , ( B)))) (var (succ A ( , A , ( B)) (succ A ( , A) (zero A )))))))))))))
ExampleSyn8 : / A (A B)
ExampleSyn8 {A} {B} = ⇒ᵢ (□ₑ (var (zero ( ( A)) )) (□ᵢ (⇒ᵢ (⊥ₑ (¬ₑ (var (succ ( A) ( , ( A)) (zero ( A) ))) (var (zero A ( , ( A)))))))))
ExampleSyn9 : / ( A) ( B) (A B)
ExampleSyn9 {A} {B} = ⇒ᵢ (∨ₑ (var (zero (( A) ( B)) )) (□ₑ (var (zero ( A) ( , (( A) ( B))))) (□ᵢ (∨ᵢ₁ (var (zero A ))))) (□ₑ (var (zero ( B) ( , (( A) ( B))))) (□ᵢ (∨ᵢ₂ (var (zero B ))))))
ExampleSyn10 : / A (A B)
ExampleSyn10 {A} {B} = ⇒ᵢ (¬ᵢ (□ₑ (var (zero ( ( (A B))) ( , ( A)))) (¬ₑ (var (succ ( A) ( , ( A)) (zero ( ( ( A))) ))) (□ᵢ (¬ᵢ (¬ₑ (var (succ ( (A B)) ( , ( (A B))) (zero ( (A B)) ))) (∨ᵢ₁ (var (zero A ( , ( (A B))))))))))))
ExampleSyn11 : / A B ( A B )
ExampleSyn11 {A} {B} = ⇒ᵢ (⇒ᵢ (□ₑ (var (zero ( B) ( , ( A)))) (□ᵢ (⇒ᵢ (var (succ B ( , B) (zero B )))))))