predicates | R Documentation |
Predicate functions for testing for binary relations and endorelations, and special kinds thereof.
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)
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 |
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, …, 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
for all x there is at least one y such that x R y.
for all y there is at least one x such that x R y.
for all x there is at most one y such that x R y.
the same as right-total.
for all y there is at most one x such that x R y.
left-total, right-total, functional and injective.
A crisp endorelation R is called
x R x for all x.
there is no x such that x R x.
x R y implies x = y.
x R y implies y R x.
x R y implies that not y R x.
x R y and y R x imply that x = y.
x R y and y R z imply that x R z.
for all distinct x and y, x R y or y R x.
for all x and y, x R y or y R x (i.e., complete and reflexive).
not x R y and not y R z imply that not x R z.
x R y and z R w imply x R w or y R z.
x R y and y R z imply x R w or w R z.
x R y and not y R x and y R z and not z R y imply x R z and not z R x (i.e., the asymmetric part of R is transitive).
exactly one of x R y, y R x, or x = y holds.
x R y and x R z imply y R z.
the transitive closure of R is antisymmetric.
R is not acyclic.
Some combinations of these basic properties have special names because of their widespread use:
reflexive and transitive.
the same as preorder.
a symmetric preorder (reflexive, symmetric, and transitive).
a complete preorder (complete, reflexive, and transitive).
the same as weak order.
an antisymmetric preorder (reflexive, antisymmetric, and transitive).
irreflexive, antisymmetric, and transitive, or equivalently: asymmetric and transitive).
a complete partial order.
a complete strict partial order.
strongly complete.
complete and asymmetric.
complete and Ferrers.
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.
R(x, x) = 1 for all x.
R(x, x) = 0 for all x.
R(x, y) > 0 implies x = y.
R(x, y) = R(y, x) for all x != y.
T(R(x, y), R(y, x)) = 0 for all x, y.
T(R(x, y), R(y, x)) = 0 for all x != y.
T(R(x, y), R(y, z)) ≤ R(x, z) for all x, y, z.
S(R(x, y), R(y, x)) = 1 for all x != y.
S(R(x, y), R(y, x)) = 1 for all x, y.
R(x, z) ≤ S(R(x, y), R(y, z)) for all x, y, z.
T(R(x, y), R(z, w)) ≤ S(R(x, w), R(z, y)) for all x, y, z, w.
T(R(x, w), R(w, y)) ≤ S(R(x, z), R(z, y)) for all x, 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.
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.
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)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.