This commit is contained in:
Michael Zhang 2021-10-19 09:27:13 -05:00
parent fbc44a0f78
commit cb8431dbcc
Signed by: michael
GPG key ID: BDA47A31A3C8EE6B
2 changed files with 41 additions and 11 deletions

View file

@ -27,22 +27,51 @@ mul : ∀ {Γ} → Γ ⊢ ` ⇒ ` ⇒ `
mul = μ -- * mul = μ -- *
ƛ -- m ƛ -- m
ƛ -- n ƛ -- n
(case (# 1) (case (# 1) -- match on m
-- case `zero -- case `zero → return 0
(# 0) (`zero)
-- case `suc -- case `suc m₁ → return n + (m₁ * n)
(plus · # 0 · (# 3 · # 1 · # 0)) (plus · # 1 · (# 3 · # 0 · # 1))
) )
task2 : mul {} · one · one —↠ one task2 : mul {} · one · one —↠ one
task2 = task2 =
begin begin
mul {} · (`suc `zero) · (`suc `zero) mul · one · one
—→⟨ {! !} —→⟨ ξ-·₁ (ξ-·₁ β-μ)
mul [ μ mul ] · (`suc `zero) · (`suc `zero) (ƛ ƛ (case (# 1) `zero (plus · # 1 · (mul · # 0 · # 1)))) · one · one
—→⟨ {! !} —→⟨ ξ-·₁ (β-ƛ (V-suc V-zero))
mul [ μ mul ] [ `suc `zero ] · (`suc `zero) (ƛ (case one `zero (plus · # 1 · (mul · # 0 · # 1)))) · one
—→⟨ {! !} —→⟨ β-ƛ (V-suc V-zero)
case one `zero (plus · one · (mul · # 0 · one))
—→⟨ β-suc V-zero
plus · one · (mul · `zero · one)
—→⟨ ξ-·₁ (ξ-·₁ β-μ)
(ƛ ƛ (case (# 1) (# 0) (`suc (plus · # 0 · # 1)))) · one · (mul · `zero · one)
—→⟨ ξ-·₁ (β-ƛ (V-suc V-zero))
(ƛ (case one (# 0) (`suc (plus · # 0 · # 1)))) · (mul · `zero · one)
—→⟨ ξ-·₂ V-ƛ (ξ-·₁ (ξ-·₁ β-μ))
(ƛ (case one (# 0) (`suc (plus · # 0 · # 1)))) ·
((ƛ ƛ (case (# 1) `zero (plus · # 1 · (mul · # 0 · # 1)))) · `zero · one)
—→⟨ ξ-·₂ V-ƛ (ξ-·₁ (β-ƛ V-zero))
(ƛ (case one (# 0) (`suc (plus · # 0 · # 1)))) ·
((ƛ (case `zero `zero (plus · # 1 · (mul · # 0 · # 1)))) · one)
—→⟨ ξ-·₂ V-ƛ (β-ƛ (V-suc V-zero))
(ƛ (case one (# 0) (`suc (plus · # 0 · # 1)))) ·
(case `zero `zero (plus · one · (mul · # 0 · one)))
—→⟨ ξ-·₂ V-ƛ β-zero
(ƛ (case one (# 0) (`suc (plus · # 0 · # 1)))) · `zero
—→⟨ β-ƛ V-zero
case one `zero (`suc (plus · # 0 · `zero))
—→⟨ β-suc V-zero
`suc (plus · `zero · `zero)
—→⟨ ξ-suc (ξ-·₁ (ξ-·₁ β-μ))
`suc ((ƛ ƛ (case (# 1) (# 0) (`suc (plus · # 0 · # 1)))) · `zero · `zero)
—→⟨ ξ-suc (ξ-·₁ (β-ƛ V-zero))
`suc ((ƛ (case `zero (# 0) (`suc (plus · # 0 · # 1)))) · `zero)
—→⟨ ξ-suc (β-ƛ V-zero)
`suc (case `zero `zero (`suc (plus · # 0 · `zero)))
—→⟨ ξ-suc β-zero
one one

View file

@ -229,6 +229,7 @@ data _—↠_ {Γ A} : (Γ ⊢ A) → (Γ ⊢ A) → Set where
_—→⟨_⟩_ : (L : Γ A) {M N : Γ A} _—→⟨_⟩_ : (L : Γ A) {M N : Γ A}
L —→ M L —→ M
-- → L —↠ M
M —↠ N M —↠ N
------ ------
L —↠ N L —↠ N