チャーチブール値
2つの引数を取って、
最初の値を返すか、2番目の値を返すか
「関数」でBool値を表現している
定義
tru = λtf.t
tru = ΛX. λt:X. λf:X. t
tru: CBool
fls = λtf.f
fls = ΛX. λt:X. λf:X. f
fls: CBool
型注釈
CBool = ∀X.X->X->X
2つの引数を取ってどちらか一方を返すだけなので、型自体は任意で良い
if文ぽいもの
$ \overline{B}MN
以下の様に見ることができる
$ \mathrm{if}\;\overline{B}\;\mathrm{then}\;M\mathrm{else}\;N
and = λb λc.bc fls
and b c
$ b,cが共に$ \overline{T}のときのみ$ \overline{T}を返す
ex. $ \lambda bc.bc\overline{F} \overline{T}\overline{F}\to_\beta\overline{T}\overline{F}\overline{F}\to_\beta\overline{F}
or = λbλc.b tru c
not = λb.b fls tru
not = λb:CBool. ΛX. λt:X. λf:X. b[X] f t
not: CBool -> CBool