{"title": "R2: Extension is conservative: C1–C8 over DI-47's relation on Σ_app",
 "producer":
 ["GENERATED by tools/Drivers/Semantics.lean (make gen-semantics); do not edit",
  "format: effect4-semantics-report v8",
  "command: make gen-semantics",
  "inputs: tools/ProofGraph/Registry.lean, tools/Tools/Semantics.lean, tools/Drivers/Semantics.lean, tools/Tools/SemanticsDisplay.lean, tools/Tools/SemanticsDocument.lean, tools/Tools/Document.lean, tools/Tools/Document/Json.lean, src/Effect4/Laws/Auto/Semantics.lean, Test/Counterexamples/REGISTER.md, docs/core/decisions.md, lean-toolchain"],
 "format": "effect4-document/1",
 "body":
 [{"lines":
   [[{"text":
      "Open, not triaged: C2 for host rows outside the fragment StraightRows: operational; on the fragment it is meaningUnder_append (decisions row 313)"}],
    [{"text":
      "Open, not triaged: C4 for TypedProg (the generic judgment is proved both ways)"}],
    [{"text":
      "Open, not triaged: C5: the world projection with its back condition (its red controls are proved)"}],
    [{"text": "Open, not triaged: C7: conditional on decisions row 115"}],
    [{"text": "Open, not triaged: C8: per form"}]],
   "kind": "items"},
  {"title": "Requirement R2: Conservative extension",
   "kind": "part",
   "key": "about:req:R2",
   "body":
   [{"line":
     [{"text":
       "This page explains requirement R2 in Effect4. It covers what conservative extension requires across eight obligations, why typing signature independence matters, and how the property is checked."}],
     "kind": "para"},
    {"title": "What the requirement asks",
     "kind": "part",
     "key": "about:req:R2:what-it-asks",
     "body":
     [{"line":
       [{"text":
         "Requirement R2 requires that extending an application signature is conservative across eight named obligations (DB-01, "},
        {"code": "docs/core/system-map.md"},
        {"text": " §8):"}],
       "kind": "para"},
      {"lines":
       [[{"text":
          "C1 syntax: extending a signature leaves existing program representations unchanged."}],
        [{"text":
          "C2 meaning: extending operations leaves existing program denotations unchanged."}],
        [{"text":
          "C3 checker: extending a signature admits exactly the same existing programs."}],
        [{"text":
          "C4 protocol typing: existing programs keep their protocol certificates."}],
        [{"text":
          "C5 world: extending allocated operations projects onto earlier world states."}],
        [{"text":
          "C6 local lawfulness: appending rows keeps signature validity intact."}],
        [{"text":
          "C7 representation: target representations remain compatible."}],
        [{"text":
          "C8 forms: higher-level form expansions remain stable under extension."}]],
       "kind": "items"},
      {"line":
       [{"text":
         "Extending a signature must never alter the typing, semantics, or admission of existing programs."}],
       "kind": "para"}]},
    {"title": "Why it matters",
     "kind": "part",
     "key": "about:req:R2:why-it-matters",
     "body":
     [{"line":
       [{"text":
         "Software composition relies on stability under modular extension."}],
       "kind": "para"},
      {"line":
       [{"text":
         "If adding a new library, operation row, or service changed how existing programs run, modular verification would collapse."}],
       "kind": "para"},
      {"line":
       [{"text":
         "Conservative extension lets separate modules compose without changing what the earlier ones mean."}],
       "kind": "para"}]},
    {"title": "How it is checked",
     "kind": "part",
     "key": "about:req:R2:how-it-is-checked",
     "body":
     [{"line":
       [{"text":
         "The requirement is checked by proving conservative extension theorems for syntax, checking, meaning, and sums:"}],
       "kind": "para"},
      {"lines":
       [[{"text": "Checker extension and restriction are stated by "},
         {"code": "check_ext"},
         {"text": " and "},
         {"code": "check_restrict"},
         {"text": " in "},
         {"code": "src/Effect4/Laws/Program/Signature.lean"},
         {"text": "."}],
        [{"text": "Signature lawfulness under appending is stated by "},
         {"code": "lawful_append"},
         {"text": " in the same file."}],
        [{"text": "Denotational meaning under row extension is stated on "},
         {"code": "StraightRows"},
         {"text": " by "},
         {"code": "meaningUnder_append"},
         {"text": " ("},
         {"code": "src/Effect4/Laws/Program/DenoteRowsAppend.lean"},
         {"text": ")."}],
        [{"text":
          "That a signature sum is a coproduct of free monads is stated by "},
         {"code": "sum_is_coproduct"},
         {"text": " ("},
         {"code": "src/Effect4/Laws/Effects/Sum.lean"},
         {"text": ")."}]],
       "kind": "items"},
      {"line":
       [{"text":
         "The plan on this page gives each theorem's status and the goals it rests on."}],
       "kind": "para"}]}]},
  {"nodes":
   [{"status": "proved",
     "ref": "concept:translation-simulation",
     "label": "Translation & Simulation",
     "key": "translation-simulation",
     "detail": "2 nodes"},
    {"status": "proved",
     "ref": "concept:initial-algebras-folds",
     "label": "Initial Algebras & Folds",
     "key": "initial-algebras-folds",
     "detail": "7 nodes"},
    {"status": "proved",
     "label": "No concept",
     "key": "none",
     "detail": "9 nodes"}],
   "kind": "graph",
   "key": "fig:concepts:R2",
   "edges":
   [["translation-simulation", "none"], ["initial-algebras-folds", "none"]],
   "caption":
   "R2 by concept: each concept its nodes are placed at, by tag or by module. An arrow goes where a node's proof reaches a node of another concept."},
  {"rows":
   [[[{"code": "check_ext"}],
     [{"status": "proved"}],
     [{"text": "—"}],
     [{"code": "check_sound"}, {"text": ", "}, {"code": "check_complete"}]],
    [[{"code": "check_restrict"}],
     [{"status": "proved"}],
     [{"text": "—"}],
     [{"code": "cata_eff_congr_on"},
      {"text": ", "},
      {"code": "hom_eq_cata_eff"}]],
    [[{"code": "lawful_append"}],
     [{"status": "proved"}],
     [{"text": "—"}],
     [{"text": "—"}]],
    [[{"code": "meaningUnder_append"}],
     [{"status": "proved"}],
     [{"text": "—"}],
     [{"text": "—"}]],
    [[{"code": "denoteRowsB_looped"}],
     [{"status": "proved"}],
     [{"text": "—"}],
     [{"code": "denoteRows_straight"}]],
    [[{"code": "denoteRowsB_straight"}],
     [{"status": "proved"}],
     [{"text": "—"}],
     [{"text": "—"}]],
    [[{"code": "checkModule_conservative"}],
     [{"status": "proved"}],
     [{"text": "—"}],
     [{"code": "defs_conservative"}]],
    [[{"code": "checkModule_eq_check"}],
     [{"status": "proved"}],
     [{"text": "—"}],
     [{"text": "—"}]],
    [[{"code": "defs_conservative"}],
     [{"status": "proved"}],
     [{"text": "—"}],
     [{"code": "cata_eff_congr_on"},
      {"text": ", "},
      {"code": "hom_eq_cata_eff"}]],
    [[{"code": "moduleHasTy_ext"}],
     [{"status": "proved"}],
     [{"text": "—"}],
     [{"text": "—"}]],
    [[{"code": "typeOfProgram_ext"}],
     [{"status": "proved"}],
     [{"text": "—"}],
     [{"code": "checkModule_sound"},
      {"text": ", "},
      {"code": "moduleHasTy_ext"},
      {"text": ", "},
      {"code": "checkModule_complete"}]],
    [[{"code": "check_sound"}],
     [{"status": "proved"}],
     [{"text": "—"}],
     [{"text": "—"}]],
    [[{"code": "check_complete"}],
     [{"status": "proved"}],
     [{"text": "—"}],
     [{"text": "—"}]],
    [[{"code": "cata_eff_congr_on"}],
     [{"status": "proved"}],
     [{"text": "—"}],
     [{"text": "—"}]],
    [[{"code": "hom_eq_cata_eff"}],
     [{"status": "proved"}],
     [{"text": "—"}],
     [{"text": "—"}]],
    [[{"code": "denoteRows_straight"}],
     [{"status": "proved"}],
     [{"text": "—"}],
     [{"text": "—"}]],
    [[{"code": "checkModule_sound"}],
     [{"status": "proved"}],
     [{"text": "—"}],
     [{"code": "check_sound"}]],
    [[{"code": "checkModule_complete"}],
     [{"status": "proved"}],
     [{"text": "—"}],
     [{"code": "checkModule_eq_check"},
      {"text": ", "},
      {"code": "check_complete"}]]],
   "kind": "table",
   "headers": ["Node", "Status", "Rests on", "Nearest nodes"]}]}
