Creating types ex nihilo: define constants (csti : T), primitive functions (fi : T ... T),
freely apply primitive functions to constants and themselves
Inductive Types: all terms are exhausted by formal function composition trees (well-founded recursion conditions must be satisfied); e.g., 0 : , succ : .
Dependent types
Types are first class objects: type : Type, B-indexed families F : B Type are Dependent types
Sum type / dependent disj.union: T = b : B (F b) — like the total space of a fibration over B
Product type / dependent product: T = b : B (F b) — like the space of sections : B (b : B F b)
quantifiers: b : B, (P b) := b : B P b, b : B, (P b) := b : B P b
Universes
Russel'sGirard's paradox: Type : Type implies a contradiction
Solution: (Type ) : (Type ), index types by universe ; in Lean Prop : Type (‘-1’)