internlm/Lean-Github huggingface dataset:
Theorem: LO.FirstOrder.Arith.Model.seq_induction
Proof state before:
case Γ
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
Γ : SigmaPiDelta
P : M → Prop
hP : (Γ, 1)-Predicate P
hnil : P ∅
hcons : ∀ (s x : M), Seq s → P s → P (s ⁀' x)
⊢ SigmaPiDelta
Tactic:
exact Γ
Proof state after:
no goals
Theorem: LO.FirstOrder.Arith.Model.seq_induction
Proof state before:
case hP
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
Γ : SigmaPiDelta
P : M → Prop
hP : (Γ, 1)-Predicate P
hnil : P ∅
hcons : ∀ (s x : M), Seq s → P s → P (s ⁀' x)
⊢ (Γ, 1)-Predicate fun {s} => Seq s → P s
Tactic:
definability
Proof state after:
no goals
Theorem: LO.FirstOrder.Arith.Model.seq_induction
Proof state before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
Γ : SigmaPiDelta
P : M → Prop
hP : (Γ, 1)-Predicate P
hnil : P ∅
hcons : ∀ (s x : M), Seq s → P s → P (s ⁀' x)
s : M
ih : ∀ y < s, Seq y → P y
sseq : Seq s
⊢ P s
Tactic:
have : s = ∅ ∨ ∃ x s', Seq s' ∧ s = s' ⁀' x := sseq.cases
Proof state after:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
Γ : SigmaPiDelta
P : M → Prop
hP : (Γ, 1)-Predicate P
hnil : P ∅
hcons : ∀ (s x : M), Seq s → P s → P (s ⁀' x)
s : M
ih : ∀ y < s, Seq y → P y
sseq : Seq s
this : s = ∅ ∨ ∃ x s', Seq s' ∧ s = s' ⁀' x
⊢ P s
Theorem: LO.FirstOrder.Arith.Model.seq_induction
Proof state before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
Γ : SigmaPiDelta
P : M → Prop
hP : (Γ, 1)-Predicate P
hnil : P ∅
hcons : ∀ (s x : M), Seq s → P s → P (s ⁀' x)
s : M
ih : ∀ y < s, Seq y → P y
sseq : Seq s
this : s = ∅ ∨ ∃ x s', Seq s' ∧ s = s' ⁀' x
⊢ P s
Tactic:
rcases this with (rfl | ⟨x, s, hs, rfl⟩)
Proof state after:
case inl
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
Γ : SigmaPiDelta
P : M → Prop
hP : (Γ, 1)-Predicate P
hnil : P ∅
hcons : ∀ (s x : M), Seq s → P s → P (s ⁀' x)
ih : ∀ y < ∅, Seq y → P y
sseq : Seq ∅
⊢ P ∅

case inr.intro.intro.intro
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
Γ : SigmaPiDelta
P : M → Prop
hP : (Γ, 1)-Predicate P
hnil : P ∅
hcons : ∀ (s x : M), Seq s → P s → P (s ⁀' x)
x s : M
hs : Seq s
ih : ∀ y < s ⁀' x, Seq y → P y
sseq : Seq (s ⁀' x)
⊢ P (s ⁀' x)
Theorem: LO.FirstOrder.Arith.Model.seq_induction
Proof state before:
case inl
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
Γ : SigmaPiDelta
P : M → Prop
hP : (Γ, 1)-Predicate P
hnil : P ∅
hcons : ∀ (s x : M), Seq s → P s → P (s ⁀' x)
ih : ∀ y < ∅, Seq y → P y
sseq : Seq ∅
⊢ P ∅
Tactic:
exact hnil
Proof state after:
no goals
Theorem: LO.FirstOrder.Arith.Model.seq_induction
Proof state before:
case inr.intro.intro.intro
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
Γ : SigmaPiDelta
P : M → Prop
hP : (Γ, 1)-Predicate P
hnil : P ∅
hcons : ∀ (s x : M), Seq s → P s → P (s ⁀' x)
x s : M
hs : Seq s
ih : ∀ y < s ⁀' x, Seq y → P y
sseq : Seq (s ⁀' x)
⊢ P (s ⁀' x)
Tactic:
exact hcons s x hs (ih s (hs.lt_seqCons x) hs)
Proof state after:
no goals
Theorem: LO.FirstOrder.Arith.Model.singleton_seq
Proof state before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
x : M
⊢ Seq (∅ ⁀' x)
Tactic:
apply Seq.seqCons
Proof state after:
case h
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
x : M
⊢ Seq ∅
Theorem: LO.FirstOrder.Arith.Model.singleton_seq
Proof state before:
case h
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
x : M
⊢ Seq ∅
Tactic:
simp
Proof state after:
no goals
Theorem: LO.FirstOrder.Arith.Model.Seq.seqMap_exists
Proof state before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s : M
Hs : Seq s
⊢ ∃ t, Seq t ∧ lh t = lh s ∧ ∀ (i x : M), ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
Tactic:
suffices ∃ t, Seq t ∧ lh t = lh s ∧ ∀ i < lh s, ∀ x < s, ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
by  rcases this with ⟨t, Ht, hts, h⟩
    exact ⟨t, Ht, hts, fun i x hx ↦ h i (Hs.lt_lh_of_mem hx) x (lt_of_mem_rng hx) hx⟩
Proof state after:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s : M
Hs : Seq s
⊢ ∃ t, Seq t ∧ lh t = lh s ∧ ∀ i < lh s, ∀ x < s, ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
Theorem: LO.FirstOrder.Arith.Model.Seq.seqMap_exists
Proof state before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s : M
Hs : Seq s
⊢ ∃ t, Seq t ∧ lh t = lh s ∧ ∀ i < lh s, ∀ x < s, ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
Tactic:
revert Hs
Proof state after:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s : M
⊢ Seq s → ∃ t, Seq t ∧ lh t = lh s ∧ ∀ i < lh s, ∀ x < s, ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
Theorem: LO.FirstOrder.Arith.Model.Seq.seqMap_exists
Proof state before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s : M
⊢ Seq s → ∃ t, Seq t ∧ lh t = lh s ∧ ∀ i < lh s, ∀ x < s, ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
Tactic:
apply @seq_induction M _ _ _ _ _ _ 𝚺
Proof state after:
case hP
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s : M
⊢ (𝚺, 1)-Predicate fun {s} => ∃ t, Seq t ∧ lh t = lh s ∧ ∀ i < lh s, ∀ x < s, ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t

case hnil
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s : M
⊢ ∃ t, Seq t ∧ lh t = lh ∅ ∧ ∀ i < lh ∅, ∀ x < ∅, ⟪i, x⟫ ∈ ∅ → ⟪i, f x⟫ ∈ t

case hcons
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s : M
⊢ ∀ (s x : M),
    Seq s →
      (∃ t, Seq t ∧ lh t = lh s ∧ ∀ i < lh s, ∀ x < s, ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t) →
        ∃ t, Seq t ∧ lh t = lh (s ⁀' x) ∧ ∀ i < lh (s ⁀' x), ∀ x_1 < s ⁀' x, ⟪i, x_1⟫ ∈ s ⁀' x → ⟪i, f x_1⟫ ∈ t
Theorem: LO.FirstOrder.Arith.Model.Seq.seqMap_exists
Proof state before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s : M
⊢ ∃ t, Seq t ∧ lh t = lh ∅ ∧ ∀ i < lh ∅, ∀ x < ∅, ⟪i, x⟫ ∈ ∅ → ⟪i, f x⟫ ∈ t
Tactic:
case hnil =>
  exact ⟨∅, by simp⟩
Proof state after:
no goals
Theorem: LO.FirstOrder.Arith.Model.Seq.seqMap_exists
Proof state before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s : M
Hs : Seq s
this : ∃ t, Seq t ∧ lh t = lh s ∧ ∀ i < lh s, ∀ x < s, ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
⊢ ∃ t, Seq t ∧ lh t = lh s ∧ ∀ (i x : M), ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
Tactic:
rcases this with ⟨t, Ht, hts, h⟩
Proof state after:
case intro.intro.intro
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s : M
Hs : Seq s
t : M
Ht : Seq t
hts : lh t = lh s
h : ∀ i < lh s, ∀ x < s, ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
⊢ ∃ t, Seq t ∧ lh t = lh s ∧ ∀ (i x : M), ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
Theorem: LO.FirstOrder.Arith.Model.Seq.seqMap_exists
Proof state before:
case intro.intro.intro
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s : M
Hs : Seq s
t : M
Ht : Seq t
hts : lh t = lh s
h : ∀ i < lh s, ∀ x < s, ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
⊢ ∃ t, Seq t ∧ lh t = lh s ∧ ∀ (i x : M), ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
Tactic:
exact ⟨t, Ht, hts, fun i x hx ↦ h i (Hs.lt_lh_of_mem hx) x (lt_of_mem_rng hx) hx⟩
Proof state after:
no goals
Theorem: LO.FirstOrder.Arith.Model.Seq.seqMap_exists
Proof state before:
case hP
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s : M
⊢ (𝚺, 1)-Predicate fun {s} => ∃ t, Seq t ∧ lh t = lh s ∧ ∀ i < lh s, ∀ x < s, ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
Tactic:
definability
Proof state after:
no goals
Theorem: LO.FirstOrder.Arith.Model.Seq.seqMap_exists
Proof state before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s : M
⊢ ∃ t, Seq t ∧ lh t = lh ∅ ∧ ∀ i < lh ∅, ∀ x < ∅, ⟪i, x⟫ ∈ ∅ → ⟪i, f x⟫ ∈ t
Tactic:
exact ⟨∅, by simp⟩
Proof state after:
no goals
Theorem: LO.FirstOrder.Arith.Model.Seq.seqMap_exists
Proof state before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s : M
⊢ Seq ∅ ∧ lh ∅ = lh ∅ ∧ ∀ i < lh ∅, ∀ x < ∅, ⟪i, x⟫ ∈ ∅ → ⟪i, f x⟫ ∈ ∅
Tactic:
simp
Proof state after:
no goals
Theorem: LO.FirstOrder.Arith.Model.Seq.seqMap_exists
Proof state before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s : M
⊢ ∀ (s x : M),
    Seq s →
      (∃ t, Seq t ∧ lh t = lh s ∧ ∀ i < lh s, ∀ x < s, ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t) →
        ∃ t, Seq t ∧ lh t = lh (s ⁀' x) ∧ ∀ i < lh (s ⁀' x), ∀ x_1 < s ⁀' x, ⟪i, x_1⟫ ∈ s ⁀' x → ⟪i, f x_1⟫ ∈ t
Tactic:
intro s x Hs ⟨t, Ht, hts, ih⟩
Proof state after:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s✝ s x : M
Hs : Seq s
t : M
Ht : Seq t
hts : lh t = lh s
ih : ∀ i < lh s, ∀ x < s, ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
⊢ ∃ t, Seq t ∧ lh t = lh (s ⁀' x) ∧ ∀ i < lh (s ⁀' x), ∀ x_1 < s ⁀' x, ⟪i, x_1⟫ ∈ s ⁀' x → ⟪i, f x_1⟫ ∈ t
Theorem: LO.FirstOrder.Arith.Model.Seq.seqMap_exists
Proof state before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s✝ s x : M
Hs : Seq s
t : M
Ht : Seq t
hts : lh t = lh s
ih : ∀ i < lh s, ∀ x < s, ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
⊢ lh (t ⁀' f x) = lh (s ⁀' x)
Tactic:
simp [Hs, Ht, hts]
Proof state after:
no goals
Theorem: LO.FirstOrder.Arith.Model.Seq.seqMap_exists
Proof state before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s✝ s x : M
Hs : Seq s
t : M
Ht : Seq t
hts : lh t = lh s
ih : ∀ i < lh s, ∀ x < s, ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
⊢ ∀ i < lh (s ⁀' x), ∀ x_1 < s ⁀' x, ⟪i, x_1⟫ ∈ s ⁀' x → ⟪i, f x_1⟫ ∈ t ⁀' f x
Tactic:
simp [Hs, Ht]
Proof state after:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s✝ s x : M
Hs : Seq s
t : M
Ht : Seq t
hts : lh t = lh s
ih : ∀ i < lh s, ∀ x < s, ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
⊢ ∀ i < lh s + 1, ∀ x_1 < s ⁀' x, ⟪i, x_1⟫ ∈ s ⁀' x → ⟪i, f x_1⟫ ∈ t ⁀' f x
Theorem: LO.FirstOrder.Arith.Model.Seq.seqMap_exists
Proof state before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s✝ s x : M
Hs : Seq s
t : M
Ht : Seq t
hts : lh t = lh s
ih : ∀ i < lh s, ∀ x < s, ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
⊢ ∀ i < lh s + 1, ∀ x_1 < s ⁀' x, ⟪i, x_1⟫ ∈ s ⁀' x → ⟪i, f x_1⟫ ∈ t ⁀' f x
Tactic:
intro i hi z _ hz
Proof state after:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s✝ s x : M
Hs : Seq s
t : M
Ht : Seq t
hts : lh t = lh s
ih : ∀ i < lh s, ∀ x < s, ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
i : M
hi : i < lh s + 1
z : M
a✝ : z < s ⁀' x
hz : ⟪i, z⟫ ∈ s ⁀' x
⊢ ⟪i, f z⟫ ∈ t ⁀' f x
Theorem: LO.FirstOrder.Arith.Model.Seq.seqMap_exists
Proof state before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s✝ s x : M
Hs : Seq s
t : M
Ht : Seq t
hts : lh t = lh s
ih : ∀ i < lh s, ∀ x < s, ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
i : M
hi : i < lh s + 1
z : M
a✝ : z < s ⁀' x
hz : ⟪i, z⟫ ∈ s ⁀' x
⊢ ⟪i, f z⟫ ∈ t ⁀' f x
Tactic:
have : i ≤ lh s := lt_succ_iff_le.mp hi
Proof state after:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s✝ s x : M
Hs : Seq s
t : M
Ht : Seq t
hts : lh t = lh s
ih : ∀ i < lh s, ∀ x < s, ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
i : M
hi : i < lh s + 1
z : M
a✝ : z < s ⁀' x
hz : ⟪i, z⟫ ∈ s ⁀' x
this : i ≤ lh s
⊢ ⟪i, f z⟫ ∈ t ⁀' f x
Theorem: LO.FirstOrder.Arith.Model.Seq.seqMap_exists
Proof state before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s✝ s x : M
Hs : Seq s
t : M
Ht : Seq t
hts : lh t = lh s
ih : ∀ i < lh s, ∀ x < s, ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
i : M
hi : i < lh s + 1
z : M
a✝ : z < s ⁀' x
hz : ⟪i, z⟫ ∈ s ⁀' x
this : i ≤ lh s
⊢ ⟪i, f z⟫ ∈ t ⁀' f x
Tactic:
rcases this with (rfl | hi)
Proof state after:
case inl
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s✝ s x : M
Hs : Seq s
t : M
Ht : Seq t
hts : lh t = lh s
ih : ∀ i < lh s, ∀ x < s, ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
z : M
a✝ : z < s ⁀' x
hi : lh s < lh s + 1
hz : ⟪lh s, z⟫ ∈ s ⁀' x
⊢ ⟪lh s, f z⟫ ∈ t ⁀' f x

case inr
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s✝ s x : M
Hs : Seq s
t : M
Ht : Seq t
hts : lh t = lh s
ih : ∀ i < lh s, ∀ x < s, ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
i : M
hi✝ : i < lh s + 1
z : M
a✝ : z < s ⁀' x
hz : ⟪i, z⟫ ∈ s ⁀' x
hi : i < lh s
⊢ ⟪i, f z⟫ ∈ t ⁀' f x
Theorem: LO.FirstOrder.Arith.Model.Seq.seqMap_exists
Proof state before:
case inl
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s✝ s x : M
Hs : Seq s
t : M
Ht : Seq t
hts : lh t = lh s
ih : ∀ i < lh s, ∀ x < s, ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
z : M
a✝ : z < s ⁀' x
hi : lh s < lh s + 1
hz : ⟪lh s, z⟫ ∈ s ⁀' x
⊢ ⟪lh s, f z⟫ ∈ t ⁀' f x
Tactic:
have : z = x := by simpa [Hs] using hz
Proof state after:
case inl
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s✝ s x : M
Hs : Seq s
t : M
Ht : Seq t
hts : lh t = lh s
ih : ∀ i < lh s, ∀ x < s, ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
z : M
a✝ : z < s ⁀' x
hi : lh s < lh s + 1
hz : ⟪lh s, z⟫ ∈ s ⁀' x
this : z = x
⊢ ⟪lh s, f z⟫ ∈ t ⁀' f x
Theorem: LO.FirstOrder.Arith.Model.Seq.seqMap_exists
Proof state before:
case inl
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s✝ s x : M
Hs : Seq s
t : M
Ht : Seq t
hts : lh t = lh s
ih : ∀ i < lh s, ∀ x < s, ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
z : M
a✝ : z < s ⁀' x
hi : lh s < lh s + 1
hz : ⟪lh s, z⟫ ∈ s ⁀' x
this : z = x
⊢ ⟪lh s, f z⟫ ∈ t ⁀' f x
Tactic:
simp [this, ←hts, Ht]
Proof state after:
no goals
Theorem: LO.FirstOrder.Arith.Model.Seq.seqMap_exists
Proof state before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s✝ s x : M
Hs : Seq s
t : M
Ht : Seq t
hts : lh t = lh s
ih : ∀ i < lh s, ∀ x < s, ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
z : M
a✝ : z < s ⁀' x
hi : lh s < lh s + 1
hz : ⟪lh s, z⟫ ∈ s ⁀' x
⊢ z = x
Tactic:
simpa [Hs] using hz
Proof state after:
no goals
Theorem: LO.FirstOrder.Arith.Model.Seq.seqMap_exists
Proof state before:
case inr
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s✝ s x : M
Hs : Seq s
t : M
Ht : Seq t
hts : lh t = lh s
ih : ∀ i < lh s, ∀ x < s, ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
i : M
hi✝ : i < lh s + 1
z : M
a✝ : z < s ⁀' x
hz : ⟪i, z⟫ ∈ s ⁀' x
hi : i < lh s
⊢ ⟪i, f z⟫ ∈ t ⁀' f x
Tactic:
have : ⟪i, f z⟫ ∈ t ⁀' f x ↔ ⟪i, f z⟫ ∈ t := mem_seqCons_iff_of_lt (x := f z) (z := f x) (by simpa [hts] using hi)
Proof state after:
case inr
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s✝ s x : M
Hs : Seq s
t : M
Ht : Seq t
hts : lh t = lh s
ih : ∀ i < lh s, ∀ x < s, ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
i : M
hi✝ : i < lh s + 1
z : M
a✝ : z < s ⁀' x
hz : ⟪i, z⟫ ∈ s ⁀' x
hi : i < lh s
this : ⟪i, f z⟫ ∈ t ⁀' f x ↔ ⟪i, f z⟫ ∈ t
⊢ ⟪i, f z⟫ ∈ t ⁀' f x
Theorem: LO.FirstOrder.Arith.Model.Seq.seqMap_exists
Proof state before:
case inr
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s✝ s x : M
Hs : Seq s
t : M
Ht : Seq t
hts : lh t = lh s
ih : ∀ i < lh s, ∀ x < s, ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
i : M
hi✝ : i < lh s + 1
z : M
a✝ : z < s ⁀' x
hz : ⟪i, z⟫ ∈ s ⁀' x
hi : i < lh s
this : ⟪i, f z⟫ ∈ t ⁀' f x ↔ ⟪i, f z⟫ ∈ t
⊢ ⟪i, f z⟫ ∈ t ⁀' f x
Tactic:
rw [this]
Proof state after:
case inr
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s✝ s x : M
Hs : Seq s
t : M
Ht : Seq t
hts : lh t = lh s
ih : ∀ i < lh s, ∀ x < s, ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
i : M
hi✝ : i < lh s + 1
z : M
a✝ : z < s ⁀' x
hz : ⟪i, z⟫ ∈ s ⁀' x
hi : i < lh s
this : ⟪i, f z⟫ ∈ t ⁀' f x ↔ ⟪i, f z⟫ ∈ t
⊢ ⟪i, f z⟫ ∈ t
Theorem: LO.FirstOrder.Arith.Model.Seq.seqMap_exists
Proof state before:
case inr
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s✝ s x : M
Hs : Seq s
t : M
Ht : Seq t
hts : lh t = lh s
ih : ∀ i < lh s, ∀ x < s, ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
i : M
hi✝ : i < lh s + 1
z : M
a✝ : z < s ⁀' x
hz : ⟪i, z⟫ ∈ s ⁀' x
hi : i < lh s
this : ⟪i, f z⟫ ∈ t ⁀' f x ↔ ⟪i, f z⟫ ∈ t
⊢ ⟪i, f z⟫ ∈ t
Tactic:
have : ⟪i, z⟫ ∈ s := mem_seqCons_iff_of_lt hi |>.mp hz
Proof state after:
case inr
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s✝ s x : M
Hs : Seq s
t : M
Ht : Seq t
hts : lh t = lh s
ih : ∀ i < lh s, ∀ x < s, ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
i : M
hi✝ : i < lh s + 1
z : M
a✝ : z < s ⁀' x
hz : ⟪i, z⟫ ∈ s ⁀' x
hi : i < lh s
this✝ : ⟪i, f z⟫ ∈ t ⁀' f x ↔ ⟪i, f z⟫ ∈ t
this : ⟪i, z⟫ ∈ s
⊢ ⟪i, f z⟫ ∈ t
Theorem: LO.FirstOrder.Arith.Model.Seq.seqMap_exists
Proof state before:
case inr
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s✝ s x : M
Hs : Seq s
t : M
Ht : Seq t
hts : lh t = lh s
ih : ∀ i < lh s, ∀ x < s, ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
i : M
hi✝ : i < lh s + 1
z : M
a✝ : z < s ⁀' x
hz : ⟪i, z⟫ ∈ s ⁀' x
hi : i < lh s
this✝ : ⟪i, f z⟫ ∈ t ⁀' f x ↔ ⟪i, f z⟫ ∈ t
this : ⟪i, z⟫ ∈ s
⊢ ⟪i, f z⟫ ∈ t
Tactic:
exact ih i hi z (lt_of_mem_rng this) this
Proof state after:
no goals
Theorem: LO.FirstOrder.Arith.Model.Seq.seqMap_exists
Proof state before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s✝ s x : M
Hs : Seq s
t : M
Ht : Seq t
hts : lh t = lh s
ih : ∀ i < lh s, ∀ x < s, ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
i : M
hi✝ : i < lh s + 1
z : M
a✝ : z < s ⁀' x
hz : ⟪i, z⟫ ∈ s ⁀' x
hi : i < lh s
⊢ i < lh t
Tactic:
simpa [hts] using hi
Proof state after:
no goals
Theorem: LO.FirstOrder.Arith.Model.seqMap_existsUnique
Proof state before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s : M
Hs : Seq s
⊢ ∃! t, Seq t ∧ lh t = lh s ∧ ∀ (i x : M), ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
Tactic:
rcases Hs.seqMap_exists hf with ⟨t, Ht, hts, h⟩
Proof state after:
case intro.intro.intro
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s : M
Hs : Seq s
t : M
Ht : Seq t
hts : lh t = lh s
h : ∀ (i x : M), ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
⊢ ∃! t, Seq t ∧ lh t = lh s ∧ ∀ (i x : M), ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
Theorem: LO.FirstOrder.Arith.Model.seqMap_existsUnique
Proof state before:
case intro.intro.intro
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s : M
Hs : Seq s
t : M
Ht : Seq t
hts : lh t = lh s
h : ∀ (i x : M), ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
⊢ ∃! t, Seq t ∧ lh t = lh s ∧ ∀ (i x : M), ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
Tactic:
apply ExistsUnique.intro t ⟨Ht, hts, h⟩
Proof state after:
case intro.intro.intro
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s : M
Hs : Seq s
t : M
Ht : Seq t
hts : lh t = lh s
h : ∀ (i x : M), ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
⊢ ∀ (y : M), (Seq y ∧ lh y = lh s ∧ ∀ (i x : M), ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ y) → y = t
Theorem: LO.FirstOrder.Arith.Model.seqMap_existsUnique
Proof state before:
case intro.intro.intro
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s : M
Hs : Seq s
t : M
Ht : Seq t
hts : lh t = lh s
h : ∀ (i x : M), ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
⊢ ∀ (y : M), (Seq y ∧ lh y = lh s ∧ ∀ (i x : M), ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ y) → y = t
Tactic:
rintro t' ⟨Ht', ht's, h'⟩
Proof state after:
case intro.intro.intro.intro.intro
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s : M
Hs : Seq s
t : M
Ht : Seq t
hts : lh t = lh s
h : ∀ (i x : M), ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
t' : M
Ht' : Seq t'
ht's : lh t' = lh s
h' : ∀ (i x : M), ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t'
⊢ t' = t
Theorem: LO.FirstOrder.Arith.Model.seqMap_existsUnique
Proof state before:
case intro.intro.intro.intro.intro
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s : M
Hs : Seq s
t : M
Ht : Seq t
hts : lh t = lh s
h : ∀ (i x : M), ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
t' : M
Ht' : Seq t'
ht's : lh t' = lh s
h' : ∀ (i x : M), ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t'
⊢ t' = t
Tactic:
apply Ht'.eq_of_eq_of_subset Ht (by simp [hts, ht's])
Proof state after:
case intro.intro.intro.intro.intro
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s : M
Hs : Seq s
t : M
Ht : Seq t
hts : lh t = lh s
h : ∀ (i x : M), ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
t' : M
Ht' : Seq t'
ht's : lh t' = lh s
h' : ∀ (i x : M), ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t'
⊢ t' ⊆ t
Theorem: LO.FirstOrder.Arith.Model.seqMap_existsUnique
Proof state before:
case intro.intro.intro.intro.intro
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s : M
Hs : Seq s
t : M
Ht : Seq t
hts : lh t = lh s
h : ∀ (i x : M), ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
t' : M
Ht' : Seq t'
ht's : lh t' = lh s
h' : ∀ (i x : M), ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t'
⊢ t' ⊆ t
Tactic:
intro u hu
Proof state after:
case intro.intro.intro.intro.intro
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
f : M → M
hf : 𝚺₁-Function₁ f
s : M
Hs : Seq s
t : M
Ht : Seq t
hts : lh t = lh s
h : ∀ (i x : M), ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t
t' : M
Ht' : Seq t'
ht's : lh t' = lh s
h' : ∀ (i x : M), ⟪i, x⟫ ∈ s → ⟪i, f x⟫ ∈ t'
u : M
hu : u ∈ t'
⊢ u ∈ t