Skip to content
docs
Arxo ↗

Exercise 3. Two ways to say "not accredited"

For LLMs2 sections

An exercise for the negation page. The page’s background-check norm uses not_known: a check is required while nothing is known about accreditation.

Setup. Add a second check norm, with not accredited(p) in the body instead of not_known, and pick cases on which the two norms answer differently. The answers to reach:

Factsnorm with not_knownnorm with not
registryTRUE_ONLYNEITHER
registry, case record “not accredited”TRUE_ONLYTRUE_ONLY
registry, accreditationNEITHERNEITHER

Hint. not has no denial source of its own. Who in the package or the case can establish not accredited?

Below is an interactive stub. Fix the second norm and check it on three cases. If JavaScript is off, the solution is shown instead of the editor.

Arxo Law
language "law.core" version "0.2";
package tutorial.archive version "0.2.2";
namespace "urn:law:tutorial:archive";
entity Person;
relation in_researcher_registry(p: Person) kind institutional;
relation accredited(p: Person) kind institutional;
relation reference_check_required(p: Person) kind institutional;
relation reference_check_on_refusal(p: Person) kind institutional;
rule ReferenceCheck strict {
for p: Person;
when in_researcher_registry(p) and not_known(accredited(p));
then reference_check_required(p);
}
rule ReferenceCheckOnRefusal strict {
for p: Person;
when in_researcher_registry(p) and not accredited(p);
then reference_check_on_refusal(p);
}

The table’s first row is the whole point. With one registry fact the not_known norm fires: indeed nothing is known about accreditation. The not norm stays silent: not accredited must be established, and there is nobody to establish it. The package holds neither a norm with a negative head nor a closure, and the case holds no negative record.

Second row: the negative record is fed by the case, and both norms fire. For not_known, a “not accredited” record is also “no positive record”. Third: accreditation exists, both stay silent.

The table’s three rows execute for each of the two norms on this package.

What the exercise teaches. not P without a denial source never fires, and the compiler will not warn about it: the package is clean, the answer NEITHER. Before writing not in a body, name who produces the denial: a norm with a negative head, a closure from the coming pages, or a case record.

Documentation for Arxo. Writings — blog.arxo.io.

Anonymous visit counts on stats.arxo.io, no cookies.