Verisyntax — brugermanual (prototype 0.1)

Fakta, regler og queries

parent(person_a, person_b)
parent(person_b, person_c)

grandparent(X, Z)
  if parent(X, Y)
  and parent(Y, Z)

ask grandparent(person_a, Who)

Fakta må ikke indeholde ubundne variable. Variable begynder med stort bogstav eller _. Head-variable i en regel skal bindes af en positiv betingelse. Predicate-arity skal være ens i hele filen.

Kør alle deklarerede queries med:

<compiler>/verisyntax ask model.vsx

Resultatet er et versionsmærket verisyntax.logic-result JSON-artefakt med bindings, metode, iterationer og en flad forklaringsgraf. Hvert afledt resultat henviser til de premise-ID'er, som reglen brugte. Runtime bruger open-world-semantik:

  • true: den positive assertion kan afledes;
  • false: en eksplicit negativ assertion kan afledes;
  • unknown: hverken positiv eller negativ assertion kan afledes;
  • inconsistent: begge kan afledes og konflikten skjules ikke.

not blocked(person_a) er eksplicit negativ evidens. Fraværet af blocked(person_a) er ikke nok til at konkludere not blocked(person_a). Rekursive regler køres til et afgrænset fixed point; iterationer, assertions og rule matches har sikkerhedsgrænser.