Spectral/lessons.md
2017-04-10 20:35:05 -04:00

732 B

Things I would do differently with hindsight:

  • Make pointed dependent maps primitive:
structure ppi (A : Type*) (P : A → Type) (p : P pt) :=
  (to_fun : Π a : A, P a)
  (resp_pt : to_fun (Point A) = p)

(maybe the last argument should be [p : pointed (P pt)]). Define pointed (non-dependent) maps as a special case. Note: assuming P : A → Type* is not general enough.

  • Use squares, also for maps, pointed maps, ... heavily

  • Type classes for equivalences don't really work

  • Coercions should all be defined immediately after defining a structure, before declaring any instances. This is because the coercion graph is updated after each declared coercion.

  • [maybe] make bundled structures primitive