File: Mathlib/Logic/Nontrivial/Defs.lean

full_name: Nontrivial
code: /-- Predicate typeclass for expressing that a type is not reduced to a single element. In rings,
this is equivalent to `0 ≠ 1`. In vector spaces, this is equivalent to positive dimension. -/
class Nontrivial (α : Type*) : Prop where
  /-- In a nontrivial type, there exists a pair of distinct terms. -/
  exists_pair_ne : ∃ x y : α, x ≠ y
goal: Prop

full_name: Nontrivial.exists_pair_ne
code: /-- Predicate typeclass for expressing that a type is not reduced to a single element. In rings,
this is equivalent to `0 ≠ 1`. In vector spaces, this is equivalent to positive dimension. -/
class Nontrivial (α : Type*) : Prop where
  /-- In a nontrivial type, there exists a pair of distinct terms. -/
  exists_pair_ne : ∃ x y : α, x ≠ y
goal: ∃ x y, x ≠ y

full_name: nontrivial_iff
code: theorem nontrivial_iff : Nontrivial α ↔ ∃ x y : α, x ≠ y 
goal: Nontrivial α ↔ ∃ x y, x ≠ y

full_name: exists_pair_ne
code: theorem exists_pair_ne (α : Type*) [Nontrivial α] : ∃ x y : α, x ≠ y 
goal: ∃ x y, x ≠ y

full_name: Decidable.exists_ne
code: protected theorem Decidable.exists_ne [Nontrivial α] [DecidableEq α] (x : α) : ∃ y, y ≠ x 
goal: ∃ y, y ≠ x

full_name: exists_ne
code: theorem exists_ne [Nontrivial α] (x : α) : ∃ y, y ≠ x 
goal: ∃ y, y ≠ x

full_name: nontrivial_of_ne
code: theorem nontrivial_of_ne (x y : α) (h : x ≠ y) : Nontrivial α 
goal: Nontrivial α

full_name: nontrivial_iff_exists_ne
code: theorem nontrivial_iff_exists_ne (x : α) : Nontrivial α ↔ ∃ y, y ≠ x 
goal: Nontrivial α ↔ ∃ y, y ≠ x

full_name: instNontrivialProp
code: instance : Nontrivial Prop 
goal: Nontrivial Prop

full_name: Nontrivial.to_nonempty
code: /-- See Note [lower instance priority]

Note that since this and `nonempty_of_inhabited` are the most "obvious" way to find a nonempty
instance if no direct instance can be found, we give this a higher priority than the usual `100`.
-/
instance (priority := 500) Nontrivial.to_nonempty [Nontrivial α] : Nonempty α 
goal: Nonempty α

full_name: subsingleton_iff
code: theorem subsingleton_iff : Subsingleton α ↔ ∀ x y : α, x = y 
goal: Subsingleton α ↔ ∀ (x y : α), x = y

full_name: not_nontrivial_iff_subsingleton
code: theorem not_nontrivial_iff_subsingleton : ¬Nontrivial α ↔ Subsingleton α 
goal: ¬Nontrivial α ↔ Subsingleton α

full_name: not_nontrivial
code: theorem not_nontrivial (α) [Subsingleton α] : ¬Nontrivial α 
goal: ¬Nontrivial α

full_name: not_subsingleton
code: theorem not_subsingleton (α) [Nontrivial α] : ¬Subsingleton α 
goal: ¬Subsingleton α

full_name: not_subsingleton_iff_nontrivial
code: lemma not_subsingleton_iff_nontrivial : ¬ Subsingleton α ↔ Nontrivial α 
goal: ¬Subsingleton α ↔ Nontrivial α

full_name: subsingleton_or_nontrivial
code: /-- A type is either a subsingleton or nontrivial. -/
theorem subsingleton_or_nontrivial (α : Type*) : Subsingleton α ∨ Nontrivial α 
goal: Subsingleton α ∨ Nontrivial α

full_name: false_of_nontrivial_of_subsingleton
code: theorem false_of_nontrivial_of_subsingleton (α : Type*) [Nontrivial α] [Subsingleton α] : False 
goal: False

full_name: Function.Surjective.nontrivial
code: /-- Pullback a `Nontrivial` instance along a surjective function. -/
protected theorem Function.Surjective.nontrivial [Nontrivial β] {f : α → β}
    (hf : Function.Surjective f) : Nontrivial α 
goal: Nontrivial α

full_name: Bool.instNontrivial
code: instance : Nontrivial Bool 
goal: Nontrivial Bool