We've inherited almost half a million type theories, controlled by something like 30 different command-line flags, along with almost 20 years of miscellaneous accumulated cruft. I don't think this is maintainable. I think the following features should be removed:
- Every language mode except for full cubical (so:
--with-K,--without-K,--cubical-compatible,--cubical=erased, and--cubical=no-glue). This includes some features that do not make sense for full cubical mode:--injective-type-constructors--large-indices- compilation (in general).
- Sized types, which are known to be inconsistent, hence also:
src/size-solver--no-guardedness
- Musical coinduction
- Every modal system:
--erasure,--erased-matches--experimental-irrelevance,--irrelevant-projections--cohesion,--flat-split--polarity--guarded
- Variants on the sort system:
--level-universe--no-two-level--no-prop--cumulativity--no-universe-polymorphism--type-in-type,--omega-in-omega
- Rewrite rules
- The unused
MEASUREpragma, which was kept for backwards compatibility - The
STATICpragma, used for compilation
The result should be an implementation of a two-level type theory whose fibrant fragment is De Morgan cubical type theory with a universe of strict propositions. The two "teaching" options --no-pattern-matching and --no-copatterns seem like they affect the type theory, but they only do so locally to a module, and their implementation is very contained (unlike e.g. --no-universe-polymorphism), so they can be kept without great burden.
Note: a previous version of the proposed downsizing recovered limited definitional proof-irrelevance by keeping the irrelevance modality, but, given that irrelevant record fields are a very dodgy feature, I think it makes more sense to keep Prop, which is better understood.