{
  "schema_version": "ocme-derivation-reader-v1",
  "guide_id": "derivation-mko-function-mapping-01",
  "mko_id": "mko-function-mapping",
  "title": {
    "zh-Hant": "函數映射：判定對應是否為函數，並分辨陪域、值域與圖形",
    "en": "Function mapping: deciding whether a rule is a function, and separating codomain, range and graph"
  },
  "contract": {
    "schema_version": "ocme-derivation-guide-v0.1",
    "guide_id": "derivation-mko-function-mapping-01",
    "source": {
      "mko_id": "mko-function-mapping",
      "commit": "b28a5edbd46279b1db2a3f3f48bb3f447e18899f",
      "sha256": "f103408037c3680d770316d998ec3b92d19797f2865d8c94fa74efaf38bbc2b0",
      "english_sha256": "d94512a955a174d5185733591c5b2d72ff09a0546f48e27a9024138e9275b64b"
    },
    "mode": "definition_walkthrough",
    "audience_prerequisites": [
      "function_def",
      "image_preimage_def",
      "injective_surjective_def",
      "cartesian_product_def",
      "finite_forall"
    ],
    "goal": {
      "zh-Hant": "設 X={−2,−1,0,1,2}、Y={0,1,2,3,4,5}，f:X→Y，f(x)=x²。證明 f 是函數；算出值域 f(X)={0,1,4} 並說明 f(X)≠Y；寫出圖形 Γ_f；說明把陪域改成 {0,1,4} 會得到不同的函數。再判定兩個非例：反向規則 s(y)=「X 中滿足 x²=y 的 x」不是 Y→X 的函數；g(x)=x+4 不是 X→Y 的函數。",
      "en": "Let X={−2,−1,0,1,2}, Y={0,1,2,3,4,5} and f:X→Y, f(x)=x². Prove that f is a function; compute the range f(X)={0,1,4} and show f(X)≠Y; write down the graph Γ_f; and show that changing the codomain to {0,1,4} gives a different function. Then decide two non-examples: the reverse rule s(y)='the x in X with x²=y' is not a function Y→X, and g(x)=x+4 is not a function X→Y."
    },
    "givens": [
      {
        "id": "G1",
        "statement": {
          "zh-Hant": "X={−2,−1,0,1,2}，Y={0,1,2,3,4,5}，兩者都是明示的整數集合（假設 a1）。",
          "en": "X={−2,−1,0,1,2} and Y={0,1,2,3,4,5}, both explicit sets of integers (assumption a1)."
        }
      },
      {
        "id": "G2",
        "statement": {
          "zh-Hant": "f:X→Y 由規則 f(x)=x² 給出。",
          "en": "f:X→Y is given by the rule f(x)=x²."
        }
      },
      {
        "id": "G3",
        "statement": {
          "zh-Hant": "兩個比較用的規則：s 從 Y 到 X，s(y) 為「X 中滿足 x²=y 的 x」；g 從 X 到 Y，g(x)=x+4。",
          "en": "Two rules for comparison: s from Y to X, with s(y) 'the x in X such that x²=y'; and g from X to Y, with g(x)=x+4."
        }
      }
    ],
    "steps": [
      {
        "id": "S01",
        "uses": [
          "G1",
          "G2"
        ],
        "before_tex": "\\text{rule }x\\mapsto x^2",
        "after_tex": "f:X\\to Y,\\ X=\\{-2,-1,0,1,2\\},\\ Y=\\{0,1,2,3,4,5\\},\\ f(x)=x^2",
        "relation": "definition",
        "rule": "def_intro",
        "conditions": [],
        "explanation": {
          "zh-Hant": "宣告 f:X→Y 同時給出三項資料：定義域 X、陪域 Y，以及對應規則 x↦x²。依 MKO，函數的核心是「每個允許的輸入對應唯一輸出」這條規則，而不是畫出的曲線；X、Y 是明示的集合（假設 a1）。",
          "en": "Declaring f:X→Y supplies three pieces of data: the domain X, the codomain Y, and the rule x↦x². By the MKO, the core of a function is the rule that every allowed input has exactly one output, not a drawn curve; X and Y are explicit sets (assumption a1)."
        },
        "reverse_audit": {
          "kind": "premise_audit",
          "required_ids": [
            "G1",
            "G2",
            "def_intro"
          ],
          "explanation": {
            "zh-Hant": "此步只宣告；f 是否真的是 X→Y 的函數（假設 a2）要在 S02 到 S06 檢查，不能預設。",
            "en": "This step only declares; whether f really is a function X→Y (assumption a2) is checked in S02 to S06 and cannot be presupposed."
          }
        },
        "leaf_basis": "def_intro + mko_function_def"
      },
      {
        "id": "S02",
        "uses": [
          "S01",
          "mko_function_def"
        ],
        "before_tex": "f:X\\to Y\\ \\text{is a function}",
        "after_tex": "\\forall x\\in X:\\ x^2\\in Y\\ \\land\\ \\forall y,y'\\ (y=x^2\\land y'=x^2\\Rightarrow y=y')",
        "relation": "equivalent",
        "rule": "mko_function_def",
        "conditions": [],
        "explanation": {
          "zh-Hant": "依 MKO 的定義，f:X→Y 是函數，當且僅當 X 中每個輸入都在 Y 中有輸出（存在），而且只有一個（唯一）。對規則 x↦x²，存在性就是 x²∈Y；唯一性是：若 y、y′ 都等於 x²，則 y=y′。",
          "en": "By the MKO's definition, f:X→Y is a function exactly when every input in X has an output in Y (existence) and only one (uniqueness). For the rule x↦x², existence means x²∈Y, and uniqueness means that if y and y′ both equal x², then y=y′."
        },
        "reverse_audit": {
          "kind": "inverse_equivalence",
          "required_ids": [
            "mko_function_def",
            "function_def"
          ],
          "explanation": {
            "zh-Hant": "這是定義的展開，雙向成立；三個要求（有輸出、輸出在 Y 中、輸出唯一）缺一不可。",
            "en": "This unfolds the definition and holds both ways; none of the three requirements (an output exists, it lies in Y, it is unique) may be dropped."
          }
        },
        "leaf_basis": "mko_function_def + function_def + def_unfold"
      },
      {
        "id": "S03",
        "uses": [
          "G1",
          "G2"
        ],
        "before_tex": "(-2)^2,\\ (-1)^2,\\ 0^2,\\ 1^2,\\ 2^2",
        "after_tex": "4,\\ 1,\\ 0,\\ 1,\\ 4",
        "relation": "implies",
        "rule": "numeric_evaluation",
        "conditions": [],
        "explanation": {
          "zh-Hant": "逐一計算 X 的五個輸入的平方：(−2)²=4、(−1)²=1、0²=0、1²=1、2²=4。負數的平方是正數，所以 −2 與 2 得到同一個值。",
          "en": "Square each of the five inputs of X: (−2)²=4, (−1)²=1, 0²=0, 1²=1, 2²=4. The square of a negative number is positive, so −2 and 2 give the same value."
        },
        "reverse_audit": {
          "kind": "premise_audit",
          "required_ids": [
            "numeric_evaluation",
            "G1"
          ],
          "explanation": {
            "zh-Hant": "每個值都可獨立重算（N1 到 N5）；X 恰好有這五個元素，所以這是完整計算。",
            "en": "Each value can be recomputed independently (N1 to N5); X has exactly these five elements, so the computation is complete."
          }
        },
        "leaf_basis": "numeric_evaluation + neg_mul"
      },
      {
        "id": "S04",
        "uses": [
          "S03",
          "G1"
        ],
        "before_tex": "f(x)\\in\\{4,1,0,1,4\\}",
        "after_tex": "\\forall x\\in X:\\ f(x)\\in Y",
        "relation": "implies",
        "rule": "finite_forall",
        "conditions": [],
        "explanation": {
          "zh-Hant": "4、1、0 都在 Y={0,1,2,3,4,5} 的列舉中。X 是有限列舉，五個輸入全部檢查過，依 finite_forall，每個輸入都在 Y 中有輸出。這是對 X 全部元素的窮舉，不是抽樣；若 X 有無限多個元素，就需要一般論證。",
          "en": "4, 1 and 0 all appear in the list Y={0,1,2,3,4,5}. X is a finite list and all five inputs have been checked, so by finite_forall every input has an output in Y. This is an exhaustive check of all of X, not a sample; for an infinite X a general argument would be needed."
        },
        "reverse_audit": {
          "kind": "premise_audit",
          "required_ids": [
            "S03",
            "finite_forall"
          ],
          "explanation": {
            "zh-Hant": "窮舉之所以足夠，是因為 X 恰好是這五個元素（G1）；反向（Y 的每個元素都是輸出）並未宣稱，S08 證明它不成立。",
            "en": "Enumeration suffices because X consists of exactly these five elements (G1); the converse (every element of Y is an output) is not claimed, and S08 shows it fails."
          }
        },
        "leaf_basis": "finite_forall + numeric_evaluation"
      },
      {
        "id": "S05",
        "uses": [
          "S02"
        ],
        "before_tex": "y=x^2,\\ y'=x^2",
        "after_tex": "y=y'",
        "relation": "implies",
        "rule": "eq_refl_symm_trans",
        "conditions": [],
        "explanation": {
          "zh-Hant": "設對同一個 x，y 與 y′ 都是 f 的輸出，即 y=x²、y′=x²。依等號的對稱與傳遞，y=y′。x² 是由 x 確定的一個數，所以一個輸入不會有兩個不同輸出。這個論證對每個 x 都成立，不需逐一檢查。",
          "en": "Suppose that for the same x, both y and y′ are outputs of f, that is y=x² and y′=x². By symmetry and transitivity of equality, y=y′. x² is a definite number determined by x, so one input cannot have two different outputs. This argument holds for every x without a case-by-case check."
        },
        "reverse_audit": {
          "kind": "premise_audit",
          "required_ids": [
            "eq_refl_symm_trans",
            "forall_intro"
          ],
          "explanation": {
            "zh-Hant": "只用到等號的性質；反向「不同輸入有不同輸出」並未宣稱，S10 證明它不成立。",
            "en": "Only properties of equality are used; the converse, that different inputs have different outputs, is not claimed, and S10 shows it fails."
          }
        },
        "leaf_basis": "eq_refl_symm_trans + forall_intro"
      },
      {
        "id": "S06",
        "uses": [
          "S02",
          "S04",
          "S05"
        ],
        "before_tex": "\\text{existence (S04)},\\ \\text{uniqueness (S05)}",
        "after_tex": "f:X\\to Y\\ \\text{is a function}",
        "relation": "implies",
        "rule": "mko_function_def",
        "conditions": [],
        "explanation": {
          "zh-Hant": "存在性（S04）與唯一性（S05）都成立，依 S02 的等價，f:X→Y 是函數，滿足假設 a2。",
          "en": "Existence (S04) and uniqueness (S05) both hold, so by the equivalence S02, f:X→Y is a function, satisfying assumption a2."
        },
        "reverse_audit": {
          "kind": "sufficient_goal_reduction",
          "required_ids": [
            "S02",
            "S04",
            "S05",
            "mko_function_def"
          ],
          "explanation": {
            "zh-Hant": "目標 G：f 是 X→Y 的函數。足夠條件 H：存在性與唯一性；H⇒G 由 S02。H 由 S04、S05 正向證成，沒有把 G 當作前提。",
            "en": "Goal G: f is a function X→Y. Sufficient condition H: existence and uniqueness; H⇒G by S02. H is proved forwards in S04 and S05; G is never used as a premise."
          }
        },
        "leaf_basis": "mko_function_def + and_intro_elim"
      },
      {
        "id": "S07",
        "uses": [
          "S03",
          "S06"
        ],
        "before_tex": "f(X)=\\{f(x)\\mid x\\in X\\}",
        "after_tex": "f(X)=\\{0,1,4\\}",
        "relation": "equivalent",
        "rule": "image_preimage_def",
        "conditions": [],
        "explanation": {
          "zh-Hant": "值域（像）是實際輸出的集合 f(X)={f(x) ∣ x∈X}。由 S03，輸出依次是 4、1、0、1、4；重複的輸出在集合中只算一次，所以 f(X)={0,1,4}。",
          "en": "The range (image) is the set of actual outputs f(X)={f(x) ∣ x∈X}. By S03 the outputs are 4, 1, 0, 1, 4 in order; repeated outputs count once in a set, so f(X)={0,1,4}."
        },
        "reverse_audit": {
          "kind": "inverse_equivalence",
          "required_ids": [
            "image_preimage_def",
            "set_extensionality",
            "finite_forall"
          ],
          "explanation": {
            "zh-Hant": "y∈f(X) ⇔ 有某個 x∈X 使 f(x)=y；依 finite_forall 逐一對照五個輸入，兩邊元素相同，雙向成立。",
            "en": "y∈f(X) ⇔ f(x)=y for some x∈X; comparing the five inputs one by one by finite_forall, both sides have the same elements, so the step holds both ways."
          }
        },
        "leaf_basis": "image_preimage_def + finite_forall + set_extensionality"
      },
      {
        "id": "S08",
        "uses": [
          "S04",
          "S07"
        ],
        "before_tex": "f(X)=\\{0,1,4\\}\\subseteq Y,\\ 2\\in Y",
        "after_tex": "2\\notin f(X),\\ f(X)\\neq Y",
        "relation": "implies",
        "rule": "L_no_root_2",
        "conditions": [],
        "explanation": {
          "zh-Hant": "f(X)⊆Y（每個輸出都在 Y 中，S04）。依引理 L_no_root_2（在 S08.1、S08.2 證明），X 中沒有 x 使 x²=2，所以 2∉f(X)；但 2∈Y。因此 f(X)≠Y：陪域不等於值域，f:X→Y 不是滿射。這正是 MKO 說的「陪域 Y 不必等於實際值域」。同理 3、5 也不在 f(X) 中。",
          "en": "f(X)⊆Y (every output is in Y, S04). By Lemma L_no_root_2 (proved in S08.1 and S08.2), no x in X has x²=2, so 2∉f(X); but 2∈Y. Hence f(X)≠Y: the codomain is not the range, and f:X→Y is not surjective. This is the MKO's point that the codomain Y need not equal the actual range. Likewise 3 and 5 are not in f(X)."
        },
        "reverse_audit": {
          "kind": "premise_audit",
          "required_ids": [
            "L_no_root_2",
            "set_extensionality",
            "injective_surjective_def"
          ],
          "explanation": {
            "zh-Hant": "一個屬於 Y 而不屬於 f(X) 的元素就足以否定 f(X)=Y。2∉f(X) 依賴對 X 全部輸入的檢查（引理）；在 ℝ 中 x²=2 有解 √2，所以結論只對這個 X 成立。",
            "en": "One element of Y outside f(X) is enough to refute f(X)=Y. 2∉f(X) relies on checking every input of X (the lemma); in ℝ, x²=2 has the solution √2, so the conclusion holds only for this X."
          }
        },
        "leaf_basis": "quantifier_negation + finite_forall + set_extensionality + injective_surjective_def"
      },
      {
        "id": "S08.1",
        "uses": [
          "image_preimage_def"
        ],
        "before_tex": "\\neg\\exists x\\in X:\\ x^2=2",
        "after_tex": "\\forall x\\in X:\\ x^2\\neq 2",
        "relation": "equivalent",
        "rule": "quantifier_negation",
        "conditions": [],
        "explanation": {
          "zh-Hant": "2∈f(X) 依像的定義是 ∃x∈X, x²=2。依量詞否定，「沒有這樣的 x」等價於「每個 x∈X 都有 x²≠2」。",
          "en": "By the definition of image, 2∈f(X) means ∃x∈X, x²=2. By negating the quantifier, 'there is no such x' is equivalent to 'every x∈X has x²≠2'."
        },
        "reverse_audit": {
          "kind": "inverse_equivalence",
          "required_ids": [
            "quantifier_negation"
          ],
          "explanation": {
            "zh-Hant": "量詞否定本身是等價，雙向成立。",
            "en": "Quantifier negation is itself an equivalence, so the step holds both ways."
          }
        },
        "leaf_basis": "quantifier_negation + image_preimage_def"
      },
      {
        "id": "S08.2",
        "uses": [
          "S03",
          "S08.1"
        ],
        "before_tex": "x^2\\in\\{4,1,0,1,4\\}\\ (x\\in X)",
        "after_tex": "\\forall x\\in X:\\ x^2\\neq 2",
        "relation": "implies",
        "rule": "finite_forall",
        "conditions": [],
        "explanation": {
          "zh-Hant": "由 S03，X 的五個輸入的平方是 4、1、0、1、4，沒有一個等於 2。依 finite_forall，∀x∈X, x²≠2；再依 S08.1，X 中沒有 x 使 x²=2。S08.1 與 S08.2 合起來證得引理 L_no_root_2。",
          "en": "By S03, the squares of the five inputs of X are 4, 1, 0, 1, 4, and none equals 2. By finite_forall, ∀x∈X, x²≠2; by S08.1, no x in X has x²=2. S08.1 and S08.2 together prove Lemma L_no_root_2."
        },
        "reverse_audit": {
          "kind": "premise_audit",
          "required_ids": [
            "S03",
            "finite_forall"
          ],
          "explanation": {
            "zh-Hant": "五個元素全部檢查，所以對 X 是完整的；N6 以 x=−2 到 2 的整數重做同一檢查，那正是 X 的全部元素。",
            "en": "All five elements are checked, so the check is complete for X; N6 repeats it over the integers from −2 to 2, which are exactly the elements of X."
          }
        },
        "leaf_basis": "finite_forall + numeric_evaluation"
      },
      {
        "id": "S09",
        "uses": [
          "S03",
          "S06"
        ],
        "before_tex": "\\Gamma_f=\\{(x,f(x))\\mid x\\in X\\}",
        "after_tex": "\\Gamma_f=\\{(-2,4),(-1,1),(0,0),(1,1),(2,4)\\}\\subseteq X\\times Y",
        "relation": "equivalent",
        "rule": "graph_def",
        "conditions": [],
        "explanation": {
          "zh-Hant": "依圖形定義，代入 S03 的值得到五個有序對。Γ_f 是 X×Y 的子集合：X×Y 有 5·6=30 個有序對，Γ_f 只取其中 5 個，每個輸入恰好一個。比較三個對象：陪域 Y 有 6 個數，值域 f(X) 有 3 個數，圖形 Γ_f 有 5 個有序對。前兩者是 Y 的子集合，圖形是 X×Y 的子集合；它們是不同的數學對象。",
          "en": "By the definition of the graph, substituting the values of S03 gives five ordered pairs. Γ_f is a subset of X×Y: X×Y has 5·6=30 ordered pairs, and Γ_f takes 5 of them, exactly one per input. Compare the three objects: the codomain Y has 6 numbers, the range f(X) has 3 numbers, and the graph Γ_f has 5 ordered pairs. The first two are subsets of Y, the graph is a subset of X×Y; they are different mathematical objects."
        },
        "reverse_audit": {
          "kind": "inverse_equivalence",
          "required_ids": [
            "graph_def",
            "finite_forall",
            "set_extensionality"
          ],
          "explanation": {
            "zh-Hant": "對 X 的每個元素各有一對，列舉與定義元素相同，雙向成立。",
            "en": "There is one pair for each element of X, so the list and the definition have the same elements, and the step holds both ways."
          }
        },
        "leaf_basis": "graph_def + cartesian_product_def + finite_counting_basics + numeric_evaluation"
      },
      {
        "id": "S10",
        "uses": [
          "S03"
        ],
        "before_tex": "f(-1)=1,\\ f(1)=1",
        "after_tex": "f(-1)=f(1),\\ -1\\neq 1:\\ f\\ \\text{not injective}",
        "relation": "implies",
        "rule": "injective_surjective_def",
        "conditions": [],
        "explanation": {
          "zh-Hant": "f(−1)=1=f(1)，但 −1≠1，所以 f 不是單射：不同輸入可以有相同輸出。這不違反函數定義，因為定義只要求每個輸入的輸出唯一，不要求每個輸出只來自一個輸入。",
          "en": "f(−1)=1=f(1) but −1≠1, so f is not injective: different inputs may share an output. This does not violate the definition of a function, which requires each input to have a unique output, not each output to come from a single input."
        },
        "reverse_audit": {
          "kind": "premise_audit",
          "required_ids": [
            "injective_surjective_def",
            "S03"
          ],
          "explanation": {
            "zh-Hant": "一組反例就足以否定單射；不宣稱這影響 f 是否為函數（S06 已證 f 是函數）。",
            "en": "One counterexample pair refutes injectivity; it is not claimed that this affects whether f is a function (S06 proved that it is)."
          }
        },
        "leaf_basis": "injective_surjective_def + numeric_evaluation"
      },
      {
        "id": "S11",
        "uses": [
          "S03",
          "S05",
          "S08"
        ],
        "before_tex": "f_1:X\\to\\{0,1,4\\},\\ f_1(x)=x^2",
        "after_tex": "f_1\\ \\text{is a surjective function},\\ f_1\\neq f",
        "relation": "implies",
        "rule": "function_def",
        "conditions": [],
        "explanation": {
          "zh-Hant": "用同一規則宣告 f₁:X→{0,1,4}。S11.1 到 S11.3 證明：f₁ 是函數、是滿射，而且 f₁≠f。f₁ 與 f 有相同的規則、圖形與值域，只差在陪域；依 function_def，陪域是函數資料的一部分。",
          "en": "Declare f₁:X→{0,1,4} with the same rule. S11.1 to S11.3 prove that f₁ is a function, that it is surjective, and that f₁≠f. f₁ and f share the rule, the graph and the range and differ only in the codomain; by function_def the codomain is part of the data of a function."
        },
        "reverse_audit": {
          "kind": "premise_audit",
          "required_ids": [
            "function_def",
            "injective_surjective_def"
          ],
          "explanation": {
            "zh-Hant": "三個子結論各由一個子步給出；不宣稱 f₁ 是單射（f₁(−1)=f₁(1)）。",
            "en": "Each of the three sub-conclusions is given by one sub-step; it is not claimed that f₁ is injective (f₁(−1)=f₁(1))."
          }
        },
        "leaf_basis": "function_def + injective_surjective_def + set_extensionality"
      },
      {
        "id": "S11.1",
        "uses": [
          "S03",
          "S05"
        ],
        "before_tex": "f_1(x)\\in\\{4,1,0,1,4\\}",
        "after_tex": "f_1:X\\to\\{0,1,4\\}\\ \\text{is a function}",
        "relation": "implies",
        "rule": "finite_forall",
        "conditions": [],
        "explanation": {
          "zh-Hant": "由 S03，五個輸出都在 {0,1,4} 中，依 finite_forall 存在性成立；唯一性與 S05 相同。所以 f₁ 是函數。",
          "en": "By S03 all five outputs lie in {0,1,4}, so existence holds by finite_forall; uniqueness is as in S05. So f₁ is a function."
        },
        "reverse_audit": {
          "kind": "premise_audit",
          "required_ids": [
            "S03",
            "S05",
            "finite_forall",
            "mko_function_def"
          ],
          "explanation": {
            "zh-Hant": "需要每個輸出都落在新陪域中；這是對 X 的完整檢查。",
            "en": "Every output must lie in the new codomain; this is a complete check over X."
          }
        },
        "leaf_basis": "finite_forall + mko_function_def"
      },
      {
        "id": "S11.2",
        "uses": [
          "S03",
          "S11.1"
        ],
        "before_tex": "0=f_1(0),\\ 1=f_1(1),\\ 4=f_1(2)",
        "after_tex": "f_1\\ \\text{is surjective}",
        "relation": "implies",
        "rule": "injective_surjective_def",
        "conditions": [],
        "explanation": {
          "zh-Hant": "陪域 {0,1,4} 的每個元素都有原像：0=f₁(0)、1=f₁(1)、4=f₁(2)。依 finite_forall 與滿射定義，f₁ 是滿射。",
          "en": "Every element of the codomain {0,1,4} has a preimage: 0=f₁(0), 1=f₁(1), 4=f₁(2). By finite_forall and the definition of surjective, f₁ is surjective."
        },
        "reverse_audit": {
          "kind": "premise_audit",
          "required_ids": [
            "injective_surjective_def",
            "finite_forall"
          ],
          "explanation": {
            "zh-Hant": "陪域三個元素逐一給出原像，是完整檢查。",
            "en": "A preimage is given for each of the three elements of the codomain, a complete check."
          }
        },
        "leaf_basis": "injective_surjective_def + finite_forall + exists_intro"
      },
      {
        "id": "S11.3",
        "uses": [
          "S08",
          "S11.1"
        ],
        "before_tex": "\\text{codomain of }f_1=\\{0,1,4\\},\\ \\text{codomain of }f=Y",
        "after_tex": "f_1\\neq f",
        "relation": "implies",
        "rule": "function_def",
        "conditions": [],
        "explanation": {
          "zh-Hant": "2∈Y 但 2∉{0,1,4}，所以兩個陪域不同。依 function_def，兩函數相等需要相同的定義域、陪域與每點的值，所以 f₁≠f，儘管兩者每點的值都相同。",
          "en": "2∈Y but 2∉{0,1,4}, so the two codomains differ. By function_def, equal functions need the same domain, codomain and values at every point, so f₁≠f, even though the two agree at every point."
        },
        "reverse_audit": {
          "kind": "premise_audit",
          "required_ids": [
            "function_def",
            "set_extensionality"
          ],
          "explanation": {
            "zh-Hant": "依賴「陪域是函數資料的一部分」這個約定（function_def，與 MKO 一致）；若只把函數看作圖形，f 與 f₁ 會被視為相同，本稿不採這個約定。",
            "en": "This relies on the convention that the codomain is part of a function's data (function_def, consistent with the MKO); if a function were identified with its graph alone, f and f₁ would count as equal, and this guide does not adopt that convention."
          }
        },
        "leaf_basis": "function_def + set_extensionality"
      },
      {
        "id": "S12",
        "uses": [
          "G3",
          "S03"
        ],
        "before_tex": "y=1:\\ \\{x\\in X\\mid x^2=1\\}",
        "after_tex": "\\{-1,1\\}:\\ \\text{two candidate outputs}",
        "relation": "implies",
        "rule": "mko_function_def",
        "conditions": [],
        "explanation": {
          "zh-Hant": "考慮反向規則 s：對 y∈Y，s(y) 是 X 中滿足 x²=y 的 x。y=1 時，x=−1 與 x=1 都滿足（S03），而 −1≠1：一個輸入有兩個候選輸出，唯一性失敗，所以 s 不是 Y→X 的函數。這與 S10 的非單射直接相關。",
          "en": "Consider the reverse rule s: for y∈Y, s(y) is the x in X with x²=y. For y=1, both x=−1 and x=1 qualify (S03), and −1≠1: one input has two candidate outputs, uniqueness fails, so s is not a function Y→X. This is directly linked to the failure of injectivity in S10."
        },
        "reverse_audit": {
          "kind": "premise_audit",
          "required_ids": [
            "mko_function_def",
            "S03"
          ],
          "explanation": {
            "zh-Hant": "一個違反唯一性的輸入就足以否定是函數。",
            "en": "One input violating uniqueness is enough to show the rule is not a function."
          }
        },
        "leaf_basis": "mko_function_def + finite_forall + numeric_evaluation"
      },
      {
        "id": "S13",
        "uses": [
          "G3",
          "S08"
        ],
        "before_tex": "y=2:\\ \\{x\\in X\\mid x^2=2\\}",
        "after_tex": "\\varnothing:\\ \\text{no output}",
        "relation": "implies",
        "rule": "mko_function_def",
        "conditions": [],
        "explanation": {
          "zh-Hant": "y=2 時，依引理 L_no_root_2，X 中沒有 x 使 x²=2：這個輸入沒有輸出，存在性也失敗。S12 與 S13 各自就足以說明 s 不是 Y→X 的函數；s 同時犯了「多個輸出」與「沒有輸出」兩種錯。",
          "en": "For y=2, by Lemma L_no_root_2 no x in X has x²=2: this input has no output, so existence fails as well. S12 and S13 each suffice to show that s is not a function Y→X; s commits both errors, 'several outputs' and 'no output'."
        },
        "reverse_audit": {
          "kind": "premise_audit",
          "required_ids": [
            "L_no_root_2",
            "mko_function_def"
          ],
          "explanation": {
            "zh-Hant": "只需一個沒有輸出的輸入；結論依賴 X 的具體內容。",
            "en": "One input without an output is enough; the conclusion depends on the actual contents of X."
          }
        },
        "leaf_basis": "mko_function_def + quantifier_negation + finite_forall"
      },
      {
        "id": "S14",
        "uses": [
          "G1",
          "G3"
        ],
        "before_tex": "g(2)=2+4",
        "after_tex": "g(2)=6\\notin Y:\\ g\\ \\text{is not a function }X\\to Y",
        "relation": "implies",
        "rule": "mko_function_def",
        "conditions": [],
        "explanation": {
          "zh-Hant": "規則 g(x)=x+4 在輸入 2 給出 6，而 6∉Y（Y 的最大元素是 5），所以輸入 2 在 Y 中沒有輸出，g 不是 X→Y 的函數。同一規則若宣告為 g:X→ℤ，每個 x+4 都是唯一的整數，就是函數。是否為函數取決於宣告的陪域，不只取決於公式。",
          "en": "The rule g(x)=x+4 gives 6 at the input 2, and 6∉Y (the largest element of Y is 5), so the input 2 has no output in Y and g is not a function X→Y. Declared as g:X→ℤ, the same rule gives a unique integer x+4 for every x and is a function. Whether a rule is a function depends on the declared codomain, not only on the formula."
        },
        "reverse_audit": {
          "kind": "premise_audit",
          "required_ids": [
            "mko_function_def",
            "G1",
            "numeric_evaluation"
          ],
          "explanation": {
            "zh-Hant": "一個輸出落在陪域外就足以否定 g:X→Y；對 g:X→ℤ 的肯定只用到整數對加法封閉。",
            "en": "One output outside the codomain is enough to refute g:X→Y; the positive claim for g:X→ℤ only uses closure of the integers under addition."
          }
        },
        "leaf_basis": "mko_function_def + numeric_evaluation"
      },
      {
        "id": "S15",
        "uses": [
          "S06",
          "S07",
          "S08",
          "S09",
          "S11",
          "S12",
          "S13",
          "S14"
        ],
        "before_tex": "f,\\ f_1,\\ s,\\ g",
        "after_tex": "f,f_1\\ \\text{functions};\\ f(X)=\\{0,1,4\\}\\neq Y;\\ s,g\\ \\text{not functions as declared}",
        "relation": "implies",
        "rule": "and_intro_elim",
        "conditions": [],
        "explanation": {
          "zh-Hant": "彙整：f:X→Y 是函數（S06），值域 {0,1,4} 不等於陪域 Y（S07、S08），圖形是 5 個有序對（S09）；換陪域得到不同的滿射 f₁（S11）；s 不是 Y→X 的函數（S12、S13）；g 不是 X→Y 的函數（S14）。",
          "en": "Collect the results: f:X→Y is a function (S06); its range {0,1,4} is not the codomain Y (S07, S08); its graph has 5 ordered pairs (S09); changing the codomain gives a different, surjective function f₁ (S11); s is not a function Y→X (S12, S13); g is not a function X→Y (S14)."
        },
        "reverse_audit": {
          "kind": "sufficient_goal_reduction",
          "required_ids": [
            "S06",
            "S07",
            "S08",
            "S09",
            "S11",
            "S12",
            "S13",
            "S14",
            "and_intro_elim"
          ],
          "explanation": {
            "zh-Hant": "目標 G 是題目各項結論的合取；每一項都由所列步驟正向證成，此步只做合取，沒有把 G 當作前提。",
            "en": "Goal G is the conjunction of the problem's conclusions; each is proved forwards by the listed steps, and this step only forms the conjunction; G is never used as a premise."
          }
        },
        "leaf_basis": "and_intro_elim"
      }
    ],
    "result": {
      "zh-Hant": "f:X→Y，f(x)=x²，是函數：每個輸入在 Y 中恰有一個輸出。它的值域是 {0,1,4}，不等於陪域 Y={0,1,2,3,4,5}（2∉f(X)），圖形是 {(−2,4),(−1,1),(0,0),(1,1),(2,4)}；陪域、值域、圖形是三個不同的對象。把陪域改為 {0,1,4} 得到不同的函數 f₁，它是滿射。反向規則 s 在 y=1 有兩個候選、在 y=2 沒有輸出，不是函數；g(x)=x+4 因 g(2)=6∉Y 而不是 X→Y 的函數。",
      "en": "f:X→Y, f(x)=x², is a function: each input has exactly one output in Y. Its range is {0,1,4}, which is not the codomain Y={0,1,2,3,4,5} (2∉f(X)), and its graph is {(−2,4),(−1,1),(0,0),(1,1),(2,4)}; codomain, range and graph are three different objects. Changing the codomain to {0,1,4} gives a different function f₁, which is surjective. The reverse rule s has two candidates at y=1 and no output at y=2, so it is not a function; g(x)=x+4 is not a function X→Y because g(2)=6∉Y."
    },
    "negative_controls": [
      {
        "claim": {
          "zh-Hant": "f 的陪域是 {0,1,4}",
          "en": "The codomain of f is {0,1,4}"
        },
        "expected": "reject",
        "reason": {
          "zh-Hant": "宣告的陪域是 Y={0,1,2,3,4,5}；{0,1,4} 是值域（S07、S08）。",
          "en": "The declared codomain is Y={0,1,2,3,4,5}; {0,1,4} is the range (S07, S08)."
        }
      },
      {
        "claim": {
          "zh-Hant": "f(−1)=f(1)，所以 f 不是函數",
          "en": "f(−1)=f(1), so f is not a function"
        },
        "expected": "reject",
        "reason": {
          "zh-Hant": "函數只要求每個輸入的輸出唯一；f 只是不是單射（S06、S10）。",
          "en": "A function only needs each input's output to be unique; f is merely not injective (S06, S10)."
        }
      },
      {
        "claim": {
          "zh-Hant": "s(y)=「X 中滿足 x²=y 的 x」定義了 Y→X 的函數",
          "en": "s(y)='the x in X with x²=y' defines a function Y→X"
        },
        "expected": "reject",
        "reason": {
          "zh-Hant": "y=1 有兩個候選 −1、1，y=2 沒有候選（S12、S13）。",
          "en": "y=1 has the two candidates −1 and 1, and y=2 has none (S12, S13)."
        }
      },
      {
        "claim": {
          "zh-Hant": "g(x)=x+4 是 X→Y 的函數",
          "en": "g(x)=x+4 is a function X→Y"
        },
        "expected": "reject",
        "reason": {
          "zh-Hant": "g(2)=6∉Y（S14）。",
          "en": "g(2)=6∉Y (S14)."
        }
      },
      {
        "claim": {
          "zh-Hant": "f 與 f₁ 有相同的圖形，所以 f=f₁",
          "en": "f and f₁ have the same graph, so f=f₁"
        },
        "expected": "reject",
        "reason": {
          "zh-Hant": "陪域不同（2∈Y 但 2∉{0,1,4}），依 function_def 兩者不同（S11.3）。",
          "en": "Their codomains differ (2∈Y but 2∉{0,1,4}), so by function_def they are different (S11.3)."
        }
      }
    ],
    "status": "candidate",
    "gaps": [],
    "verification": {
      "structure": "checked_local_script",
      "mathematics": "candidate_argument",
      "formalization": "not_formalized"
    },
    "rule_glossary": [
      {
        "id": "function_def",
        "kind": "prerequisite",
        "statement": {
          "zh-Hant": "函數：f:A→B 對每個 a∈A 指定恰好一個 f(a)∈B。兩函數相等 ⇔ 定義域、對應域相同且對每個 a 都有相同值。",
          "en": "Function: f:A→B assigns to each a∈A exactly one f(a)∈B. Two functions are equal ⇔ they have the same domain and codomain and agree at every a."
        }
      },
      {
        "id": "image_preimage_def",
        "kind": "prerequisite",
        "statement": {
          "zh-Hant": "像與原像：f(S)={f(a) ∣ a∈S}；f⁻¹(T)={a∈A ∣ f(a)∈T}。原像記號不預設 f 有反函數。",
          "en": "Image and preimage: f(S)={f(a) ∣ a∈S}; f⁻¹(T)={a∈A ∣ f(a)∈T}. The preimage notation does not presuppose that f has an inverse."
        }
      },
      {
        "id": "injective_surjective_def",
        "kind": "prerequisite",
        "statement": {
          "zh-Hant": "單射：f(a)=f(a′) ⇒ a=a′。滿射：每個 b∈B 都有 a∈A 使 f(a)=b。雙射：既單又滿，此時有唯一反函數 f⁻¹ 使 f⁻¹∘f=id_A、f∘f⁻¹=id_B。",
          "en": "Injective: f(a)=f(a′) ⇒ a=a′. Surjective: every b∈B has some a∈A with f(a)=b. Bijective: both; then there is a unique inverse f⁻¹ with f⁻¹∘f=id_A and f∘f⁻¹=id_B."
        }
      },
      {
        "id": "cartesian_product_def",
        "kind": "prerequisite",
        "statement": {
          "zh-Hant": "笛卡兒積：A×B 是所有有序對 (a,b)（a∈A、b∈B）的集合；(a,b)=(c,d) ⇔ a=c 且 b=d。",
          "en": "Cartesian product: A×B is the set of ordered pairs (a,b) with a∈A and b∈B; (a,b)=(c,d) ⇔ a=c and b=d."
        }
      },
      {
        "id": "def_intro",
        "kind": "prerequisite",
        "statement": {
          "zh-Hant": "引入定義：可為一個命題、式子或物件取名；之後名稱與被定義者可互相替換。",
          "en": "Introducing a definition: a statement, expression or object may be given a name, after which the name and what it stands for are interchangeable."
        }
      },
      {
        "id": "def_unfold",
        "kind": "prerequisite",
        "statement": {
          "zh-Hant": "展開定義：把一個已定義的詞換成它的定義內容（或反向收回），命題的真假不變。",
          "en": "Unfolding a definition: replacing a defined term by its definition (or folding it back) does not change whether a statement is true."
        }
      },
      {
        "id": "numeric_evaluation",
        "kind": "prerequisite",
        "statement": {
          "zh-Hant": "明確整數或有理數算式的精確求值；可以獨立重算。",
          "en": "Exact evaluation of an explicit integer or rational expression; independently recomputable."
        }
      },
      {
        "id": "neg_mul",
        "kind": "prerequisite",
        "statement": {
          "zh-Hant": "負號與乘法：(−u)v=−(uv)，(−u)(−v)=uv。",
          "en": "Signs and multiplication: (−u)v=−(uv) and (−u)(−v)=uv."
        }
      },
      {
        "id": "eq_refl_symm_trans",
        "kind": "prerequisite",
        "statement": {
          "zh-Hant": "等號的性質：u=u；若 u=v 則 v=u；若 u=v 且 v=w 則 u=w。",
          "en": "Properties of equality: u=u; if u=v then v=u; if u=v and v=w then u=w."
        }
      },
      {
        "id": "forall_intro",
        "kind": "prerequisite",
        "statement": {
          "zh-Hant": "∀引入（全稱推廣）：若某命題對一個「任意的」元素 x 證成，而證明沒有對 x 加任何額外假設，則它對論域中所有 x 成立。",
          "en": "∀-introduction (generalization): if a statement is proved for an arbitrary element x, with no extra assumption on x, it holds for every x in the domain."
        }
      },
      {
        "id": "and_intro_elim",
        "kind": "prerequisite",
        "statement": {
          "zh-Hant": "合取：由 P 與 Q 得 P∧Q；由 P∧Q 可分別得 P 與 Q。",
          "en": "Conjunction: from P and Q infer P∧Q; from P∧Q infer P and infer Q."
        }
      },
      {
        "id": "set_extensionality",
        "kind": "prerequisite",
        "statement": {
          "zh-Hant": "集合相等：A=B 當且僅當 A⊆B 且 B⊆A，即兩者有相同元素。",
          "en": "Set equality: A=B if and only if A⊆B and B⊆A, i.e. they have the same elements."
        }
      },
      {
        "id": "quantifier_negation",
        "kind": "prerequisite",
        "statement": {
          "zh-Hant": "量詞否定：¬(∀x, P(x)) 等價於 ∃x, ¬P(x)；¬(∃x, P(x)) 等價於 ∀x, ¬P(x)。",
          "en": "Negating quantifiers: ¬(∀x, P(x)) is equivalent to ∃x, ¬P(x), and ¬(∃x, P(x)) is equivalent to ∀x, ¬P(x)."
        }
      },
      {
        "id": "finite_counting_basics",
        "kind": "prerequisite",
        "statement": {
          "zh-Hant": "有限計數：互斥有限集合 A、B 有 |A∪B|=|A|+|B|；|A×B|=|A|·|B|；有限集之間存在雙射 ⇔ 元素個數相同。",
          "en": "Finite counting: for disjoint finite sets A, B, |A∪B|=|A|+|B|; |A×B|=|A|·|B|; there is a bijection between finite sets ⇔ they have the same number of elements."
        }
      },
      {
        "id": "exists_intro",
        "kind": "prerequisite",
        "statement": {
          "zh-Hant": "∃引入：若找到 a∈D 使 P(a) 成立，則 ∃x∈D, P(x)。",
          "en": "∃-introduction: if some a∈D satisfies P(a), then ∃x∈D, P(x)."
        }
      },
      {
        "id": "mko_function_def",
        "kind": "cited",
        "source": {
          "mko_id": "mko-function-mapping",
          "sha256": "f103408037c3680d770316d998ec3b92d19797f2865d8c94fa74efaf38bbc2b0",
          "commit": "b28a5edbd46279b1db2a3f3f48bb3f447e18899f"
        },
        "statement": {
          "zh-Hant": "函數 f:X→Y 對 X 中每一個輸入指定 Y 中唯一一個輸出；陪域 Y 不必等於實際值域。",
          "en": "A function f:X→Y assigns exactly one output in Y to every input in X; the codomain Y need not equal the function's actual range."
        }
      },
      {
        "id": "finite_forall",
        "kind": "prerequisite",
        "statement": {
          "zh-Hant": "有限列舉集合上的量詞：若 X 以列舉給出，則 ∀x∈X, P(x) 等價於每個列出的元素都滿足 P；∃x∈X, P(x) 等價於至少一個列出的元素滿足 P。",
          "en": "Quantifiers over a listed finite set: if X is given by a list, then ∀x∈X, P(x) is equivalent to P holding for each listed element, and ∃x∈X, P(x) to P holding for at least one listed element."
        }
      },
      {
        "id": "graph_def",
        "kind": "prerequisite",
        "statement": {
          "zh-Hant": "函數圖形：f:X→Y 的圖形是 Γ_f={(x,f(x)) ∣ x∈X}，它是 X×Y 的子集合。",
          "en": "Graph of a function: the graph of f:X→Y is Γ_f={(x,f(x)) ∣ x∈X}, a subset of X×Y."
        }
      },
      {
        "id": "L_no_root_2",
        "kind": "lemma",
        "proved_in": [
          "S08.1",
          "S08.2"
        ],
        "statement": {
          "zh-Hant": "X 中沒有 x 使 x²=2。",
          "en": "No x in X satisfies x²=2."
        }
      }
    ],
    "revision_log": [],
    "numeric_checks": [
      {
        "id": "N1",
        "step": "S03",
        "lhs": "(-2)**2",
        "rhs": "4"
      },
      {
        "id": "N2",
        "step": "S03",
        "lhs": "(-1)**2",
        "rhs": "1"
      },
      {
        "id": "N3",
        "step": "S03",
        "lhs": "0**2",
        "rhs": "0"
      },
      {
        "id": "N4",
        "step": "S03",
        "lhs": "1**2",
        "rhs": "1"
      },
      {
        "id": "N5",
        "step": "S03",
        "lhs": "2**2",
        "rhs": "4"
      },
      {
        "id": "N6",
        "step": "S08.2",
        "vars": [
          "x"
        ],
        "range": [
          -2,
          2
        ],
        "lhs": "x*x",
        "relation": "!=",
        "rhs": "2"
      },
      {
        "id": "N7",
        "step": "S14",
        "lhs": "2+4",
        "rhs": "6"
      },
      {
        "id": "N8",
        "step": "S14",
        "lhs": "6",
        "relation": ">",
        "rhs": "5"
      },
      {
        "id": "N9",
        "step": "S09",
        "lhs": "5*6",
        "rhs": "30"
      },
      {
        "id": "N10",
        "step": "S10",
        "lhs": "(-1)**2",
        "rhs": "1**2"
      }
    ]
  },
  "presentation": {
    "md_scope": {
      "zh-Hant": "只處理明示的有限集合 X、Y 之間的純數學總函數（MKO 假設 a1、a2）。有限集合上的全稱語句以完整窮舉核對。不給出部分函數的形式定義，不綁定 Lean 定理 function_total_unique，也不處理程式語意；不改動 canonical MKO 或英文 edition。",
      "en": "Treats only pure mathematical total functions between the explicit finite sets X and Y (MKO assumptions a1 and a2). Universal statements over finite sets are checked by complete enumeration. It gives no formal definition of partial functions, does not bind the Lean theorem function_total_unique, and does not treat program semantics; it does not change the canonical MKO or its English edition."
    },
    "md_symbols": [
      [
        "X,\\ Y",
        "定義域與陪域",
        "domain and codomain"
      ],
      [
        "f(X)",
        "值域：實際輸出之集",
        "range: the set of actual outputs"
      ],
      [
        "\\Gamma_f",
        "圖形：有序對 (x,f(x)) 之集",
        "graph: the set of pairs (x,f(x))"
      ],
      [
        "f_1",
        "同一規則、陪域改為 {0,1,4} 的函數",
        "the same rule with codomain {0,1,4}"
      ],
      [
        "s,\\ g",
        "兩個要判定的對應規則",
        "two rules to be tested"
      ]
    ],
    "md_error_controls": [
      {
        "title": "陪域、值域、圖形是三個不同對象 / Codomain, range and graph are three different objects",
        "zh": "MKO 指出常見誤解是把陪域、值域與函數圖形視為同一個對象。本例：陪域 Y={0,1,2,3,4,5} 是宣告的一部分；值域 f(X)={0,1,4} 是實際輸出；圖形 Γ_f 是由 X×Y 中 5 個有序對組成的子集合（S07 到 S09）。改變陪域會改變函數（S11），卻不改變值域與圖形。",
        "en": "The MKO names the mistake of treating codomain, range and graph as one object. Here the codomain Y={0,1,2,3,4,5} is part of the declaration; the range f(X)={0,1,4} is the set of actual outputs; the graph Γ_f is the subset of X×Y consisting of 5 ordered pairs (S07 to S09). Changing the codomain changes the function (S11) but not the range or the graph."
      },
      {
        "title": "程式函數不等於數學總函數 / A program function is not automatically a total mathematical function",
        "zh": "MKO 也提醒不要把有副作用或失敗狀態的程式函數等同於純數學總函數。例如一段程式依次搜尋 −2、−1、0、1、2，傳回第一個平方等於 y 的數：y=1 時它傳回 −1（搜尋次序代替了唯一性），y=2 時它找不到而失敗。這段程式「能執行」，但它並沒有把 s 變成 Y→X 的函數（S12、S13）；它是另一個加了選擇規則、而且在 y=2 等處沒有定義的對象。",
        "en": "The MKO also warns against equating program functions, with side effects or failure states, with pure total mathematical functions. For example, a program that searches −2, −1, 0, 1, 2 in order and returns the first number whose square is y returns −1 for y=1 (the search order replaces uniqueness) and fails for y=2. The program runs, but it does not turn s into a function Y→X (S12, S13); it is a different object, with an added choice rule and undefined at y=2 and elsewhere."
      },
      {
        "title": "唯一性是對輸入而言 / Uniqueness is per input",
        "zh": "最容易做錯的是把兩個條件混淆：函數要求每個輸入只有一個輸出（S05），並不要求每個輸出只來自一個輸入。f(−1)=f(1) 不影響 f 是函數（S10）；反過來，s 在 y=1 有兩個輸出才違反定義（S12）。",
        "en": "A common error is to confuse these two conditions: a function requires each input to have only one output (S05), not each output to come from only one input. f(−1)=f(1) does not stop f from being a function (S10); conversely, s violates the definition because the input y=1 has two outputs (S12)."
      }
    ],
    "md_open_items": [
      {
        "zh-Hant": "N6 在 x=−2 到 2 的整數上核對 x²≠2；這五個整數恰好是 X 的全部元素，所以對 X 是完整檢查，但它不說明 x²=2 在其他集合（例如 ℝ，有解 √2）中無解。",
        "en": "N6 checks x²≠2 at the integers from −2 to 2; these five integers are exactly the elements of X, so it is a complete check for X, but it says nothing about other sets (for example ℝ, where √2 is a solution)."
      },
      {
        "zh-Hant": "本稿採用「陪域是函數資料的一部分」的約定（function_def，與 MKO 一致）；以圖形定義函數的教材會得到不同的 f=f₁ 判斷。",
        "en": "This guide adopts the convention that the codomain is part of a function's data (function_def, consistent with the MKO); texts that define a function as its graph would judge f=f₁ differently."
      }
    ]
  },
  "revision": {
    "id": "production-20261019-adopted-96",
    "source_commit": "b28a5edbd46279b1db2a3f3f48bb3f447e18899f",
    "adopted_source_sha256": "dbc6700ffc9f0c1ea7205d70df77932b6c64beee2dd131a39082172f95769fba",
    "original_source_sha256": "dbc6700ffc9f0c1ea7205d70df77932b6c64beee2dd131a39082172f95769fba",
    "owner_adopted": true,
    "bilingual_sync": "complete_source_bound",
    "formal_Lean": "NOT_RUN",
    "independent_AI_concurrence": "NOT_MEASURED",
    "issue_ids": [],
    "scope": "Owner-adopted natural-language teaching guide; not a formal proof, canonical MKO rewrite or evidence-status promotion."
  }
}
