An infeasible rule set cannot be satisfied by any data because of internal contradictions: the combination of the rules make it inconsistent. This function checks whether the record-wise linear, categorical and conditional rules in a rule set are consistent. Note that is it wise to also check detect_contradicting_if_rules(): conditional If-rules may not be strictly inconsistent, but can be semantically inconsistent.

is_infeasible(x, ..., verbose = interactive())

Arguments

x

validator object with validation rules.

...

not used

verbose

if TRUE print information to the console

Value

TRUE or FALSE

Examples

rules <- validator( x > 0)

is_infeasible(rules)
#> [1] FALSE

# infeasible system!
rules <- validator( rule1 = x > 0
                  , rule2 = x < 0
                  )

is_infeasible(rules)
#> [1] TRUE

detect_infeasible_rules(rules, verbose=TRUE)
#> Found: 
#>   rule1: x > 0
#> [1] "rule1"

# but we want to keep rule1, so specify that it has an Inf weight
detect_infeasible_rules(rules, weight=c(rule1=Inf), verbose=TRUE)
#> Found: 
#>   rule2: x < 0
#> [1] "rule2"

# detect and remove
make_feasible(rules, weight=c(rule1=Inf), verbose = TRUE)
#> Found: 
#>   rule2: x < 0
#> Dropping rule(s): "rule2"
#> Object of class 'validator' with 1 elements:
#>  rule1: x > 0
#> Rules are evaluated using locally defined options

# find out the conflict with rule2
is_contradicted_by(rules, "rule2", verbose = TRUE)
#> Rule(s): 
#>  rule2: x < 0
#> contradicted by:
#>  rule1: x > 0
#> [1] "rule1"