Theorem: Set.Definable.image_comp_equiv
File: Mathlib/ModelTheory/Definability.lean

tactic: refine (congr rfl ?_).mp (h.preimage_comp f.symm)
state_before: M : Type w
A : Set M
L : Language
inst✝ : L.Structure M
α : Type u₁
β : Type u_1
B : Set M
s✝ : Set (α → M)
s : Set (β → M)
h : A.Definable L s
f : α ≃ β
⊢ A.Definable L ((fun g => g ∘ ⇑f) '' s)
state_after: M : Type w
A : Set M
L : Language
inst✝ : L.Structure M
α : Type u₁
β : Type u_1
B : Set M
s✝ : Set (α → M)
s : Set (β → M)
h : A.Definable L s
f : α ≃ β
⊢ (fun g => g ∘ ⇑f.symm) ⁻¹' s = (fun g => g ∘ ⇑f) '' s

tactic: rw [image_eq_preimage_of_inverse]
state_before: M : Type w
A : Set M
L : Language
inst✝ : L.Structure M
α : Type u₁
β : Type u_1
B : Set M
s✝ : Set (α → M)
s : Set (β → M)
h : A.Definable L s
f : α ≃ β
⊢ (fun g => g ∘ ⇑f.symm) ⁻¹' s = (fun g => g ∘ ⇑f) '' s
state_after: case h₁
M : Type w
A : Set M
L : Language
inst✝ : L.Structure M
α : Type u₁
β : Type u_1
B : Set M
s✝ : Set (α → M)
s : Set (β → M)
h : A.Definable L s
f : α ≃ β
⊢ Function.LeftInverse (fun g => g ∘ ⇑f.symm) fun g => g ∘ ⇑f

case h₂
M : Type w
A : Set M
L : Language
inst✝ : L.Structure M
α : Type u₁
β : Type u_1
B : Set M
s✝ : Set (α → M)
s : Set (β → M)
h : A.Definable L s
f : α ≃ β
⊢ Function.RightInverse (fun g => g ∘ ⇑f.symm) fun g => g ∘ ⇑f

tactic: intro i
state_before: case h₁
M : Type w
A : Set M
L : Language
inst✝ : L.Structure M
α : Type u₁
β : Type u_1
B : Set M
s✝ : Set (α → M)
s : Set (β → M)
h : A.Definable L s
f : α ≃ β
⊢ Function.LeftInverse (fun g => g ∘ ⇑f.symm) fun g => g ∘ ⇑f
state_after: case h₁
M : Type w
A : Set M
L : Language
inst✝ : L.Structure M
α : Type u₁
β : Type u_1
B : Set M
s✝ : Set (α → M)
s : Set (β → M)
h : A.Definable L s
f : α ≃ β
i : β → M
⊢ (fun g => g ∘ ⇑f.symm) ((fun g => g ∘ ⇑f) i) = i

tactic: ext b
state_before: case h₁
M : Type w
A : Set M
L : Language
inst✝ : L.Structure M
α : Type u₁
β : Type u_1
B : Set M
s✝ : Set (α → M)
s : Set (β → M)
h : A.Definable L s
f : α ≃ β
i : β → M
⊢ (fun g => g ∘ ⇑f.symm) ((fun g => g ∘ ⇑f) i) = i
state_after: case h₁.h
M : Type w
A : Set M
L : Language
inst✝ : L.Structure M
α : Type u₁
β : Type u_1
B : Set M
s✝ : Set (α → M)
s : Set (β → M)
h : A.Definable L s
f : α ≃ β
i : β → M
b : β
⊢ (fun g => g ∘ ⇑f.symm) ((fun g => g ∘ ⇑f) i) b = i b

tactic: simp only [Function.comp_apply, Equiv.apply_symm_apply]
state_before: case h₁.h
M : Type w
A : Set M
L : Language
inst✝ : L.Structure M
α : Type u₁
β : Type u_1
B : Set M
s✝ : Set (α → M)
s : Set (β → M)
h : A.Definable L s
f : α ≃ β
i : β → M
b : β
⊢ (fun g => g ∘ ⇑f.symm) ((fun g => g ∘ ⇑f) i) b = i b
state_after: no goals

tactic: intro i
state_before: case h₂
M : Type w
A : Set M
L : Language
inst✝ : L.Structure M
α : Type u₁
β : Type u_1
B : Set M
s✝ : Set (α → M)
s : Set (β → M)
h : A.Definable L s
f : α ≃ β
⊢ Function.RightInverse (fun g => g ∘ ⇑f.symm) fun g => g ∘ ⇑f
state_after: case h₂
M : Type w
A : Set M
L : Language
inst✝ : L.Structure M
α : Type u₁
β : Type u_1
B : Set M
s✝ : Set (α → M)
s : Set (β → M)
h : A.Definable L s
f : α ≃ β
i : α → M
⊢ (fun g => g ∘ ⇑f) ((fun g => g ∘ ⇑f.symm) i) = i

tactic: ext a
state_before: case h₂
M : Type w
A : Set M
L : Language
inst✝ : L.Structure M
α : Type u₁
β : Type u_1
B : Set M
s✝ : Set (α → M)
s : Set (β → M)
h : A.Definable L s
f : α ≃ β
i : α → M
⊢ (fun g => g ∘ ⇑f) ((fun g => g ∘ ⇑f.symm) i) = i
state_after: case h₂.h
M : Type w
A : Set M
L : Language
inst✝ : L.Structure M
α : Type u₁
β : Type u_1
B : Set M
s✝ : Set (α → M)
s : Set (β → M)
h : A.Definable L s
f : α ≃ β
i : α → M
a : α
⊢ (fun g => g ∘ ⇑f) ((fun g => g ∘ ⇑f.symm) i) a = i a

tactic: simp
state_before: case h₂.h
M : Type w
A : Set M
L : Language
inst✝ : L.Structure M
α : Type u₁
β : Type u_1
B : Set M
s✝ : Set (α → M)
s : Set (β → M)
h : A.Definable L s
f : α ≃ β
i : α → M
a : α
⊢ (fun g => g ∘ ⇑f) ((fun g => g ∘ ⇑f.symm) i) a = i a
state_after: no goals