Fixpoint app (a b: L) {struct a}: L :=
    match a with
    | one x => cons x b
    | cons x y => cons x (app y b)
    end.Definition head := match l with one x => x | cons x _ => x end.Definition tail := match l with one _ => List.nil | cons _ x => to_plain x end.

Lemma coerced_cons_eq (h: T): List.cons h l = cons h l.