From 5a5331537c3fa89ac1a553e101997e945ce97bc0 Mon Sep 17 00:00:00 2001 From: Andrea Censi Date: Mon, 21 Feb 2022 12:22:37 +0100 Subject: skeletons --- src/act4e_solutions/relations.py | 61 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 src/act4e_solutions/relations.py (limited to 'src/act4e_solutions/relations.py') diff --git a/src/act4e_solutions/relations.py b/src/act4e_solutions/relations.py new file mode 100644 index 0000000..47a7c3e --- /dev/null +++ b/src/act4e_solutions/relations.py @@ -0,0 +1,61 @@ +from typing import Any, TypeVar + +import act4e_interfaces as I +from act4e_interfaces import FiniteRelation + +E1 = TypeVar("E1") +E2 = TypeVar("E2") +E3 = TypeVar("E3") +E = TypeVar("E") + +A = TypeVar("A") +B = TypeVar("B") + + +class MyFiniteRelationProperties(I.FiniteRelationProperties): + def is_surjective(self, fr: I.FiniteRelation[Any, Any]) -> bool: + raise NotImplementedError() + + def is_defined_everywhere(self, fr: I.FiniteRelation[Any, Any]) -> bool: + raise NotImplementedError() + + def is_injective(self, fr: I.FiniteRelation[Any, Any]) -> bool: + raise NotImplementedError() + + def is_single_valued(self, fr: I.FiniteRelation[Any, Any]) -> bool: + raise NotImplementedError() + + +class MyFiniteRelationOperations(I.FiniteRelationOperations): + def transpose(self, fr: I.FiniteRelation[A, B]) -> I.FiniteRelation[B, A]: + raise NotImplementedError() + + +class MyFiniteEndorelationProperties(I.FiniteEndorelationProperties): + def is_reflexive(self, fr: I.FiniteRelation[Any, Any]) -> bool: + raise NotImplementedError() + + def is_irreflexive(self, fr: I.FiniteRelation[Any, Any]) -> bool: + raise NotImplementedError() + + def is_transitive(self, fr: I.FiniteRelation[Any, Any]) -> bool: + raise NotImplementedError() + + def is_symmetric(self, fr: I.FiniteRelation[Any, Any]) -> bool: + raise NotImplementedError() + + def is_antisymmetric(self, fr: I.FiniteRelation[Any, Any]) -> bool: + raise NotImplementedError() + + def is_asymmetric(self, fr: I.FiniteRelation[Any, Any]) -> bool: + raise NotImplementedError() + + +class MyFiniteEndorelationOperations(I.FiniteEndorelationOperations): + def transitive_closure(self, fr: I.FiniteRelation[E, E]) -> I.FiniteRelation[E, E]: + raise NotImplementedError() + + +class MyFiniteRelationCompose(I.FiniteRelationCompose): + def compose(self, fr1: FiniteRelation[E1, E2], fr2: FiniteRelation[E2, E3]) -> I.FiniteRelation[E1, E3]: + raise NotImplementedError() -- cgit v1.2.1 From cc712ed5fdf07e24af3ac0a133f483c506af55a9 Mon Sep 17 00:00:00 2001 From: Andrea Censi Date: Mon, 21 Feb 2022 12:24:14 +0100 Subject: skeletons --- src/act4e_solutions/relations.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/act4e_solutions/relations.py') diff --git a/src/act4e_solutions/relations.py b/src/act4e_solutions/relations.py index 47a7c3e..048b500 100644 --- a/src/act4e_solutions/relations.py +++ b/src/act4e_solutions/relations.py @@ -12,7 +12,7 @@ A = TypeVar("A") B = TypeVar("B") -class MyFiniteRelationProperties(I.FiniteRelationProperties): +class SolFiniteRelationProperties(I.FiniteRelationProperties): def is_surjective(self, fr: I.FiniteRelation[Any, Any]) -> bool: raise NotImplementedError() @@ -26,12 +26,12 @@ class MyFiniteRelationProperties(I.FiniteRelationProperties): raise NotImplementedError() -class MyFiniteRelationOperations(I.FiniteRelationOperations): +class SolFiniteRelationOperations(I.FiniteRelationOperations): def transpose(self, fr: I.FiniteRelation[A, B]) -> I.FiniteRelation[B, A]: raise NotImplementedError() -class MyFiniteEndorelationProperties(I.FiniteEndorelationProperties): +class SolFiniteEndorelationProperties(I.FiniteEndorelationProperties): def is_reflexive(self, fr: I.FiniteRelation[Any, Any]) -> bool: raise NotImplementedError() @@ -51,11 +51,11 @@ class MyFiniteEndorelationProperties(I.FiniteEndorelationProperties): raise NotImplementedError() -class MyFiniteEndorelationOperations(I.FiniteEndorelationOperations): +class SolFiniteEndorelationOperations(I.FiniteEndorelationOperations): def transitive_closure(self, fr: I.FiniteRelation[E, E]) -> I.FiniteRelation[E, E]: raise NotImplementedError() -class MyFiniteRelationCompose(I.FiniteRelationCompose): +class SolFiniteRelationCompose(I.FiniteRelationCompose): def compose(self, fr1: FiniteRelation[E1, E2], fr2: FiniteRelation[E2, E3]) -> I.FiniteRelation[E1, E3]: raise NotImplementedError() -- cgit v1.2.1