simplified fol using l
This commit is contained in:
parent
00fd305f5f
commit
bd99520e35
84
fol.agda
84
fol.agda
@ -1,7 +1,7 @@
|
|||||||
open import Data.Nat
|
open import Data.Nat
|
||||||
open import Relation.Binary.PropositionalEquality
|
open import Relation.Binary.PropositionalEquality
|
||||||
|
|
||||||
variable m n : ℕ
|
variable m n l : ℕ
|
||||||
|
|
||||||
data Term : ℕ → Set where
|
data Term : ℕ → Set where
|
||||||
zero : Term (suc n)
|
zero : Term (suc n)
|
||||||
@ -9,49 +9,16 @@ data Term : ℕ → Set where
|
|||||||
|
|
||||||
variable t u : Term n
|
variable t u : Term n
|
||||||
|
|
||||||
data Weak : ℕ → Set where
|
wk-t : (l : ℕ) → Term (l + n) → Term (suc (l + n))
|
||||||
wk : Weak (suc n)
|
wk-t zero t = suc t
|
||||||
suc : Weak n → Weak (suc n)
|
wk-t (suc l) zero = zero
|
||||||
|
wk-t (suc l) (suc t) = suc (wk-t l t)
|
||||||
|
|
||||||
data Subst : ℕ → Set where
|
subst-t : (l : ℕ) → Term (suc (l + n)) → Term n → Term (l + n)
|
||||||
<_> : Term n → Subst n
|
subst-t zero zero u = u
|
||||||
suc : Subst n → Subst (suc n)
|
subst-t zero (suc t) u = t
|
||||||
|
subst-t (suc l) zero u = zero
|
||||||
_[_]t : Term n → Weak n → Term (suc n)
|
subst-t (suc l) (suc t) u = suc (subst-t l t u)
|
||||||
t [ wk ]t = suc t
|
|
||||||
zero [ suc w ]t = zero
|
|
||||||
suc t [ suc w ]t = suc (t [ w ]t)
|
|
||||||
|
|
||||||
{-
|
|
||||||
0 -> 0
|
|
||||||
1 -> 2
|
|
||||||
2 -> 3
|
|
||||||
|
|
||||||
suc wk
|
|
||||||
|
|
||||||
|
|
||||||
wk
|
|
||||||
0 -> 1
|
|
||||||
1 -> 2
|
|
||||||
2 -> 3
|
|
||||||
-}
|
|
||||||
|
|
||||||
_s[_]t : Term (suc n) → Subst n → Term n
|
|
||||||
zero s[ < u > ]t = u
|
|
||||||
suc t s[ < u > ]t = t
|
|
||||||
zero s[ suc s ]t = zero
|
|
||||||
suc t s[ suc s ]t = suc (t s[ s ]t)
|
|
||||||
|
|
||||||
{-
|
|
||||||
x,y,z --> x,z
|
|
||||||
0,1,2 y => x,z ⊢ t
|
|
||||||
|
|
||||||
x => x 0 => 0
|
|
||||||
y => t 1 => t
|
|
||||||
z => z 2 => 1
|
|
||||||
|
|
||||||
|
|
||||||
-}
|
|
||||||
|
|
||||||
infix 15 _⇒_
|
infix 15 _⇒_
|
||||||
|
|
||||||
@ -61,15 +28,15 @@ data Form : ℕ → Set where
|
|||||||
P : Term n → Form n
|
P : Term n → Form n
|
||||||
-- R : Term n → Term n → Form n
|
-- R : Term n → Term n → Form n
|
||||||
|
|
||||||
_[_]F : Form n → Weak n → Form (suc n)
|
wk-F : (l : ℕ) → Form (l + n) → Form (suc (l + n))
|
||||||
(A ⇒ B) [ w ]F = (A [ w ]F) ⇒ (B [ w ]F)
|
wk-F l (A ⇒ B) = wk-F l A ⇒ wk-F l B
|
||||||
∀F A [ w ]F = ∀F (A [ suc w ]F)
|
wk-F l (∀F A) = ∀F (wk-F (suc l) A)
|
||||||
P a [ w ]F = P (a [ w ]t )
|
wk-F l (P t) = P (wk-t l t)
|
||||||
|
|
||||||
_s[_]F : Form (suc n) → Subst n → Form n
|
subst-F : (l : ℕ) → Form (suc (l + n)) → Term n → Form (l + n)
|
||||||
(A ⇒ B) s[ s ]F = (A s[ s ]F) ⇒ (B s[ s ]F)
|
subst-F l (A ⇒ B) u = subst-F l A u ⇒ subst-F l B u
|
||||||
∀F A s[ s ]F = ∀F (A s[ suc s ]F)
|
subst-F l (∀F A) u = ∀F (subst-F (suc l) A u)
|
||||||
P a s[ s ]F = P (a s[ s ]t )
|
subst-F l (P t) u = P (subst-t l t u)
|
||||||
|
|
||||||
infix 10 _▷_
|
infix 10 _▷_
|
||||||
|
|
||||||
@ -77,9 +44,9 @@ data Con : ℕ → Set where
|
|||||||
• : Con n
|
• : Con n
|
||||||
_▷_ : Con n → Form n → Con n
|
_▷_ : Con n → Form n → Con n
|
||||||
|
|
||||||
_[_]C : Con n → Weak n → Con (suc n)
|
wk-C : (l : ℕ) → Con (l + n) → Con (suc (l + n))
|
||||||
• [ w ]C = •
|
wk-C l • = •
|
||||||
(Γ ▷ A) [ w ]C = (Γ [ w ]C) ▷ (A [ w ]F)
|
wk-C l (Γ ▷ A) = wk-C l Γ ▷ wk-F l A
|
||||||
|
|
||||||
variable Γ Δ : Con n
|
variable Γ Δ : Con n
|
||||||
variable A B C : Form n
|
variable A B C : Form n
|
||||||
@ -91,13 +58,16 @@ data _⊢_ : Con n → Form n → Set where
|
|||||||
suc : Γ ⊢ A → Γ ▷ B ⊢ A
|
suc : Γ ⊢ A → Γ ▷ B ⊢ A
|
||||||
lam : Γ ▷ A ⊢ B → Γ ⊢ A ⇒ B
|
lam : Γ ▷ A ⊢ B → Γ ⊢ A ⇒ B
|
||||||
app : Γ ⊢ A ⇒ B → Γ ⊢ A → Γ ⊢ B
|
app : Γ ⊢ A ⇒ B → Γ ⊢ A → Γ ⊢ B
|
||||||
Lam : Γ [ wk ]C ⊢ A → Γ ⊢ ∀F A
|
Lam : (wk-C zero Γ) ⊢ A → Γ ⊢ ∀F A
|
||||||
App : Γ ⊢ ∀F A → (t : Term _) → Γ ⊢ A s[ < t > ]F
|
App : Γ ⊢ ∀F A → (t : Term _) → Γ ⊢ subst-F zero A t
|
||||||
|
|
||||||
|
{-
|
||||||
-- (A ⇒ ∀ x . P x) ⇒ ∀ x . A → P x
|
-- (A ⇒ ∀ x . P x) ⇒ ∀ x . A → P x
|
||||||
|
|
||||||
-- A ≡ A [ wk ][ < t > ]
|
-- A ≡ A [ wk ][ < t > ]
|
||||||
|
|
||||||
|
wk-subst : subst l (wk l A) t ≡ t
|
||||||
|
|
||||||
wk-subst : (A [ wk ]F) s[ < t > ]F ≡ A
|
wk-subst : (A [ wk ]F) s[ < t > ]F ≡ A
|
||||||
wk-subst = {!!}
|
wk-subst = {!!}
|
||||||
|
|
||||||
@ -107,3 +77,5 @@ example {A = A} = lam (lam (App (app (suc zero)
|
|||||||
(wk-subst {A = A}) (App zero zero))) zero))
|
(wk-subst {A = A}) (App zero zero))) zero))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user