Building a finite type from scratch
An example: building an enumerated type, show that is
finite
Exhibit an injection into another finite type.
The lemma cp_can means that there is an injection from card_point into
a known finite type
A succession of helper theorem to add qualities
- equality is decidable eqType
- there is a canonical way to choose witnesses choiceType
- the elements can be enumerated countType
- the type card_point is finite.
Tools about finiteness
More classical logic
- Quantifications of decidable predicates become decidable.
- Need to use special notations
Proofs about quantified statements.
Finite functions
Function whose domain is a finite type
- A finite type when the type for values is finite
- A special notation for functions from ordinals
Set theory over finite types
- obviously finite sets over a finite type are finite
- obviously the type of these sets is finite
Finite types and big operators
- Big operators are the natural tool to compute repeatedly over
all elements of a finite type
- Elements are picked in the fixed order given by the enumeration.
Finite graphs
Finite graphs are build on a finite type of nodes
Three approaches
Use a function to list all targets of edges
The graph of a relation
The graph of a function
State and prove the following statements
- E union F = (E minus F) union (F minus E) union (E inter F)
Promised proof for lesser_twin_100