Built with doc-gen4, running Lean4.
Bubbles () indicate interactive fragments: hover for details, tap to reveal contents.
Use Ctrl+↑Ctrl+↓to navigate, Ctrl+🖱️to focus.
On Mac, use Cmdinstead of Ctrl.
/-
Copyright (c) 2017 Johannes Hölzl. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl
! This file was ported from Lean 3 source module algebra.big_operators.order
! leanprover-community/mathlib commit 824f9ae93a4f5174d2ea948e2d75843dd83447bb
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
import Mathlib.Algebra.Order.AbsoluteValue
import Mathlib.Algebra.Order.Ring.WithTop
import Mathlib.Algebra.BigOperators.Basic
import Mathlib.Data.Fintype.Card
/-!
# Results about big operators with values in an ordered algebraic structure.
Mostly monotonicity results for the `∏` and `∑` operations.
-/
open Function
open BigOperators
variable {
N]
/-- Let `{x | p x}` be a subsemigroup of a commutative monoid `M`. Let `f : M → N` be a map
submultiplicative on `{x | p x}`, i.e., `p x → p y → f (x * y) ≤ f x * f y`. Let `g i`, `i ∈ s`, be
a nonempty finite family of elements of `M` such that `∀ i ∈ s, p (g i)`. Then
`f (∏ x in s, g x) ≤ ∏ x in s, f (g x)`. -/
@[to_additive
le_sum_nonempty_of_subadditive_on_pred: ∀ {ι : Type u_3} {M : Type u_2} {N : Type u_1} [inst : AddCommMonoidM] [inst_1 : OrderedAddCommMonoidN] (f : M → N)
(p : M → Prop),
(∀ (x y : M), px → py → f (x+y)≤fx+fy) →
(∀ (x y : M), px → py → p (x+y)) →
∀ (g : ι → M) (s : Finsetι),
Finset.Nonemptys → (∀ (i : ι), i∈s → p (gi)) → f (∑ i in s, gi)≤∑ i in s, f (gi)
le_sum_nonempty_of_subadditive_on_pred]
theorem
le_prod_nonempty_of_submultiplicative_on_pred: ∀ {ι : Type u_3} {M : Type u_2} {N : Type u_1} [inst : CommMonoidM] [inst_1 : OrderedCommMonoidN] (f : M → N)
(p : M → Prop),
(∀ (x y : M), px → py → f (x*y)≤fx*fy) →
(∀ (x y : M), px → py → p (x*y)) →
∀ (g : ι → M) (s : Finsetι),
Finset.Nonemptys → (∀ (i : ι), i∈s → p (gi)) → f (∏ i in s, gi)≤∏ i in s, f (gi)
Finset.le_prod_nonempty_of_submultiplicative_on_pred: ∀ {ι : Type u_3} {M : Type u_2} {N : Type u_1} [inst : CommMonoidM] [inst_1 : OrderedCommMonoidN] (f : M → N)
(p : M → Prop),
(∀ (x y : M), px → py → f (x*y)≤fx*fy) →
(∀ (x y : M), px → py → p (x*y)) →
∀ (g : ι → M) (s : Finsetι),
Finset.Nonemptys → (∀ (i : ι), i∈s → p (gi)) → f (∏ i in s, gi)≤∏ i in s, f (gi)
Finset.le_sum_nonempty_of_subadditive_on_pred: ∀ {ι : Type u_3} {M : Type u_2} {N : Type u_1} [inst : AddCommMonoidM] [inst_1 : OrderedAddCommMonoidN] (f : M → N)
(p : M → Prop),
(∀ (x y : M), px → py → f (x+y)≤fx+fy) →
(∀ (x y : M), px → py → p (x+y)) →
∀ (g : ι → M) (s : Finsetι),
Finset.Nonemptys → (∀ (i : ι), i∈s → p (gi)) → f (∑ i in s, gi)≤∑ i in s, f (gi)
Finset.le_sum_nonempty_of_subadditive_on_pred
/-- Let `{x | p x}` be an additive subsemigroup of an additive commutative monoid `M`. Let
`f : M → N` be a map subadditive on `{x | p x}`, i.e., `p x → p y → f (x + y) ≤ f x + f y`. Let
`g i`, `i ∈ s`, be a nonempty finite family of elements of `M` such that `∀ i ∈ s, p (g i)`. Then
`f (∑ i in s, g i) ≤ ∑ i in s, f (g i)`. -/
add_decl_doc
le_sum_nonempty_of_subadditive_on_pred: ∀ {ι : Type u_3} {M : Type u_2} {N : Type u_1} [inst : AddCommMonoidM] [inst_1 : OrderedAddCommMonoidN] (f : M → N)
(p : M → Prop),
(∀ (x y : M), px → py → f (x+y)≤fx+fy) →
(∀ (x y : M), px → py → p (x+y)) →
∀ (g : ι → M) (s : Finsetι),
Finset.Nonemptys → (∀ (i : ι), i∈s → p (gi)) → f (∑ i in s, gi)≤∑ i in s, f (gi)
le_sum_nonempty_of_subadditive_on_pred
/-- If `f : M → N` is a submultiplicative function, `f (x * y) ≤ f x * f y` and `g i`, `i ∈ s`, is a
nonempty finite family of elements of `M`, then `f (∏ i in s, g i) ≤ ∏ i in s, f (g i)`. -/
@[to_additive
le_prod_nonempty_of_submultiplicative: ∀ (f : M → N),
(∀ (x y : M), f (x*y)≤fx*fy) →
∀ {s : Finsetι}, Finset.Nonemptys → ∀ (g : ι → M), f (∏ i in s, gi)≤∏ i in s, f (gi)
le_prod_nonempty_of_submultiplicative_on_pred: ∀ {ι : Type ?u.6194} {M : Type ?u.6193} {N : Type ?u.6192} [inst : CommMonoidM] [inst_1 : OrderedCommMonoidN]
(f : M → N) (p : M → Prop),
(∀ (x y : M), px → py → f (x*y)≤fx*fy) →
(∀ (x y : M), px → py → p (x*y)) →
∀ (g : ι → M) (s : Finsetι),
Finset.Nonemptys → (∀ (i : ι), i∈s → p (gi)) → f (∏ i in s, gi)≤∏ i in s, f (gi)
Finset.le_prod_nonempty_of_submultiplicative: ∀ {ι : Type u_3} {M : Type u_2} {N : Type u_1} [inst : CommMonoidM] [inst_1 : OrderedCommMonoidN] (f : M → N),
(∀ (x y : M), f (x*y)≤fx*fy) →
∀ {s : Finsetι}, Finset.Nonemptys → ∀ (g : ι → M), f (∏ i in s, gi)≤∏ i in s, f (gi)
Finset.le_sum_nonempty_of_subadditive
/-- If `f : M → N` is a subadditive function, `f (x + y) ≤ f x + f y` and `g i`, `i ∈ s`, is a
nonempty finite family of elements of `M`, then `f (∑ i in s, g i) ≤ ∑ i in s, f (g i)`. -/
add_decl_doc
le_sum_nonempty_of_subadditive
/-- Let `{x | p x}` be a subsemigroup of a commutative monoid `M`. Let `f : M → N` be a map
such that `f 1 = 1` and `f` is submultiplicative on `{x | p x}`, i.e.,
`p x → p y → f (x * y) ≤ f x * f y`. Let `g i`, `i ∈ s`, be a finite family of elements of `M` such
that `∀ i ∈ s, p (g i)`. Then `f (∏ i in s, g i) ≤ ∏ i in s, f (g i)`. -/
@[to_additive
le_sum_of_subadditive_on_pred: ∀ {ι : Type u_3} {M : Type u_2} {N : Type u_1} [inst : AddCommMonoidM] [inst_1 : OrderedAddCommMonoidN] (f : M → N)
(p : M → Prop),
f0=0 →
(∀ (x y : M), px → py → f (x+y)≤fx+fy) →
(∀ (x y : M), px → py → p (x+y)) →
∀ (g : ι → M) {s : Finsetι}, (∀ (i : ι), i∈s → p (gi)) → f (∑ i in s, gi)≤∑ i in s, f (gi)
le_sum_of_subadditive_on_pred]
theorem
le_prod_of_submultiplicative_on_pred: ∀ {ι : Type u_3} {M : Type u_2} {N : Type u_1} [inst : CommMonoidM] [inst_1 : OrderedCommMonoidN] (f : M → N)
(p : M → Prop),
f1=1 →
(∀ (x y : M), px → py → f (x*y)≤fx*fy) →
(∀ (x y : M), px → py → p (x*y)) →
∀ (g : ι → M) {s : Finsetι}, (∀ (i : ι), i∈s → p (gi)) → f (∏ i in s, gi)≤∏ i in s, f (gi)
ι: Type u_3 α: Type ?u.6427 β: Type ?u.6430 M: Type u_2 N: Type u_1 G: Type ?u.6439 k: Type ?u.6442 R: Type ?u.6445 inst✝¹: CommMonoidM inst✝: OrderedCommMonoidN f: M → N p: M → Prop h_one: f1=1 h_mul: ∀ (x y : M), px → py → f (x*y)≤fx*fy hp_mul: ∀ (x y : M), px → py → p (x*y) g: ι → M s: Finsetι hs: ∀ (i : ι), i∈s → p (gi)
ι: Type u_3 α: Type ?u.6427 β: Type ?u.6430 M: Type u_2 N: Type u_1 G: Type ?u.6439 k: Type ?u.6442 R: Type ?u.6445 inst✝¹: CommMonoidM inst✝: OrderedCommMonoidN f: M → N p: M → Prop h_one: f1=1 h_mul: ∀ (x y : M), px → py → f (x*y)≤fx*fy hp_mul: ∀ (x y : M), px → py → p (x*y) g: ι → M hs: ∀ (i : ι), i∈∅ → p (gi)
ι: Type u_3 α: Type ?u.6427 β: Type ?u.6430 M: Type u_2 N: Type u_1 G: Type ?u.6439 k: Type ?u.6442 R: Type ?u.6445 inst✝¹: CommMonoidM inst✝: OrderedCommMonoidN f: M → N p: M → Prop h_one: f1=1 h_mul: ∀ (x y : M), px → py → f (x*y)≤fx*fy hp_mul: ∀ (x y : M), px → py → p (x*y) g: ι → M s: Finsetι hs: ∀ (i : ι), i∈s → p (gi)
ι: Type u_3 α: Type ?u.6427 β: Type ?u.6430 M: Type u_2 N: Type u_1 G: Type ?u.6439 k: Type ?u.6442 R: Type ?u.6445 inst✝¹: CommMonoidM inst✝: OrderedCommMonoidN f: M → N p: M → Prop h_one: f1=1 h_mul: ∀ (x y : M), px → py → f (x*y)≤fx*fy hp_mul: ∀ (x y : M), px → py → p (x*y) g: ι → M hs: ∀ (i : ι), i∈∅ → p (gi)
ι: Type u_3 α: Type ?u.6427 β: Type ?u.6430 M: Type u_2 N: Type u_1 G: Type ?u.6439 k: Type ?u.6442 R: Type ?u.6445 inst✝¹: CommMonoidM inst✝: OrderedCommMonoidN f: M → N p: M → Prop h_one: f1=1 h_mul: ∀ (x y : M), px → py → f (x*y)≤fx*fy hp_mul: ∀ (x y : M), px → py → p (x*y) g: ι → M hs: ∀ (i : ι), i∈∅ → p (gi)
ι: Type u_3 α: Type ?u.6427 β: Type ?u.6430 M: Type u_2 N: Type u_1 G: Type ?u.6439 k: Type ?u.6442 R: Type ?u.6445 inst✝¹: CommMonoidM inst✝: OrderedCommMonoidN f: M → N p: M → Prop h_one: f1=1 h_mul: ∀ (x y : M), px → py → f (x*y)≤fx*fy hp_mul: ∀ (x y : M), px → py → p (x*y) g: ι → M s: Finsetι hs: ∀ (i : ι), i∈s → p (gi)
Finset.le_prod_of_submultiplicative_on_pred: ∀ {ι : Type u_3} {M : Type u_2} {N : Type u_1} [inst : CommMonoidM] [inst_1 : OrderedCommMonoidN] (f : M → N)
(p : M → Prop),
f1=1 →
(∀ (x y : M), px → py → f (x*y)≤fx*fy) →
(∀ (x y : M), px → py → p (x*y)) →
∀ (g : ι → M) {s : Finsetι}, (∀ (i : ι), i∈s → p (gi)) → f (∏ i in s, gi)≤∏ i in s, f (gi)
Finset.le_sum_of_subadditive_on_pred: ∀ {ι : Type u_3} {M : Type u_2} {N : Type u_1} [inst : AddCommMonoidM] [inst_1 : OrderedAddCommMonoidN] (f : M → N)
(p : M → Prop),
f0=0 →
(∀ (x y : M), px → py → f (x+y)≤fx+fy) →
(∀ (x y : M), px → py → p (x+y)) →
∀ (g : ι → M) {s : Finsetι}, (∀ (i : ι), i∈s → p (gi)) → f (∑ i in s, gi)≤∑ i in s, f (gi)
Finset.le_sum_of_subadditive_on_pred
/-- Let `{x | p x}` be a subsemigroup of a commutative additive monoid `M`. Let `f : M → N` be a map
such that `f 0 = 0` and `f` is subadditive on `{x | p x}`, i.e. `p x → p y → f (x + y) ≤ f x + f y`.
Let `g i`, `i ∈ s`, be a finite family of elements of `M` such that `∀ i ∈ s, p (g i)`. Then
`f (∑ x in s, g x) ≤ ∑ x in s, f (g x)`. -/
add_decl_doc
le_sum_of_subadditive_on_pred: ∀ {ι : Type u_3} {M : Type u_2} {N : Type u_1} [inst : AddCommMonoidM] [inst_1 : OrderedAddCommMonoidN] (f : M → N)
(p : M → Prop),
f0=0 →
(∀ (x y : M), px → py → f (x+y)≤fx+fy) →
(∀ (x y : M), px → py → p (x+y)) →
∀ (g : ι → M) {s : Finsetι}, (∀ (i : ι), i∈s → p (gi)) → f (∑ i in s, gi)≤∑ i in s, f (gi)
le_sum_of_subadditive_on_pred
/-- If `f : M → N` is a submultiplicative function, `f (x * y) ≤ f x * f y`, `f 1 = 1`, and `g i`,
`i ∈ s`, is a finite family of elements of `M`, then `f (∏ i in s, g i) ≤ ∏ i in s, f (g i)`. -/
@[to_additive
le_sum_of_subadditive: ∀ {ι : Type u_3} {M : Type u_2} {N : Type u_1} [inst : AddCommMonoidM] [inst_1 : OrderedAddCommMonoidN] (f : M → N),
f0=0 → (∀ (x y : M), f (x+y)≤fx+fy) → ∀ (s : Finsetι) (g : ι → M), f (∑ i in s, gi)≤∑ i in s, f (gi)
le_sum_of_subadditive]
theorem
le_prod_of_submultiplicative: ∀ {ι : Type u_3} {M : Type u_2} {N : Type u_1} [inst : CommMonoidM] [inst_1 : OrderedCommMonoidN] (f : M → N),
f1=1 → (∀ (x y : M), f (x*y)≤fx*fy) → ∀ (s : Finsetι) (g : ι → M), f (∏ i in s, gi)≤∏ i in s, f (gi)
Finset.le_prod_of_submultiplicative: ∀ {ι : Type u_3} {M : Type u_2} {N : Type u_1} [inst : CommMonoidM] [inst_1 : OrderedCommMonoidN] (f : M → N),
f1=1 → (∀ (x y : M), f (x*y)≤fx*fy) → ∀ (s : Finsetι) (g : ι → M), f (∏ i in s, gi)≤∏ i in s, f (gi)
Finset.le_sum_of_subadditive: ∀ {ι : Type u_3} {M : Type u_2} {N : Type u_1} [inst : AddCommMonoidM] [inst_1 : OrderedAddCommMonoidN] (f : M → N),
f0=0 → (∀ (x y : M), f (x+y)≤fx+fy) → ∀ (s : Finsetι) (g : ι → M), f (∑ i in s, gi)≤∑ i in s, f (gi)
Finset.le_sum_of_subadditive
/-- If `f : M → N` is a subadditive function, `f (x + y) ≤ f x + f y`, `f 0 = 0`, and `g i`,
`i ∈ s`, is a finite family of elements of `M`, then `f (∑ i in s, g i) ≤ ∑ i in s, f (g i)`. -/
add_decl_doc
le_sum_of_subadditive: ∀ {ι : Type u_3} {M : Type u_2} {N : Type u_1} [inst : AddCommMonoidM] [inst_1 : OrderedAddCommMonoidN] (f : M → N),
f0=0 → (∀ (x y : M), f (x+y)≤fx+fy) → ∀ (s : Finsetι) (g : ι → M), f (∑ i in s, gi)≤∑ i in s, f (gi)
ι}
/-- In an ordered commutative monoid, if each factor `f i` of one finite product is less than or
equal to the corresponding factor `g i` of another finite product, then
`∏ i in s, f i ≤ ∏ i in s, g i`. -/
@[to_additive
sum_le_sum: ∀ {ι : Type u_1} {N : Type u_2} [inst : OrderedAddCommMonoidN] {f g : ι → N} {s : Finsetι},
(∀ (i : ι), i∈s → fi≤gi) → ∑ i in s, fi≤∑ i in s, gi
sum_le_sum]
theorem
prod_le_prod': ∀ {ι : Type u_1} {N : Type u_2} [inst : OrderedCommMonoidN] {f g : ι → N} {s : Finsetι},
(∀ (i : ι), i∈s → fi≤gi) → ∏ i in s, fi≤∏ i in s, gi
Finset.prod_le_prod': ∀ {ι : Type u_1} {N : Type u_2} [inst : OrderedCommMonoidN] {f g : ι → N} {s : Finsetι},
(∀ (i : ι), i∈s → fi≤gi) → ∏ i in s, fi≤∏ i in s, gi
Finset.prod_le_prod'#align finset.sum_le_sum
Finset.sum_le_sum: ∀ {ι : Type u_1} {N : Type u_2} [inst : OrderedAddCommMonoidN] {f g : ι → N} {s : Finsetι},
(∀ (i : ι), i∈s → fi≤gi) → ∑ i in s, fi≤∑ i in s, gi
Finset.sum_le_sum
/-- In an ordered additive commutative monoid, if each summand `f i` of one finite sum is less than
or equal to the corresponding summand `g i` of another finite sum, then
`∑ i in s, f i ≤ ∑ i in s, g i`. -/
add_decl_doc
sum_le_sum: ∀ {ι : Type u_1} {N : Type u_2} [inst : OrderedAddCommMonoidN] {f g : ι → N} {s : Finsetι},
(∀ (i : ι), i∈s → fi≤gi) → ∑ i in s, fi≤∑ i in s, gi
prod_le_prod': ∀ {ι : Type ?u.16924} {N : Type ?u.16925} [inst : OrderedCommMonoidN] {f g : ι → N} {s : Finsetι},
(∀ (i : ι), i∈s → fi≤gi) → ∏ i in s, fi≤∏ i in s, gi
prod_le_prod': ∀ {ι : Type ?u.19111} {N : Type ?u.19112} [inst : OrderedCommMonoidN] {f g : ι → N} {s : Finsetι},
(∀ (i : ι), i∈s → fi≤gi) → ∏ i in s, fi≤∏ i in s, gi
Finset.prod_le_one': ∀ {ι : Type u_1} {N : Type u_2} [inst : OrderedCommMonoidN] {f : ι → N} {s : Finsetι},
(∀ (i : ι), i∈s → fi≤1) → ∏ i in s, fi≤1
Finset.prod_le_one'#align finset.sum_nonpos
Finset.sum_nonpos: ∀ {ι : Type u_1} {N : Type u_2} [inst : OrderedAddCommMonoidN] {f : ι → N} {s : Finsetι},
(∀ (i : ι), i∈s → fi≤0) → ∑ i in s, fi≤0
Finset.sum_nonpos
@[to_additive
sum_le_sum_of_subset_of_nonneg: ∀ {ι : Type u_1} {N : Type u_2} [inst : OrderedAddCommMonoidN] {f : ι → N} {s t : Finsetι},
s⊆t → (∀ (i : ι), i∈t → ¬i∈s → 0≤fi) → ∑ i in s, fi≤∑ i in t, fi
sum_le_sum_of_subset_of_nonneg]
theorem
prod_le_prod_of_subset_of_one_le': s⊆t → (∀ (i : ι), i∈t → ¬i∈s → 1≤fi) → ∏ i in s, fi≤∏ i in t, fi
Finset.prod_le_prod_of_subset_of_one_le': ∀ {ι : Type u_1} {N : Type u_2} [inst : OrderedCommMonoidN] {f : ι → N} {s t : Finsetι},
s⊆t → (∀ (i : ι), i∈t → ¬i∈s → 1≤fi) → ∏ i in s, fi≤∏ i in t, fi
Finset.sum_le_sum_of_subset_of_nonneg: ∀ {ι : Type u_1} {N : Type u_2} [inst : OrderedAddCommMonoidN] {f : ι → N} {s t : Finsetι},
s⊆t → (∀ (i : ι), i∈t → ¬i∈s → 0≤fi) → ∑ i in s, fi≤∑ i in t, fi
prod_le_prod_of_subset_of_one_le': ∀ {ι : Type ?u.25188} {N : Type ?u.25189} [inst : OrderedCommMonoidN] {f : ι → N} {s t : Finsetι},
s⊆t → (∀ (i : ι), i∈t → ¬i∈s → 1≤fi) → ∏ i in s, fi≤∏ i in t, fi
prod_le_prod_of_subset_of_one_le': ∀ {ι : Type ?u.26284} {N : Type ?u.26285} [inst : OrderedCommMonoidN] {f : ι → N} {s t : Finsetι},
s⊆t → (∀ (i : ι), i∈t → ¬i∈s → 1≤fi) → ∏ i in s, fi≤∏ i in t, fi
prod_le_prod_of_subset_of_one_le' (
subset_univ: ∀ {α : Type ?u.26327} [inst : Fintypeα] (s : Finsetα), s⊆univ
Finset.prod_eq_one_iff_of_le_one': ∀ {ι : Type u_1} {N : Type u_2} [inst : OrderedCommMonoidN] {f : ι → N} {s : Finsetι},
(∀ (i : ι), i∈s → fi≤1) → (∏ i in s, fi=1↔∀ (i : ι), i∈s → fi=1)
Finset.prod_eq_one_iff_of_le_one'
-- Porting note: there is no align for the additive version since it aligns to the
-- same one as the previous lemma
@[to_additive
single_le_sum: ∀ {ι : Type u_1} {N : Type u_2} [inst : OrderedAddCommMonoidN] {f : ι → N} {s : Finsetι},
(∀ (i : ι), i∈s → 0≤fi) → ∀ {a : ι}, a∈s → fa≤∑ x in s, fx
single_le_sum]
theorem
single_le_prod': (∀ (i : ι), i∈s → 1≤fi) → ∀ {a : ι}, a∈s → fa≤∏ x in s, fx
prod_le_prod_of_subset_of_one_le': ∀ {ι : Type ?u.32456} {N : Type ?u.32457} [inst : OrderedCommMonoidN] {f : ι → N} {s t : Finsetι},
s⊆t → (∀ (i : ι), i∈t → ¬i∈s → 1≤fi) → ∏ i in s, fi≤∏ i in t, fi
prod_le_prod_of_subset_of_one_le': ∀ {ι : Type ?u.77715} {N : Type ?u.77716} [inst : OrderedCommMonoidN] {f : ι → N} {s t : Finsetι},
s⊆t → (∀ (i : ι), i∈t → ¬i∈s → 1≤fi) → ∏ i in s, fi≤∏ i in t, fi
sum_le_sum_fiberwise_of_sum_fiber_nonpos: ∀ {ι : Type u_3} {N : Type u_2} [inst : OrderedAddCommMonoidN] {s : Finsetι} {ι' : Type u_1} [inst_1 : DecidableEqι']
{t : Finsetι'} {g : ι → ι'} {f : ι → N},
(∀ (y : ι'), ¬y∈t → ∑ x in filter (fun x => gx=y) s, fx≤0) →
∑ x in s, fx≤∑ y in t, ∑ x in filter (fun x => gx=y) s, fx
sum_le_sum_fiberwise_of_sum_fiber_nonpos]
theorem
prod_le_prod_fiberwise_of_prod_fiber_le_one': ∀ {t : Finsetι'} {g : ι → ι'} {f : ι → N},
(∀ (y : ι'), ¬y∈t → ∏ x in filter (fun x => gx=y) s, fx≤1) →
∏ x in s, fx≤∏ y in t, ∏ x in filter (fun x => gx=y) s, fx