entity_type


INSTANCE entity_type#1;
	name = "defined_type";
	is_abstract = false;
	subtype_of = {entity_type#2};
	explicit_attributes = {explicit_attribute#3};
END_INSTANCE;

INSTANCE entity_type#2;
	name = "named_type";
	is_abstract = true;
	supertype_of = oneof_expression#1;
	subtype_of = {entity_type#3};
	explicit_attributes = {explicit_attribute#1, explicit_attribute#2};
END_INSTANCE;

INSTANCE entity_type#3;
	name = "frame";
	is_abstract = true;
	explicit_attributes = {};
END_INSTANCE;

INSTANCE entity_type#4;
	name = "entity_type";
	is_abstract = false;
	subtype_of = {entity_type#2};
	explicit_attributes = {explicit_attribute#4, explicit_attribute#5, explicit_attribute#6, explicit_attribute#7, explicit_attribute#8, explicit_attribute#9, explicit_attribute#10, explicit_attribute#11};
END_INSTANCE;

INSTANCE entity_type#5;
	name = "explicit_attribute";
	is_abstract = false;
	subtype_of = {entity_type#6};
	explicit_attributes = {explicit_attribute#15};
	inverse_attributes = {inverse_attribute#1};
END_INSTANCE;

INSTANCE entity_type#6;
	name = "attribute";
	is_abstract = true;
	supertype_of = oneof_expression#2;
	subtype_of = {entity_type#7};
	explicit_attributes = {explicit_attribute#12, explicit_attribute#13, explicit_attribute#14};
END_INSTANCE;

INSTANCE entity_type#7;
	name = "expression";
	is_abstract = true;
	supertype_of = oneof_expression#3;
	subtype_of = {entity_type#3};
	explicit_attributes = {};
END_INSTANCE;

INSTANCE entity_type#8;
	name = "inverse_attribute";
	is_abstract = false;
	subtype_of = {entity_type#6};
	explicit_attributes = {explicit_attribute#16};
	inverse_attributes = {inverse_attribute#2};
END_INSTANCE;

INSTANCE entity_type#9;
	name = "derived_attribute";
	is_abstract = false;
	subtype_of = {entity_type#6};
	explicit_attributes = {explicit_attribute#17};
	inverse_attributes = {inverse_attribute#3};
END_INSTANCE;

INSTANCE entity_type#10;
	name = "domain_rule";
	is_abstract = false;
	subtype_of = {entity_type#11};
	explicit_attributes = {explicit_attribute#19};
	inverse_attributes = {inverse_attribute#4};
END_INSTANCE;

INSTANCE entity_type#11;
	name = "local_rule";
	is_abstract = true;
	supertype_of = oneof_expression#4;
	subtype_of = {entity_type#3};
	explicit_attributes = {explicit_attribute#18};
END_INSTANCE;

INSTANCE entity_type#12;
	name = "unique_rule";
	is_abstract = false;
	subtype_of = {entity_type#11};
	explicit_attributes = {explicit_attribute#20};
	inverse_attributes = {inverse_attribute#5};
END_INSTANCE;

INSTANCE entity_type#13;
	name = "literal_expression";
	is_abstract = false;
	subtype_of = {entity_type#7};
	explicit_attributes = {explicit_attribute#21};
END_INSTANCE;

INSTANCE entity_type#14;
	name = "built_in_constant";
	is_abstract = false;
	subtype_of = {entity_type#7};
	explicit_attributes = {explicit_attribute#22};
END_INSTANCE;

INSTANCE entity_type#15;
	name = "unary_operation";
	is_abstract = false;
	subtype_of = {entity_type#7};
	explicit_attributes = {explicit_attribute#23, explicit_attribute#24};
END_INSTANCE;

INSTANCE entity_type#16;
	name = "binary_operation";
	is_abstract = false;
	subtype_of = {entity_type#7};
	explicit_attributes = {explicit_attribute#25, explicit_attribute#26, explicit_attribute#27};
END_INSTANCE;

INSTANCE entity_type#17;
	name = "query_expression";
	is_abstract = false;
	subtype_of = {entity_type#7};
	explicit_attributes = {explicit_attribute#28, explicit_attribute#29, explicit_attribute#30};
END_INSTANCE;

INSTANCE entity_type#18;
	name = "built_in_function_call";
	is_abstract = false;
	subtype_of = {entity_type#19};
	explicit_attributes = {explicit_attribute#32};
END_INSTANCE;

INSTANCE entity_type#19;
	name = "function_call";
	is_abstract = true;
	supertype_of = oneof_expression#5;
	subtype_of = {entity_type#7};
	explicit_attributes = {explicit_attribute#31};
END_INSTANCE;

INSTANCE entity_type#20;
	name = "user_function_call";
	is_abstract = false;
	subtype_of = {entity_type#19};
	explicit_attributes = {explicit_attribute#33};
END_INSTANCE;

INSTANCE entity_type#21;
	name = "qualifier";
	is_abstract = false;
	subtype_of = {entity_type#7};
	explicit_attributes = {explicit_attribute#34, explicit_attribute#35, explicit_attribute#36, explicit_attribute#37};
END_INSTANCE;

INSTANCE entity_type#22;
	name = "aggregate_initialiser";
	is_abstract = false;
	subtype_of = {entity_type#7};
	explicit_attributes = {explicit_attribute#38};
END_INSTANCE;

INSTANCE entity_type#23;
	name = "aggregate_initialiser_element";
	is_abstract = false;
	explicit_attributes = {explicit_attribute#39, explicit_attribute#40};
	inverse_attributes = {inverse_attribute#6};
END_INSTANCE;

INSTANCE entity_type#24;
	name = "aggregation_type";
	is_abstract = false;
	subtype_of = {entity_type#3};
	explicit_attributes = {explicit_attribute#41, explicit_attribute#42, explicit_attribute#43, explicit_attribute#44, explicit_attribute#45, explicit_attribute#46};
END_INSTANCE;

INSTANCE entity_type#25;
	name = "oneof_expression";
	is_abstract = false;
	explicit_attributes = {explicit_attribute#47};
END_INSTANCE;

INSTANCE entity_type#26;
	name = "and_expression";
	is_abstract = false;
	explicit_attributes = {explicit_attribute#48, explicit_attribute#49};
END_INSTANCE;

INSTANCE entity_type#27;
	name = "andor_expression";
	is_abstract = false;
	explicit_attributes = {explicit_attribute#50, explicit_attribute#51};
END_INSTANCE;

INSTANCE entity_type#28;
	name = "adder";
	is_abstract = false;
	subtype_of = {entity_type#29};
	explicit_attributes = {explicit_attribute#54, explicit_attribute#55};
END_INSTANCE;

INSTANCE entity_type#29;
	name = "higher_level_constraint";
	is_abstract = true;
	subtype_of = {entity_type#3};
	explicit_attributes = {explicit_attribute#52, explicit_attribute#53};
END_INSTANCE;

INSTANCE entity_type#30;
	name = "multiplier";
	is_abstract = false;
	subtype_of = {entity_type#29};
	explicit_attributes = {explicit_attribute#56, explicit_attribute#57};
END_INSTANCE;

INSTANCE entity_type#31;
	name = "equation";
	is_abstract = false;
	subtype_of = {entity_type#29};
	explicit_attributes = {explicit_attribute#58};
END_INSTANCE;

INSTANCE entity_type#32;
	name = "conjunction";
	is_abstract = false;
	subtype_of = {entity_type#29};
	explicit_attributes = {};
	inverse_attributes = {inverse_attribute#7};
END_INSTANCE;

INSTANCE entity_type#33;
	name = "bound";
	is_abstract = false;
	subtype_of = {entity_type#29};
	explicit_attributes = {explicit_attribute#59, explicit_attribute#60, explicit_attribute#61, explicit_attribute#62, explicit_attribute#63};
END_INSTANCE;

INSTANCE entity_type#34;
	name = "exactly_one";
	is_abstract = false;
	subtype_of = {entity_type#29};
	explicit_attributes = {explicit_attribute#64, explicit_attribute#65};
END_INSTANCE;

INSTANCE entity_type#35;
	name = "at_most_one";
	is_abstract = false;
	subtype_of = {entity_type#29};
	explicit_attributes = {explicit_attribute#66, explicit_attribute#67};
END_INSTANCE;

INSTANCE entity_type#36;
	name = "non_null";
	is_abstract = false;
	subtype_of = {entity_type#29};
	explicit_attributes = {explicit_attribute#68};
END_INSTANCE;

INSTANCE entity_type#37;
	name = "range";
	is_abstract = false;
	subtype_of = {entity_type#29};
	explicit_attributes = {explicit_attribute#69, explicit_attribute#70, explicit_attribute#71};
END_INSTANCE;

INSTANCE entity_type#38;
	name = "zero_or_more";
	is_abstract = false;
	subtype_of = {entity_type#29};
	explicit_attributes = {explicit_attribute#72};
END_INSTANCE;

INSTANCE entity_type#39;
	name = "unresolved_reference";
	is_abstract = false;
	subtype_of = {entity_type#7};
	explicit_attributes = {explicit_attribute#73};
END_INSTANCE;

INSTANCE entity_type#40;
	name = "query_variable";
	is_abstract = false;
	subtype_of = {entity_type#7};
	explicit_attributes = {explicit_attribute#74};
	inverse_attributes = {inverse_attribute#8};
END_INSTANCE;

INSTANCE entity_type#41;
	name = "case_frame";
	is_abstract = false;
	subtype_of = {entity_type#3};
	explicit_attributes = {explicit_attribute#75, explicit_attribute#76};
END_INSTANCE;


INSTANCE entity_type#42;
	is_abstract = true;
	supertype_of = oneof_expression#6;
END_INSTANCE;



INSTANCE entity_type#43;
	is_abstract = false;
	supertype_of = oneof_expression#7;
END_INSTANCE;


INSTANCE entity_type#44;
	name = "man";
	is_abstract = false;
	subtype_of = {entity_type#47};
	explicit_attributes = {};
	higher_level_constraints = conjunction#8;
END_INSTANCE;

INSTANCE entity_type#45;
	name = "woman";
	is_abstract = false;
	subtype_of = {entity_type#47};
	explicit_attributes = {};
	higher_level_constraints = conjunction#7;
END_INSTANCE;

INSTANCE entity_type#46;
	name = "student";
	is_abstract = false;
	explicit_attributes = {explicit_attribute#120};
	derived_attributes = {derived_attribute#2};
	inverse_attributes = {inverse_attribute#9};
	higher_level_constraints = conjunction#9;
END_INSTANCE;

INSTANCE entity_type#47;
	name = "person";
	domain_rules = {domain_rule#1};
	is_abstract = true;
	supertype_of = oneof_expression#8;
	explicit_attributes = {explicit_attribute#116, explicit_attribute#117, explicit_attribute#118, explicit_attribute#119, explicit_attribute#122};
	higher_level_constraints = conjunction#4;
END_INSTANCE;

INSTANCE entity_type#48;
	name = "staff";
	is_abstract = false;
	explicit_attributes = {explicit_attribute#115};
	inverse_attributes = {inverse_attribute#10};
	higher_level_constraints = conjunction#10;
END_INSTANCE;

INSTANCE entity_type#49;
	name = "course";
	is_abstract = false;
	explicit_attributes = {explicit_attribute#109, explicit_attribute#110, explicit_attribute#111, explicit_attribute#112, explicit_attribute#113, explicit_attribute#114};
	inverse_attributes = {inverse_attribute#11, inverse_attribute#12};
	unique_rules = {unique_rule#1};
	higher_level_constraints = conjunction#6;
END_INSTANCE;

INSTANCE entity_type#50;
	name = "student_course_record";
	is_abstract = false;
	explicit_attributes = {explicit_attribute#130, explicit_attribute#131, explicit_attribute#132};
	derived_attributes = {derived_attribute#3};
	inverse_attributes = {inverse_attribute#13};
	higher_level_constraints = conjunction#3;
END_INSTANCE;