feat(library/scope): add support for inductive datatypes in sections

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
fix(library/scope): bug in end_scope procedure

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
fix(library/scope): bug in add_definition

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
fix(library/private): bug when preserving private names at end_section

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
test(lua): add section+inductive_family test

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
fix(library/scope): bug when abstracting inductive declaration in the end of a section

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
fix(kernel/type_checker): check if the declaration contains duplicate universe level parameters

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
fix(library/scope): make sure local levels are added in the beginning of the universe parameter list

The idea is to make sure it is consistent with the behavior used for regular local parameters.

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
refactor(util): rename name_map to name_hash_map

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
feat(util): add (functional) name_map

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
feat(library): add helper functions for 'updating' declarations

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
fix(library/scope): make sure the local universe names do not conflict with universe parameter names when close a section, add declaration parameter name sanitizers

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
fix(library/scope): make sure the local universe names do not conflict with universe parameter names when close a section, add declaration parameter name sanitizers