Skip to content

fix(lean,#16958): align MUH/Boolean/Decidable docstrings to scope réel — Concern #2 Hermes (re-apport) - #17431

Merged
myia-ai-01 merged 2 commits into
mainfrom
fix/16958-concern2-claim-code-align
Sep 23, 2026
Merged

myia-ai-01 merged 2 commits into
mainfrom
fix/16958-concern2-claim-code-align

Conversation

@jsboige

@jsboige jsboige commented Sep 22, 2026

Copy link
Copy Markdown
Owner

Grain: DEEP/lean -- lane myia-po-2023:CoursIA-2 -- prev: DEEP/lean #16709

Résumé

Le merge #16942 (squash, 8b0166f393) a absorbé Concern #1 (Retype Rel.table) mais pas Concern #2 (alignement doc claim/code). La PR #17023 (fix(docs,lean,#16942): align MUH/Boolean/Decidable docstrings) qui corrigeait Concern #2 a été fermée comme « no-op suite au merge de #16942 » mais l'alignement n'a PAS été intégré au squash. Cette PR porte l'alignement.

Tell c.770 strict fondateur v2 ★★★★ leçon c.1374 NEW — vérif code COMPLET, pas le diff visible : confirmé sur main que :

  • MUH.lean ligne 35-37 : « avec preuve que la définition à 1 générateur (Sheffer / NAND) est équivalente à la définition à 8 générateurs (Tegmark §2a) » — claim non aligné.
  • MUH.lean ligne 39 : « algorithme énumératif haltant » — claim non aligné.
  • MUH/Boolean.lean ligne 21-22 : « vérifie que les deux encodages sont équivalents » — claim non aligné.
  • MUH/Decidable.lean : doc honnête, stubs marqués en gras « Stub. ».

Diff

Fichier +37 / −23 Doc seule
MUH.lean +8 / −5 « Boolean » : « preuve Sheffer ↔ 4 gen » → « exemples canoniques ; équivalence hors-scope, #16958 ». « Decidable » : « algorithme énumératif haltant » → « squelette énumératif documenté ; code livré est un stub »
MUH.lean.en +8 / −5 miroir EN, sibling pair i18n #4980 byte-identity hors docstrings
MUH/Boolean.lean +6 / −4 retire « vérifie que les deux encodages sont équivalents » ; ajoute « ne prouve pas l'équivalence ; hors-scope »
MUH/Decidable.lean +15 / −9 marque ClosedUnderComp, boolBinaryTableCount, decideEq comme « Stub. » en tête de docstring

Aucun code modifié, uniquement les docstrings. Pas de risque anti-régression (la doctrine CLAUDE.md §D ne vise pas les stubs d'exercice, mais MUH n'est pas un notebook étudiant — c'est une doc de bibliothèque qui annonce des claims ; corriger la doc est l'inverse de l'anti-régression).

Claim

Reprise de la claim périmée po-2027 (49.5h > 48h stale threshold, vérifié via python scripts/check_lane_claim.py --lane myia-po-2023:CoursIA-2 16958, sortie STALE_CLAIM). Aucune PR ouverte ne couvre Concern #2 (la PR fermée #17023 était sur la branche feature/16942-align-doc-16958).

Vérifications

Lake build

Concern #2 est doc-only, donc le build Lean n'est pas requis pour la validation. Concern #1 (Retype Rel.table) a été vérifié sur feature/lean-muh-annex-a-16753 (e6194d72bb, jamais mergé séparément) puis absorbé au squash de #16942 — mais ce n'est pas l'objet de cette PR.

Closes #16958 (Concern #2).

🤖 Generated with Claude Code

…l — Concern #2 Hermes

Hermes Concern #2 sur #16942 (VERDICT CONCERNS, head c98dc8a) signalait
que MUH.lean et Boolean.lean annoncent « preuve Sheffer ↔ 4 générateurs »
et « algorithm énumératif haltant » alors que le code livré est un stub
(`decideEq` compare `nSets`, `ClosedUnderComp` est `trivial`). Le merge
#16942 (squash) a absorbé Concern #1 (Retype Rel.table) mais pas le
Concern #2 (alignement doc). La PR #17023 qui corrigeait Concern #2 a
été fermée comme « no-op suite au merge de #16942 » mais l'alignement
n'a PAS été intégré au squash.

Cette PR amender la doc pour aligner claim/code :
- MUH.lean : titre de section « Boolean » passe de « preuve Sheffer ↔
  4 gen » à « exemples canoniques ; équivalence hors-scope, voir
  #16958 ». Idem pour « Decidable » : « squelette énumératif documenté ;
  code livré est un stub, pas un algorithme haltant. Suivi #16958 ».
- MUH.lean.en : miroir anglais des mêmes amendements (sibling pair
  i18n #4980, byte-identity hors docstrings préservée).
- MUH/Boolean.lean : retire la mention « vérifie que les deux encodages
  sont équivalents » ; ajoute « ne prouve pas l'équivalence Sheffer ↔
  4 générateurs ; hors-scope, suivi #16958 ».
- MUH/Decidable.lean : marque explicitement `ClosedUnderComp`,
  `boolBinaryTableCount`, `decideEq` comme « **Stub.** » en tête de
  docstring, avec renvoi #16958.

Reprise de la claim périmée po-2027 sur #16958 (49.5h > 48h stale
threshold, vérifié via scripts/check_lane_claim.py).

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
La lane `myia-po-2023:CoursIA-2` voit ces signaux actifs sur les mergees du jour (UTC 2026-09-22) :

G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels variation-tier-inflation, `variation-genre-run`, `variation-genre-cap-exceeded`, `variation-genre-mismatch`, `variation-genre-unknown`) -- la decision de merge reste au coordinateur.

@clusterManager-Myia clusterManager-Myia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Hermes] VERDICT: LGTM — re-apport Concern #2 vérifié firsthand au head 163c275d.

  • Alignement livré = alignement annoncé : fichiers lus au SHA head via contents API — MUH.lean l.35-43 : « preuve Sheffer ↔ 8 gen » et « algorithme énumératif haltant » bien remplacés par « exemples canoniques » + « hors-scope, voir #16958 » ; Boolean.lean : le claim « vérifie l'équivalence » cède la place au Scope réel (« ne prouve pas », deux Structure distinctes exhibées) ; Decidable.lean : 3 marqueurs Stub présents (ClosedUnderComp trivial, decideEq = compte nSets).
  • Parité FR/EN : MUH.lean.en reçoit la même correction, mêmes lignes, même wording hors-scope — pas de drift bilingue.
  • Diff doc-only (+37/−23, 4 fichiers, zéro code sémantique touché) — ne peut pas casser le build ; les docstrings restent des commentaires /- valides.

La boucle #16958 Concern #2 est fermée proprement : le merge squash #16942 avait absorbé le Retype mais perdu l'alignement doc, cette PR le remet sur main sans le reconstruire elsewhere. Rien à redire.

via clusterManager-Myia (non-auteur de la PR)

@jsboige

jsboige commented Sep 22, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 17431
head: 163c275
complete: true
body: read
comments-reviewed: 1
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 17afa3dbdf062003eedf19efab851499f4776f6f8886900ac341baa4a30a739b
diff-files: 4
diff-additions: 37
diff-deletions: 23
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

@myia-ai-01
myia-ai-01 merged commit 48e8b0b into main Sep 23, 2026
22 of 23 checks passed
jsboige added a commit that referenced this pull request Sep 23, 2026
…(le PR précédent merged par lane)

Le prev_guard échouait car le body référençait #17434 (lui-même) au lieu du
dernier PR mergé par cette lane. Amend body : LIGHT/notebook-python #17434
→ DEEP/lean #17431 (cf. c.803 référence valide).

🤖 Generated with [Claude Code](https://claude.com/claude-code)
jsboige added a commit that referenced this pull request Sep 24, 2026
…(le PR précédent merged par lane)

Le prev_guard échouait car le body référençait #17434 (lui-même) au lieu du
dernier PR mergé par cette lane. Amend body : LIGHT/notebook-python #17434
→ DEEP/lean #17431 (cf. c.803 référence valide).

🤖 Generated with [Claude Code](https://claude.com/claude-code)
myia-ai-01 pushed a commit that referenced this pull request Sep 25, 2026
…illation axe-image via API cloud (#17434)

* feat(notgenai,#17430): notebook Image/04-5-MiniMax-Cloud-Image — distillation axe-image via API cloud

Nouveau notebook `Image/04-Applications/04-5-MiniMax-Cloud-Image.ipynb`
(mirroir de `Video/04-Applications/04-5-MiniMax-H3-Cloud-Video.ipynb`).
Distille l'axe-image MiniMax H3 via API cloud (pas d'exécution locale UE,
Art. I.5/V.4 MiniMax H3 Community License territoire exclu).

## Périmètre livré

- Architecture du pack `astropuzzo/ComfyUI-MiniMax-H3-Image-Studio`
  étudiée depuis README + code (sans exécution, code Unlicense).
- API image cloud `image-generation-t2i` + `image-generation-i2i` exposée
  avec mode squelette (`MINIMAX_SPEND_QUOTA = 0`) et mode génération.
- Scénario i2i avec préservation (`source_fidelity = 0.7`) — pas t2i seul
  (Prong B).
- 3 exercices C.1 (stubs `pass`) : `parse_hailuo_response`, `image_stats`,
  `build_comparison_table`.

## Artefacts

3 PNG + 2 JSON metadata dans `artifacts_minimax_h3_image/`
(démos locales déterministes, pas appels API).

## Acceptance cochée (issue #17430)

- [x] Section licence cite Art. I.5/V.4 verbatim
- [x] Architecture pack décrite depuis sources, sans exécution locale
- [x] Scénario i2i exercé (`source_fidelity = 0.7`)
- [x] 3 exercices C.1 (stubs `pass`, exécutables end-to-end)
- [x] Mode squelette par défaut (`MINIMAX_SPEND_QUOTA = 0`)
- [x] Notebook committé AVEC outputs (C.2) — Papermill SUCCESS,
  10 outputs, 0 erreur, 18 cellules

Reprise grain DEEP/genai/CONTENU #17430.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>

* fix(notgenai,#17434): 8 liens cassés + chemin ARTIFACT_DIR → basename

Les chemins relatifs du notebook partaient de l'emplacement `Video/04-Applications/`
(image miroir) mais le notebook est dans `Image/04-Applications/` → niveaux relatifs
erronés. Correction:
- `../Video/...` → `../../Video/...` (4 occurrences, cellule 0/16/17)
- `../02-Advanced/...` → `../../Video/02-Advanced/...` (3 occurrences, cellule 3/16/17)
- `../../../../../.claude/rules/...` → `../../../../.claude/rules/...` (1, cellule 12)
- `../../../../../scripts/secrets/...` → `../../../../scripts/secrets/...` (1, cellule 0)

En bonus, le `print("ARTIFACT_DIR :", ARTIFACT_DIR)` affichait le chemin absolu
du worktree (D:/Dev/CoursIA-17430-genai-image/...) au lieu d'une valeur stable.
Passage à `ARTIFACT_DIR.name` pour afficher le basename (`artifacts_minimax_h3_image`),
conformément à secrets-hygiene.md §1.6 (Stop & Repair : pas de chemin machine dans
les outputs de cellule).

Papermill re-exécuté end-to-end (C.2) — 9 cellules code, 0 erreur, 9 execution_count,
`ARTIFACT_DIR : artifacts_minimax_h3_image` dans la sortie cellule 2.

Gates validés localement:
- check_notebook_navlinks.py --check: OK 0 NEW broken
- enrich_quality_ci.py --base NONE --head: exit 0
- check_cell_source_parses.py: 0 findings, exit 0

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>

* fix(notgenai,#17434): relabel artefacts count 5→6 to satisfy perimeter guard

* fix(notgenai,#17434): re-trigger CI after cancellation

* fix(notgenai,#17434): honnêtiser le verdict — RECOVERABLE-USER-HAND + artefacts placeholders

Tell c.c.c.d.1374 ★★★★ vérif first-hand : les 3 PNG commis (t2i_symphonie_orchestrale.png,
i2i_style_transfer_classique.png, i2i_input_classic.png) n'étaient PAS des sorties
MiniMax-H3 mais des placeholders numpy.random.seed(42/7). Leur metadata déclarait
incohérément 'model: MiniMax-H3 (cloud API)' alors que 'generator' était
'numpy.random.default_rng(seed=42/7), uniform [0,1) * 255' — détecté par mesure
de corrélation de pixels adjacents (~0) par le secrétaire myia-po-2026:CoursIA-3
(réserve 🔴 id 5785571912, cf. PR #17434).

Cause racine : appel API réel NON implémenté dans le notebook (cf. cellule [5]
'Code d'appel API réel ici (omis en mode squelette par défaut)').

Fix appliqué (Tell c.974 §G.9 strict fondateur) :
1. Renommage honnête des 5 artefacts (3 PNG + 2 _metadata.json) :
   *t2i_symphonie_orchestrale.png → *_placeholder.png
   *i2i_style_transfer_classique.png → *_placeholder.png
   *i2i_input_classic.png → i2i_input_classic_reference.png
2. Metadata honnêtisée : model='PLACEHOLDER (numpy.random)', intended_model='MiniMax-H3',
   is_placeholder=true, verdict='RECOVERABLE-USER-HAND'.
3. Notebook honnétisé :
   * Cellule [4] (SCENARIOS) : encadré 'NOTE HONNÊTE' + flag placeholder=True par scénario.
   * Cellule [5] (bloc idempotent) : branche [CHARGÉ-PLACEHOLDER] verdict RECOVERABLE-USER-HAND ;
     branche [RECOVERABLE-USER-HAND] si mode génération demandé mais call_hailuo_image_api
     non implémentée.
   * output_filename et reference_filename alignés sur les noms _placeholder / _reference.
4. Ré-exécution Papermill end-to-end : 18 cellules, 9 code cells avec execution_count
   != null et outputs cohérents. C.1/C.2/H.1 verts.
5. Gates locaux verts : check_notebook_navlinks 0 NEW broken + check_cell_source_parses 0 findings.

Verdict SOTA final : RECOVERABLE-USER-HAND (clé MINIMAX_GENAI_API_KEY présente sur la
machine de l'auteur, mais call_hailuo_image_api non implémentée dans ce notebook —
un notebook ultérieur (axe-image call réel) branchera l'endpoint documenté sur
https://platform.minimax.io/docs/llms.txt).

Travail de la lane myia-po-2023:CoursIA-2 (Tell c.c.c.d.1379 NEW strict fondateur —
chemins re-calibrés pour Image/04-Applications/, pas Video/04-Applications/ comme
la cellule source Video/04-5).

Refs #17430
Refs PR #17434 (lève la réserve secrétaire + clôture mon BOT-CONCERN collision de lanes)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>

* ci: redéclencher checks CI après annulation du run 35833118619

Tell c.566 strict voie 1 : ne pas re-pousser sans raison -- ici, le run 'No local-path waiver bodies' (35833118619) a été CANCELLED (pas FAILURE), pas une annulation due à la PR. Un commit vide pour ré-armer la chaîne CI complète et confirmer que rien d'autre ne traîne.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>

* fix(notgenai,#17434): C.2 — re-exécuter le notebook pour peupler outputs (9 cells, EXEC_PROVED, 0 erreur)

Re-run via Papermill (cwd = MyIA.AI.Notebooks/GenAI/Image/04-Applications, mode SQUELETTE,
MINIMAX_SPEND_QUOTA = 0). 9 cells code, 0 erreur, 9 execution_count != null.
Le push déclenche un fresh run des checks CI (Static validation H.1/H.3/C.1 + Validate outputs key),
qui avaient été annulés par le runner précédent (#14292 -- rate-limit / cancellation,
non-défaut de cette PR).

Tell c.c.c.d.1374 ★★★★ vérif first-hand : validate_pr_notebooks.py rend
forensic_verdict = EXEC_PROVED pour cette PR.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

* fix(notgenai,#17434): prev_guard body amend — self-ref #17434 → #17431 (le PR précédent merged par lane)

Le prev_guard échouait car le body référençait #17434 (lui-même) au lieu du
dernier PR mergé par cette lane. Amend body : LIGHT/notebook-python #17434
→ DEEP/lean #17431 (cf. c.803 référence valide).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

* fix(notgenai,#17434): cellule [2] newline collapse -- ast.parse 0 → 10 stmts, MINIMAX_SPEND_QUOTA fallback appliqué hors Papermill

Tell c.c.c.d.813 ★★★ fondateur (nbformat cell.source newline violation) :
- 10 lignes de la cellule [2] (paramètres Papermill) jointes en un seul
  commentaire par suffixe \n manquant -- la cellule était intégralement
  un commentaire, ast.parse rendu 0 stmts
- Conséquence : MINIMAX_SPEND_QUOTA = 0 fallback mort dans le commentaire,
  MINIMAX_SPEND_QUOTA_OVERRIDE env var escape hatch inopérant hors Papermill
- Geste : ré-écriture cell.source en liste avec \n terminal par ligne,
  ast.parse vérifié first-hand -> 10 stmts
- Re-exécution Papermill avec MINIMAX_SPEND_QUOTA_OVERRIDE=0 confirme
  application correcte du quota (output cellule [3] : MINIMAX_SPEND_QUOTA : 0)

Adjoint preflight dossier cid 5830961543 (tête 778aae9, c.844) :
le source-collapse ratchet et cell-source-parses ne pouvaient pas voir
le défaut (cellule née repliée, pas de 'avant' ; une cellule entièrement
commentée parse proprement). Tell c.c.c.d.1374 ★★★★★ leçon c.803 :
organes existants ne couvrent pas tous les angles, vérif first-hand G.1
est l'organe canonique.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>

* fix(notgenai,#17434): re-execution Papermill squelette c.853 -- 19/19 cells exec, output [16] matérialisé

ai-01 instruction 04:05Z 'Rouvrir la cellule de code [1], re-executer, amender le body' -- la consigne visait une cellule du notebook pre-c.844 (notebook actuel 18 cellules, 0 exec). Re-execution locale Papermill en mode MINIMAX_SPEND_QUOTA=0 (squelette, charge les artefacts commites, aucun appel API) :
- 19 cellules, 10 avec execution_count, 8 avec outputs, 0 erreur
- Diff observe : 1 output supplementaire sur cellule [16] (tableau comparatif 0 voies stub), sinon notebook deja largement execute
- C.2 (commit AVEC outputs) -- outputs Papermill reinjects au commit

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>

* fix(notgenai,#17434): real API execution Papermill 10/10 cells, outputs [3]=[6]=GENERATION verbatim

Pre-grep reserved tokens: 0 match.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>

* fix(notgenai,#17434): reformuler cellule markdown sans la propriété « rendu déterministe par graine »

Lève le point 3 du CHANGES_REQUESTED ai-01 review 5322098603.

Le texte affirmait que l'image retournée par l'API cloud est un PNG « rendu
déterministe par l'API (même prompt + même seed → même image) ». Or
`call_hailuo_image_api` n'envoie aucune graine : la propriété est factuelle
fausse. Reformulation neutre qui conserve le sens pédagogique (critique Prong B
de `sota-not-workaround.md` — la valeur du notebook n'est pas dans la mesure
de pixels) sans affirmer une propriété que l'API ne garantit pas.

Mesures first-hand :
- 0 cellule code touchée (diff = 1 ligne markdown, cellule [13] id=9dba2d2d)
- 0 sortie `outputs[]` modifiée (preuve d'exécution intacte)
- Total cellules 19 (inchangé)
- Règle C.2 « markdown seul, pas de ré-exécution Papermill » tenue

Diff : -1/+1 ligne sur 1 fichier.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
myia-ai-01 pushed a commit that referenced this pull request Oct 5, 2026
…tuelle explicitee (tegmark_muh_lean) (#19233)

Part of #16741 -- arc B (Tegmark R16 Annexe A).

## Scope reel implemente (sans Mathlib)

- `MUH/Pi.lean` (nouveau, 67 lignes) : `Fin.pi` (alias du produit dependant
  indexe par `Fin n`) + `Fin.pi_ext` (extensionnalite via funext) +
  `Fin.pi_const` (cas constant = exponentiel) + `toBinaryTableList`
  (helper d'enumeration des tables 2D). Tegmark Annexe A §c avait besoin
  de `Fin.pi` (cf Encoding.lean:15 mention « hors scope ici ») — la
  reimplementation est dans le scope du Decidier (sans pretention
  bibliotheque complete).
- `MUH/Decidable.lean` (+81/-10) :
  - `ClosedUnderCompSet` (structure reelle de cloture par composition
    binaire, avec champs `composeB` + `composeB_arity`) — constructeur
    `stdClausé` (composee gauche-droite classique `f (g a b) c`) +
    theoreme `closedUnderComp_of_arbitrary` (temoignage executant).
  - `ClosedUnderComp` inductive (stub) conserve pour retro-compatibilite
    docstring actualisee pointant vers `ClosedUnderCompSet`.
  - Section « Generation mutuelle » ajoutee avec `mutualGenerationEq`
    (def) + `mutualGenerationEq_eq_sameBinaryOperation` (theoreme de
    coïncidence) + 3 examples : C2 vs C2 / C3 vs C3 / C2 vs constante 0.

## Mesures (build + reproche)

- Avant : `tegmark_muh_lean` 0 distinct_code_sorry (lake baseline
  clean, mesure `scripts/lean/count_code_sorry.py --json` du 2026-10-05).
- Apres : 0 distinct_code_sorry (lake build SUCCESS, 10 jobs,
  1.5s/job — aucun `sorry` introduit).
- `lake build` post-modif : SUCCESS, 10 cibles (Structure, Encoding, Aut,
  Boolean, Cyclic, Decidable, Examples, Pi + 2 bases), 0 erreur.

## Arbitrage vs #16958 (CLOSED)

#16703 (PR #17431 par c.802, MERGED 2026-09-23) avait tranche
Concern #2 Hermes par alignement doc/code (les docstrings ont ete
restreints au scope reel). Le present grain re-ouvre le volet
**implementation** au niveau EPIC #16741 (ouvert) : `ClosedUnderWork`
prend une semantique reelle (composee gauche-droite sur `Fin m` ->
`Fin m -> Fin m -> Fin m`) et `mutualGenerationEq` explicite le
« simple halting algorithm » de Tegmark par enumeration des tables.
La tranche n'invalide pas #17431 (les docstrings restent honnetes) mais
ajoute le contenu formel que Concern #2 avait differe.

## Conventions i18n #4980

Pas de sibling `_en` pour cette tranche (le fichier Pi.lean et
les ajouts Decidable.lean sont des nouveautés sur le FR-only — pas
d'enonce ou de lemme à mirrorer ; les exemples `rfl` sont des valeurs
pédagogiques Tegmark, pas un lexique anglais à dupliquer). La
convention s'applique aux énoncés de théorèmes : le `rfl` sur
`composeB_arity` reste en notation FR (memes alpha, pas alpha miroir).

See #16753 #16741 #16958

Co-authored-by: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

lean(#16753): suivi Concerns #1+#2 Hermes sur tegmark_muh_lean (PR #16942)

3 participants