| predicates {relations} | R Documentation |
Relation Predicates
Description
Predicate functions for testing for binary relations and endorelations, and special kinds thereof.
Usage
relation_is(x, predicate, ...)
relation_is_Euclidean(x, na.rm = FALSE)
relation_is_Ferrers(x, na.rm = FALSE)
relation_is_acyclic(x)
relation_is_antisymmetric(x, na.rm = FALSE)
relation_is_asymmetric(x, na.rm = FALSE)
relation_is_bijective(x)
relation_is_binary(x)
relation_is_complete(x, na.rm = FALSE)
relation_is_coreflexive(x, na.rm = FALSE)
relation_is_crisp(x, na.rm = FALSE)
relation_is_cyclic(x)
relation_is_endorelation(x)
relation_is_equivalence(x, na.rm = FALSE)
relation_is_functional(x)
relation_is_homogeneous(x)
relation_is_injective(x)
relation_is_interval_order(x, na.rm = FALSE)
relation_is_irreflexive(x, na.rm = FALSE)
relation_is_left_total(x)
relation_is_linear_order(x, na.rm = FALSE)
relation_is_match(x, na.rm = FALSE)
relation_is_negatively_transitive(x, na.rm = FALSE)
relation_is_partial_order(x, na.rm = FALSE)
relation_is_preference(x, na.rm = FALSE)
relation_is_preorder(x, na.rm = FALSE)
relation_is_quasiorder(x, na.rm = FALSE)
relation_is_quasitransitive(x, na.rm = FALSE)
relation_is_quaternary(x)
relation_is_reflexive(x, na.rm = FALSE)
relation_is_right_total(x)
relation_is_semiorder(x, na.rm = FALSE)
relation_is_semitransitive(x, na.rm = FALSE)
relation_is_strict_linear_order(x, na.rm = FALSE)
relation_is_strict_partial_order(x, na.rm = FALSE)
relation_is_strongly_complete(x, na.rm = FALSE)
relation_is_surjective(x)
relation_is_symmetric(x, na.rm = FALSE)
relation_is_ternary(x)
relation_is_tournament(x, na.rm = FALSE)
relation_is_transitive(x, na.rm = FALSE)
relation_is_trichotomous(x, na.rm = FALSE)
relation_is_weak_order(x, na.rm = FALSE)
relation_has_missings(x)
Arguments
x |
an object inheriting from class |
na.rm |
a logical indicating whether tuples with missing memberships are excluded in the predicate computations. |
predicate |
character vector matching one of the following (see details):
|
... |
Additional arguments passed to the predicate functions
(currently, only |
Details
This help page documents the predicates currently available. Note that
the preferred way is to use the meta-predicate function
relation_is(x, "FOO") instead of the individual predicates
relation_is_FOO(x) since the latter will become deprecated in
future releases.
A binary relation is a relation with arity 2.
A relation R on a set X is called
homogeneous iff D(R) = (X, \dots, X).
An endorelation is a binary homogeneous relation.
For a crisp binary relation, let us write x R y iff (x, y)
is contained in R.
A crisp binary relation R is called
- left-total:
for all
xthere is at least oneysuch thatx R y.- right-total:
for all
ythere is at least onexsuch thatx R y.- functional:
for all
xthere is at most oneysuch thatx R y.- surjective:
the same as right-total.
- injective:
for all
ythere is at most onexsuch thatx R y.- bijective:
left-total, right-total, functional and injective.
A crisp endorelation R is called
- reflexive:
x R xfor allx.- irreflexive:
there is no
xsuch thatx R x.- coreflexive:
x R yimpliesx = y.- symmetric:
x R yimpliesy R x.- asymmetric:
x R yimplies that noty R x.- antisymmetric:
x R yandy R ximply thatx = y.- transitive:
x R yandy R zimply thatx R z.- complete:
for all distinct
xandy,x R yory R x.- strongly complete:
for all
xandy,x R yory R x(i.e., complete and reflexive).- negatively transitive:
not
x R yand noty R zimply that notx R z.- Ferrers:
x R yandz R wimplyx R wory R z.- semitransitive:
x R yandy R zimplyx R worw R z.- quasitransitive:
-
x R yand noty R xandy R zand notz R yimplyx R zand notz R x(i.e., the asymmetric part ofRis transitive). - trichotomous:
exactly one of
x R y,y R x, orx = yholds.- Euclidean:
x R yandx R zimplyy R z.- acyclic:
the transitive closure of R is antisymmetric.
- cyclic:
R is not acyclic.
Some combinations of these basic properties have special names because of their widespread use:
- preorder:
reflexive and transitive.
- quasiorder:
the same as preorder.
- equivalence:
a symmetric preorder (reflexive, symmetric, and transitive).
- weak order:
a complete preorder (complete, reflexive, and transitive).
- preference:
the same as weak order.
- partial order:
an antisymmetric preorder (reflexive, antisymmetric, and transitive).
- strict partial order:
irreflexive, antisymmetric, and transitive, or equivalently: asymmetric and transitive).
- linear order:
a complete partial order.
- strict linear order:
a complete strict partial order.
- match:
strongly complete.
- tournament:
complete and asymmetric.
- interval order:
complete and Ferrers.
- semiorder:
a semitransitive interval order.
If R is a weak order (“(weak) preference relation”),
I = I(R) defined by x I y iff x R y and y R x
is an equivalence, the indifference relation corresponding to
R.
There seem to be no commonly agreed definitions for order relations: e.g., Fishburn (1972) requires these to be irreflexive.
For a fuzzy binary relation R, let R(x, y) denote the
membership of (x, y) in the relation. Write T and S
for the fuzzy t-norm (intersection) and t-conorm (disjunction),
respectively (min and max for the “standard” Zadeh family).
Then generalizations of the above basic endorelation predicates are as
follows.
- reflexive:
R(x, x) = 1for allx.- irreflexive:
R(x, x) = 0for allx.- coreflexive:
R(x, y) > 0impliesx = y.- symmetric:
-
R(x, y) = R(y, x)for allx \ne y. - asymmetric:
-
T(R(x, y), R(y, x)) = 0for allx, y. - antisymmetric:
-
T(R(x, y), R(y, x)) = 0for allx \ne y. - transitive:
T(R(x, y), R(y, z)) \le R(x, z)for allx, y, z.- complete:
-
S(R(x, y), R(y, x)) = 1for allx \ne y. - strongly complete:
-
S(R(x, y), R(y, x)) = 1for allx, y. - negatively transitive:
-
R(x, z) \le S(R(x, y), R(y, z))for allx, y, z. - Ferrers:
-
T(R(x, y), R(z, w)) \le S(R(x, w), R(z, y))for allx, y, z, w. - semitransitive:
-
T(R(x, w), R(w, y)) \le S(R(x, z), R(z, y))for allx, y, z, w.
The combined predicates are obtained by combining the basic predicates as for crisp endorelations (see above).
A relation has missings iff at least one cell in the incidence matrix
is NA. In addition to relation_has_missings(), an
is.na method for relations is available, returning a matrix of
logicals corresponding to the incidences tested for missingness.
References
P. C. Fishburn (1972), Mathematics of decision theory. Methods and Models in the Social Sciences 3. Mouton: The Hague.
H. R. Varian (2002), Intermediate Microeconomics: A Modern Approach. 6th Edition. W. W. Norton & Company.
Examples
require("sets")
R <- relation(domain = c(1, 2, 3), graph = set(c(1, 2), c(2, 3)))
summary(R)
## Note the possible effects of NA-handling:
relation_incidence(R)
relation_is(R, "transitive") ## clearly FALSE
relation_incidence(R)[1, 2] <- NA
relation_incidence(R)
relation_is(R, "transitive") ## clearly NA
## The following gives TRUE, since NA gets replaced with 0:
relation_is(R, "transitive", na.rm = TRUE)