Add Church numerals

This commit is contained in:
Smaug123
2021-11-07 09:48:57 +00:00
parent 7f4ed2ec7e
commit b917beaeaf
3 changed files with 43 additions and 0 deletions

View File

@@ -0,0 +1,24 @@
{-# OPTIONS --safe --warning=error --without-K #-}
open import LogicalFormulae
open import Lists.Lists
open import Agda.Primitive using (Level; lzero; lsuc; _⊔_)
open import Decidable.Sets
open import Numbers.Naturals.Definition
open import Numbers.Naturals.Semiring
module Computability.LambdaCalculus.ChurchNumeral where
open import UnorderedSet.Definition DecideEquality
open import Computability.LambdaCalculus.Definition
private
iter : Term
iter zero = var 0
iter (succ n) = apply (var 1) (iter n)
church : Term
church n = lam 1 (lam 0 (iter n))
churchSucc : Term
churchSucc = lam 0 (lam 1 (lam 2 (apply (var 1) (apply (apply (var 0) (var 1)) (var 2)))))

View File

@@ -0,0 +1,17 @@
{-# OPTIONS --safe --warning=error --without-K #-}
open import LogicalFormulae
open import Lists.Lists
open import Agda.Primitive using (Level; lzero; lsuc; _⊔_)
open import Decidable.Sets
open import Numbers.Naturals.Definition
open import Numbers.Naturals.Semiring
module Computability.LambdaCalculus.Definition where
open import UnorderedSet.Definition (DecideEquality)
data Term : Set where
var : (v : ) Term
lam : (x : ) Term Term
apply : Term Term Term

View File

@@ -156,6 +156,8 @@ open import Modules.PolynomialModule
open import Modules.Lemmas
open import Modules.DirectSum
open import Computability.LambdaCalculus.ChurchNumeral
open import ProjectEuler.Problem1
module Everything.Safe where