pub type AtomCtx = Term<IdentCtx, LitVal, Infallible>;
pub enum AtomCtx { Var(IdentCtx), Lit(LitVal), Cons(Infallible, Vec<Term<IdentCtx, LitVal, Infallible>>), }