Parser should check that:
- types of bindings match types of binding functions
- fsets are not bound in lst bindings
- bound arguments are not datatypes
- binder is referred to by name and not by type
Smaller things:
- maybe <type>_perm whould be called permute_<type>.simps;
that would conform with the terminology in Nominal2
Other:
- nested recursion, like types "trm list" in a constructor
- define permute_bn automatically and prove properties of it
- prove renaming-of-binders lemmas
- strong induction rules
- store information about defined nominal datatypes, so that
it can be used to define new types that depend on these