attempt to make inductive proofs reduce by making C into record.
adapted to stdlib List.NonEmpty