 		//     then case E (λ t : Tag E . P (there t)) cs.1 t
 		//     else cs.0
 		let `case` = Binding("case",
-			lambda(enumeration) { E in
+			lambda(Enumeration) { E in
 				Recur.lambda(Recur.lambda(Tag[E], const(.Type))) { P in
 					Recur.lambda(Branches[E, P]) { cs in Recur.lambda(Tag[E]) { t in
 						.If(t.first,

					} }
				}
			},
			lambda(enumeration) { E in
				Recur.lambda(.lambda(Tag[E], const(.Type))) { P in
					.lambda(Branches[E, P], const(Recur.lambda(Tag[E]) { t in P[t] }))
				}
			})

		return Module([ list ], [
			Binding("String", .Axiom(String.self, .Type(0)), .Type(0)),
			Binding("Label", "String", .Type(0)),
			Binding("Enumeration", Recur("List")[label].out, .Type(0)),

			tag,
			here,

		//     then (P here, Branches E (λ t : Tag E . P (there t)))
		//     else Unit
		let branches = Binding("Branches",
			lambda(Enumeration) { E in
				Recur.lambda(.lambda(Tag[E], const(.Type))) { P in
					.If(E.first,
						.Product(
