Aller au contenu
EN FR

Syntaxe de base et termes

Statut documentaire : reference — voir Maturité et preuves.

H-Logic garde la structure conceptuelle explicite. Les rôles s’écrivent entre parenthèses, les attributs entre crochets, les interfaces s’attachent avec :: et les références explicites à des termes nommés utilisent &.

Définitions et instances

define .:#Person(me)[name::#string];
#alice:#Person;
_:#Person;

x:#T est un terme typé. Une instance nommée comme #alice:#Person possède un nom conceptuel stable. _:#Person désigne une instance anonyme. Le rôle distingué me représente le support/l’identité sémantique des entités non singleton ; ce n’est pas un champ à ajouter dans les métadonnées YAML ou XML.

Rôles et attributs

define .:#worksFor(person:#Person, company:#Company, context:#Context);
define .:#Order(me)[amount::#float, status:#OrderStatus];

Les positions entre parenthèses sont des rôles structurels. Les positions entre crochets sont des attributs descriptifs. Un rôle structurel peut porter un ordre, par exemple context^2:#Context ; cette annotation appartient à la déclaration du rôle, pas aux variables quantifiées.

Commandes

Une assertion nue est une opération tell. Les formes explicites rendent l’intention plus claire :

projectBeta:#Context;
tell projectBeta:#Context;
do projectBeta:#Context;
ask .:#A(x) and .:#R(x, y) return x;

Utiliser ask ou ? pour introduire une requête. Les variables de requête sont des noms de rôles ordinaires dans l’expression ; ne pas les préfixer sous la forme ?x.

Règle de couches

YAML/XML décrivent les métadonnées applicatives, H-Logic exprime la logique conceptuelle et functionalP porte le comportement procédural lorsqu’une expression déclarative ne suffit pas. Ne pas déplacer une règle sémantique dans du code uniquement parce que du code est disponible.