internlm/Lean-Github huggingface dataset:
Theorem: finiteExhaustion
Proof state before:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
a✝ : ↑∅ ⊆ { x | ∃ n, x ∈ fam n }
h₂ : α
h₃ : h₂ ∈ ↑∅
⊢ h₂ ∈ fam default
Tactic:
contradiction
Proof state after:
no goals
Theorem: finiteExhaustion
Proof state before:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
⊢ ∀ ⦃a : α⦄ {s : Finset α},
    ¬a ∈ s →
      (↑s ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑s ⊆ fam n) →
        ↑(insert a s) ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑(insert a s) ⊆ fam n
Tactic:
intros x fs _ h₃ h₄
Proof state after:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
⊢ ∃ n, ↑(insert x fs) ⊆ fam n
Theorem: finiteExhaustion
Proof state before:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
⊢ ∃ n, ↑(insert x fs) ⊆ fam n
Tactic:
have l₁ : x ∈ {x : α | ∃n : β, x ∈ fam n } := h₄ $ Finset.mem_insert_self x fs
Proof state after:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
⊢ ∃ n, ↑(insert x fs) ⊆ fam n
Theorem: finiteExhaustion
Proof state before:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
⊢ ∃ n, ↑(insert x fs) ⊆ fam n
Tactic:
have ⟨n, l₂⟩ := l₁
Proof state after:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
⊢ ∃ n, ↑(insert x fs) ⊆ fam n
Theorem: finiteExhaustion
Proof state before:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
⊢ ∃ n, ↑(insert x fs) ⊆ fam n
Tactic:
have l₃ : ↑fs ⊆ {x : α | ∃n : β, x ∈ fam n } := by
  intros y h₅
  exact h₄ $ Finset.mem_insert_of_mem (Finset.mem_coe.mp h₅)
Proof state after:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
l₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n }
⊢ ∃ n, ↑(insert x fs) ⊆ fam n
Theorem: finiteExhaustion
Proof state before:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
l₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n }
⊢ ∃ n, ↑(insert x fs) ⊆ fam n
Tactic:
have ⟨m, l₄⟩ := h₃ l₃
Proof state after:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
l₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n }
m : β
l₄ : ↑fs ⊆ fam m
⊢ ∃ n, ↑(insert x fs) ⊆ fam n
Theorem: finiteExhaustion
Proof state before:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
l₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n }
m : β
l₄ : ↑fs ⊆ fam m
⊢ ∃ n, ↑(insert x fs) ⊆ fam n
Tactic:
cases le_total n m
Proof state after:
case inl
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
l₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n }
m : β
l₄ : ↑fs ⊆ fam m
h✝ : n ≤ m
⊢ ∃ n, ↑(insert x fs) ⊆ fam n

case inr
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
l₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n }
m : β
l₄ : ↑fs ⊆ fam m
h✝ : m ≤ n
⊢ ∃ n, ↑(insert x fs) ⊆ fam n
Theorem: finiteExhaustion
Proof state before:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
l₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n }
m : β
l₄ : ↑fs ⊆ fam m
leqthan : n ≤ m
⊢ ∃ n, ↑(insert x fs) ⊆ fam n
Tactic:
case inl leqthan => 
  have l₅ := (h₁ leqthan) l₂
  refine ⟨m,?_⟩
  intros y h₄
  cases Finset.mem_insert.mp h₄
  case inl h₅ => rw [h₅]; assumption
  case inr h₅ => exact l₄ h₅
Proof state after:
no goals
Theorem: finiteExhaustion
Proof state before:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
l₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n }
m : β
l₄ : ↑fs ⊆ fam m
geqthan : m ≤ n
⊢ ∃ n, ↑(insert x fs) ⊆ fam n
Tactic:
case inr geqthan =>
  have l₅ := le_trans l₄ (h₁ geqthan) 
  refine ⟨n,?_⟩
  intros y h₄
  cases Finset.mem_insert.mp h₄
  case inl h₅ => rw [h₅]; assumption
  case inr h₅ => exact l₅ h₅
Proof state after:
no goals
Theorem: finiteExhaustion
Proof state before:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
⊢ ↑fs ⊆ { x | ∃ n, x ∈ fam n }
Tactic:
intros y h₅
Proof state after:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
y : α
h₅ : y ∈ ↑fs
⊢ y ∈ { x | ∃ n, x ∈ fam n }
Theorem: finiteExhaustion
Proof state before:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
y : α
h₅ : y ∈ ↑fs
⊢ y ∈ { x | ∃ n, x ∈ fam n }
Tactic:
exact h₄ $ Finset.mem_insert_of_mem (Finset.mem_coe.mp h₅)
Proof state after:
no goals
Theorem: finiteExhaustion
Proof state before:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
l₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n }
m : β
l₄ : ↑fs ⊆ fam m
leqthan : n ≤ m
⊢ ∃ n, ↑(insert x fs) ⊆ fam n
Tactic:
have l₅ := (h₁ leqthan) l₂
Proof state after:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
l₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n }
m : β
l₄ : ↑fs ⊆ fam m
leqthan : n ≤ m
l₅ : x ∈ fam m
⊢ ∃ n, ↑(insert x fs) ⊆ fam n
Theorem: finiteExhaustion
Proof state before:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
l₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n }
m : β
l₄ : ↑fs ⊆ fam m
leqthan : n ≤ m
l₅ : x ∈ fam m
⊢ ∃ n, ↑(insert x fs) ⊆ fam n
Tactic:
refine ⟨m,?_⟩
Proof state after:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
l₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n }
m : β
l₄ : ↑fs ⊆ fam m
leqthan : n ≤ m
l₅ : x ∈ fam m
⊢ ↑(insert x fs) ⊆ fam m
Theorem: finiteExhaustion
Proof state before:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
l₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n }
m : β
l₄ : ↑fs ⊆ fam m
leqthan : n ≤ m
l₅ : x ∈ fam m
⊢ ↑(insert x fs) ⊆ fam m
Tactic:
intros y h₄
Proof state after:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄✝ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
l₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n }
m : β
l₄ : ↑fs ⊆ fam m
leqthan : n ≤ m
l₅ : x ∈ fam m
y : α
h₄ : y ∈ ↑(insert x fs)
⊢ y ∈ fam m
Theorem: finiteExhaustion
Proof state before:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄✝ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
l₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n }
m : β
l₄ : ↑fs ⊆ fam m
leqthan : n ≤ m
l₅ : x ∈ fam m
y : α
h₄ : y ∈ ↑(insert x fs)
⊢ y ∈ fam m
Tactic:
cases Finset.mem_insert.mp h₄
Proof state after:
case inl
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄✝ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
l₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n }
m : β
l₄ : ↑fs ⊆ fam m
leqthan : n ≤ m
l₅ : x ∈ fam m
y : α
h₄ : y ∈ ↑(insert x fs)
h✝ : y = x
⊢ y ∈ fam m

case inr
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄✝ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
l₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n }
m : β
l₄ : ↑fs ⊆ fam m
leqthan : n ≤ m
l₅ : x ∈ fam m
y : α
h₄ : y ∈ ↑(insert x fs)
h✝ : y ∈ fs
⊢ y ∈ fam m
Theorem: finiteExhaustion
Proof state before:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄✝ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
l₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n }
m : β
l₄ : ↑fs ⊆ fam m
leqthan : n ≤ m
l₅ : x ∈ fam m
y : α
h₄ : y ∈ ↑(insert x fs)
h₅ : y = x
⊢ y ∈ fam m
Tactic:
case inl h₅ => rw [h₅]; assumption
Proof state after:
no goals
Theorem: finiteExhaustion
Proof state before:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄✝ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
l₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n }
m : β
l₄ : ↑fs ⊆ fam m
leqthan : n ≤ m
l₅ : x ∈ fam m
y : α
h₄ : y ∈ ↑(insert x fs)
h₅ : y ∈ fs
⊢ y ∈ fam m
Tactic:
case inr h₅ => exact l₄ h₅
Proof state after:
no goals
Theorem: finiteExhaustion
Proof state before:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄✝ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
l₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n }
m : β
l₄ : ↑fs ⊆ fam m
leqthan : n ≤ m
l₅ : x ∈ fam m
y : α
h₄ : y ∈ ↑(insert x fs)
h₅ : y = x
⊢ y ∈ fam m
Tactic:
rw [h₅]
Proof state after:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄✝ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
l₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n }
m : β
l₄ : ↑fs ⊆ fam m
leqthan : n ≤ m
l₅ : x ∈ fam m
y : α
h₄ : y ∈ ↑(insert x fs)
h₅ : y = x
⊢ x ∈ fam m
Theorem: finiteExhaustion
Proof state before:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄✝ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
l₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n }
m : β
l₄ : ↑fs ⊆ fam m
leqthan : n ≤ m
l₅ : x ∈ fam m
y : α
h₄ : y ∈ ↑(insert x fs)
h₅ : y = x
⊢ x ∈ fam m
Tactic:
assumption
Proof state after:
no goals
Theorem: finiteExhaustion
Proof state before:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄✝ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
l₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n }
m : β
l₄ : ↑fs ⊆ fam m
leqthan : n ≤ m
l₅ : x ∈ fam m
y : α
h₄ : y ∈ ↑(insert x fs)
h₅ : y ∈ fs
⊢ y ∈ fam m
Tactic:
exact l₄ h₅
Proof state after:
no goals
Theorem: finiteExhaustion
Proof state before:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
l₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n }
m : β
l₄ : ↑fs ⊆ fam m
geqthan : m ≤ n
⊢ ∃ n, ↑(insert x fs) ⊆ fam n
Tactic:
have l₅ := le_trans l₄ (h₁ geqthan)
Proof state after:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
l₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n }
m : β
l₄ : ↑fs ⊆ fam m
geqthan : m ≤ n
l₅ : ↑fs ≤ fam n
⊢ ∃ n, ↑(insert x fs) ⊆ fam n
Theorem: finiteExhaustion
Proof state before:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
l₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n }
m : β
l₄ : ↑fs ⊆ fam m
geqthan : m ≤ n
l₅ : ↑fs ≤ fam n
⊢ ∃ n, ↑(insert x fs) ⊆ fam n
Tactic:
refine ⟨n,?_⟩
Proof state after:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
l₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n }
m : β
l₄ : ↑fs ⊆ fam m
geqthan : m ≤ n
l₅ : ↑fs ≤ fam n
⊢ ↑(insert x fs) ⊆ fam n
Theorem: finiteExhaustion
Proof state before:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
l₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n }
m : β
l₄ : ↑fs ⊆ fam m
geqthan : m ≤ n
l₅ : ↑fs ≤ fam n
⊢ ↑(insert x fs) ⊆ fam n
Tactic:
intros y h₄
Proof state after:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄✝ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
l₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n }
m : β
l₄ : ↑fs ⊆ fam m
geqthan : m ≤ n
l₅ : ↑fs ≤ fam n
y : α
h₄ : y ∈ ↑(insert x fs)
⊢ y ∈ fam n
Theorem: finiteExhaustion
Proof state before:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄✝ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
l₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n }
m : β
l₄ : ↑fs ⊆ fam m
geqthan : m ≤ n
l₅ : ↑fs ≤ fam n
y : α
h₄ : y ∈ ↑(insert x fs)
⊢ y ∈ fam n
Tactic:
cases Finset.mem_insert.mp h₄
Proof state after:
case inl
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄✝ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
l₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n }
m : β
l₄ : ↑fs ⊆ fam m
geqthan : m ≤ n
l₅ : ↑fs ≤ fam n
y : α
h₄ : y ∈ ↑(insert x fs)
h✝ : y = x
⊢ y ∈ fam n

case inr
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄✝ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
l₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n }
m : β
l₄ : ↑fs ⊆ fam m
geqthan : m ≤ n
l₅ : ↑fs ≤ fam n
y : α
h₄ : y ∈ ↑(insert x fs)
h✝ : y ∈ fs
⊢ y ∈ fam n
Theorem: finiteExhaustion
Proof state before:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄✝ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
l₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n }
m : β
l₄ : ↑fs ⊆ fam m
geqthan : m ≤ n
l₅ : ↑fs ≤ fam n
y : α
h₄ : y ∈ ↑(insert x fs)
h₅ : y = x
⊢ y ∈ fam n
Tactic:
case inl h₅ => rw [h₅]; assumption
Proof state after:
no goals
Theorem: finiteExhaustion
Proof state before:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄✝ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
l₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n }
m : β
l₄ : ↑fs ⊆ fam m
geqthan : m ≤ n
l₅ : ↑fs ≤ fam n
y : α
h₄ : y ∈ ↑(insert x fs)
h₅ : y ∈ fs
⊢ y ∈ fam n
Tactic:
case inr h₅ => exact l₅ h₅
Proof state after:
no goals
Theorem: finiteExhaustion
Proof state before:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄✝ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
l₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n }
m : β
l₄ : ↑fs ⊆ fam m
geqthan : m ≤ n
l₅ : ↑fs ≤ fam n
y : α
h₄ : y ∈ ↑(insert x fs)
h₅ : y = x
⊢ y ∈ fam n
Tactic:
rw [h₅]
Proof state after:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄✝ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
l₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n }
m : β
l₄ : ↑fs ⊆ fam m
geqthan : m ≤ n
l₅ : ↑fs ≤ fam n
y : α
h₄ : y ∈ ↑(insert x fs)
h₅ : y = x
⊢ x ∈ fam n
Theorem: finiteExhaustion
Proof state before:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄✝ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
l₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n }
m : β
l₄ : ↑fs ⊆ fam m
geqthan : m ≤ n
l₅ : ↑fs ≤ fam n
y : α
h₄ : y ∈ ↑(insert x fs)
h₅ : y = x
⊢ x ∈ fam n
Tactic:
assumption
Proof state after:
no goals
Theorem: finiteExhaustion
Proof state before:
α : Type u_1
β : Type u_2
instDec : DecidableEq α
inst✝¹ : LinearOrder β
inst✝ : Inhabited β
fam : β → Set α
fin : Finset α
h₁ : Monotone fam
x : α
fs : Finset α
a✝ : ¬x ∈ fs
h₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n } → ∃ n, ↑fs ⊆ fam n
h₄✝ : ↑(insert x fs) ⊆ { x | ∃ n, x ∈ fam n }
l₁ : x ∈ { x | ∃ n, x ∈ fam n }
n : β
l₂ : x ∈ fam n
l₃ : ↑fs ⊆ { x | ∃ n, x ∈ fam n }
m : β
l₄ : ↑fs ⊆ fam m
geqthan : m ≤ n
l₅ : ↑fs ≤ fam n
y : α
h₄ : y ∈ ↑(insert x fs)
h₅ : y ∈ fs
⊢ y ∈ fam n
Tactic:
exact l₅ h₅
Proof state after:
no goals
Theorem: ConsExp.decode_encode
Proof state before:
c : ConsExp
⊢ decode (encode c) = c
Tactic:
induction c
Proof state after:
case nat
a✝ : ℕ
⊢ decode (encode (nat a✝)) = nat a✝

case cons
a✝¹ a✝ : ConsExp
a_ih✝¹ : decode (encode a✝¹) = a✝¹
a_ih✝ : decode (encode a✝) = a✝
⊢ decode (encode (cons a✝¹ a✝)) = cons a✝¹ a✝