Skip to content

Express and enforce well-formedness of (mutual) ADTs #345

@joscoh

Description

@joscoh

Mutual blocks of ADTs have a variety of checks (e.g. strict positivity, uniformity, non-emptiness, non-nesting, topological ordering of type references) that are checked in TypeFactory.addMutualBlock. We should define a predicate MutualBlockWF (either as part of TypeFactory or externally) and show that the typechecker enforces this predicate. This predicate is currently an implicit precondition to some functions (e.g. genBlockFactory) but should be made explicit.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions