ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- FirstOrder.Language.Substructure.subset_closure_withConstants
theorem subset_closure_withConstants : A ⊆ closure (L[[A]]) s 
Arguments: {L : FirstOrder.Language} {M : Type w} [L.Structure M] {A s : Set M}
Goal: A ⊆ ↑((FirstOrder.Language.Substructure.closure (L.withConstants ↑A)).toFun s)
-- FirstOrder.Language.Substructure.closure_withConstants_eq
theorem closure_withConstants_eq :
    closure (L[[A]]) s =
      (closure L (A ∪ s)).withConstants ((A.subset_union_left).trans subset_closure) 
Arguments: {L : FirstOrder.Language} {M : Type w} [L.Structure M] {A s : Set M}
Goal: (FirstOrder.Language.Substructure.closure (L.withConstants ↑A)).toFun s =
  ((FirstOrder.Language.Substructure.closure L).toFun (A ∪ s)).withConstants ⋯
-- FirstOrder.Language.Hom.domRestrict_toFun
@[simps!]
def domRestrict (f : M →[L] N) (p : L.Substructure M) : p →[L] N 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type u_1} [L.Structure M] [L.Structure N] (f : L.Hom M N) (p : L.Substructure M)
Goal: ∀ (a : ↥p), (f.domRestrict p) a = f ↑a
-- FirstOrder.Language.Hom.codRestrict_toFun_coe
@[simps]
def codRestrict (p : L.Substructure N) (f : M →[L] N) (h : ∀ c, f c ∈ p) : M →[L] p 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type u_1} [L.Structure M] [L.Structure N] (p : L.Substructure N) (f : L.Hom M N) (h : ∀ (c : M), f c ∈ p) (c : M)
Goal: ↑((FirstOrder.Language.Hom.codRestrict p f h) c) = f c
-- FirstOrder.Language.Hom.comp_codRestrict
@[simp]
theorem comp_codRestrict (f : M →[L] N) (g : N →[L] P) (p : L.Substructure P) (h : ∀ b, g b ∈ p) :
    ((codRestrict p g h).comp f : M →[L] p) = codRestrict p (g.comp f) fun _ => h _ 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type u_1} {P : Type u_2} [L.Structure M] [L.Structure N] [L.Structure P] (f : L.Hom M N) (g : L.Hom N P) (p : L.Substructure P) (h : ∀ (b : N), g b ∈ p)
Goal: (FirstOrder.Language.Hom.codRestrict p g h).comp f = FirstOrder.Language.Hom.codRestrict p (g.comp f) ⋯
-- FirstOrder.Language.Hom.subtype_comp_codRestrict
@[simp]
theorem subtype_comp_codRestrict (f : M →[L] N) (p : L.Substructure N) (h : ∀ b, f b ∈ p) :
    p.subtype.toHom.comp (codRestrict p f h) = f 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type u_1} [L.Structure M] [L.Structure N] (f : L.Hom M N) (p : L.Substructure N) (h : ∀ (b : M), f b ∈ p)
Goal: p.subtype.toHom.comp (FirstOrder.Language.Hom.codRestrict p f h) = f
-- FirstOrder.Language.Hom.range_coe
theorem range_coe (f : M →[L] N) : (range f : Set N) = Set.range f 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type u_1} [L.Structure M] [L.Structure N] (f : L.Hom M N)
Goal: ↑f.range = Set.range ⇑f
-- FirstOrder.Language.Hom.mem_range
@[simp]
theorem mem_range {f : M →[L] N} {x} : x ∈ range f ↔ ∃ y, f y = x 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type u_1} [L.Structure M] [L.Structure N] {f : L.Hom M N} {x : N}
Goal: x ∈ f.range ↔ ∃ y, f y = x
-- FirstOrder.Language.Hom.range_eq_map
theorem range_eq_map (f : M →[L] N) : f.range = map f ⊤ 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type u_1} [L.Structure M] [L.Structure N] (f : L.Hom M N)
Goal: f.range = FirstOrder.Language.Substructure.map f ⊤
-- FirstOrder.Language.Hom.mem_range_self
theorem mem_range_self (f : M →[L] N) (x : M) : f x ∈ f.range 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type u_1} [L.Structure M] [L.Structure N] (f : L.Hom M N) (x : M)
Goal: f x ∈ f.range
-- FirstOrder.Language.Hom.range_id
@[simp]
theorem range_id : range (id L M) = ⊤ 
Arguments: {L : FirstOrder.Language} {M : Type w} [L.Structure M]
Goal: (FirstOrder.Language.Hom.id L M).range = ⊤
-- FirstOrder.Language.Hom.range_comp
theorem range_comp (f : M →[L] N) (g : N →[L] P) : range (g.comp f : M →[L] P) = map g (range f) 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type u_1} {P : Type u_2} [L.Structure M] [L.Structure N] [L.Structure P] (f : L.Hom M N) (g : L.Hom N P)
Goal: (g.comp f).range = FirstOrder.Language.Substructure.map g f.range
-- FirstOrder.Language.Hom.range_comp_le_range
theorem range_comp_le_range (f : M →[L] N) (g : N →[L] P) : range (g.comp f : M →[L] P) ≤ range g 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type u_1} {P : Type u_2} [L.Structure M] [L.Structure N] [L.Structure P] (f : L.Hom M N) (g : L.Hom N P)
Goal: (g.comp f).range ≤ g.range
-- FirstOrder.Language.Hom.range_eq_top
theorem range_eq_top {f : M →[L] N} : range f = ⊤ ↔ Function.Surjective f 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type u_1} [L.Structure M] [L.Structure N] {f : L.Hom M N}
Goal: f.range = ⊤ ↔ Function.Surjective ⇑f
-- FirstOrder.Language.Hom.range_le_iff_comap
theorem range_le_iff_comap {f : M →[L] N} {p : L.Substructure N} : range f ≤ p ↔ comap f p = ⊤ 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type u_1} [L.Structure M] [L.Structure N] {f : L.Hom M N} {p : L.Substructure N}
Goal: f.range ≤ p ↔ FirstOrder.Language.Substructure.comap f p = ⊤
-- FirstOrder.Language.Hom.map_le_range
theorem map_le_range {f : M →[L] N} {p : L.Substructure M} : map f p ≤ range f 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type u_1} [L.Structure M] [L.Structure N] {f : L.Hom M N} {p : L.Substructure M}
Goal: FirstOrder.Language.Substructure.map f p ≤ f.range
-- FirstOrder.Language.Hom.eqOn_closure
theorem eqOn_closure {f g : M →[L] N} {s : Set M} (h : Set.EqOn f g s) :
    Set.EqOn f g (closure L s) 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type u_1} [L.Structure M] [L.Structure N] {f g : L.Hom M N} {s : Set M} (h : Set.EqOn (⇑f) (⇑g) s)
Goal: Set.EqOn ⇑f ⇑g ↑((FirstOrder.Language.Substructure.closure L).toFun s)
-- FirstOrder.Language.Hom.eq_of_eqOn_top
theorem eq_of_eqOn_top {f g : M →[L] N} (h : Set.EqOn f g (⊤ : Substructure L M)) : f = g 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type u_1} [L.Structure M] [L.Structure N] {f g : L.Hom M N} (h : Set.EqOn ⇑f ⇑g ↑⊤)
Goal: f = g
-- FirstOrder.Language.Hom.eq_of_eqOn_dense
theorem eq_of_eqOn_dense (hs : closure L s = ⊤) {f g : M →[L] N} (h : s.EqOn f g) : f = g 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type u_1} [L.Structure M] [L.Structure N] {s : Set M} (hs : (FirstOrder.Language.Substructure.closure L).toFun s = ⊤) {f g : L.Hom M N} (h : Set.EqOn (⇑f) (⇑g) s)
Goal: f = g
-- FirstOrder.Language.Embedding.domRestrict_apply
@[simp]
theorem domRestrict_apply (f : M ↪[L] N) (p : L.Substructure M) (x : p) : f.domRestrict p x = f x 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type u_1} [L.Structure M] [L.Structure N] (f : L.Embedding M N) (p : L.Substructure M) (x : ↥p)
Goal: (f.domRestrict p) x = f ↑x
-- FirstOrder.Language.Embedding.codRestrict_apply
@[simp]
theorem codRestrict_apply (p : L.Substructure N) (f : M ↪[L] N) {h} (x : M) :
    (codRestrict p f h x : N) = f x 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type u_1} [L.Structure M] [L.Structure N] (p : L.Substructure N) (f : L.Embedding M N) {h : ∀ (c : M), f c ∈ p} (x : M)
Goal: ↑((FirstOrder.Language.Embedding.codRestrict p f h) x) = f x
-- FirstOrder.Language.Embedding.codRestrict_apply'
@[simp]
theorem codRestrict_apply' (p : L.Substructure N) (f : M ↪[L] N) {h} (x : M) :
    codRestrict p f h x = ⟨f x, h x⟩ 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type u_1} [L.Structure M] [L.Structure N] (p : L.Substructure N) (f : L.Embedding M N) {h : ∀ (c : M), f c ∈ p} (x : M)
Goal: (FirstOrder.Language.Embedding.codRestrict p f h) x = ⟨f x, ⋯⟩
-- FirstOrder.Language.Embedding.comp_codRestrict
@[simp]
theorem comp_codRestrict (f : M ↪[L] N) (g : N ↪[L] P) (p : L.Substructure P) (h : ∀ b, g b ∈ p) :
    ((codRestrict p g h).comp f : M ↪[L] p) = codRestrict p (g.comp f) fun _ => h _ 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type u_1} {P : Type u_2} [L.Structure M] [L.Structure N] [L.Structure P] (f : L.Embedding M N) (g : L.Embedding N P) (p : L.Substructure P) (h : ∀ (b : N), g b ∈ p)
Goal: (FirstOrder.Language.Embedding.codRestrict p g h).comp f = FirstOrder.Language.Embedding.codRestrict p (g.comp f) ⋯
-- FirstOrder.Language.Embedding.subtype_comp_codRestrict
@[simp]
theorem subtype_comp_codRestrict (f : M ↪[L] N) (p : L.Substructure N) (h : ∀ b, f b ∈ p) :
    p.subtype.comp (codRestrict p f h) = f 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type u_1} [L.Structure M] [L.Structure N] (f : L.Embedding M N) (p : L.Substructure N) (h : ∀ (b : M), f b ∈ p)
Goal: p.subtype.comp (FirstOrder.Language.Embedding.codRestrict p f h) = f
-- FirstOrder.Language.Embedding.substructureEquivMap_apply
@[simp]
theorem substructureEquivMap_apply (f : M ↪[L] N) (p : L.Substructure M) (x : p) :
    (f.substructureEquivMap p x : N) = f x 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type u_1} [L.Structure M] [L.Structure N] (f : L.Embedding M N) (p : L.Substructure M) (x : ↥p)
Goal: ↑((f.substructureEquivMap p) x) = f ↑x
-- FirstOrder.Language.Embedding.subtype_substructureEquivMap
@[simp]
theorem subtype_substructureEquivMap (f : M ↪[L] N) (s : L.Substructure M) :
    (subtype _).comp (f.substructureEquivMap s).toEmbedding = f.comp (subtype _) 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type u_1} [L.Structure M] [L.Structure N] (f : L.Embedding M N) (s : L.Substructure M)
Goal: (FirstOrder.Language.Substructure.map f.toHom s).subtype.comp (f.substructureEquivMap s).toEmbedding = f.comp s.subtype
-- FirstOrder.Language.Embedding.equivRange_apply
@[simp]
theorem equivRange_apply (f : M ↪[L] N) (x : M) : (f.equivRange x : N) = f x 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type u_1} [L.Structure M] [L.Structure N] (f : L.Embedding M N) (x : M)
Goal: ↑(f.equivRange x) = f x
-- FirstOrder.Language.Embedding.subtype_equivRange
@[simp]
theorem subtype_equivRange (f : M ↪[L] N) : (subtype _).comp f.equivRange.toEmbedding = f 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type u_1} [L.Structure M] [L.Structure N] (f : L.Embedding M N)
Goal: f.toHom.range.subtype.comp f.equivRange.toEmbedding = f
-- FirstOrder.Language.Equiv.toHom_range
theorem toHom_range (f : M ≃[L] N) : f.toHom.range = ⊤ 
Arguments: {L : FirstOrder.Language} {M : Type w} {N : Type u_1} [L.Structure M] [L.Structure N] (f : L.Equiv M N)
Goal: f.toHom.range = ⊤
-- FirstOrder.Language.Substructure.inclusion_self
@[simp]
theorem inclusion_self (S : L.Substructure M) : inclusion (le_refl S) = Embedding.refl L S 
Arguments: {L : FirstOrder.Language} {M : Type w} [L.Structure M] (S : L.Substructure M)
Goal: FirstOrder.Language.Substructure.inclusion ⋯ = FirstOrder.Language.Embedding.refl L ↥S
-- FirstOrder.Language.Substructure.coe_inclusion
@[simp]
theorem coe_inclusion {S T : L.Substructure M} (h : S ≤ T) :
    (inclusion h : S → T) = Set.inclusion h 
Arguments: {L : FirstOrder.Language} {M : Type w} [L.Structure M] {S T : L.Substructure M} (h : S ≤ T)
Goal: ⇑(FirstOrder.Language.Substructure.inclusion h) = Set.inclusion h
-- FirstOrder.Language.Substructure.range_subtype
theorem range_subtype (S : L.Substructure M) : S.subtype.toHom.range = S 
Arguments: {L : FirstOrder.Language} {M : Type w} [L.Structure M] (S : L.Substructure M)
Goal: S.subtype.toHom.range = S
-- FirstOrder.Language.DirectedSystem.map_self
nonrec theorem map_self [DirectedSystem G fun i j h => f i j h] (i x h) : f i i h x = x 
Arguments: {L : FirstOrder.Language} {ι : Type v} [Preorder ι] {G : ι → Type w} [(i : ι) → L.Structure (G i)] (f : (i j : ι) → i ≤ j → G i ↪[L] G j) [DirectedSystem G fun i j h => ⇑(f i j h)] (i : ι) (x : G i) (h : i ≤ i)
Goal: (f i i h) x = x
-- FirstOrder.Language.DirectedSystem.map_map
nonrec theorem map_map [DirectedSystem G fun i j h => f i j h] {i j k} (hij hjk x) :
    f j k hjk (f i j hij x) = f i k (le_trans hij hjk) x 
Arguments: {L : FirstOrder.Language} {ι : Type v} [Preorder ι] {G : ι → Type w} [(i : ι) → L.Structure (G i)] (f : (i j : ι) → i ≤ j → G i ↪[L] G j) [DirectedSystem G fun i j h => ⇑(f i j h)] {i j k : ι} (hij : i ≤ j) (hjk : j ≤ k) (x : G i)
Goal: (f j k hjk) ((f i j hij) x) = (f i k ⋯) x
-- FirstOrder.Language.DirectedSystem.coe_natLERec
@[simp]
theorem coe_natLERec (m n : ℕ) (h : m ≤ n) :
    (natLERec f' m n h : G' m → G' n) = Nat.leRecOn h (@fun k => f' k) 
Arguments: {L : FirstOrder.Language} {G' : ℕ → Type w} [(i : ℕ) → L.Structure (G' i)] (f' : (n : ℕ) → G' n ↪[L] G' (n + 1)) (m n : ℕ) (h : m ≤ n)
Goal: ⇑(FirstOrder.Language.DirectedSystem.natLERec f' m n h) = fun a => Nat.leRecOn h (fun k => ⇑(f' k)) a
-- FirstOrder.Language.DirectLimit.unify_sigma_mk_self
@[simp]
theorem unify_sigma_mk_self {α : Type*} {i : ι} {x : α → G i} :
    (unify f (fun a => .mk f i (x a)) i fun j ⟨a, hj⟩ =>
      _root_.trans (le_of_eq hj.symm) (refl _)) = x 
Arguments: {L : FirstOrder.Language} {ι : Type v} [Preorder ι] {G : ι → Type w} [(i : ι) → L.Structure (G i)] (f : (i j : ι) → i ≤ j → G i ↪[L] G j) [DirectedSystem G fun i j h => ⇑(f i j h)] {α : Type u_1} {i : ι} {x : α → G i}
Goal: FirstOrder.Language.DirectLimit.unify f (fun a => FirstOrder.Language.Structure.Sigma.mk f i (x a)) i ⋯ = x
-- FirstOrder.Language.DirectLimit.comp_unify
theorem comp_unify {α : Type*} {x : α → Σˣ f} {i j : ι} (ij : i ≤ j)
    (h : i ∈ upperBounds (range (Sigma.fst ∘ x))) :
    f i j ij ∘ unify f x i h = unify f x j
      fun k hk => _root_.trans (mem_upperBounds.1 h k hk) ij 
Arguments: {L : FirstOrder.Language} {ι : Type v} [Preorder ι] {G : ι → Type w} [(i : ι) → L.Structure (G i)] (f : (i j : ι) → i ≤ j → G i ↪[L] G j) [DirectedSystem G fun i j h => ⇑(f i j h)] {α : Type u_1} {x : α → FirstOrder.Language.Structure.Sigma f} {i j : ι} (ij : i ≤ j) (h : i ∈ upperBounds (Set.range (Sigma.fst ∘ x)))
Goal: ⇑(f i j ij) ∘ FirstOrder.Language.DirectLimit.unify f x i h = FirstOrder.Language.DirectLimit.unify f x j ⋯
-- FirstOrder.Language.DirectLimit.equiv_iff
theorem equiv_iff {x y : Σˣ f} {i : ι} (hx : x.1 ≤ i) (hy : y.1 ≤ i) :
    x ≈ y ↔ (f x.1 i hx) x.2 = (f y.1 i hy) y.2 
Arguments: {L : FirstOrder.Language} {ι : Type v} [Preorder ι] (G : ι → Type w) [(i : ι) → L.Structure (G i)] (f : (i j : ι) → i ≤ j → G i ↪[L] G j) [IsDirected ι fun x x_1 => x ≤ x_1] [DirectedSystem G fun i j h => ⇑(f i j h)] {x y : FirstOrder.Language.Structure.Sigma f} {i : ι} (hx : x.fst ≤ i) (hy : y.fst ≤ i)
Goal: x ≈ y ↔ (f x.fst i hx) x.snd = (f y.fst i hy) y.snd
-- FirstOrder.Language.DirectLimit.funMap_unify_equiv
theorem funMap_unify_equiv {n : ℕ} (F : L.Functions n) (x : Fin n → Σˣ f) (i j : ι)
    (hi : i ∈ upperBounds (range (Sigma.fst ∘ x))) (hj : j ∈ upperBounds (range (Sigma.fst ∘ x))) :
    Structure.Sigma.mk f i (funMap F (unify f x i hi)) ≈ .mk f j (funMap F (unify f x j hj)) 
Arguments: {L : FirstOrder.Language} {ι : Type v} [Preorder ι] (G : ι → Type w) [(i : ι) → L.Structure (G i)] (f : (i j : ι) → i ≤ j → G i ↪[L] G j) [IsDirected ι fun x x_1 => x ≤ x_1] [DirectedSystem G fun i j h => ⇑(f i j h)] {n : ℕ} (F : L.Functions n) (x : Fin n → FirstOrder.Language.Structure.Sigma f) (i j : ι) (hi : i ∈ upperBounds (Set.range (Sigma.fst ∘ x))) (hj : j ∈ upperBounds (Set.range (Sigma.fst ∘ x)))
Goal: FirstOrder.Language.Structure.Sigma.mk f i
    (FirstOrder.Language.Structure.funMap F (FirstOrder.Language.DirectLimit.unify f x i hi)) ≈
  FirstOrder.Language.Structure.Sigma.mk f j
    (FirstOrder.Language.Structure.funMap F (FirstOrder.Language.DirectLimit.unify f x j hj))
-- FirstOrder.Language.DirectLimit.relMap_unify_equiv
theorem relMap_unify_equiv {n : ℕ} (R : L.Relations n) (x : Fin n → Σˣ f) (i j : ι)
    (hi : i ∈ upperBounds (range (Sigma.fst ∘ x))) (hj : j ∈ upperBounds (range (Sigma.fst ∘ x))) :
    RelMap R (unify f x i hi) = RelMap R (unify f x j hj) 
Arguments: {L : FirstOrder.Language} {ι : Type v} [Preorder ι] (G : ι → Type w) [(i : ι) → L.Structure (G i)] (f : (i j : ι) → i ≤ j → G i ↪[L] G j) [IsDirected ι fun x x_1 => x ≤ x_1] [DirectedSystem G fun i j h => ⇑(f i j h)] {n : ℕ} (R : L.Relations n) (x : Fin n → FirstOrder.Language.Structure.Sigma f) (i j : ι) (hi : i ∈ upperBounds (Set.range (Sigma.fst ∘ x))) (hj : j ∈ upperBounds (Set.range (Sigma.fst ∘ x)))
Goal: FirstOrder.Language.Structure.RelMap R (FirstOrder.Language.DirectLimit.unify f x i hi) =
  FirstOrder.Language.Structure.RelMap R (FirstOrder.Language.DirectLimit.unify f x j hj)
-- FirstOrder.Language.DirectLimit.exists_unify_eq
theorem exists_unify_eq {α : Type*} [Finite α] {x y : α → Σˣ f} (xy : x ≈ y) :
    ∃ (i : ι) (hx : i ∈ upperBounds (range (Sigma.fst ∘ x)))
      (hy : i ∈ upperBounds (range (Sigma.fst ∘ y))), unify f x i hx = unify f y i hy 
Arguments: {L : FirstOrder.Language} {ι : Type v} [Preorder ι] (G : ι → Type w) [(i : ι) → L.Structure (G i)] (f : (i j : ι) → i ≤ j → G i ↪[L] G j) [IsDirected ι fun x x_1 => x ≤ x_1] [DirectedSystem G fun i j h => ⇑(f i j h)] [Nonempty ι] {α : Type u_1} [Finite α] {x y : α → FirstOrder.Language.Structure.Sigma f} (xy : x ≈ y)
Goal: ∃ i,
  ∃ (hx : i ∈ upperBounds (Set.range (Sigma.fst ∘ x))) (hy : i ∈ upperBounds (Set.range (Sigma.fst ∘ y))),
    FirstOrder.Language.DirectLimit.unify f x i hx = FirstOrder.Language.DirectLimit.unify f y i hy
-- FirstOrder.Language.DirectLimit.funMap_equiv_unify
theorem funMap_equiv_unify {n : ℕ} (F : L.Functions n) (x : Fin n → Σˣ f) (i : ι)
    (hi : i ∈ upperBounds (range (Sigma.fst ∘ x))) :
    funMap F x ≈ .mk f _ (funMap F (unify f x i hi)) 
Arguments: {L : FirstOrder.Language} {ι : Type v} [Preorder ι] (G : ι → Type w) [(i : ι) → L.Structure (G i)] (f : (i j : ι) → i ≤ j → G i ↪[L] G j) [IsDirected ι fun x x_1 => x ≤ x_1] [DirectedSystem G fun i j h => ⇑(f i j h)] [Nonempty ι] {n : ℕ} (F : L.Functions n) (x : Fin n → FirstOrder.Language.Structure.Sigma f) (i : ι) (hi : i ∈ upperBounds (Set.range (Sigma.fst ∘ x)))
Goal: FirstOrder.Language.Structure.funMap F x ≈
  FirstOrder.Language.Structure.Sigma.mk f i
    (FirstOrder.Language.Structure.funMap F (FirstOrder.Language.DirectLimit.unify f x i hi))
-- FirstOrder.Language.DirectLimit.relMap_equiv_unify
theorem relMap_equiv_unify {n : ℕ} (R : L.Relations n) (x : Fin n → Σˣ f) (i : ι)
    (hi : i ∈ upperBounds (range (Sigma.fst ∘ x))) :
    RelMap R x = RelMap R (unify f x i hi) 
Arguments: {L : FirstOrder.Language} {ι : Type v} [Preorder ι] (G : ι → Type w) [(i : ι) → L.Structure (G i)] (f : (i j : ι) → i ≤ j → G i ↪[L] G j) [IsDirected ι fun x x_1 => x ≤ x_1] [DirectedSystem G fun i j h => ⇑(f i j h)] [Nonempty ι] {n : ℕ} (R : L.Relations n) (x : Fin n → FirstOrder.Language.Structure.Sigma f) (i : ι) (hi : i ∈ upperBounds (Set.range (Sigma.fst ∘ x)))
Goal: FirstOrder.Language.Structure.RelMap R x =
  FirstOrder.Language.Structure.RelMap R (FirstOrder.Language.DirectLimit.unify f x i hi)
-- FirstOrder.Language.DirectLimit.funMap_quotient_mk'_sigma_mk'
@[simp]
theorem funMap_quotient_mk'_sigma_mk' {n : ℕ} {F : L.Functions n} {i : ι} {x : Fin n → G i} :
    funMap F (fun a => (⟦.mk f i (x a)⟧ : DirectLimit G f)) = ⟦.mk f i (funMap F x)⟧ 
Arguments: {L : FirstOrder.Language} {ι : Type v} [Preorder ι] (G : ι → Type w) [(i : ι) → L.Structure (G i)] (f : (i j : ι) → i ≤ j → G i ↪[L] G j) [IsDirected ι fun x x_1 => x ≤ x_1] [DirectedSystem G fun i j h => ⇑(f i j h)] [Nonempty ι] {n : ℕ} {F : L.Functions n} {i : ι} {x : Fin n → G i}
Goal: (FirstOrder.Language.Structure.funMap F fun a => ⟦FirstOrder.Language.Structure.Sigma.mk f i (x a)⟧) =
  ⟦FirstOrder.Language.Structure.Sigma.mk f i (FirstOrder.Language.Structure.funMap F x)⟧
-- FirstOrder.Language.DirectLimit.relMap_quotient_mk'_sigma_mk'
@[simp]
theorem relMap_quotient_mk'_sigma_mk' {n : ℕ} {R : L.Relations n} {i : ι} {x : Fin n → G i} :
    RelMap R (fun a => (⟦.mk f i (x a)⟧ : DirectLimit G f)) = RelMap R x 
Arguments: {L : FirstOrder.Language} {ι : Type v} [Preorder ι] (G : ι → Type w) [(i : ι) → L.Structure (G i)] (f : (i j : ι) → i ≤ j → G i ↪[L] G j) [IsDirected ι fun x x_1 => x ≤ x_1] [DirectedSystem G fun i j h => ⇑(f i j h)] [Nonempty ι] {n : ℕ} {R : L.Relations n} {i : ι} {x : Fin n → G i}
Goal: (FirstOrder.Language.Structure.RelMap R fun a => ⟦FirstOrder.Language.Structure.Sigma.mk f i (x a)⟧) =
  FirstOrder.Language.Structure.RelMap R x
-- FirstOrder.Language.DirectLimit.exists_quotient_mk'_sigma_mk'_eq
theorem exists_quotient_mk'_sigma_mk'_eq {α : Type*} [Finite α] (x : α → DirectLimit G f) :
    ∃ (i : ι) (y : α → G i), x = fun a => ⟦.mk f i (y a)⟧ 
Arguments: {L : FirstOrder.Language} {ι : Type v} [Preorder ι] (G : ι → Type w) [(i : ι) → L.Structure (G i)] (f : (i j : ι) → i ≤ j → G i ↪[L] G j) [IsDirected ι fun x x_1 => x ≤ x_1] [DirectedSystem G fun i j h => ⇑(f i j h)] [Nonempty ι] {α : Type u_1} [Finite α] (x : α → FirstOrder.Language.DirectLimit G f)
Goal: ∃ i y, x = fun a => ⟦FirstOrder.Language.Structure.Sigma.mk f i (y a)⟧
-- FirstOrder.Language.DirectLimit.of_apply
@[simp]
theorem of_apply {i : ι} {x : G i} : of L ι G f i x = ⟦.mk f i x⟧ 
Arguments: {L : FirstOrder.Language} {ι : Type v} [Preorder ι] {G : ι → Type w} [(i : ι) → L.Structure (G i)] {f : (i j : ι) → i ≤ j → G i ↪[L] G j} [IsDirected ι fun x x_1 => x ≤ x_1] [DirectedSystem G fun i j h => ⇑(f i j h)] [Nonempty ι] {i : ι} {x : G i}
Goal: (FirstOrder.Language.DirectLimit.of L ι G f i) x = ⟦FirstOrder.Language.Structure.Sigma.mk f i x⟧
-- FirstOrder.Language.DirectLimit.of_f
theorem of_f {i j : ι} {hij : i ≤ j} {x : G i} : of L ι G f j (f i j hij x) = of L ι G f i x 
Arguments: {L : FirstOrder.Language} {ι : Type v} [Preorder ι] {G : ι → Type w} [(i : ι) → L.Structure (G i)] {f : (i j : ι) → i ≤ j → G i ↪[L] G j} [IsDirected ι fun x x_1 => x ≤ x_1] [DirectedSystem G fun i j h => ⇑(f i j h)] [Nonempty ι] {i j : ι} {hij : i ≤ j} {x : G i}
Goal: (FirstOrder.Language.DirectLimit.of L ι G f j) ((f i j hij) x) = (FirstOrder.Language.DirectLimit.of L ι G f i) x
-- FirstOrder.Language.DirectLimit.exists_of
theorem exists_of (z : DirectLimit G f) : ∃ i x, of L ι G f i x = z 
Arguments: {L : FirstOrder.Language} {ι : Type v} [Preorder ι] {G : ι → Type w} [(i : ι) → L.Structure (G i)] {f : (i j : ι) → i ≤ j → G i ↪[L] G j} [IsDirected ι fun x x_1 => x ≤ x_1] [DirectedSystem G fun i j h => ⇑(f i j h)] [Nonempty ι] (z : FirstOrder.Language.DirectLimit G f)
Goal: ∃ i x, (FirstOrder.Language.DirectLimit.of L ι G f i) x = z
-- FirstOrder.Language.DirectLimit.inductionOn
@[elab_as_elim]
protected theorem inductionOn {C : DirectLimit G f → Prop} (z : DirectLimit G f)
    (ih : ∀ i x, C (of L ι G f i x)) : C z 
Arguments: {L : FirstOrder.Language} {ι : Type v} [Preorder ι] {G : ι → Type w} [(i : ι) → L.Structure (G i)] {f : (i j : ι) → i ≤ j → G i ↪[L] G j} [IsDirected ι fun x x_1 => x ≤ x_1] [DirectedSystem G fun i j h => ⇑(f i j h)] [Nonempty ι] {C : FirstOrder.Language.DirectLimit G f → Prop} (z : FirstOrder.Language.DirectLimit G f) (ih : ∀ (i : ι) (x : G i), C ((FirstOrder.Language.DirectLimit.of L ι G f i) x))
Goal: C z
-- FirstOrder.Language.DirectLimit.iSup_range_of_eq_top
theorem iSup_range_of_eq_top : ⨆ i, (of L ι G f i).toHom.range = ⊤ 
Arguments: {L : FirstOrder.Language} {ι : Type v} [Preorder ι] {G : ι → Type w} [(i : ι) → L.Structure (G i)] {f : (i j : ι) → i ≤ j → G i ↪[L] G j} [IsDirected ι fun x x_1 => x ≤ x_1] [DirectedSystem G fun i j h => ⇑(f i j h)] [Nonempty ι]
Goal: ⨆ i, (FirstOrder.Language.DirectLimit.of L ι G f i).toHom.range = ⊤
-- FirstOrder.Language.DirectLimit.exists_fg_substructure_in_Sigma
theorem exists_fg_substructure_in_Sigma (S : L.Substructure (DirectLimit G f)) (S_fg : S.FG) :
    ∃ i, ∃ T : L.Substructure (G i), T.map (of L ι G f i).toHom = S 
Arguments: {L : FirstOrder.Language} {ι : Type v} [Preorder ι] {G : ι → Type w} [(i : ι) → L.Structure (G i)] {f : (i j : ι) → i ≤ j → G i ↪[L] G j} [IsDirected ι fun x x_1 => x ≤ x_1] [DirectedSystem G fun i j h => ⇑(f i j h)] [Nonempty ι] (S : L.Substructure (FirstOrder.Language.DirectLimit G f)) (S_fg : S.FG)
Goal: ∃ i T, FirstOrder.Language.Substructure.map (FirstOrder.Language.DirectLimit.of L ι G f i).toHom T = S