SKILL.md : Raisonnement par intervalles temporels (Allen 1983)
Quand utiliser cette compétence
Chargez cette compétence lorsque vous rencontrez :
| Situation déclencheur | Pourquoi Allen s'applique |
|---|---|
| "Est-ce que la tâche A se termine avant que la tâche B commence ?" | Nécessite une classification des relations entre intervalles (avant, rencontre, chevauche...) |
| "Je ne sais pas exactement quand X s'est produit, seulement que c'était pendant Y" | Incertitude disjonctive parmi les 13 relations |
| "Si nous ajoutons cette contrainte, le planning fonctionne-t-il encore ?" | Propagation de contraintes + détection d'incohérence |
| "L'événement A se produit quotidiennement ; l'événement B se produit annuellement – comment interagissent-ils ?" | Hiérarchie d'intervalles de référence pour la gestion de portée |
Ne pas utiliser si vous devez seulement comparer deux timestamps absolus sans incertitude – une simple arithmétique suffit.
Points de décision
Nouvelle assertion temporelle ajoutée
SI l'assertion est en conflit avec les contraintes existantes :
→ Détecter une étiquette d'arc vide pendant la propagation
→ S'ARRÊTER immédiatement, signaler la paire d'intervalles incohérente
→ NE PAS continuer avec un état incohérent
SI l'assertion est cohérente :
→ Exécuter la propagation de contraintes à partir des arcs affectés
→ Mettre à jour les étiquettes en intersectant les conséquences de transitivité
→ Continuer jusqu'à ce qu'aucun autre raffinement ne soit possible
Gestion de l'incertitude temporelle
SI les preuves ne supportent que plusieurs relations :
→ Maintenir l'étiquette disjonctive complète {avant, rencontre, chevauche}
→ Ne jamais réduire à une seule relation sans preuve
→ Journaliser quand/pourquoi l'ensemble de contraintes se réduit
SI vous êtes contraint d'agir sous incertitude :
→ Utiliser l'étiquette disjonctive telle quelle pour la planification
→ Marquer toute hypothèse comme révisable
→ Éviter l'engagement prématuré
Cadrage du raisonnement temporel
SI vous traitez avec des événements à des échelles de temps très différentes :
→ Identifier la hiérarchie d'intervalles de référence (année→mois→jour)
→ Raisonner au sein de chaque cluster séparément
→ Créer des contraintes de pont explicites aux limites
→ Éviter d'aplatir tout en un seul graphe global
SI le raisonnement local semble suffisant :
→ Vérifier que la portée de la requête correspond au niveau d'intervalle de référence
→ Propager uniquement dans le cluster pertinent
→ Escalader entre clusters uniquement lorsqu'une dépendance est détectée
Persistance de l'état
SI l'état se poursuit sans limite de fin explicite :
→ Appliquer la persistance par défaut ET marquer comme révisable
→ Toute assertion de limite de fin future remplace la valeur par défaut
→ Ne jamais traiter une hypothèse de persistance comme une contrainte dure
SI une limite temporelle explicite est fournie :
→ Remplacer toute persistance par défaut existante
→ Propager la nouvelle contrainte normalement
Modes de défaillance
| Anti-patron | Symptôme | Diagnostic | Correctif |
|---|---|---|---|
| Point-ification | Réduire les événements à des timestamps, perdre les informations de chevauchement/contenance | Utiliser time=14:30 au lieu d'intervalles [14:30, 14:45] | Modéliser chaque événement comme un intervalle avec début/fin, même si la durée est inconnue |
| Engagement prématuré | Choisir une seule relation alors que les preuves en supportent plusieurs | Affirmer "avant" alors que vous savez seulement "pas pendant" | Maintenir l'étiquette disjonctive complète jusqu'à ce que les preuves forcent le rétrécissement |
| Bombe de propagation globale | Coût O(N²) par mise à jour, performances dégradées avec la taille de la base de connaissances | Exécuter la propagation de contraintes sur tout le graphe pour une requête locale | Utiliser la hiérarchie d'intervalles de référence pour limiter la portée de la propagation |
| Déni d'étiquette vide | Continuer le raisonnement après détection d'incohérence | Obtenir des résultats absurdes parce que les contraintes conflictuelles sont ignorées | Traiter l'étiquette d'arc vide comme un SUCCÈS (incohérence détectée tôt), arrêt immédiat |
| Rigidité de persistance | Impossible de remplacer les hypothèses "se poursuit jusqu'à changement" | Les nouvelles limites temporelles sont rejetées car elles entrent en conflit avec la persistance | Marquer toutes les persistance par défaut comme révisables, permettre le remplacement par des assertions explicites |
Règles de détection :
- Si vous voyez des timestamps sans durée → Point-ification
- Si vous voyez une seule relation choisie arbitrairement → Engagement prématuré
- Si le coût de propagation augmente avec la taille totale de la base de connaissances → Bombe de propagation globale
- Si le raisonnement continue après une étiquette vide → Déni d'étiquette vide
- Si de nouveaux faits temporels sont rejetés → Rigidité de persistance
Exemples détaillés
Exemple 1 : Détection de conflit dans un planning de réunion
Scénario : Ajouter "Revue d'équipe" à un calendrier qui contient déjà "Appel client" et "Réunion quotidienne d'ingénierie"
État initial :
Appel client (I₁) : [10:00, 11:00]
Réunion quotidienne d'ingénierie (I₂) : [11:30, 12:00]
Connu : I₁ {avant} I₂
Nouvelle assertion : Revue d'équipe (I₃) : [10:45, 11:15]
Trace de raisonnement expert :
-
Classifier les nouvelles relations :
- I₃ vs I₁ : commence à 10:45, I₁ se termine à 11:00 → {chevauche}
- I₃ vs I₂ : se termine à 11:15, I₂ commence à 11:30 → {avant}
-
Propagation de contraintes :
- Depuis I₁ {avant} I₂ et I₃ {chevauche} I₁
- Transitivité : chevauche ∘ avant = {avant, chevauche, rencontre, commence, pendant}
- Nouvelle contrainte : I₃ {avant, chevauche, rencontre, commence, pendant} I₂
- Intersection avec I₃ {avant} I₂ : l'étiquette devient {avant}
-
Vérification de cohérence : Toutes les étiquettes non vides → Le planning est réalisable mais a un chevauchement
Ce que le novice manquerait :
- Pourrait ne pas vérifier que le chevauchement de I₃ avec I₁ crée un conflit de ressources
- Pourrait ne pas vérifier que la transitivité maintient la cohérence
- Pourrait ne pas distinguer "ordonnancement réalisable" de "pas de conflit de ressources"
L'expert détecte :
- Le chevauchement est signalé immédiatement via la classification des relations
- La propagation vérifie que la cohérence globale est maintenue
- Distinction claire entre faisabilité temporelle et disponibilité des ressources
Exemple 2 : Dépendances de phases de processus
Scénario : Pipeline de déploiement avec des temps d'achèvement de tâches incertains
État initial :
Phase de construction (B) : durée inconnue, doit finir avant Déploiement
Phase de test (T) : chevauche la fin de Construction, durée incertaine
Phase de déploiement (D) : commence après que B et T soient terminés
Réseau de contraintes :
T {chevauche, finit} B (Le test peut finir avec ou avant la construction)
B {avant, rencontre} D (La construction doit être terminée avant le déploiement)
T {avant, rencontre} D (Le test doit être terminé avant le déploiement)
Nouvelle information : "Le test a trouvé un bogue critique, prolongeant de 2 heures"
Raisonnement expert :
- La mise à jour affecte la portée : Le prolongement du test repousse la fin de T
- Propagation : Si T {finit} B à l'origine, maintenant T {chevauche} B (se prolonge au-delà de la fin de Construction)
- Vérification de cohérence : T {chevauche} B permet toujours B {avant, rencontre} D et T {avant, rencontre} D
- Résultat : Déploiement retardé mais la logique du pipeline est intacte
Ce que le novice manquerait :
- Pourrait supposer que l'achèvement du test n'affecte pas la dépendance Construction-Déploiement
- Pourrait ne pas propager le prolongement du test jusqu'au timing du Déploiement
- Pourrait traiter "Le test se prolonge" comme un fait isolé plutôt que comme une mise à jour du réseau de contraintes
L'expert détecte :
- Reconnaît que la relation Test-Construction doit être réévaluée
- Propage les implications temporelles à travers tout le réseau de contraintes
- Maintient l'incertitude de manière appropriée (Déploiement pourrait commencer immédiatement après Construction OU après Test prolongé)
Portes qualité
La tâche de raisonnement temporel est terminée lorsque :
- Tous les intervalles représentés avec des bornes de début/fin explicites (pas d'événements ponctuels)
- Chaque paire d'intervalles a une étiquette d'arc non vide parmi le vocabulaire des 13 relations
- La propagation de contraintes exécutée jusqu'à complétion (aucune mise à jour de transitivité en attente)
- Toutes les étiquettes disjonctives reflètent honnêtement les preuves actuelles (aucun engagement arbitraire)
- Hiérarchie d'intervalles de référence établie pour le raisonnement multi-échelle
- Les persistance par défaut marquées comme révisables lorsque applicable
- Détection d'incohérence vérifiée (étiquettes vides capturées et signalées)
- Les ponts de portée de référence inter-domaines définis explicitement
- Toutes les assertions temporelles tracées jusqu'à leur source de preuve
- La portée de la requête correspond au niveau de granularité du raisonnement
Limites (À NE PAS FAIRE)
Ne PAS utiliser l'algèbre d'intervalles d'Allen pour :
- Comparaison simple de timestamps → Utiliser l'arithmétique :
if (t1 < t2) - Calcul de durée métrique → Utiliser l'arithmétique de calendrier :
date_fin - date_debut - Optimisation d'ordonnancement temps réel → Utiliser la satisfaction de contraintes avec domaines numériques
- Inférence temporelle probabiliste → Utiliser des réseaux temporels probabilistes
- Dynamique de temps continu → Utiliser des équations différentielles
- Flux d'événements haute fréquence → Utiliser des frameworks de traitement de flux
Déléguer à la place :
- Pour les contraintes métriques : Utiliser satisfaction-de-contraintes-avec-domaines-numériques
- Pour le raisonnement temporel probabiliste : Utiliser réseaux-temporels-bayésiens
- Pour les systèmes temps réel : Utiliser ordonnancement-à-taux-monotonique
- Pour la dynamique continue : Utiliser vérification-de-modèle-logique-temporel
- Pour le traitement de flux d'événements : Utiliser traitement-d'événements-complexes
Allen excelle dans : Le raisonnement temporel qualitatif sous incertitude avec des mises à jour incrémentales de connaissances et une gestion hiérarchique de la portée.