Built with doc-gen4, running Lean4.
Bubbles () indicate interactive fragments: hover for details, tap to reveal contents.
Use Ctrl+↑Ctrl+↓to navigate, Ctrl+🖱️to focus.
On Mac, use Cmdinstead of Ctrl.
/-
Copyright (c) 2021 Mario Carneiro. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Mario Carneiro
-/
import Mathlib.Tactic.Basic
import Std.Tactic.Simpa
import Mathlib.Data.Array.Basic
structure
↑((fun i =>
if h : ↑i<n then
match parentm{ val := ↑i, isLt := h } with
| { val := a, isLt := h' } => { val := a, isLt := (_ : a<k) }
else i)
i)≠↑i →
(fun i => if i<n then rankmi else 0) ↑i<(fun i => if i<n then rankmi else 0)
↑((fun i =>
if h : ↑i<n then
match parentm{ val := ↑i, isLt := h } with
| { val := a, isLt := h' } => { val := a, isLt := (_ : a<k) }
else i)
i)
↑((fun i =>
if h : ↑i<n then
match parentm{ val := ↑i, isLt := h } with
| { val := a, isLt := h' } => { val := a, isLt := (_ : a<k) }
else i)
i)≠↑i →
(fun i => if i<n then rankmi else 0) ↑i<(fun i => if i<n then rankmi else 0)
↑((fun i =>
if h : ↑i<n then
match parentm{ val := ↑i, isLt := h } with
| { val := a, isLt := h' } => { val := a, isLt := (_ : a<k) }
else i)
i)
↑((fun i =>
if h : ↑i<n then
match parentm{ val := ↑i, isLt := h } with
| { val := a, isLt := h' } => { val := a, isLt := (_ : a<k) }
else i)
i)≠↑i →
(fun i => if i<n then rankmi else 0) ↑i<(fun i => if i<n then rankmi else 0)
↑((fun i =>
if h : ↑i<n then
match parentm{ val := ↑i, isLt := h } with
| { val := a, isLt := h' } => { val := a, isLt := (_ : a<k) }
else i)
i)
↑((fun i =>
if h : ↑i<n then
match parentm{ val := ↑i, isLt := h } with
| { val := a, isLt := h' } => { val := a, isLt := (_ : a<k) }
else i)
i)≠↑i →
(fun i => if i<n then rankmi else 0) ↑i<(fun i => if i<n then rankmi else 0)
↑((fun i =>
if h : ↑i<n then
match parentm{ val := ↑i, isLt := h } with
| { val := a, isLt := h' } => { val := a, isLt := (_ : a<k) }
else i)
i)
↑((fun i => if ↑x=↑i then y else parentmi) i)≠↑i →
(fun i => if ↑y=i∧rankm↑x=rankm↑y then rankm↑y+1 else rankmi) ↑i<(fun i => if ↑y=i∧rankm↑x=rankm↑y then rankm↑y+1 else rankmi)
↑((fun i => if ↑x=↑i then y else parentmi) i)
↑((fun i => if ↑x=↑i then y else parentmi) i)≠↑i →
(fun i => if ↑y=i∧rankm↑x=rankm↑y then rankm↑y+1 else rankmi) ↑i<(fun i => if ↑y=i∧rankm↑x=rankm↑y then rankm↑y+1 else rankmi)
↑((fun i => if ↑x=↑i then y else parentmi) i)
↑((fun i => if ↑x=↑i then y else parentmi) i)≠↑i →
(fun i => if ↑y=i∧rankm↑x=rankm↑y then rankm↑y+1 else rankmi) ↑i<(fun i => if ↑y=i∧rankm↑x=rankm↑y then rankm↑y+1 else rankmi)
↑((fun i => if ↑x=↑i then y else parentmi) i)
↑((fun i => if ↑x=↑i then y else parentmi) i)≠↑i →
(fun i => if ↑y=i∧rankm↑x=rankm↑y then rankm↑y+1 else rankmi) ↑i<(fun i => if ↑y=i∧rankm↑x=rankm↑y then rankm↑y+1 else rankmi)
↑((fun i => if ↑x=↑i then y else parentmi) i)
↑((fun i => if ↑x=↑i then y else parentmi) i)≠↑i →
(fun i => if ↑y=i∧rankm↑x=rankm↑y then rankm↑y+1 else rankmi) ↑i<(fun i => if ↑y=i∧rankm↑x=rankm↑y then rankm↑y+1 else rankmi)
↑((fun i => if ↑x=↑i then y else parentmi) i)