cdilp index(built-in)

ILASP CDILP module documentation.

The methods below rely on the concept of a "coverage formula". The goal of the
CDILP procedure is to build up coverage formulas which need to hold for
examples to be covered. A pair <F, e>, where F is a coverage formula that needs
to hold for e to be covered. A coverage formula takes one of the following forms:

- {'rule_in_hyp': [integer rule id]}
- {'negation':    [coverage formula]}
- {'disjunction': [list of coverage formulas]}
- {'conjunction': [list of coverage formulas]}
- {'ordering': {
'operator': '<' OR '>' OR '<=' OR '>=' OR '!=' OR '='
'levels': [list of ordering constraints]
}
}

Where an ordering constraint is an object of the following form:

{
'priority':          [integer],
'background-weight': [integer],
'rule-weights':      [ list of rule-weights ]
}

where a rule-weight is of the form {[integer rule id]: [integer weight]}

A rule_in_hyp coverage formula is satisfied by a hypothesis if and only if the
hypothesis contains the relevant rule. The semantics of negations, disjunctions
and conjunctions are defined as is usual in propositional logic.

The ordering operators are useful for learning weak constraints and are
interpreted as follows. At each level, the rule_weight_sum is the sum of of all
the weights for rule ids which are in the hypothesis. If the rule_weight_sum is
equal to the background weight at every level, then the ordering coverage
formula is satisfied if and only if the operator is '='. If there is at least
one level at which the background weight is not equal to the rule_weight_sum,
then we interpret the formula at the first such level (according to the
priority, which are read in descending order). The formula is satisfied iff (at
this level) rule_weight_sum op background_weight (e.g. if op is <) this is
satisfied iff rule_weight_sum < background_weight.