Theorem: preimage_smul_setₛₗ'
File: Mathlib/GroupTheory/GroupAction/Pointwise.lean

tactic: apply le_antisymm
state_before: R : Type u_1
S : Type u_2
M : Type u_3
M₁ : Type u_4
M₂ : Type u_5
N : Type u_6
inst✝⁷ : Monoid R
inst✝⁶ : Monoid S
σ : R → S
inst✝⁵ : MulAction R M
inst✝⁴ : MulAction S N
inst✝³ : MulAction R M₁
inst✝² : MulAction R M₂
F : Type u_7
h : F
inst✝¹ : FunLike F M N
inst✝ : MulActionSemiHomClass F σ M N
c : R
s : Set M
t : Set N
hc : Function.Surjective fun m => c • m
hc' : Function.Injective fun n => σ c • n
⊢ ⇑h ⁻¹' (σ c • t) = c • ⇑h ⁻¹' t
state_after: case a
R : Type u_1
S : Type u_2
M : Type u_3
M₁ : Type u_4
M₂ : Type u_5
N : Type u_6
inst✝⁷ : Monoid R
inst✝⁶ : Monoid S
σ : R → S
inst✝⁵ : MulAction R M
inst✝⁴ : MulAction S N
inst✝³ : MulAction R M₁
inst✝² : MulAction R M₂
F : Type u_7
h : F
inst✝¹ : FunLike F M N
inst✝ : MulActionSemiHomClass F σ M N
c : R
s : Set M
t : Set N
hc : Function.Surjective fun m => c • m
hc' : Function.Injective fun n => σ c • n
⊢ ⇑h ⁻¹' (σ c • t) ≤ c • ⇑h ⁻¹' t

case a
R : Type u_1
S : Type u_2
M : Type u_3
M₁ : Type u_4
M₂ : Type u_5
N : Type u_6
inst✝⁷ : Monoid R
inst✝⁶ : Monoid S
σ : R → S
inst✝⁵ : MulAction R M
inst✝⁴ : MulAction S N
inst✝³ : MulAction R M₁
inst✝² : MulAction R M₂
F : Type u_7
h : F
inst✝¹ : FunLike F M N
inst✝ : MulActionSemiHomClass F σ M N
c : R
s : Set M
t : Set N
hc : Function.Surjective fun m => c • m
hc' : Function.Injective fun n => σ c • n
⊢ c • ⇑h ⁻¹' t ≤ ⇑h ⁻¹' (σ c • t)

tactic: intro m
state_before: case a
R : Type u_1
S : Type u_2
M : Type u_3
M₁ : Type u_4
M₂ : Type u_5
N : Type u_6
inst✝⁷ : Monoid R
inst✝⁶ : Monoid S
σ : R → S
inst✝⁵ : MulAction R M
inst✝⁴ : MulAction S N
inst✝³ : MulAction R M₁
inst✝² : MulAction R M₂
F : Type u_7
h : F
inst✝¹ : FunLike F M N
inst✝ : MulActionSemiHomClass F σ M N
c : R
s : Set M
t : Set N
hc : Function.Surjective fun m => c • m
hc' : Function.Injective fun n => σ c • n
⊢ ⇑h ⁻¹' (σ c • t) ≤ c • ⇑h ⁻¹' t
state_after: case a
R : Type u_1
S : Type u_2
M : Type u_3
M₁ : Type u_4
M₂ : Type u_5
N : Type u_6
inst✝⁷ : Monoid R
inst✝⁶ : Monoid S
σ : R → S
inst✝⁵ : MulAction R M
inst✝⁴ : MulAction S N
inst✝³ : MulAction R M₁
inst✝² : MulAction R M₂
F : Type u_7
h : F
inst✝¹ : FunLike F M N
inst✝ : MulActionSemiHomClass F σ M N
c : R
s : Set M
t : Set N
hc : Function.Surjective fun m => c • m
hc' : Function.Injective fun n => σ c • n
m : M
⊢ m ∈ ⇑h ⁻¹' (σ c • t) → m ∈ c • ⇑h ⁻¹' t

tactic: obtain ⟨m', rfl⟩ := hc m
state_before: case a
R : Type u_1
S : Type u_2
M : Type u_3
M₁ : Type u_4
M₂ : Type u_5
N : Type u_6
inst✝⁷ : Monoid R
inst✝⁶ : Monoid S
σ : R → S
inst✝⁵ : MulAction R M
inst✝⁴ : MulAction S N
inst✝³ : MulAction R M₁
inst✝² : MulAction R M₂
F : Type u_7
h : F
inst✝¹ : FunLike F M N
inst✝ : MulActionSemiHomClass F σ M N
c : R
s : Set M
t : Set N
hc : Function.Surjective fun m => c • m
hc' : Function.Injective fun n => σ c • n
m : M
⊢ m ∈ ⇑h ⁻¹' (σ c • t) → m ∈ c • ⇑h ⁻¹' t
state_after: case a.intro
R : Type u_1
S : Type u_2
M : Type u_3
M₁ : Type u_4
M₂ : Type u_5
N : Type u_6
inst✝⁷ : Monoid R
inst✝⁶ : Monoid S
σ : R → S
inst✝⁵ : MulAction R M
inst✝⁴ : MulAction S N
inst✝³ : MulAction R M₁
inst✝² : MulAction R M₂
F : Type u_7
h : F
inst✝¹ : FunLike F M N
inst✝ : MulActionSemiHomClass F σ M N
c : R
s : Set M
t : Set N
hc : Function.Surjective fun m => c • m
hc' : Function.Injective fun n => σ c • n
m' : M
⊢ (fun m => c • m) m' ∈ ⇑h ⁻¹' (σ c • t) → (fun m => c • m) m' ∈ c • ⇑h ⁻¹' t

tactic: rintro ⟨n, hn, hn'⟩
state_before: case a.intro
R : Type u_1
S : Type u_2
M : Type u_3
M₁ : Type u_4
M₂ : Type u_5
N : Type u_6
inst✝⁷ : Monoid R
inst✝⁶ : Monoid S
σ : R → S
inst✝⁵ : MulAction R M
inst✝⁴ : MulAction S N
inst✝³ : MulAction R M₁
inst✝² : MulAction R M₂
F : Type u_7
h : F
inst✝¹ : FunLike F M N
inst✝ : MulActionSemiHomClass F σ M N
c : R
s : Set M
t : Set N
hc : Function.Surjective fun m => c • m
hc' : Function.Injective fun n => σ c • n
m' : M
⊢ (fun m => c • m) m' ∈ ⇑h ⁻¹' (σ c • t) → (fun m => c • m) m' ∈ c • ⇑h ⁻¹' t
state_after: case a.intro.intro.intro
R : Type u_1
S : Type u_2
M : Type u_3
M₁ : Type u_4
M₂ : Type u_5
N : Type u_6
inst✝⁷ : Monoid R
inst✝⁶ : Monoid S
σ : R → S
inst✝⁵ : MulAction R M
inst✝⁴ : MulAction S N
inst✝³ : MulAction R M₁
inst✝² : MulAction R M₂
F : Type u_7
h : F
inst✝¹ : FunLike F M N
inst✝ : MulActionSemiHomClass F σ M N
c : R
s : Set M
t : Set N
hc : Function.Surjective fun m => c • m
hc' : Function.Injective fun n => σ c • n
m' : M
n : N
hn : n ∈ t
hn' : (fun x => σ c • x) n = h ((fun m => c • m) m')
⊢ (fun m => c • m) m' ∈ c • ⇑h ⁻¹' t

tactic: refine ⟨m', ?_, rfl⟩
state_before: case a.intro.intro.intro
R : Type u_1
S : Type u_2
M : Type u_3
M₁ : Type u_4
M₂ : Type u_5
N : Type u_6
inst✝⁷ : Monoid R
inst✝⁶ : Monoid S
σ : R → S
inst✝⁵ : MulAction R M
inst✝⁴ : MulAction S N
inst✝³ : MulAction R M₁
inst✝² : MulAction R M₂
F : Type u_7
h : F
inst✝¹ : FunLike F M N
inst✝ : MulActionSemiHomClass F σ M N
c : R
s : Set M
t : Set N
hc : Function.Surjective fun m => c • m
hc' : Function.Injective fun n => σ c • n
m' : M
n : N
hn : n ∈ t
hn' : (fun x => σ c • x) n = h ((fun m => c • m) m')
⊢ (fun m => c • m) m' ∈ c • ⇑h ⁻¹' t
state_after: case a.intro.intro.intro
R : Type u_1
S : Type u_2
M : Type u_3
M₁ : Type u_4
M₂ : Type u_5
N : Type u_6
inst✝⁷ : Monoid R
inst✝⁶ : Monoid S
σ : R → S
inst✝⁵ : MulAction R M
inst✝⁴ : MulAction S N
inst✝³ : MulAction R M₁
inst✝² : MulAction R M₂
F : Type u_7
h : F
inst✝¹ : FunLike F M N
inst✝ : MulActionSemiHomClass F σ M N
c : R
s : Set M
t : Set N
hc : Function.Surjective fun m => c • m
hc' : Function.Injective fun n => σ c • n
m' : M
n : N
hn : n ∈ t
hn' : (fun x => σ c • x) n = h ((fun m => c • m) m')
⊢ m' ∈ ⇑h ⁻¹' t

tactic: rw [map_smulₛₗ] at hn'
state_before: case a.intro.intro.intro
R : Type u_1
S : Type u_2
M : Type u_3
M₁ : Type u_4
M₂ : Type u_5
N : Type u_6
inst✝⁷ : Monoid R
inst✝⁶ : Monoid S
σ : R → S
inst✝⁵ : MulAction R M
inst✝⁴ : MulAction S N
inst✝³ : MulAction R M₁
inst✝² : MulAction R M₂
F : Type u_7
h : F
inst✝¹ : FunLike F M N
inst✝ : MulActionSemiHomClass F σ M N
c : R
s : Set M
t : Set N
hc : Function.Surjective fun m => c • m
hc' : Function.Injective fun n => σ c • n
m' : M
n : N
hn : n ∈ t
hn' : (fun x => σ c • x) n = h ((fun m => c • m) m')
⊢ m' ∈ ⇑h ⁻¹' t
state_after: case a.intro.intro.intro
R : Type u_1
S : Type u_2
M : Type u_3
M₁ : Type u_4
M₂ : Type u_5
N : Type u_6
inst✝⁷ : Monoid R
inst✝⁶ : Monoid S
σ : R → S
inst✝⁵ : MulAction R M
inst✝⁴ : MulAction S N
inst✝³ : MulAction R M₁
inst✝² : MulAction R M₂
F : Type u_7
h : F
inst✝¹ : FunLike F M N
inst✝ : MulActionSemiHomClass F σ M N
c : R
s : Set M
t : Set N
hc : Function.Surjective fun m => c • m
hc' : Function.Injective fun n => σ c • n
m' : M
n : N
hn : n ∈ t
hn' : (fun x => σ c • x) n = σ c • h m'
⊢ m' ∈ ⇑h ⁻¹' t

tactic: rw [mem_preimage, ← hc' hn']
state_before: case a.intro.intro.intro
R : Type u_1
S : Type u_2
M : Type u_3
M₁ : Type u_4
M₂ : Type u_5
N : Type u_6
inst✝⁷ : Monoid R
inst✝⁶ : Monoid S
σ : R → S
inst✝⁵ : MulAction R M
inst✝⁴ : MulAction S N
inst✝³ : MulAction R M₁
inst✝² : MulAction R M₂
F : Type u_7
h : F
inst✝¹ : FunLike F M N
inst✝ : MulActionSemiHomClass F σ M N
c : R
s : Set M
t : Set N
hc : Function.Surjective fun m => c • m
hc' : Function.Injective fun n => σ c • n
m' : M
n : N
hn : n ∈ t
hn' : (fun x => σ c • x) n = σ c • h m'
⊢ m' ∈ ⇑h ⁻¹' t
state_after: case a.intro.intro.intro
R : Type u_1
S : Type u_2
M : Type u_3
M₁ : Type u_4
M₂ : Type u_5
N : Type u_6
inst✝⁷ : Monoid R
inst✝⁶ : Monoid S
σ : R → S
inst✝⁵ : MulAction R M
inst✝⁴ : MulAction S N
inst✝³ : MulAction R M₁
inst✝² : MulAction R M₂
F : Type u_7
h : F
inst✝¹ : FunLike F M N
inst✝ : MulActionSemiHomClass F σ M N
c : R
s : Set M
t : Set N
hc : Function.Surjective fun m => c • m
hc' : Function.Injective fun n => σ c • n
m' : M
n : N
hn : n ∈ t
hn' : (fun x => σ c • x) n = σ c • h m'
⊢ n ∈ t

tactic: exact hn
state_before: case a.intro.intro.intro
R : Type u_1
S : Type u_2
M : Type u_3
M₁ : Type u_4
M₂ : Type u_5
N : Type u_6
inst✝⁷ : Monoid R
inst✝⁶ : Monoid S
σ : R → S
inst✝⁵ : MulAction R M
inst✝⁴ : MulAction S N
inst✝³ : MulAction R M₁
inst✝² : MulAction R M₂
F : Type u_7
h : F
inst✝¹ : FunLike F M N
inst✝ : MulActionSemiHomClass F σ M N
c : R
s : Set M
t : Set N
hc : Function.Surjective fun m => c • m
hc' : Function.Injective fun n => σ c • n
m' : M
n : N
hn : n ∈ t
hn' : (fun x => σ c • x) n = σ c • h m'
⊢ n ∈ t
state_after: no goals

tactic: exact smul_preimage_set_leₛₗ M N σ h c t
state_before: case a
R : Type u_1
S : Type u_2
M : Type u_3
M₁ : Type u_4
M₂ : Type u_5
N : Type u_6
inst✝⁷ : Monoid R
inst✝⁶ : Monoid S
σ : R → S
inst✝⁵ : MulAction R M
inst✝⁴ : MulAction S N
inst✝³ : MulAction R M₁
inst✝² : MulAction R M₂
F : Type u_7
h : F
inst✝¹ : FunLike F M N
inst✝ : MulActionSemiHomClass F σ M N
c : R
s : Set M
t : Set N
hc : Function.Surjective fun m => c • m
hc' : Function.Injective fun n => σ c • n
⊢ c • ⇑h ⁻¹' t ≤ ⇑h ⁻¹' (σ c • t)
state_after: no goals