ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- FirstOrder.Language.Hom.map_rel'
structure Hom where
    toFun : M → N
    -- Porting note:
  -- The autoparam here used to be `obviously`. We would like to replace it with `aesop`
  -- but that isn't currently sufficient.
  -- See https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/Aesop.20and.20cases
  -- If that can be improved, we should change this to `by aesop` and remove the proofs below.
  map_fun' : ∀ {n} (f : L.Functions n) (x), toFun (funMap f x) = funMap f (toFun ∘ x) := by
    intros; trivial
    map_rel' : ∀ {n} (r : L.Relations n) (x), RelMap r x → RelMap r (toFun ∘ x) := by
    -- Porting note: see porting note on `Hom.map_fun'`
    intros; trivial
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] (self : L.Hom M N) {n : ℕ} (r : L.Relations n) (x : Fin n → M)
Goal: FirstOrder.Language.Structure.RelMap r x → FirstOrder.Language.Structure.RelMap r (self.toFun ∘ x)
-- FirstOrder.Language.Embedding.map_rel'
structure Embedding extends M ↪ N where
  map_fun' : ∀ {n} (f : L.Functions n) (x), toFun (funMap f x) = funMap f (toFun ∘ x) := by
    -- Porting note: see porting note on `Hom.map_fun'`
    intros; trivial
  map_rel' : ∀ {n} (r : L.Relations n) (x), RelMap r (toFun ∘ x) ↔ RelMap r x := by
    -- Porting note: see porting note on `Hom.map_fun'`
    intros; trivial
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] (self : L.Embedding M N) {n : ℕ} (r : L.Relations n) (x : Fin n → M)
Goal: FirstOrder.Language.Structure.RelMap r (self.toFun ∘ x) ↔ FirstOrder.Language.Structure.RelMap r x
-- FirstOrder.Language.Embedding.map_fun'
structure Embedding extends M ↪ N where
  map_fun' : ∀ {n} (f : L.Functions n) (x), toFun (funMap f x) = funMap f (toFun ∘ x) := by
    -- Porting note: see porting note on `Hom.map_fun'`
    intros; trivial
  map_rel' : ∀ {n} (r : L.Relations n) (x), RelMap r (toFun ∘ x) ↔ RelMap r x := by
    -- Porting note: see porting note on `Hom.map_fun'`
    intros; trivial
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] (self : L.Embedding M N) {n : ℕ} (f : L.Functions n) (x : Fin n → M)
Goal: self.toFun (FirstOrder.Language.Structure.funMap f x) = FirstOrder.Language.Structure.funMap f (self.toFun ∘ x)
-- FirstOrder.Language.Equiv.map_fun'
structure Equiv extends M ≃ N where
  map_fun' : ∀ {n} (f : L.Functions n) (x), toFun (funMap f x) = funMap f (toFun ∘ x) := by
    -- Porting note: see porting note on `Hom.map_fun'`
    intros; trivial
  map_rel' : ∀ {n} (r : L.Relations n) (x), RelMap r (toFun ∘ x) ↔ RelMap r x := by
    -- Porting note: see porting note on `Hom.map_fun'`
    intros; trivial
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] (self : L.Equiv M N) {n : ℕ} (f : L.Functions n) (x : Fin n → M)
Goal: self.toFun (FirstOrder.Language.Structure.funMap f x) = FirstOrder.Language.Structure.funMap f (self.toFun ∘ x)
-- FirstOrder.Language.Equiv.map_rel'
structure Equiv extends M ≃ N where
  map_fun' : ∀ {n} (f : L.Functions n) (x), toFun (funMap f x) = funMap f (toFun ∘ x) := by
    -- Porting note: see porting note on `Hom.map_fun'`
    intros; trivial
  map_rel' : ∀ {n} (r : L.Relations n) (x), RelMap r (toFun ∘ x) ↔ RelMap r x := by
    -- Porting note: see porting note on `Hom.map_fun'`
    intros; trivial
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] (self : L.Equiv M N) {n : ℕ} (r : L.Relations n) (x : Fin n → M)
Goal: FirstOrder.Language.Structure.RelMap r (self.toFun ∘ x) ↔ FirstOrder.Language.Structure.RelMap r x
-- FirstOrder.Language.funMap_eq_coe_constants
theorem funMap_eq_coe_constants {c : L.Constants} {x : Fin 0 → M} : funMap c x = c 
Arguments: {L : FirstOrder.Language} {M : Type w} [L.Structure M] {c : L.Constants} {x : Fin 0 → M}
Goal: FirstOrder.Language.Structure.funMap c x = ↑c
-- FirstOrder.Language.nonempty_of_nonempty_constants
theorem nonempty_of_nonempty_constants [h : Nonempty L.Constants] : Nonempty M 
Arguments: {L : FirstOrder.Language} {M : Type w} [L.Structure M] [h : Nonempty L.Constants]
Goal: Nonempty M
-- FirstOrder.Language.Structure.funMap_apply₀
@[simp]
theorem funMap_apply₀ (c₀ : c) {x : Fin 0 → M} :
    @Structure.funMap _ M (Structure.mk₂ c' f₁' f₂' r₁' r₂') 0 c₀ x = c' c₀ 
Arguments: {M : Type w} {c f₁ f₂ : Type u} {r₁ r₂ : Type v} {c' : c → M} {f₁' : f₁ → M → M} {f₂' : f₂ → M → M → M} {r₁' : r₁ → Set M} {r₂' : r₂ → M → M → Prop} (c₀ : c) {x : Fin 0 → M}
Goal: FirstOrder.Language.Structure.funMap c₀ x = c' c₀
-- FirstOrder.Language.Structure.funMap_apply₁
@[simp]
theorem funMap_apply₁ (f : f₁) (x : M) :
    @Structure.funMap _ M (Structure.mk₂ c' f₁' f₂' r₁' r₂') 1 f ![x] = f₁' f x 
Arguments: {M : Type w} {c f₁ f₂ : Type u} {r₁ r₂ : Type v} {c' : c → M} {f₁' : f₁ → M → M} {f₂' : f₂ → M → M → M} {r₁' : r₁ → Set M} {r₂' : r₂ → M → M → Prop} (f : f₁) (x : M)
Goal: FirstOrder.Language.Structure.funMap f ![x] = f₁' f x
-- FirstOrder.Language.Structure.funMap_apply₂
@[simp]
theorem funMap_apply₂ (f : f₂) (x y : M) :
    @Structure.funMap _ M (Structure.mk₂ c' f₁' f₂' r₁' r₂') 2 f ![x, y] = f₂' f x y 
Arguments: {M : Type w} {c f₁ f₂ : Type u} {r₁ r₂ : Type v} {c' : c → M} {f₁' : f₁ → M → M} {f₂' : f₂ → M → M → M} {r₁' : r₁ → Set M} {r₂' : r₂ → M → M → Prop} (f : f₂) (x y : M)
Goal: FirstOrder.Language.Structure.funMap f ![x, y] = f₂' f x y
-- FirstOrder.Language.Structure.relMap_apply₁
@[simp]
theorem relMap_apply₁ (r : r₁) (x : M) :
    @Structure.RelMap _ M (Structure.mk₂ c' f₁' f₂' r₁' r₂') 1 r ![x] = (x ∈ r₁' r) 
Arguments: {M : Type w} {c f₁ f₂ : Type u} {r₁ r₂ : Type v} {c' : c → M} {f₁' : f₁ → M → M} {f₂' : f₂ → M → M → M} {r₁' : r₁ → Set M} {r₂' : r₂ → M → M → Prop} (r : r₁) (x : M)
Goal: FirstOrder.Language.Structure.RelMap r ![x] = (x ∈ r₁' r)
-- FirstOrder.Language.Structure.relMap_apply₂
@[simp]
theorem relMap_apply₂ (r : r₂) (x y : M) :
    @Structure.RelMap _ M (Structure.mk₂ c' f₁' f₂' r₁' r₂') 2 r ![x, y] = r₂' r x y 
Arguments: {M : Type w} {c f₁ f₂ : Type u} {r₁ r₂ : Type v} {c' : c → M} {f₁' : f₁ → M → M} {f₂' : f₂ → M → M → M} {r₁' : r₁ → Set M} {r₂' : r₂ → M → M → Prop} (r : r₂) (x y : M)
Goal: FirstOrder.Language.Structure.RelMap r ![x, y] = r₂' r x y
-- FirstOrder.Language.HomClass.map_fun
class HomClass (L : outParam Language) (F M N : Type*)
  [FunLike F M N] [L.Structure M] [L.Structure N] : Prop where
  map_fun : ∀ (φ : F) {n} (f : L.Functions n) (x), φ (funMap f x) = funMap f (φ ∘ x)
  map_rel : ∀ (φ : F) {n} (r : L.Relations n) (x), RelMap r x → RelMap r (φ ∘ x)
Arguments: {L : outParam FirstOrder.Language} {F : Type u_3} {M : Type u_4} {N : Type u_5} [FunLike F M N] [FirstOrder.Language.Structure L M] [FirstOrder.Language.Structure L N] [self : FirstOrder.Language.HomClass L F M N] (φ : F) {n : ℕ} (f : L.Functions n) (x : Fin n → M)
Goal: φ (FirstOrder.Language.Structure.funMap f x) = FirstOrder.Language.Structure.funMap f (⇑φ ∘ x)
-- FirstOrder.Language.HomClass.map_rel
class HomClass (L : outParam Language) (F M N : Type*)
  [FunLike F M N] [L.Structure M] [L.Structure N] : Prop where
  map_fun : ∀ (φ : F) {n} (f : L.Functions n) (x), φ (funMap f x) = funMap f (φ ∘ x)
  map_rel : ∀ (φ : F) {n} (r : L.Relations n) (x), RelMap r x → RelMap r (φ ∘ x)
Arguments: {L : outParam FirstOrder.Language} {F : Type u_3} {M : Type u_4} {N : Type u_5} [FunLike F M N] [FirstOrder.Language.Structure L M] [FirstOrder.Language.Structure L N] [self : FirstOrder.Language.HomClass L F M N] (φ : F) {n : ℕ} (r : L.Relations n) (x : Fin n → M)
Goal: FirstOrder.Language.Structure.RelMap r x → FirstOrder.Language.Structure.RelMap r (⇑φ ∘ x)
-- FirstOrder.Language.StrongHomClass.map_fun
class StrongHomClass (L : outParam Language) (F M N : Type*)
  [FunLike F M N] [L.Structure M] [L.Structure N] : Prop where
  map_fun : ∀ (φ : F) {n} (f : L.Functions n) (x), φ (funMap f x) = funMap f (φ ∘ x)
  map_rel : ∀ (φ : F) {n} (r : L.Relations n) (x), RelMap r (φ ∘ x) ↔ RelMap r x
Arguments: {L : outParam FirstOrder.Language} {F : Type u_3} {M : Type u_4} {N : Type u_5} [FunLike F M N] [FirstOrder.Language.Structure L M] [FirstOrder.Language.Structure L N] [self : FirstOrder.Language.StrongHomClass L F M N] (φ : F) {n : ℕ} (f : L.Functions n) (x : Fin n → M)
Goal: φ (FirstOrder.Language.Structure.funMap f x) = FirstOrder.Language.Structure.funMap f (⇑φ ∘ x)
-- FirstOrder.Language.StrongHomClass.map_rel
class StrongHomClass (L : outParam Language) (F M N : Type*)
  [FunLike F M N] [L.Structure M] [L.Structure N] : Prop where
  map_fun : ∀ (φ : F) {n} (f : L.Functions n) (x), φ (funMap f x) = funMap f (φ ∘ x)
  map_rel : ∀ (φ : F) {n} (r : L.Relations n) (x), RelMap r (φ ∘ x) ↔ RelMap r x
Arguments: {L : outParam FirstOrder.Language} {F : Type u_3} {M : Type u_4} {N : Type u_5} [FunLike F M N] [FirstOrder.Language.Structure L M] [FirstOrder.Language.Structure L N] [self : FirstOrder.Language.StrongHomClass L F M N] (φ : F) {n : ℕ} (r : L.Relations n) (x : Fin n → M)
Goal: FirstOrder.Language.Structure.RelMap r (⇑φ ∘ x) ↔ FirstOrder.Language.Structure.RelMap r x
-- FirstOrder.Language.HomClass.strongHomClassOfIsAlgebraic
theorem HomClass.strongHomClassOfIsAlgebraic [L.IsAlgebraic] {F M N} [L.Structure M] [L.Structure N]
    [FunLike F M N] [HomClass L F M N] : StrongHomClass L F M N 
Arguments: {L : FirstOrder.Language} [L.IsAlgebraic] {F : Type u_3} {M : Type u_4} {N : Type u_5} [L.Structure M] [L.Structure N] [FunLike F M N] [L.HomClass F M N]
Goal: L.StrongHomClass F M N
-- FirstOrder.Language.HomClass.map_constants
theorem HomClass.map_constants {F M N} [L.Structure M] [L.Structure N] [FunLike F M N]
    [HomClass L F M N] (φ : F) (c : L.Constants) : φ c = c 
Arguments: {L : FirstOrder.Language} {F : Type u_3} {M : Type u_4} {N : Type u_5} [L.Structure M] [L.Structure N] [FunLike F M N] [L.HomClass F M N] (φ : F) (c : L.Constants)
Goal: φ ↑c = ↑c
-- FirstOrder.Language.Hom.toFun_eq_coe
@[simp]
theorem toFun_eq_coe {f : M →[L] N} : f.toFun = (f : M → N) 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] {f : L.Hom M N}
Goal: f.toFun = ⇑f
-- FirstOrder.Language.Hom.ext
@[ext]
theorem ext ⦃f g : M →[L] N⦄ (h : ∀ x, f x = g x) : f = g 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] ⦃f g : L.Hom M N⦄ (h : ∀ (x : M), f x = g x)
Goal: f = g
-- FirstOrder.Language.Hom.ext_iff
theorem ext_iff {f g : M →[L] N} : f = g ↔ ∀ x, f x = g x 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] {f g : L.Hom M N}
Goal: f = g ↔ ∀ (x : M), f x = g x
-- FirstOrder.Language.Hom.map_fun
@[simp]
theorem map_fun (φ : M →[L] N) {n : ℕ} (f : L.Functions n) (x : Fin n → M) :
    φ (funMap f x) = funMap f (φ ∘ x) 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] (φ : L.Hom M N) {n : ℕ} (f : L.Functions n) (x : Fin n → M)
Goal: φ (FirstOrder.Language.Structure.funMap f x) = FirstOrder.Language.Structure.funMap f (⇑φ ∘ x)
-- FirstOrder.Language.Hom.map_constants
@[simp]
theorem map_constants (φ : M →[L] N) (c : L.Constants) : φ c = c 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] (φ : L.Hom M N) (c : L.Constants)
Goal: φ ↑c = ↑c
-- FirstOrder.Language.Hom.map_rel
@[simp]
theorem map_rel (φ : M →[L] N) {n : ℕ} (r : L.Relations n) (x : Fin n → M) :
    RelMap r x → RelMap r (φ ∘ x) 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] (φ : L.Hom M N) {n : ℕ} (r : L.Relations n) (x : Fin n → M)
Goal: FirstOrder.Language.Structure.RelMap r x → FirstOrder.Language.Structure.RelMap r (⇑φ ∘ x)
-- FirstOrder.Language.Hom.id_apply
@[simp]
theorem id_apply (x : M) : id L M x = x 
Arguments: {L : FirstOrder.Language} {M : Type w} [L.Structure M] (x : M)
Goal: (FirstOrder.Language.Hom.id L M) x = x
-- FirstOrder.Language.Hom.comp_apply
@[simp]
theorem comp_apply (g : N →[L] P) (f : M →[L] N) (x : M) : g.comp f x = g (f x) 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] {P : Type u_1} [L.Structure P] (g : L.Hom N P) (f : L.Hom M N) (x : M)
Goal: (g.comp f) x = g (f x)
-- FirstOrder.Language.Hom.comp_assoc
theorem comp_assoc (f : M →[L] N) (g : N →[L] P) (h : P →[L] Q) :
    (h.comp g).comp f = h.comp (g.comp f) 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] {P : Type u_1} [L.Structure P] {Q : Type u_2} [L.Structure Q] (f : L.Hom M N) (g : L.Hom N P) (h : L.Hom P Q)
Goal: (h.comp g).comp f = h.comp (g.comp f)
-- FirstOrder.Language.Hom.comp_id
@[simp]
theorem comp_id (f : M →[L] N) : f.comp (id L M) = f 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] (f : L.Hom M N)
Goal: f.comp (FirstOrder.Language.Hom.id L M) = f
-- FirstOrder.Language.Hom.id_comp
@[simp]
theorem id_comp (f : M →[L] N) : (id L N).comp f = f 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] (f : L.Hom M N)
Goal: (FirstOrder.Language.Hom.id L N).comp f = f
-- FirstOrder.Language.Embedding.map_fun
@[simp]
theorem map_fun (φ : M ↪[L] N) {n : ℕ} (f : L.Functions n) (x : Fin n → M) :
    φ (funMap f x) = funMap f (φ ∘ x) 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] (φ : L.Embedding M N) {n : ℕ} (f : L.Functions n) (x : Fin n → M)
Goal: φ (FirstOrder.Language.Structure.funMap f x) = FirstOrder.Language.Structure.funMap f (⇑φ ∘ x)
-- FirstOrder.Language.Embedding.map_constants
@[simp]
theorem map_constants (φ : M ↪[L] N) (c : L.Constants) : φ c = c 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] (φ : L.Embedding M N) (c : L.Constants)
Goal: φ ↑c = ↑c
-- FirstOrder.Language.Embedding.map_rel
@[simp]
theorem map_rel (φ : M ↪[L] N) {n : ℕ} (r : L.Relations n) (x : Fin n → M) :
    RelMap r (φ ∘ x) ↔ RelMap r x 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] (φ : L.Embedding M N) {n : ℕ} (r : L.Relations n) (x : Fin n → M)
Goal: FirstOrder.Language.Structure.RelMap r (⇑φ ∘ x) ↔ FirstOrder.Language.Structure.RelMap r x
-- FirstOrder.Language.Embedding.coe_toHom
@[simp]
theorem coe_toHom {f : M ↪[L] N} : (f.toHom : M → N) = f 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] {f : L.Embedding M N}
Goal: ⇑f.toHom = ⇑f
-- FirstOrder.Language.Embedding.coe_injective
theorem coe_injective : @Function.Injective (M ↪[L] N) (M → N) (↑)
  
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N]
Goal: Function.Injective DFunLike.coe
-- FirstOrder.Language.Embedding.ext
@[ext]
theorem ext ⦃f g : M ↪[L] N⦄ (h : ∀ x, f x = g x) : f = g 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] ⦃f g : L.Embedding M N⦄ (h : ∀ (x : M), f x = g x)
Goal: f = g
-- FirstOrder.Language.Embedding.ext_iff
theorem ext_iff {f g : M ↪[L] N} : f = g ↔ ∀ x, f x = g x 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] {f g : L.Embedding M N}
Goal: f = g ↔ ∀ (x : M), f x = g x
-- FirstOrder.Language.Embedding.toHom_injective
theorem toHom_injective : @Function.Injective (M ↪[L] N) (M →[L] N) (·.toHom) 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N]
Goal: Function.Injective fun x => x.toHom
-- FirstOrder.Language.Embedding.toHom_inj
@[simp]
theorem toHom_inj {f g : M ↪[L] N} : f.toHom = g.toHom ↔ f = g 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] {f g : L.Embedding M N}
Goal: f.toHom = g.toHom ↔ f = g
-- FirstOrder.Language.Embedding.injective
theorem injective (f : M ↪[L] N) : Function.Injective f 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] (f : L.Embedding M N)
Goal: Function.Injective ⇑f
-- FirstOrder.Language.Embedding.ofInjective_toFun
@[simps!]
def ofInjective [L.IsAlgebraic] {f : M →[L] N} (hf : Function.Injective f) : M ↪[L] N 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] [L.IsAlgebraic] {f : L.Hom M N} (hf : Function.Injective ⇑f)
Goal: ∀ (a : M), (FirstOrder.Language.Embedding.ofInjective hf) a = f a
-- FirstOrder.Language.Embedding.coeFn_ofInjective
@[simp]
theorem coeFn_ofInjective [L.IsAlgebraic] {f : M →[L] N} (hf : Function.Injective f) :
    (ofInjective hf : M → N) = f 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] [L.IsAlgebraic] {f : L.Hom M N} (hf : Function.Injective ⇑f)
Goal: ⇑(FirstOrder.Language.Embedding.ofInjective hf) = ⇑f
-- FirstOrder.Language.Embedding.ofInjective_toHom
@[simp]
theorem ofInjective_toHom [L.IsAlgebraic] {f : M →[L] N} (hf : Function.Injective f) :
    (ofInjective hf).toHom = f 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] [L.IsAlgebraic] {f : L.Hom M N} (hf : Function.Injective ⇑f)
Goal: (FirstOrder.Language.Embedding.ofInjective hf).toHom = f
-- FirstOrder.Language.Embedding.refl_apply
@[simp]
theorem refl_apply (x : M) : refl L M x = x 
Arguments: {L : FirstOrder.Language} {M : Type w} [L.Structure M] (x : M)
Goal: (FirstOrder.Language.Embedding.refl L M) x = x
-- FirstOrder.Language.Embedding.comp_apply
@[simp]
theorem comp_apply (g : N ↪[L] P) (f : M ↪[L] N) (x : M) : g.comp f x = g (f x) 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] {P : Type u_1} [L.Structure P] (g : L.Embedding N P) (f : L.Embedding M N) (x : M)
Goal: (g.comp f) x = g (f x)
-- FirstOrder.Language.Embedding.comp_assoc
theorem comp_assoc (f : M ↪[L] N) (g : N ↪[L] P) (h : P ↪[L] Q) :
    (h.comp g).comp f = h.comp (g.comp f) 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] {P : Type u_1} [L.Structure P] {Q : Type u_2} [L.Structure Q] (f : L.Embedding M N) (g : L.Embedding N P) (h : L.Embedding P Q)
Goal: (h.comp g).comp f = h.comp (g.comp f)
-- FirstOrder.Language.Embedding.comp_injective
theorem comp_injective (h : N ↪[L] P) :
    Function.Injective (h.comp : (M ↪[L] N) →  (M ↪[L] P)) 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] {P : Type u_1} [L.Structure P] (h : L.Embedding N P)
Goal: Function.Injective h.comp
-- FirstOrder.Language.Embedding.comp_inj
@[simp]
theorem comp_inj (h : N ↪[L] P) (f g : M ↪[L] N) : h.comp f = h.comp g ↔ f = g 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] {P : Type u_1} [L.Structure P] (h : L.Embedding N P) (f g : L.Embedding M N)
Goal: h.comp f = h.comp g ↔ f = g
-- FirstOrder.Language.Embedding.toHom_comp_injective
theorem toHom_comp_injective (h : N ↪[L] P) :
    Function.Injective (h.toHom.comp : (M →[L] N) →  (M →[L] P)) 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] {P : Type u_1} [L.Structure P] (h : L.Embedding N P)
Goal: Function.Injective h.toHom.comp
-- FirstOrder.Language.Embedding.toHom_comp_inj
@[simp]
theorem toHom_comp_inj (h : N ↪[L] P) (f g : M →[L] N) : h.toHom.comp f = h.toHom.comp g ↔ f = g 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] {P : Type u_1} [L.Structure P] (h : L.Embedding N P) (f g : L.Hom M N)
Goal: h.toHom.comp f = h.toHom.comp g ↔ f = g
-- FirstOrder.Language.Embedding.comp_toHom
@[simp]
theorem comp_toHom (hnp : N ↪[L] P) (hmn : M ↪[L] N) :
    (hnp.comp hmn).toHom = hnp.toHom.comp hmn.toHom 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] {P : Type u_1} [L.Structure P] (hnp : L.Embedding N P) (hmn : L.Embedding M N)
Goal: (hnp.comp hmn).toHom = hnp.toHom.comp hmn.toHom
-- FirstOrder.Language.Embedding.comp_refl
@[simp]
theorem comp_refl (f : M ↪[L] N) : f.comp (refl L M) = f 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] (f : L.Embedding M N)
Goal: f.comp (FirstOrder.Language.Embedding.refl L M) = f
-- FirstOrder.Language.Embedding.refl_comp
@[simp]
theorem refl_comp (f : M ↪[L] N) : (refl L N).comp f = f 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] (f : L.Embedding M N)
Goal: (FirstOrder.Language.Embedding.refl L N).comp f = f
-- FirstOrder.Language.Embedding.refl_toHom
@[simp]
theorem refl_toHom : (refl L M).toHom = Hom.id L M 
Arguments: {L : FirstOrder.Language} {M : Type w} [L.Structure M]
Goal: (FirstOrder.Language.Embedding.refl L M).toHom = FirstOrder.Language.Hom.id L M
-- FirstOrder.Language.Equiv.symm_symm
@[simp]
theorem symm_symm (f : M ≃[L] N) :
    f.symm.symm = f 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] (f : L.Equiv M N)
Goal: f.symm.symm = f
-- FirstOrder.Language.Equiv.apply_symm_apply
@[simp]
theorem apply_symm_apply (f : M ≃[L] N) (a : N) : f (f.symm a) = a 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] (f : L.Equiv M N) (a : N)
Goal: f (f.symm a) = a
-- FirstOrder.Language.Equiv.symm_apply_apply
@[simp]
theorem symm_apply_apply (f : M ≃[L] N) (a : M) : f.symm (f a) = a 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] (f : L.Equiv M N) (a : M)
Goal: f.symm (f a) = a
-- FirstOrder.Language.Equiv.map_fun
@[simp]
theorem map_fun (φ : M ≃[L] N) {n : ℕ} (f : L.Functions n) (x : Fin n → M) :
    φ (funMap f x) = funMap f (φ ∘ x) 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] (φ : L.Equiv M N) {n : ℕ} (f : L.Functions n) (x : Fin n → M)
Goal: φ (FirstOrder.Language.Structure.funMap f x) = FirstOrder.Language.Structure.funMap f (⇑φ ∘ x)
-- FirstOrder.Language.Equiv.map_constants
@[simp]
theorem map_constants (φ : M ≃[L] N) (c : L.Constants) : φ c = c 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] (φ : L.Equiv M N) (c : L.Constants)
Goal: φ ↑c = ↑c
-- FirstOrder.Language.Equiv.map_rel
@[simp]
theorem map_rel (φ : M ≃[L] N) {n : ℕ} (r : L.Relations n) (x : Fin n → M) :
    RelMap r (φ ∘ x) ↔ RelMap r x 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] (φ : L.Equiv M N) {n : ℕ} (r : L.Relations n) (x : Fin n → M)
Goal: FirstOrder.Language.Structure.RelMap r (⇑φ ∘ x) ↔ FirstOrder.Language.Structure.RelMap r x
-- FirstOrder.Language.Equiv.toEmbedding_toHom
@[simp]
theorem toEmbedding_toHom (f : M ≃[L] N) : f.toEmbedding.toHom = f.toHom 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] (f : L.Equiv M N)
Goal: f.toEmbedding.toHom = f.toHom
-- FirstOrder.Language.Equiv.coe_toHom
@[simp]
theorem coe_toHom {f : M ≃[L] N} : (f.toHom : M → N) = (f : M → N) 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] {f : L.Equiv M N}
Goal: ⇑f.toHom = ⇑f
-- FirstOrder.Language.Equiv.coe_toEmbedding
@[simp]
theorem coe_toEmbedding (f : M ≃[L] N) : (f.toEmbedding : M → N) = (f : M → N) 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] (f : L.Equiv M N)
Goal: ⇑f.toEmbedding = ⇑f
-- FirstOrder.Language.Equiv.injective_toEmbedding
theorem injective_toEmbedding : Function.Injective (toEmbedding : (M ≃[L] N) → M ↪[L] N) 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N]
Goal: Function.Injective FirstOrder.Language.Equiv.toEmbedding
-- FirstOrder.Language.Equiv.coe_injective
theorem coe_injective : @Function.Injective (M ≃[L] N) (M → N) (↑) 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N]
Goal: Function.Injective DFunLike.coe
-- FirstOrder.Language.Equiv.ext
@[ext]
theorem ext ⦃f g : M ≃[L] N⦄ (h : ∀ x, f x = g x) : f = g 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type w'} [L.Structure M] [L.Structure N] ⦃f g : L.Equiv M N⦄ (h : ∀ (x : M), f x = g x)
Goal: f = g