DependsOn(Set) |
Adds a dependent set to the set definition.
Consider the following example.
int numNodes = 4;
List<(int, int)> edges = new()
{
(0, 1),
(0, 2),
(1, 2),
(1, 3),
(2, 3),
};
IEnumerable<int> getHeads(int i)
=> edges.Where(e => e.Item1 == i).Select(x => x.Item2);
Set i = Set("i").Represents("nodes").HasElementsUntil(numNodes);
Set j = Set("j").Represents("nodes having an arc from node i").DependsOn(i).HasElements(getHeads);
Here, set i has indices { 0, 1, 2, 3 }.
Set j, on the other hand, depends on set i.
In other words, it will generate different elements for different values of i:
- when i takes value 0; j has elements { 1, 2 },
- when i takes value 1; j has elements { 2, 3 },
- when i takes value 2; j has elements { 3 }, and
- when i takes value 3; j is empty set.
|
DependsOn(Set, Set) |
Adds dependent sets to the set definition.
Consider the following example.
int numNodes = 4;
List<(int, int)> edges = new()
{
(0, 1),
(0, 2),
(1, 2),
(1, 3),
(2, 3),
};
IEnumerable<int> getHeads(int i)
=> edges.Where(e => e.Item1 == i).Select(x => x.Item2);
Set i = Set("i").Represents("nodes").HasElementsUntil(numNodes);
Set j = Set("j").Represents("nodes having an arc from node i").DependsOn(i).HasElements(getHeads);
Here, set i has indices { 0, 1, 2, 3 }.
Set j, on the other hand, depends on set i.
In other words, it will generate different elements for different values of i:
- when i takes value 0; j has elements { 1, 2 },
- when i takes value 1; j has elements { 2, 3 },
- when i takes value 2; j has elements { 3 }, and
- when i takes value 3; j is empty set.
|
DependsOn(Set, Set, Set) |
Adds dependent sets to the set definition.
Consider the following example for two dependent set example.
int numNodes = 4;
List<(int, int)> edges = new()
{
(0, 1),
(0, 2),
(1, 2),
(1, 3),
(2, 3),
};
IEnumerable<int> getHeads(int i)
=> edges.Where(e => e.Item1 == i).Select(x => x.Item2);
Set i = Set("i").Represents("nodes").HasElementsUntil(numNodes);
Set j = Set("j").Represents("nodes having an arc from node i").DependsOn(i).HasElements(getHeads);
Here, set i has indices { 0, 1, 2, 3 }.
Set j, on the other hand, depends on set i.
In other words, it will generate different elements for different values of i:
- when i takes value 0; j has elements { 1, 2 },
- when i takes value 1; j has elements { 2, 3 },
- when i takes value 2; j has elements { 3 }, and
- when i takes value 3; j is empty set.
|
DependsOn(Set, Set, Set, Set) |
Adds dependent sets to the set definition.
Consider the following example for two dependent set example.
int numNodes = 4;
List<(int, int)> edges = new()
{
(0, 1),
(0, 2),
(1, 2),
(1, 3),
(2, 3),
};
IEnumerable<int> getHeads(int i)
=> edges.Where(e => e.Item1 == i).Select(x => x.Item2);
Set i = Set("i").Represents("nodes").HasElementsUntil(numNodes);
Set j = Set("j").Represents("nodes having an arc from node i").DependsOn(i).HasElements(getHeads);
Here, set i has indices { 0, 1, 2, 3 }.
Set j, on the other hand, depends on set i.
In other words, it will generate different elements for different values of i:
- when i takes value 0; j has elements { 1, 2 },
- when i takes value 1; j has elements { 2, 3 },
- when i takes value 2; j has elements { 3 }, and
- when i takes value 3; j is empty set.
|