函數合成:受限合成的允許輸入、求值順序與不交換

本頁導覽
  1. 目標與範圍
  2. 已知條件與符號
  3. 規則與來源
  4. 逐步主鏈
  5. 局部子步與引理
  6. 逐步反向審查
  7. 錯誤控制與反例
  8. 結論與限制
  9. 驗證及來源綁定

← 導讀目錄 · 原始 MKO

derivation-mko-composition-01 · production-20261019-adopted-96

目標與範圍

設 f:ℝ→ℝ,f(x)=x−3;g:[0,∞)→ℝ,g(u)=√u。(1) 求 g∘f 的允許輸入集合 D={x∈dom(f) ∣ f(x)∈dom(g)},並證明 D=[3,∞);(2) 依「先 f 後 g」計算 (g∘f)(7) 與 (g∘f)(4),並說明 (g∘f)(1) 沒有定義;(3) 說明 f∘g 是 [0,∞) 上的總函數合成,並由 (f∘g)(4)=−1≠1=(g∘f)(4) 得到 g∘f≠f∘g;(4) 說明合成不是函數值的乘法。

在 MKO 的範圍內:函數及其定義域、陪域都已明示(假設 a1);受限合成只在明示的允許集合上求值(假設 a2)。只用到主平方根的定義與實數的序。不處理一般的合成結合律、反函數或型別轉換條件;不改動 canonical MKO 或英文 edition。

已知條件與符號

  • composition_def
  • function_def
  • set_builder
  • set_extensionality
  • sqrt_def
  • order_basics
  • numeric_evaluation
  • G1 — f:ℝ→ℝ,f(x)=x−3;dom(f)=ℝ。
  • G2 — g:[0,∞)→ℝ,g(u)=√u;dom(g)=[0,∞)={u∈ℝ ∣ u≥0}。
  • G3 — 對定義域不同的表達式,合成的允許輸入為 D={x∈dom(f) ∣ f(x)∈dom(g)},且對 x∈D 有 (g∘f)(x)=g(f(x))(MKO)。
  • f,\ g — 給定的兩個函數
  • g\circ f — 先 f 後 g 的合成,(g∘f)(x)=g(f(x))
  • D — g∘f 的允許輸入集合
  • \mathrm{dom}(f) — f 的定義域
  • [a,\infty) — {x∈ℝ ∣ x≥a}
  • \sqrt{u} — u≥0 的主平方根

規則與來源

  • composition_def · prerequisite — 合成:對 f:A→B 與 g:B→C,g∘f:A→C 定義為 (g∘f)(a)=g(f(a))。
  • function_def · prerequisite — 函數:f:A→B 對每個 a∈A 指定恰好一個 f(a)∈B。兩函數相等 ⇔ 定義域、對應域相同且對每個 a 都有相同值。
  • set_builder · prerequisite — 集合建構式:x∈{y∈A ∣ P(y)} 當且僅當 x∈A 且 P(x)。
  • set_extensionality · prerequisite — 集合相等:A=B 當且僅當 A⊆B 且 B⊆A,即兩者有相同元素。
  • sqrt_def · prerequisite — 主平方根:對 a≥0,√a 是唯一滿足 b≥0 且 b²=a 的實數 b。負數在實數中沒有平方根。
  • order_basics · prerequisite — 實數的序:任兩數恰有 u<v、u=v、u>v 之一;u<v 且 v<w 推出 u<w;u<v 推出 u+w<v+w;u<v 且 w>0 推出 uw<vw;u<v 且 w<0 推出 uw>vw。
  • numeric_evaluation · prerequisite — 明確整數或有理數算式的精確求值;可以獨立重算。
  • def_unfold · prerequisite — 展開定義:把一個已定義的詞換成它的定義內容(或反向收回),命題的真假不變。
  • add_inverse · prerequisite — 加法反元素:每個 u 都有 −u,使 u+(−u)=0;u−v 定義為 u+(−v)。
  • add_assoc · prerequisite — 加法結合律:(u+v)+w=u+(v+w)。
  • add_zero · prerequisite — 加法單位元:u+0=u。
  • square_nonneg · prerequisite — 實數平方非負:對所有實數 u,u²≥0,且 u²=0 ⇔ u=0。
  • and_intro_elim · prerequisite — 合取:由 P 與 Q 得 P∧Q;由 P∧Q 可分別得 P 與 Q。
  • mko_comp_def · cited — 若 f:A→B、g:B→C 為總函數,則 g∘f:A→C 由 (g∘f)(x)=g(f(x)) 定義。對不同定義域的表達式,合成允許的輸入為 {x∈dom(f):f(x)∈dom(g)}。 · mko-composition
  • L_shift3 · lemma — 對實數 x:x−3≥0 ⇔ x≥3。
  • L_sqrt_sq · lemma — 對實數 b≥0:√(b²)=b。

逐步主鏈

S01 · definition

操作前

g\circ f

操作後

(g\circ f)(x)=g(f(x)),\ \ x\in D=\{x\in\mathrm{dom}(f)\mid f(x)\in\mathrm{dom}(g)\}

條件:無

規則:mko_comp_def · 依賴:G3, mko_comp_def

葉節點依據:mko_comp_def + composition_def

依 MKO 寫出合成:先算內層 f(x),再把結果交給 g。記號 g∘f 中 g 寫在左邊,但求值時 f 先做;書寫順序與求值順序相反。因為 f 與 g 的定義域不同,只有使中間值 f(x) 落在 g 定義域內的 x 才是允許輸入。

S02 · equivalent

操作前

D=\{x\in\mathrm{dom}(f)\mid f(x)\in\mathrm{dom}(g)\}

操作後

D=\{x\in\mathbb{R}\mid x-3\geq 0\}

條件:無

規則:set_builder · 依賴:S01, G1, G2, set_builder

葉節點依據:set_builder + def_unfold

代入 dom(f)=ℝ、f(x)=x−3 與 dom(g)={u ∣ u≥0}:條件 f(x)∈dom(g) 就是 x−3≥0。兩種寫法對每個 x 給出同樣的條件,所以集合相同。

S03 · equivalent

操作前

x-3\geq 0

操作後

x\geq 3

條件:無

規則:L_shift3 · 依賴:S02, L_shift3

葉節點依據:L_shift3

依引理 L_shift3,x−3≥0 ⇔ x≥3。引理在 S03.1 證明。

S04 · equivalent

操作前

D=\{x\in\mathbb{R}\mid x-3\geq 0\}

操作後

D=[3,\infty)

條件:無

規則:set_extensionality · 依賴:S02, S03, set_extensionality

葉節點依據:set_extensionality + set_builder

依 S03,集合條件 x−3≥0 可換成等價的 x≥3,所以 D={x∈ℝ ∣ x≥3}=[3,∞)。D 比 dom(f)=ℝ 小:f 能處理所有實數,但 g 只能接受非負的中間值。

S05 · implies

操作前

x\in D

操作後

(g\circ f)(x)=\sqrt{x-3},\ \ g\circ f:[3,\infty)\to\mathbb{R}

條件:x\geq 3

規則:composition_def · 依賴:S01, S04, composition_def

葉節點依據:composition_def + function_def

對 x∈D,f(x)=x−3∈dom(g),所以 g(f(x))=√(x−3) 有定義。限制在 D 上,f 是 D→[0,∞) 的總函數,g 是 [0,∞)→ℝ 的總函數,中間型別相容,依 composition_def 得到總函數 g∘f:[3,∞)→ℝ。

S06 · implies

操作前

x=7

操作後

f(7)=7-3=4\in\mathrm{dom}(g),\ \ 7\in D

條件:無

規則:numeric_evaluation · 依賴:G1, S04

葉節點依據:numeric_evaluation + set_builder

求 (g∘f)(7) 先做內層:f(7)=7−3=4。4≥0,所以 4∈dom(g),也就是 7∈D(與 7≥3 一致)。中間值的定義域檢查必須在套用 g 之前完成。

S07 · implies

操作前

g(4)

操作後

(g\circ f)(7)=g(4)=\sqrt{4}=\sqrt{2^2}=2

條件:2\geq 0

規則:L_sqrt_sq · 依賴:S06, G2, L_sqrt_sq

葉節點依據:L_sqrt_sq + numeric_evaluation

外層:g(4)=√4。因 4=2² 且 2≥0,依引理 L_sqrt_sq,√4=2。所以 (g∘f)(7)=2。

S08 · implies

操作前

x=4

操作後

(g\circ f)(4)=g(f(4))=g(1)=\sqrt{1}=1

條件:4\geq 3

規則:composition_def · 依賴:G1, G2, S04, L_sqrt_sq

葉節點依據:composition_def + L_sqrt_sq + numeric_evaluation

4≥3,所以 4∈D。內層 f(4)=4−3=1,因 1≥0,故 1 在 dom(g) 中;外層 g(1)=√1=√(1²)=1(L_sqrt_sq,1≥0)。所以 (g∘f)(4)=1。

S09 · implies

操作前

x=1

操作後

f(1)=-2\notin\mathrm{dom}(g),\ \text{so}\ 1\notin D\ \text{and}\ (g\circ f)(1)\ \text{is undefined}

條件:無

規則:set_builder · 依賴:G1, G2, S04, sqrt_def

葉節點依據:set_builder + sqrt_def + order_basics + numeric_evaluation

1 屬於 dom(f)=ℝ,f(1)=1−3=−2。但 −2<0,不在 dom(g) 中;依 sqrt_def,負數在實數中沒有平方根,g(−2) 沒有定義。所以 1∉D,(g∘f)(1) 沒有定義。只看 1∈dom(f) 而略過中間值的檢查是錯的。

S10 · implies

操作前

f\circ g

操作後

\{x\in\mathrm{dom}(g)\mid g(x)\in\mathrm{dom}(f)\}=[0,\infty),\ \ (f\circ g)(x)=\sqrt{x}-3

條件:無

規則:composition_def · 依賴:G1, G2, composition_def, set_builder

葉節點依據:composition_def + set_builder + function_def

另一個順序 f∘g:先 g 後 f。g 的每個值 √x 都是實數,而 dom(f)=ℝ,所以條件 g(x)∈dom(f) 對每個 x∈[0,∞) 都成立,允許集合就是 [0,∞)。g 的陪域 ℝ 正是 f 的定義域,中間型別相容,f∘g:[0,∞)→ℝ 是總函數合成,(f∘g)(x)=√x−3。

S11 · implies

操作前

x=4

操作後

(f\circ g)(4)=f(g(4))=f(2)=2-3=-1

條件:4\geq 0

規則:composition_def · 依賴:S10, L_sqrt_sq

葉節點依據:composition_def + L_sqrt_sq + numeric_evaluation

4∈[0,∞)。內層 g(4)=√4=2(S07),外層 f(2)=2−3=−1。所以 (f∘g)(4)=−1。

S12 · implies

操作前

(g\circ f)(4)=1,\ (f\circ g)(4)=-1

操作後

g\circ f\neq f\circ g

條件:無

規則:function_def · 依賴:S04, S08, S10, S11, function_def

葉節點依據:function_def + numeric_evaluation

兩個函數相等需要定義域相同且每點的值相同。這裡兩者的定義域就不同([3,∞) 與 [0,∞)),而且在兩者共同的輸入 4 上,值 1≠−1。所以 g∘f≠f∘g:合成一般不交換。

S13 · implies

操作前

f(4)\cdot g(4)

操作後

f(4)\cdot g(4)=1\cdot 2=2\neq 1=(g\circ f)(4)

條件:無

規則:numeric_evaluation · 依賴:G1, G2, S07, S08

葉節點依據:numeric_evaluation

函數值的乘積 f(4)·g(4)=1·2=2,而合成 (g∘f)(4)=1。兩者不同,所以 g(f(x)) 不能改寫成 f(x)g(x);合成是把一個函數的輸出當作另一個函數的輸入,不是乘法。

S14 · implies

操作前

S04,\ S07,\ S08,\ S09,\ S12,\ S13

操作後

D=[3,\infty);\ (g\circ f)(7)=2,\ (g\circ f)(4)=1,\ 1\notin D;\ g\circ f\neq f\circ g;\ \exists x\in D:\ g(f(x))\neq f(x)g(x)

條件:無

規則:and_intro_elim · 依賴:S04, S07, S08, S09, S12, S13

葉節點依據:and_intro_elim

目標 (1) 由 S04,(2) 由 S07 到 S09,(3) 由 S10 到 S12,(4) 由 S13 完成。

局部子步與引理

S03.1 · equivalent

操作前

x-3\geq 0

操作後

x\geq 3

條件:無

規則:order_basics · 依賴:order_basics, add_inverse

葉節點依據:order_basics + add_inverse + add_assoc + add_zero

⇒:兩邊同加 3,(x−3)+3=x,0+3=3,得 x≥3。⇐:兩邊同加 −3,得 x−3≥0。兩邊加同一個數保持 ≥ 的方向(嚴格情形依 order_basics,相等情形顯然)。此子步證得引理 L_shift3。

S07.1 · implies

操作前

b\geq 0

操作後

\sqrt{b^2}=b

條件:b\geq 0

規則:sqrt_def · 依賴:sqrt_def

葉節點依據:sqrt_def + square_nonneg

依 sqrt_def,對 a≥0,√a 是唯一滿足 c≥0 且 c²=a 的實數 c。取 a=b²(b²≥0),c=b 滿足 b≥0 且 b²=b²,由唯一性得 √(b²)=b。此子步證得引理 L_sqrt_sq。

逐步反向審查

  • S14 · sufficient_goal_reduction · S04, S07, S08, S09, S12, S13, and_intro_elim — 目標 G:(1) 到 (4)。足夠條件 H:所列各步成立;H⇒G 由合取引入。H 由定義、引理與精確計算正向證成,沒有把 G 當作前提。
  • S13 · premise_audit · S08, numeric_evaluation — 一個輸入上的不同就足以推翻「合成等於乘積」這個一般主張。
  • S12 · premise_audit · S08, S11, function_def — 推翻相等只需一個共同輸入上的不同值;不宣稱任何一對函數都不交換。
  • S11 · premise_audit · S10, L_sqrt_sq, numeric_evaluation — 這次內層是 g;順序由記號 f∘g 決定:右邊的 g 先做。
  • S10 · premise_audit · composition_def, G1, G2 — 需要 g 的陪域包含於 f 的定義域;這裡兩者都是 ℝ。
  • S09 · premise_audit · S04, set_builder, sqrt_def — 結論只說 1 不是允許輸入;不給 (g∘f)(1) 任何值。
  • S08 · premise_audit · S04, L_sqrt_sq, composition_def — 同樣先核對 f(4) 在 g 的定義域內,再套用 g。
  • S07.1 · premise_audit · sqrt_def, square_nonneg — 需要 b≥0;若 b<0,例如 b=−2,√((−2)²)=2≠−2。
  • S07 · premise_audit · L_sqrt_sq, S06 — 需要 2≥0;−2 也滿足 (−2)²=4,但它不是主平方根。
  • S06 · premise_audit · G1, S04, numeric_evaluation — 此步只算內層並核對定義域;外層在 S07。
  • S05 · premise_audit · S04, composition_def — 公式只在 D 上宣稱;不宣稱在 D 以外有值(假設 a2)。
  • S04 · inverse_equivalence · S03, set_extensionality — 條件逐點等價,依外延原則集合相等。
  • S03.1 · inverse_equivalence · order_basics, add_inverse — 加 3 與加 −3 互為反運算,對任何實數 x 都可做(N10)。
  • S03 · inverse_equivalence · L_shift3 — 引理兩個方向都已證明。
  • S02 · inverse_equivalence · set_builder, G1, G2 — 只是把定義域與規則代入,條件逐點等價,雙向成立。
  • S01 · premise_audit · G3, mko_comp_def — 此步只寫出定義,不推出新事實。

錯誤控制與反例

g∘f 是先 f 後 g

MKO 指出的第一個誤解是把 g∘f 讀成先 g 後 f。在 x=4,正確的 (g∘f)(4)=g(f(4))=g(1)=1;若先 g 後 f,得到 f(g(4))=f(2)=−1,那是 (f∘g)(4)。在 x=7,正確值是 2,先 g 後 f 會得到 √7−3,連數值都完全不同。讀法:從記號的右邊往左做。

中間值必須在 g 的定義域中

MKO 指出的第二個誤解是略過中間值的定義域檢查。1∈dom(f),但 f(1)=−2∉dom(g),所以 1 不是 g∘f 的允許輸入;允許集合是 [3,∞) 而不是 ℝ。另一個陷阱是先化簡公式:若 k(u)=(√u)²,定義域 [0,∞),則 k(f(x)) 看似化簡成 x−3、對所有實數都有值,但合成 k∘f 的允許輸入仍然只有 [3,∞),因為允許集合由 f(x)∈dom(k) 決定,不由化簡後的式子決定。

合成不交換,也不是乘法

MKO 第三段指出,任意改寫為 f(g(x)) 或 f(x)g(x) 都需要額外條件。本例中 (g∘f)(4)=1、(f∘g)(4)=−1、f(4)g(4)=2,三者兩兩不同,連 g∘f 與 f∘g 的定義域也不同。

  • (g∘f)(4) 的算法是先算 g(4)=2,再算 f(2)=−1 → reject — 那是 (f∘g)(4);(g∘f)(4)=g(f(4))=g(1)=1。
  • g∘f 的允許輸入是 dom(f)=ℝ → reject — 1∈ℝ 但 f(1)=−2∉dom(g);允許集合是 [3,∞)。
  • g∘f=f∘g → reject — 定義域不同,且在 4 的值是 1 與 −1。
  • (g∘f)(4)=f(4)·g(4)=2 → reject — (g∘f)(4)=1;合成不是函數值的乘法。
  • k(u)=(√u)²(u≥0)時,k(f(x)) 化簡為 x−3,所以 k∘f 在所有實數上都有定義 → reject — 允許輸入由 f(x)∈dom(k) 決定,仍是 [3,∞)。

結論與限制

g∘f 的允許輸入是 D=[3,∞),(g∘f)(x)=√(x−3);(g∘f)(7)=2、(g∘f)(4)=1,而 (g∘f)(1) 因 f(1)=−2 不在 g 的定義域而沒有定義。f∘g:[0,∞)→ℝ、(f∘g)(x)=√x−3 是總函數合成,(f∘g)(4)=−1≠1,所以 g∘f≠f∘g;f(4)g(4)=2≠1,合成也不是乘法。

  • N11、N12 是整數點上的有限核對(x 從 3 到 30 與從 −30 到 2),只支持這些點;D=[3,∞) 的一般結論來自 S02 到 S04。

驗證及來源綁定

13 個本稿宣告算術檢查;只支持所列算式。

  • source commit: b28a5edbd46279b1db2a3f3f48bb3f447e18899f
  • adopted source SHA-256: 7475978339b2e04ee6e4e8518b063519655f472a46543961b2bfa1e7094d567b
  • original source SHA-256: 95339f2c0130b538225fee6de95859d69ec9ec89bcf1a08c5079782ad73dbc7a
  • Lean: NOT_RUN · independent AI: NOT_MEASURED

同源完整 JSON(含公式、AST、反控制與修訂記錄)