Next: Relative, Previous: PartialAgreement, Up: Principles list
principle.projectivity
D
Projectivity (priority 130)
This principle assumes that the Graph principle (Graph) is used
on dimension D.
The operation of this principle depends on whether on D, a
principle is used that introduces the yield feature, i.e.,
typically an order principle. If the yield feature is present,
then the principle states that for each node on D, its
yield set must be convex (i.e. without holes), otherwise, the
eqdown set must be convex.
Here is the definition of the Projectivity constraint functor:
%% Copyright 2001-2008
%% by Ralph Debusmann <rade@ps.uni-sb.de> (Saarland University) and
%% Denys Duchier <duchier@ps.uni-sb.de> (LIFO, Orleans) and
%% Jorge Marques Pelizzoni <jpeliz@icmc.usp.br> (ICMC, Sao Paulo) and
%% Jochen Setz <info@jochensetz.de> (Saarland University)
%%
functor
import
% System(show)
Helpers(checkModel) at 'Helpers.ozf'
export
Constraint
define
proc {Constraint Nodes G Principle FD FS Select}
DVA2DIDA = Principle.dVA2DIDA
%%
DIDA = {DVA2DIDA 'D'}
in
%% check features
if {Helpers.checkModel 'Projectivity.oz' Nodes
[DIDA#eqdown]} then
for Node in Nodes do
if {HasFeature Node.DIDA.model yield} then
{FS.int.convex Node.DIDA.model.yield}
else
{FS.int.convex Node.DIDA.model.eqdown}
end
end
end
end
end