Theorem: LO.FirstOrder.Arith.Model.seq_induction (Arithmetization/ISigmaOne/HFS/Seq.lean)

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}, Seq s → P s
Tactic:
intro s sseq
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
sseq : Seq s
⊢ P s

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
sseq : Seq s
⊢ P s
Tactic:
induction s using order_induction_h_iSigmaOne
State after:
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

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

case ind
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✝ : M
a✝ : ∀ y < x✝, Seq y → P y
sseq : Seq x✝
⊢ P x✝

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 Γ
State after:
no goals

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
State after:
no goals

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
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

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⟩)
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)

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
State after:
no goals

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)
State after:
no goals