Softanza
DémarrerEnglish
Softanza
Le livre · Chapitre 14 · La preuve de chaque chapitre

Un agent qui ne peut pas nuire

Ce chapitre a 7 cellules et écrit 14 promesses. Dans chacune de ses quatre éditions, ses cellules ont été exécutées dans un processus neuf le 2026-10-08 20:15 : English, 7 cellules exécutées, 14 promesses tenues; Français, 7 cellules exécutées, 14 promesses tenues; العربية, 7 cellules exécutées, 14 promesses tenues; Hausa, 7 cellules exécutées, 14 promesses tenues. Les quatre éditions font les mêmes promesses, cellule pour cellule. Aucune édition ne stocke de sortie.

Le garde

Le garde du cours est course_narrated.ring(s'ouvre dans un nouvel onglet) : il exécute chaque chapitre dans les quatre langues, compare les promesses d'une édition à l'autre, et fait prouver chaque exercice sur ses mauvaises et ses bonnes réponses. Cette page a posé les mêmes questions aux mêmes objets, dans un seul processus à l'intérieur de la bibliothèque, au commit 0e72e2e2c. Pour prouver ce chapitre seul, depuis votre copie du dépôt :

cd libraries/stzlib/base/test/education
# exécutez course_narrated avec le moteur d'exécution du dépôt, pour ce chapitre :
#   course_narrated an-agent-that-cannot-hurt

exécuté le 2026-10-08 20:15 dans la bibliothèque au commit 4a184e6f0, en 246.4 s pour tout le livre · Les quatre éditions du chapitre : English(s'ouvre dans un nouvel onglet) · Français(s'ouvre dans un nouvel onglet) · العربية(s'ouvre dans un nouvel onglet) · Hausa(s'ouvre dans un nouvel onglet)

Le lecteur ne stocke aucune sortie, par la loi du cours ; cette page est le compte rendu d'une exécution, faite pour elle. Le code des cellules est celui de l'édition anglaise ; les titres viennent de l'édition française. Les quatre éditions font les mêmes promesses, cellule pour cellule.

Les cellules, exécutées

Cellule 1 · 1. Déclarer un agent, et laisser la cour le juger

Softanza
cPia = "pia: 1
name: stock-watcher
kind: pi
coverage: checks the kitchen stock every morning and notes what is low
reversibility: reversible
schedule:
  timer: 20
memory:
  - stock level unknown
skills:
  - name: check-stock
    when: always
    does: learn stock level checked
    verify: fact stock level checked
"
oDecl = StzAgentDeclarationQ(cPia)
? oDecl.IsValid()
#--> TRUE
? oDecl.ReversibilityClass()
#--> reversible
Sortie de cette exécution
1
reversible

exécutée : la promesse est tenue · dans les quatre éditions

Cette cellule dans le chapitre : English(s'ouvre dans un nouvel onglet) · Français(s'ouvre dans un nouvel onglet) · العربية(s'ouvre dans un nouvel onglet) · Hausa(s'ouvre dans un nouvel onglet)

Cellule 2 · 2. La cour refuse ce qui ne dit rien de sa portée

Softanza
oBad = StzAgentDeclarationQ( StzReplace(cPia, "coverage: checks the kitchen stock every morning and notes what is low" + char(10), "") )
? oBad.IsValid()
#--> FALSE
? StzLeft( oBad.CiteFindings(), 25 )
#--> [pia-coverage @ coverage]
Sortie de cette exécution
0
[pia-coverage @ coverage]

exécutée : la promesse est tenue · dans les quatre éditions

Cette cellule dans le chapitre : English(s'ouvre dans un nouvel onglet) · Français(s'ouvre dans un nouvel onglet) · العربية(s'ouvre dans un nouvel onglet) · Hausa(s'ouvre dans un nouvel onglet)

Cellule 3 · 3. Proposer, jamais valider : la forme d'un système sûr

Softanza
oGBad = new stzAgentGraph("mailer-bad")
oGBad.AddLLMActor("writer")
oGBad.AddEffect("send")
oGBad.Proposes("writer", "send")
? oGBad.IsSound()
#--> FALSE
? oGBad.Violations()[1][:message]
#--> effect 'send' has no guardian edge into it -- every effect passes a pi-gate
Sortie de cette exécution
0
effect 'send' has no guardian edge into it -- every effect passes a pi-gate

exécutée : la promesse est tenue · dans les quatre éditions

Cette cellule dans le chapitre : English(s'ouvre dans un nouvel onglet) · Français(s'ouvre dans un nouvel onglet) · العربية(s'ouvre dans un nouvel onglet) · Hausa(s'ouvre dans un nouvel onglet)

Cellule 4 · 4. La forme gouvernée

Softanza
oGOk = new stzAgentGraph("mailer")
oGOk.AddLLMActor("writer")
oGOk.AddGuardian("gate")
oGOk.AddEffect("send")
oGOk.AddTraceSink("audit")
oGOk.Proposes("writer", "gate")
oGOk.Guards("gate", "send")
oGOk.Feeds("gate", "send")
oGOk.Traces("send", "audit")
? oGOk.IsSound()
#--> TRUE
Sortie de cette exécution
1

exécutée : la promesse est tenue · dans les quatre éditions

Cette cellule dans le chapitre : English(s'ouvre dans un nouvel onglet) · Français(s'ouvre dans un nouvel onglet) · العربية(s'ouvre dans un nouvel onglet) · Hausa(s'ouvre dans un nouvel onglet)

Cellule 5 · 5. Répéter dans un monde sûr

Softanza
oAg = oDecl.ToAgent()
oAg.GiveWorkbench()
cHere = StzReplace(currentdir(), char(92), "/")
cNote = cHere + "/t_edu_note_" + ProcessId() + ".txt"
oAg.WorkbenchQ().WriteFile(cNote, "stock is low")
? fexists(cNote)
#--> FALSE
? oAg.WorkbenchQ().ContentOf(cNote)
#--> stock is low
oPlan = oAg.GenerateUpdatePlan()
? oPlan.NumberOfOperations()
#--> 1
Sortie de cette exécution
0
stock is low
1

exécutée : la promesse est tenue · dans les quatre éditions

Cette cellule dans le chapitre : English(s'ouvre dans un nouvel onglet) · Français(s'ouvre dans un nouvel onglet) · العربية(s'ouvre dans un nouvel onglet) · Hausa(s'ouvre dans un nouvel onglet)

Cellule 6 · 6. Une IA ne peut pas valider le plan

Softanza
oPlan.SetExecutor( LLMActor("helper") )
aMay = oPlan.MayCommit()
? aMay[1]
#--> FALSE
? aMay[2]
#--> actor 'helper' cannot commit -- it lacks the 'effectful' capability (required by operation 1)
Sortie de cette exécution
0
actor 'helper' cannot commit -- it lacks the 'effectful' capability (required by operation 1)

exécutée : la promesse est tenue · dans les quatre éditions

Cette cellule dans le chapitre : English(s'ouvre dans un nouvel onglet) · Français(s'ouvre dans un nouvel onglet) · العربية(s'ouvre dans un nouvel onglet) · Hausa(s'ouvre dans un nouvel onglet)

Cellule 7 · 7. Seul un acteur de validation, dans sa portée, change la réalité

Softanza
oPlan2 = oAg.GenerateUpdatePlan()
oPlan2.SetExecutor( PIActor("committer") )
oScope = new stzCommitScope()
oScope.AllowUnder(cHere)
oPlan2.SetScope(oScope)
aRes = oPlan2.Execute()
? aRes[1][2]
#--> TRUE
? fexists(cNote)
#--> TRUE
remove(cNote)
Sortie de cette exécution
1
1

exécutée : la promesse est tenue · dans les quatre éditions

Cette cellule dans le chapitre : English(s'ouvre dans un nouvel onglet) · Français(s'ouvre dans un nouvel onglet) · العربية(s'ouvre dans un nouvel onglet) · Hausa(s'ouvre dans un nouvel onglet)

Les exercices

Chaque exercice s'éprouve lui-même : ses mauvaises réponses sont refusées et ses bonnes acceptées.

ex-14-01 · Exercice 14.1 · Déclarer un veilleur

2 mauvaises réponses refusées sur 2, 2 bonnes acceptées sur 2

01-says-nothing-of-its-reach.ring refusée · 02-cannot-be-undone-cleanly.ring refusée · 01-declare.ring acceptée · 02-from-a-template.ring acceptée

Le dossier de l'exercice(s'ouvre dans un nouvel onglet)

ex-14-02 · Exercice 14.2 · Deux formes

2 mauvaises réponses refusées sur 2, 2 bonnes acceptées sur 2

01-only-the-bad-shape.ring refusée · 02-counts-violations.ring refusée · 01-two-shapes.ring acceptée · 02-other-names.ring acceptée

Le dossier de l'exercice(s'ouvre dans un nouvel onglet)

ex-14-03 · Exercice 14.3 · Qu'aurait-il fait ?

2 mauvaises réponses refusées sur 2, 2 bonnes acceptées sur 2

01-writes-for-real.ring refusée · 02-reads-the-bench-instead.ring refusée · 01-rehearse.ring acceptée · 02-another-file.ring acceptée

Le dossier de l'exercice(s'ouvre dans un nouvel onglet)