Theorem: project.IsHeap_delete_BinTree (Project/DeleteMin.lean)

State before:
α : Sort ?u.102122
le : α → α → Bool
not_le_le : ∀ (x y : α), ¬le x y = true → le y x = true
le_trans : ∀ (x y z : α), le x y = true → le y z = true → le x z = true
le_rfl : ∀ (z : α), le z z = true
α✝ : Type u_1
a : HeapNodeAux α✝ (Heap α✝)
b : List (HeapNodeAux α✝ (Heap α✝))
id : ℕ
⊢ IsHeap (Heap.heap (a :: b)) → IsHeap (Heap.heap (a :: List.eraseIdx b id))
Tactic:
intros h₁
State after:
α : Sort ?u.102122
le : α → α → Bool
not_le_le : ∀ (x y : α), ¬le x y = true → le y x = true
le_trans : ∀ (x y z : α), le x y = true → le y z = true → le x z = true
le_rfl : ∀ (z : α), le z z = true
α✝ : Type u_1
a : HeapNodeAux α✝ (Heap α✝)
b : List (HeapNodeAux α✝ (Heap α✝))
id : ℕ
h₁ : IsHeap (Heap.heap (a :: b))
⊢ IsHeap (Heap.heap (a :: List.eraseIdx b id))

State before:
α : Sort ?u.102122
le : α → α → Bool
not_le_le : ∀ (x y : α), ¬le x y = true → le y x = true
le_trans : ∀ (x y z : α), le x y = true → le y z = true → le x z = true
le_rfl : ∀ (z : α), le z z = true
α✝ : Type u_1
a : HeapNodeAux α✝ (Heap α✝)
b : List (HeapNodeAux α✝ (Heap α✝))
id : ℕ
h₁ : IsHeap (Heap.heap (a :: b))
⊢ IsHeap (Heap.heap (a :: List.eraseIdx b id))
Tactic:
cases h₁
State after:
case cons
α : Sort ?u.102122
le : α → α → Bool
not_le_le : ∀ (x y : α), ¬le x y = true → le y x = true
le_trans : ∀ (x y z : α), le x y = true → le y z = true → le x z = true
le_rfl : ∀ (z : α), le z z = true
α✝ : Type u_1
a : HeapNodeAux α✝ (Heap α✝)
b : List (HeapNodeAux α✝ (Heap α✝))
id : ℕ
a✝² : IsBinTree a
a✝¹ : 0 < a.rank
a✝ : IsHeapForest' a.rank b
⊢ IsHeap (Heap.heap (a :: List.eraseIdx b id))

State before:
case cons
α : Sort ?u.102122
le : α → α → Bool
not_le_le : ∀ (x y : α), ¬le x y = true → le y x = true
le_trans : ∀ (x y z : α), le x y = true → le y z = true → le x z = true
le_rfl : ∀ (z : α), le z z = true
α✝ : Type u_1
a : HeapNodeAux α✝ (Heap α✝)
b : List (HeapNodeAux α✝ (Heap α✝))
id : ℕ
a✝² : IsBinTree a
a✝¹ : 0 < a.rank
a✝ : IsHeapForest' a.rank b
⊢ IsHeap (Heap.heap (a :: List.eraseIdx b id))
Tactic:
constructor
State after:
case cons.a
α : Sort ?u.102122
le : α → α → Bool
not_le_le : ∀ (x y : α), ¬le x y = true → le y x = true
le_trans : ∀ (x y z : α), le x y = true → le y z = true → le x z = true
le_rfl : ∀ (z : α), le z z = true
α✝ : Type u_1
a : HeapNodeAux α✝ (Heap α✝)
b : List (HeapNodeAux α✝ (Heap α✝))
id : ℕ
a✝² : IsBinTree a
a✝¹ : 0 < a.rank
a✝ : IsHeapForest' a.rank b
⊢ 0 < a.rank

case cons.a
α : Sort ?u.102122
le : α → α → Bool
not_le_le : ∀ (x y : α), ¬le x y = true → le y x = true
le_trans : ∀ (x y z : α), le x y = true → le y z = true → le x z = true
le_rfl : ∀ (z : α), le z z = true
α✝ : Type u_1
a : HeapNodeAux α✝ (Heap α✝)
b : List (HeapNodeAux α✝ (Heap α✝))
id : ℕ
a✝² : IsBinTree a
a✝¹ : 0 < a.rank
a✝ : IsHeapForest' a.rank b
⊢ IsBinTree a

case cons.a
α : Sort ?u.102122
le : α → α → Bool
not_le_le : ∀ (x y : α), ¬le x y = true → le y x = true
le_trans : ∀ (x y z : α), le x y = true → le y z = true → le x z = true
le_rfl : ∀ (z : α), le z z = true
α✝ : Type u_1
a : HeapNodeAux α✝ (Heap α✝)
b : List (HeapNodeAux α✝ (Heap α✝))
id : ℕ
a✝² : IsBinTree a
a✝¹ : 0 < a.rank
a✝ : IsHeapForest' a.rank b
⊢ IsHeapForest' a.rank (List.eraseIdx b id)

State before:
case cons.a
α : Sort ?u.102122
le : α → α → Bool
not_le_le : ∀ (x y : α), ¬le x y = true → le y x = true
le_trans : ∀ (x y z : α), le x y = true → le y z = true → le x z = true
le_rfl : ∀ (z : α), le z z = true
α✝ : Type u_1
a : HeapNodeAux α✝ (Heap α✝)
b : List (HeapNodeAux α✝ (Heap α✝))
id : ℕ
a✝² : IsBinTree a
a✝¹ : 0 < a.rank
a✝ : IsHeapForest' a.rank b
⊢ 0 < a.rank

case cons.a
α : Sort ?u.102122
le : α → α → Bool
not_le_le : ∀ (x y : α), ¬le x y = true → le y x = true
le_trans : ∀ (x y z : α), le x y = true → le y z = true → le x z = true
le_rfl : ∀ (z : α), le z z = true
α✝ : Type u_1
a : HeapNodeAux α✝ (Heap α✝)
b : List (HeapNodeAux α✝ (Heap α✝))
id : ℕ
a✝² : IsBinTree a
a✝¹ : 0 < a.rank
a✝ : IsHeapForest' a.rank b
⊢ IsBinTree a

case cons.a
α : Sort ?u.102122
le : α → α → Bool
not_le_le : ∀ (x y : α), ¬le x y = true → le y x = true
le_trans : ∀ (x y z : α), le x y = true → le y z = true → le x z = true
le_rfl : ∀ (z : α), le z z = true
α✝ : Type u_1
a : HeapNodeAux α✝ (Heap α✝)
b : List (HeapNodeAux α✝ (Heap α✝))
id : ℕ
a✝² : IsBinTree a
a✝¹ : 0 < a.rank
a✝ : IsHeapForest' a.rank b
⊢ IsHeapForest' a.rank (List.eraseIdx b id)
Tactic:
. assumption
State after:
case cons.a
α : Sort ?u.102122
le : α → α → Bool
not_le_le : ∀ (x y : α), ¬le x y = true → le y x = true
le_trans : ∀ (x y z : α), le x y = true → le y z = true → le x z = true
le_rfl : ∀ (z : α), le z z = true
α✝ : Type u_1
a : HeapNodeAux α✝ (Heap α✝)
b : List (HeapNodeAux α✝ (Heap α✝))
id : ℕ
a✝² : IsBinTree a
a✝¹ : 0 < a.rank
a✝ : IsHeapForest' a.rank b
⊢ IsBinTree a

case cons.a
α : Sort ?u.102122
le : α → α → Bool
not_le_le : ∀ (x y : α), ¬le x y = true → le y x = true
le_trans : ∀ (x y z : α), le x y = true → le y z = true → le x z = true
le_rfl : ∀ (z : α), le z z = true
α✝ : Type u_1
a : HeapNodeAux α✝ (Heap α✝)
b : List (HeapNodeAux α✝ (Heap α✝))
id : ℕ
a✝² : IsBinTree a
a✝¹ : 0 < a.rank
a✝ : IsHeapForest' a.rank b
⊢ IsHeapForest' a.rank (List.eraseIdx b id)

State before:
case cons.a
α : Sort ?u.102122
le : α → α → Bool
not_le_le : ∀ (x y : α), ¬le x y = true → le y x = true
le_trans : ∀ (x y z : α), le x y = true → le y z = true → le x z = true
le_rfl : ∀ (z : α), le z z = true
α✝ : Type u_1
a : HeapNodeAux α✝ (Heap α✝)
b : List (HeapNodeAux α✝ (Heap α✝))
id : ℕ
a✝² : IsBinTree a
a✝¹ : 0 < a.rank
a✝ : IsHeapForest' a.rank b
⊢ IsBinTree a

case cons.a
α : Sort ?u.102122
le : α → α → Bool
not_le_le : ∀ (x y : α), ¬le x y = true → le y x = true
le_trans : ∀ (x y z : α), le x y = true → le y z = true → le x z = true
le_rfl : ∀ (z : α), le z z = true
α✝ : Type u_1
a : HeapNodeAux α✝ (Heap α✝)
b : List (HeapNodeAux α✝ (Heap α✝))
id : ℕ
a✝² : IsBinTree a
a✝¹ : 0 < a.rank
a✝ : IsHeapForest' a.rank b
⊢ IsHeapForest' a.rank (List.eraseIdx b id)
Tactic:
. assumption
State after:
case cons.a
α : Sort ?u.102122
le : α → α → Bool
not_le_le : ∀ (x y : α), ¬le x y = true → le y x = true
le_trans : ∀ (x y z : α), le x y = true → le y z = true → le x z = true
le_rfl : ∀ (z : α), le z z = true
α✝ : Type u_1
a : HeapNodeAux α✝ (Heap α✝)
b : List (HeapNodeAux α✝ (Heap α✝))
id : ℕ
a✝² : IsBinTree a
a✝¹ : 0 < a.rank
a✝ : IsHeapForest' a.rank b
⊢ IsHeapForest' a.rank (List.eraseIdx b id)

State before:
case cons.a
α : Sort ?u.102122
le : α → α → Bool
not_le_le : ∀ (x y : α), ¬le x y = true → le y x = true
le_trans : ∀ (x y z : α), le x y = true → le y z = true → le x z = true
le_rfl : ∀ (z : α), le z z = true
α✝ : Type u_1
a : HeapNodeAux α✝ (Heap α✝)
b : List (HeapNodeAux α✝ (Heap α✝))
id : ℕ
a✝² : IsBinTree a
a✝¹ : 0 < a.rank
a✝ : IsHeapForest' a.rank b
⊢ IsHeapForest' a.rank (List.eraseIdx b id)
Tactic:
. apply IsHeapForest'_eraseIdx
  assumption
State after:
no goals