# is.specific: Determine whether the first set 'x' of predicates is more... In lfl: Linguistic Fuzzy Logic

 is.specific R Documentation

## Determine whether the first set `x` of predicates is more specific (or equal) than `y` with respect to `vars` and `specs`.

### Description

The function takes two character vectors of predicates and determines whether `x` is more specific (or equal w.r.t. the specificity) than `y`. The specificity relation is fully determined with the values of the `vars()` vector and the `specs()` incidence matrix that is encapsulated in the given `fsets` object.

### Usage

```is.specific(x, y, fsets, vars = NULL, specs = NULL)
```

### Arguments

 `x` The first character vector of predicates. `y` The second character vector of predicates. `fsets` A valid instance of the `fsets()` class such that all values in `x` and `y` can be found in `colnames(fsets)` `vars` Deprecated parameter must be `NULL`. `specs` Deprecated parameter must be `NULL`.

### Details

Let x_i and y_j represent some predicates of vectors `x` and `y`, respectively. Function assumes that each vector `x` and `y` does not contain two or more predicates with the same value of `vars()`.

This function returns TRUE iff all of the following conditions hold:

• for any y_j there exists x_i such that vars[y_j] = vars[x_i];

• for any x_i there either does not exist y_j such that vars[x_i] = vars[y_j], or x_i = y_j, or specs[x_i, y_j] = 1.

### Value

TRUE or FALSE (see description).

### Author(s)

Michal Burda

`perceive()`, `pbld()`, `fsets()`, `vars()`, `specs()`

### Examples

```    # prepare fsets object
v <- c(rep('a', 3), rep('b', 3), rep('c', 3), rep('d', 3))
s <- matrix(c(0,1,0, 0,0,0, 0,0,0, 0,0,0,
0,0,0, 0,0,0, 0,0,0, 0,0,0,
0,0,0, 0,0,0, 0,0,0, 0,0,0,

0,0,0, 0,1,0, 0,0,0, 0,0,0,
0,0,0, 0,0,0, 0,0,0, 0,0,0,
0,0,0, 0,0,0, 0,0,0, 0,0,0,

0,0,0, 0,0,0, 0,1,0, 0,0,0,
0,0,0, 0,0,0, 0,0,0, 0,0,0,
0,0,0, 0,0,0, 0,0,0, 0,0,0,

0,0,0, 0,0,0, 0,0,0, 0,1,0,
0,0,0, 0,0,0, 0,0,0, 0,0,0,
0,0,0, 0,0,0, 0,0,0, 0,0,0),
byrow=TRUE,
ncol=12)
m <- matrix(0, nrow=1, ncol=12)
colnames(m) <- paste(rep(c('VeSm', 'Sm', 'Bi'), times=4),
rep(c('a', 'b', 'c', 'd'), each=3),
sep='.')
f <- fsets(m, v, s)

# returns TRUE
is.specific(c('VeSm.a', 'Bi.c'),
c('VeSm.a', 'Bi.c'),
f)

# returns TRUE (x and y swapped return FALSE)
is.specific(c('VeSm.a', 'Bi.c', 'Sm.d'),
c('Sm.a', 'Bi.c', 'Sm.d'),
f)

# returns TRUE (x and y swapped return FALSE)
is.specific(c('VeSm.a', 'Bi.c', 'Sm.d'),
c('VeSm.a', 'Bi.c'),
f)

# returns TRUE (x and y swapped return FALSE)
is.specific(c('VeSm.a', 'Bi.c', 'Sm.d'),
character(),
f)

# returns FALSE
is.specific(c('Sm.a'), c('Bi.c'), f)

# returns FALSE
is.specific(c('VeSm.a', 'Sm.c'),
c('Sm.a', 'Bi.c'),
f)
```

lfl documentation built on Sept. 8, 2022, 5:08 p.m.