Kind/book/QBool2.kind2
2024-02-25 19:46:44 -03:00

64 lines
1.4 KiB
Plaintext

// Ideal:
//
// QBool2.true : QBool2 = ~λP λnew (new #0)
// QBool2.false : QBool2 = ~λP λnew (new #1)
// QBool2.bad : QBool2 = ~λP λnew (new #2 ?impossible)
//
// QBool2 : * =
// $self
// ∀(P: ∀(x: QBool2) *)
// ∀(new: ∀(tag: #U60) #match tag = tag {
// #0: (P QBool2.true)
// #1: (P QBool2.false)
// #+: ∀(e: Empty) *
// }: *)
// (P self)
//
// QBool2.match
// : ∀(a: QBool2)
// ∀(P: ∀(x: QBool2) *)
// ∀(t: (P QBool2.true))
// ∀(f: (P QBool2.false))
// (P a)
// = λa λP λt λf
// (~a P λtag #match tag = tag {
// #0: t
// #1: f
// #+: λe (~e λx(*))
// })
QBool2.true : QBool2 = ~λP λnew (new #0)
QBool2.false : QBool2 = ~λP λnew (new #1)
QBool2.bad : QBool2 = ~λP λnew (new #2 ?impossible)
QBool2 : * =
$(self: QBool2)
∀(P: ∀(x: QBool2) *)
∀(new: ∀(tag: #U60) #match tag = tag {
#0: (P QBool2.true)
#+: #match tag_1 = tag-1 {
#0: (P QBool2.false)
#+: ∀(e: Empty) *
}: *
}: *)
(P self)
QBool2.match
: ∀(a: QBool2)
∀(P: ∀(x: QBool2) *)
∀(t: (P QBool2.true))
∀(f: (P QBool2.false))
(P a)
= λa λP λt λf
(~a P λtag #match tag = tag {
#0: t
#+: #match tag_1 = tag-1 {
#0: f
#+: λe (~e λx(*))
}: #match tag_1 = tag_1 { #0: (P QBool2.false) #+: ∀(e: Empty) * }: *
}: #match tag = tag { #0: (P QBool2.true) #+: #match tag_1 = tag-1 { #0: (P QBool2.false) #+: ∀(e: Empty) * }: * }: *)