Auxiliary lemmas for Std.ExtTreeMap #
mergeWith and filter lemmas for Std.ExtTreeMap, used by the multivariate
polynomial representation in CompPoly.Multivariate.Unlawful.
Vendored from
Verified-zkEVM/ExtTreeMapLemmas
(tag v4.29.1, commit 3fee686227f18dca03bb7fc42ca5a9275d6cfda6). The original
imported Mathlib.Tactic wholesale; here we narrow to the specific tactic
modules actually needed by the proofs below.
theorem
Std.ExtTreeMap.getElem?_mergeWith_at
{α : Type u}
{β : Type v}
{cmp : α → α → Ordering}
[TransCmp cmp]
[LawfulEqCmp cmp]
{m₁ m₂ : ExtTreeMap α β cmp}
{f : α → β → β → β}
{k : α}
:
@[simp]
theorem
Std.ExtTreeMap.mergeWith_empty
{α : Type u}
{β : Type v}
{f : α → β → β → β}
{cmp : α → α → Ordering}
[TransCmp cmp]
[LawfulEqCmp cmp]
{t : ExtTreeMap α β cmp}
:
theorem
Std.ExtTreeMap.mergeWith_of_comm
{α : Type u}
{β : Type v}
{cmp : α → α → Ordering}
{m₁ m₂ : ExtTreeMap α β cmp}
{f : α → β → β → β}
[TransCmp cmp]
[LawfulEqCmp cmp]
(h : ∀ {x : α}, Commutative (f x))
:
@[simp]
theorem
Std.ExtTreeMap.toList_ofList
{α : Type u}
{β : Type v}
{cmp : α → α → Ordering}
{m : ExtTreeMap α β cmp}
[TransCmp cmp]
[LawfulEqCmp cmp]
[BEq α]
[LawfulBEq α]
:
@[simp]
theorem
Std.ExtTreeMap.getElem?_filter_with_getKey
{α : Type u}
{β : Type v}
{cmp : α → α → Ordering}
[TransCmp cmp]
[LawfulEqCmp cmp]
{f : α → β → Bool}
{k : α}
{m : ExtTreeMap α β cmp}
: