let maybe: Type -> Type = \lambda t. Sum { Just t | Nothing };
let the: \Pi t: Type. (t -> t) = \lambda _. \lambda a. a;
let unwrap_type (t : Type): (maybe t) -> Type = split
{ Just _ => t
| Nothing => 1
};
let unwrap_bad: \Pi t: Type. \Pi mt: maybe t. (unwrap_type t) mt = \lambda t.
(the (\Pi mt: maybe t. ((unwrap_type t) mt))) split
{ Just a => a
| Nothing => 0
};
-- A cubicaltt-like replacement:
let unwrap (t : Type): \Pi mt: maybe t. (unwrap_type t) mt = split
-- I'm so sorry for the dumb parser, function application is accidentally
-- right-associative.
{ Just a => a
| Nothing => 0
};