DatamodelΒΆ

Datamodel for type checking:

erDiagram Declaration |o--o{ SetName : domains Declaration |o--|| SetName: codomain Declaration |o--o{ Expression: decl VarDeclaration |o--|| SetName: subtype SetName }o--|| Declaration: decl SetName |o--o{ SetName: concept_domains SetName |o--o| SetName: codomain SetName ||--o{ Expression: type SetName ||--o| SetName: root_set Constructor }o--o{ SetName : domains Constructor }o--|| SetName : codomain Constructor |o--o| Declaration: concept_decl Constructor |o--o{ Expression: decl Declaration ||--o{ Constructor: constructors Declaration { List[SetName] domains "Sets defining the domain of the symbol" SetName codomain "Set defining the codomain of the symbol" List[Constructor] constructors "only for `constructured from` enumerations" } VarDeclaration { SetName subtype } SetName { Declaration decl "Declaration of the set name" SetName root_set "root of the set in the type hierarchy" List[SetName] concept_domains "only for subset of Concept" SetName codomain "only for subset of Concept" } Expression { SetName type "type of the expression" Declaration-Constructor decl "only for (un)applied symbol" } Constructor { List[SetName] domains "empty for identifiers" SetName codomain "type of the constructor" Constructor concept_decl "only for Concept identifiers" }