|  | Some definitions of interest. | 
|  | 
| swap | Def swap(L;i;j) == (L o (i, j)) | 
 | |  | Thm*  T:Type, L:T List, i,j:  ||L||. swap(L;i;j)  T List | 
|  | 
| flip | Def (i, j)(x) == if x=  i  j ; x=  j  i else x fi | 
 | |  | Thm*  k:  , i,j:  k. (i, j)    k    k | 
|  | 
| int_seg | Def {i..j  } == {k:  | i  k < j } | 
 | |  | Thm*  m,n:  . {m..n  }  Type | 
|  | 
| length | Def ||as|| == Case of as; nil  0 ; a.as'  ||as'||+1  (recursive) | 
 | |  | Thm*  A:Type, l:A List. ||l||    | 
 | |  | Thm* ||nil||    | 
|  | 
| nat | Def  == {i:  | 0  i } | 
 | |  | Thm*    Type | 
|  | 
| not | Def  A == A   False | 
 | |  | Thm*  A:Prop. (  A)  Prop | 
|  | 
| select | Def l[i] == hd(nth_tl(i;l)) | 
 | |  | Thm*  A:Type, l:A List, n:  . 0  n   n<||l||   l[n]  A |