 		@noescape otherwise: () -> T) -> T {
 		return analysis(
 			ifUnitTerm: { ifUnitTerm?() ?? otherwise() },
+			ifUnitType: { ifUnitType?() ?? otherwise() },
 			ifType: { ifType?($0) ?? otherwise() },
 			ifPi: { ifPi?($0) ?? otherwise() },
 			ifSigma: { ifSigma?($0) ?? otherwise() },


	// MARK: Cases

	case UnitTerm
	case Type(Int)
	case Pi(Box<Value>, Value -> Value)

	func quote(n: Int) -> Term {
		return analysis(
			ifUnitTerm: const(.unitTerm),
			ifUnitType: const(.unitTerm),
			ifType: const(.type),
			ifPi: { type, f in
				Term(Checkable.Pi(Box(type.quote(n)), Box(f(.free(.Quote(n))).quote(n + 1))))
