 			return ifIf(a, b, c)
 		case let .Annotation(term, type):
 			return ifAnnotation(term, type)
+		case let .Axiom(v, type):
+			return ifAxiom(v, type)
 		}
 	}
 

				ifProduct: max,
				ifIf: { max($0, $1, $2) },
				ifAnnotation: max,
				otherwise: const(-1))
		} (Recur(self))
	}

		ifBoolean: (Bool -> T)? = nil,
		ifIf: ((Recur, Recur, Recur) -> T)? = nil,
		ifAnnotation: ((Recur, Recur) -> T)? = nil,
		ifAxiom: ((Any, Recur) -> T)? = nil,
		@noescape otherwise: () -> T) -> T {
		return analysis(
			ifUnit: { ifUnit?() ?? otherwise() },
