mirror of
https://github.com/HigherOrderCO/Kind.git
synced 2024-07-14 22:50:28 +03:00
71 lines
1.3 KiB
Plaintext
71 lines
1.3 KiB
Plaintext
QBool.switch
|
|
: ∀(a: QBool)
|
|
∀(P: ∀(x: QBool) *)
|
|
∀(t: (P QBool.true))
|
|
∀(f: (P QBool.false))
|
|
(P a)
|
|
= λa λP λt λf
|
|
(~(~a P)
|
|
λx (P a)
|
|
λtag
|
|
switch tag = tag {
|
|
0: λx (x t)
|
|
+: λx
|
|
(switch tag_1 = tag-1 {
|
|
0: λx (x f)
|
|
+: λx (x λe (Empty.absurd e *))
|
|
}: ∀(x:
|
|
∀(x:
|
|
switch tag_1 = tag_1 {
|
|
0: (P QBool.false)
|
|
+: ∀(x: Empty) *
|
|
}: *
|
|
)
|
|
(P a)
|
|
)
|
|
(P a)
|
|
x
|
|
)
|
|
}: ∀(x:
|
|
∀(x:
|
|
switch tag = tag {
|
|
0: (P QBool.true)
|
|
+: switch tag_1 = tag-1 {
|
|
0: (P QBool.false)
|
|
+: ∀(x: Empty) *
|
|
}: *
|
|
}: *
|
|
)
|
|
(P a)
|
|
)
|
|
(P a)
|
|
)
|
|
|
|
QBool2.switch
|
|
: ∀(a: QBool2)
|
|
∀(P: ∀(x: QBool2) *)
|
|
∀(t: (P QBool2.true))
|
|
∀(f: (P QBool2.false))
|
|
(P a)
|
|
= λa λP λt λf
|
|
(~a
|
|
P
|
|
λtag
|
|
switch tag = tag {
|
|
0: t
|
|
+: switch tag_1 = tag-1 {
|
|
0: f
|
|
+: λe (~e λx *)
|
|
}: switch tag_1 = tag_1 {
|
|
0: (P QBool2.false)
|
|
+: ∀(e: Empty) *
|
|
}: *
|
|
}: switch tag = tag {
|
|
0: (P QBool2.true)
|
|
+: switch tag_1 = tag-1 {
|
|
0: (P QBool2.false)
|
|
+: ∀(e: Empty) *
|
|
}: *
|
|
}: *
|
|
)
|