Stuff that seems like it should be in std or mathlib.
Add bi-implication notation for Lattices. See Mathlib.Order.Notation.
Equations
- «term_⇔_» = Lean.ParserDescr.trailingNode `«term_⇔_» 60 61 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⇔ ") (Lean.ParserDescr.cat `term 60))
Instances For
Equations
- «term_⊨_» = Lean.ParserDescr.trailingNode `«term_⊨_» 51 52 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⊨ ") (Lean.ParserDescr.cat `term 52))
Instances For
Equations
- «term_⊭_» = Lean.ParserDescr.trailingNode `«term_⊭_» 51 52 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⊭ ") (Lean.ParserDescr.cat `term 52))
Instances For
Nat
def
Fintype.elim_elems
{V : Type u_1}
{β : Type u_2}
[Fintype V]
(f : (L : List V) → (∀ (v : V), v ∈ L) → L.Nodup → β)
(h :
∀ (L1 : List V) (h1 : ∀ (v : V), v ∈ L1) (h11 : L1.Nodup) (L2 : List V) (h2 : ∀ (v : V), v ∈ L2) (h22 : L2.Nodup),
f L1 h1 h11 = f L2 h2 h22)
:
β
Given a function over the (complete set of distinct) elements of a fintype, and a proof the function is constant, produce the value of that function.
Equations
- Fintype.elim_elems f h = Fintype.elems.elim (fun (L : List V) (hL : ↑L = Fintype.elems.val) => f L ⋯ ⋯) ⋯
Instances For
theorem
Fintype.elim_elems_eq_forall
{V : Type u_1}
{β : Type u_2}
[Fintype V]
(f : (L : List V) → (∀ (v : V), v ∈ L) → L.Nodup → β)
{h :
∀ (L1 : List V) (h1 : ∀ (v : V), v ∈ L1) (h11 : L1.Nodup) (L2 : List V) (h2 : ∀ (v : V), v ∈ L2) (h22 : L2.Nodup),
f L1 h1 h11 = f L2 h2 h22}
{C : Prop}
(h' : ∀ (L : List V) (h1 : ∀ (v : V), v ∈ L) (h2 : L.Nodup), elim_elems f h = f L h1 h2 → C)
:
C
theorem
Finset.biUnion_union
{α : Type u_1}
{β : Type u_2}
[DecidableEq α]
[DecidableEq β]
(s1 s2 : Finset α)
(f : α → Finset β)
:
def
Multiset.find?
{α : Type u_1}
(f : α → Bool)
(xs : Multiset α)
(h : ∀ (a1 a2 : α), f a1 = true → f a2 = true → a1 = a2)
:
Option α
Equations
- Multiset.find? f xs h = Quotient.lift (fun (x : List α) => List.find? f x) ⋯ xs
Instances For
Equations
- Fintype.invFun f = (Finset.univ.mapEquiv f).symm.trans { toFun := Subtype.val, invFun := fun (x : α) => ⟨x, ⋯⟩, left_inv := ⋯, right_inv := ⋯ }
Instances For
@[simp]
theorem
Fintype.invFun_eq
{α : Type u_1}
{α' : Type u_2}
[Fintype α]
[DecidableEq α']
(f : α ↪ α')
(x : { x : α' // x ∈ Finset.map f Finset.univ })
(y : α)
:
@[simp]
theorem
Fintype.eq_invFun
{α : Type u_1}
{α' : Type u_2}
[Fintype α]
[DecidableEq α']
(f : α ↪ α')
(x : { x : α' // x ∈ Finset.map f Finset.univ })
(y : α)
:
@[simp]
theorem
Fintype.invFun_app
{α : Type u_1}
{α' : Type u_2}
[Fintype α]
[DecidableEq α']
(f : α ↪ α')
(f' : α → α')
(x : α)
(h : f' x ∈ Finset.map f Finset.univ)
:
theorem
Fintype.app_invFun
{α : Type u_1}
{α' : Type u_2}
[Fintype α]
[DecidableEq α']
(f : α ↪ α')
(f' : α → α')
(x : { x : α' // x ∈ Finset.map f Finset.univ })
:
@[simp]
theorem
Fintype.invFun_val_eq
{α : Type u_1}
{α' : Type u_2}
[Fintype α]
[DecidableEq α']
(f : α ↪ α')
(x : { x : α' // x ∈ Finset.map f Finset.univ })
(y : α)
:
theorem
Fintype.invFun_eq_invFun
{α : Type u_1}
{α' : Type u_2}
[Fintype α]
[DecidableEq α']
(f f' : α ↪ α')
(x : { x : α' // x ∈ Finset.map f Finset.univ })
(y : { x : α' // x ∈ Finset.map f' Finset.univ })
: