 extension Expression where Recur: FixpointType {
 	public static var description: Module<Recur> {
 		let Tag = Recur("Tag")
-		let enumeration = Recur("Enumeration")
-		let label = Recur("Label")
+		let Enumeration = Recur("Enumeration")
+		let Label = Recur("Label")
 		let cons = Recur("::")
 		let Branches = Recur("Branches")
 
 		// Tag : λ _ : Enumeration . Type
 		// Tag = λ E : Enumeration . λ _ : Boolean . Tag E
 		let tag = Binding("Tag",
-			lambda(enumeration, .BooleanType) { E, _ in Tag[E] },
-			lambda(enumeration, const(.Type(0))))
+			lambda(Enumeration, .BooleanType) { E, _ in Tag[E] },
+			lambda(Enumeration, const(.Type(0))))
 
 		// here : λ first : Label . λ rest : Enumeration . Tag (first :: rest)
 		// here = λ first : Label . (true, first) : Tag (first :: rest)
 		let here = Binding("here",
-			lambda(label, enumeration) { first, rest in .Annotation(.Product(.Boolean(false), .Unit), Tag[cons[first, rest]]) },
-			lambda(label, enumeration) { first, rest in Tag[cons[first, rest]] })
+			lambda(Label, Enumeration) { first, rest in .Annotation(.Product(.Boolean(false), .Unit), Tag[cons[first, rest]]) },
+			lambda(Label, Enumeration) { first, rest in Tag[cons[first, rest]] })
 
 		// there : λ first : Label . λ rest : Enumeration . Tag (first :: rest)
 		// there = λ first : Label . (false, rest) : Tag (first :: rest)
 		let there = Binding("there",
-			lambda(label, enumeration) { first, rest in Recur.lambda(Tag[rest]) { next in .Annotation(.Product(.Boolean(true), next), Tag[cons[first, rest]]) } },
-			lambda(label, enumeration) { first, rest in Tag[cons[first, rest]] })
+			lambda(Label, Enumeration) { first, rest in Recur.lambda(Tag[rest]) { next in .Annotation(.Product(.Boolean(true), next), Tag[cons[first, rest]]) } },
+			lambda(Label, Enumeration) { first, rest in Tag[cons[first, rest]] })
 
 
 		// Branches : λ E : Enumeration . λ _ : (λ _ : Tag E . Type) . Type

						.Unit)
				}
			},
			lambda(enumeration) { E in
				.lambda(.lambda(Tag[E], const(.Type)), const(.Type))
			})


					} }
				}
			},
			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), .Type(0)),
			Binding("Label", "String", .Type(0)),
			Binding("Enumeration", Recur("List")[Label].out, .Type(0)),

			tag,
			here,
