Simplify a rule set by removing redundant rules, i.e. rules that are implied by other rules.

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

Arguments

x

validate::validator() object with validation rules.

...

not used

verbose

if TRUE print the remove rules to the console.

Value

simplified validate::validator() object, in which redundant rules are removed.

Examples

rules <- validator( rule1 = x > 1
                  , rule2 = x > 2
                  )

# rule1 is superfluous
remove_redundancy(rules, verbose=TRUE)
#> Removed redundant rule(s):
#>   rule1: x > 1
#> Object of class 'validator' with 1 elements:
#>  rule2: x > 2

# rule 1 is implied by rule 2
is_implied_by(rules, "rule1", verbose=TRUE)
#> Rule(s)
#>   rule1: x > 1
#> implied by:
#>   rule2: x > 2
#> [1] "rule2"

rules <- validator( rule1 = x > 2
                  , rule2 = x > 2
)

# standout: rule1 and rule2, oldest rules wins
remove_redundancy(rules, verbose=TRUE)
#> Removed redundant rule(s):
#>   rule2: x > 2
#> Object of class 'validator' with 1 elements:
#>  rule1: x > 2

# Note that detection signifies both rules!
detect_redundancy(rules)
#> rule1 rule2 
#>  TRUE  TRUE