Documentation

Init.SimpLemmas

@[simp]
theorem eq_self {α : Sort u_1} (a : α) :
(a = a) = True
theorem of_eq_true {p : Prop} (h : p = True) :
p
theorem eq_true {p : Prop} (h : p) :
theorem eq_false {p : Prop} (h : ¬p) :
theorem eq_false' {p : Prop} (h : pFalse) :
theorem eq_true_of_decide {p : Prop} {s : Decidable p} (h : decide p = true) :
theorem eq_false_of_decide {p : Prop} {s : Decidable p} (h : decide p = false) :
theorem implies_congr {p₁ : Sort u} {p₂ : Sort u} {q₁ : Sort v} {q₂ : Sort v} (h₁ : p₁ = p₂) (h₂ : q₁ = q₂) :
(p₁q₁) = (p₂q₂)
theorem implies_congr_ctx {p₁ : Prop} {p₂ : Prop} {q₁ : Prop} {q₂ : Prop} (h₁ : p₁ = p₂) (h₂ : p₂q₁ = q₂) :
(p₁q₁) = (p₂q₂)
theorem forall_congr {α : Sort u} {p : αProp} {q : αProp} (h : ∀ (a : α), p a = q a) :
((a : α) → p a) = ((a : α) → q a)
theorem let_congr {α : Sort u} {β : Sort v} {a : α} {a' : α} {b : αβ} {b' : αβ} (h₁ : a = a') (h₂ : ∀ (x : α), b x = b' x) :
(let x := a; b x) = let x := a'; b' x
theorem let_val_congr {α : Sort u} {β : Sort v} {a : α} {a' : α} (b : αβ) (h : a = a') :
(let x := a; b x) = let x := a'; b x
theorem let_body_congr {α : Sort u} {β : αSort v} {b : (a : α) → β a} {b' : (a : α) → β a} (a : α) (h : ∀ (x : α), b x = b' x) :
(let x := a; b x) = let x := a; b' x
theorem ite_congr {α : Sort u_1} {b : Prop} {c : Prop} {x : α} {y : α} {u : α} {v : α} {s : Decidable b} [inst : Decidable c] (h₁ : b = c) (h₂ : cx = u) (h₃ : ¬cy = v) :
(if b then x else y) = if c then u else v
theorem Eq.mpr_prop {p : Prop} {q : Prop} (h₁ : p = q) (h₂ : q) :
p
theorem Eq.mpr_not {p : Prop} {q : Prop} (h₁ : p = q) (h₂ : ¬q) :
theorem dite_congr {b : Prop} {c : Prop} {α : Sort u_1} {s : Decidable b} [inst : Decidable c] {x : bα} {u : cα} {y : ¬bα} {v : ¬cα} (h₁ : b = c) (h₂ : ∀ (h : c), x (Eq.mpr_prop h₁ h) = u h) (h₃ : ∀ (h : ¬c), y (_ : ¬b) = v h) :
dite b x y = dite c u v
@[simp]
theorem ne_eq {α : Sort u_1} (a : α) (b : α) :
(a b) = ¬a = b
@[simp]
theorem ite_true {α : Sort u_1} (a : α) (b : α) :
(if True then a else b) = a
@[simp]
theorem ite_false {α : Sort u_1} (a : α) (b : α) :
(if False then a else b) = b
@[simp]
theorem dite_true {α : Sort u} {t : Trueα} {e : ¬Trueα} :
@[simp]
theorem dite_false {α : Sort u} {t : Falseα} {e : ¬Falseα} :
@[simp]
theorem and_self (p : Prop) :
(p p) = p
@[simp]
theorem and_true (p : Prop) :
(p True) = p
@[simp]
theorem true_and (p : Prop) :
(True p) = p
@[simp]
theorem and_false (p : Prop) :
@[simp]
theorem false_and (p : Prop) :
@[simp]
theorem or_self (p : Prop) :
(p p) = p
@[simp]
theorem or_true (p : Prop) :
@[simp]
theorem true_or (p : Prop) :
@[simp]
theorem or_false (p : Prop) :
(p False) = p
@[simp]
theorem false_or (p : Prop) :
(False p) = p
@[simp]
theorem iff_self (p : Prop) :
(p p) = True
@[simp]
theorem iff_true (p : Prop) :
(p True) = p
@[simp]
theorem true_iff (p : Prop) :
(True p) = p
@[simp]
theorem iff_false (p : Prop) :
(p False) = ¬p
@[simp]
theorem false_iff (p : Prop) :
(False p) = ¬p
@[simp]
theorem false_implies (p : Prop) :
(Falsep) = True
@[simp]
theorem implies_true (α : Sort u) :
(αTrue) = True
@[simp]
theorem true_implies (p : Prop) :
(Truep) = p
@[simp]
theorem Bool.or_false (b : Bool) :
(b || false) = b
@[simp]
theorem Bool.or_true (b : Bool) :
@[simp]
theorem Bool.false_or (b : Bool) :
(false || b) = b
@[simp]
theorem Bool.true_or (b : Bool) :
@[simp]
theorem Bool.or_self (b : Bool) :
(b || b) = b
@[simp]
theorem Bool.and_false (b : Bool) :
@[simp]
theorem Bool.and_true (b : Bool) :
(b && true) = b
@[simp]
theorem Bool.false_and (b : Bool) :
@[simp]
theorem Bool.true_and (b : Bool) :
(true && b) = b
@[simp]
theorem Bool.and_self (b : Bool) :
(b && b) = b