ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Relation.ReflGen.mono
theorem mono {p : α → α → Prop} (hp : ∀ a b, r a b → p a b) : ∀ {a b}, ReflGen r a b → ReflGen p a b
  
Arguments: {α : Type u_1} {r p : α → α → Prop} (hp : ∀ (a b : α), r a b → p a b) {a b : α}
Goal: Relation.ReflGen r a b → Relation.ReflGen p a b
-- Relation.ReflTransGen.trans
@[trans]
theorem trans (hab : ReflTransGen r a b) (hbc : ReflTransGen r b c) : ReflTransGen r a c 
Arguments: {α : Type u_1} {r : α → α → Prop} {a b c : α} (hab : Relation.ReflTransGen r a b) (hbc : Relation.ReflTransGen r b c)
Goal: Relation.ReflTransGen r a c
-- Relation.ReflTransGen.single
theorem single (hab : r a b) : ReflTransGen r a b 
Arguments: {α : Type u_1} {r : α → α → Prop} {a b : α} (hab : r a b)
Goal: Relation.ReflTransGen r a b
-- Relation.ReflTransGen.head
theorem head (hab : r a b) (hbc : ReflTransGen r b c) : ReflTransGen r a c 
Arguments: {α : Type u_1} {r : α → α → Prop} {a b c : α} (hab : r a b) (hbc : Relation.ReflTransGen r b c)
Goal: Relation.ReflTransGen r a c
-- Relation.ReflTransGen.symmetric
theorem symmetric (h : Symmetric r) : Symmetric (ReflTransGen r) 
Arguments: {α : Type u_1} {r : α → α → Prop} (h : Symmetric r)
Goal: Symmetric (Relation.ReflTransGen r)
-- Relation.ReflTransGen.cases_tail
theorem cases_tail : ReflTransGen r a b → b = a ∨ ∃ c, ReflTransGen r a c ∧ r c b 
Arguments: {α : Type u_1} {r : α → α → Prop} {a b : α}
Goal: Relation.ReflTransGen r a b → b = a ∨ ∃ c, Relation.ReflTransGen r a c ∧ r c b
-- Relation.ReflTransGen.head_induction_on
@[elab_as_elim]
theorem head_induction_on {P : ∀ a : α, ReflTransGen r a b → Prop} {a : α} (h : ReflTransGen r a b)
    (refl : P b refl)
    (head : ∀ {a c} (h' : r a c) (h : ReflTransGen r c b), P c h → P a (h.head h')) : P a h 
Arguments: {α : Type u_1} {r : α → α → Prop} {b : α} {P : (a : α) → Relation.ReflTransGen r a b → Prop} {a : α} (h : Relation.ReflTransGen r a b) (refl : P b ⋯) (head : ∀ {a c : α} (h' : r a c) (h : Relation.ReflTransGen r c b), P c h → P a ⋯)
Goal: P a h
-- Relation.ReflTransGen.trans_induction_on
@[elab_as_elim]
theorem trans_induction_on {P : ∀ {a b : α}, ReflTransGen r a b → Prop} {a b : α}
    (h : ReflTransGen r a b) (ih₁ : ∀ a, @P a a refl) (ih₂ : ∀ {a b} (h : r a b), P (single h))
    (ih₃ : ∀ {a b c} (h₁ : ReflTransGen r a b) (h₂ : ReflTransGen r b c), P h₁ → P h₂ →
     P (h₁.trans h₂)) : P h 
Arguments: {α : Type u_1} {r : α → α → Prop} {P : {a b : α} → Relation.ReflTransGen r a b → Prop} {a b : α} (h : Relation.ReflTransGen r a b) (ih₁ : ∀ (a : α), P ⋯) (ih₂ : ∀ {a b : α} (h : r a b), P ⋯) (ih₃ : ∀ {a b c : α} (h₁ : Relation.ReflTransGen r a b) (h₂ : Relation.ReflTransGen r b c), P h₁ → P h₂ → P ⋯)
Goal: P h
-- Relation.ReflTransGen.cases_head
theorem cases_head (h : ReflTransGen r a b) : a = b ∨ ∃ c, r a c ∧ ReflTransGen r c b 
Arguments: {α : Type u_1} {r : α → α → Prop} {a b : α} (h : Relation.ReflTransGen r a b)
Goal: a = b ∨ ∃ c, r a c ∧ Relation.ReflTransGen r c b
-- Relation.ReflTransGen.cases_head_iff
theorem cases_head_iff : ReflTransGen r a b ↔ a = b ∨ ∃ c, r a c ∧ ReflTransGen r c b 
Arguments: {α : Type u_1} {r : α → α → Prop} {a b : α}
Goal: Relation.ReflTransGen r a b ↔ a = b ∨ ∃ c, r a c ∧ Relation.ReflTransGen r c b
-- Relation.ReflTransGen.total_of_right_unique
theorem total_of_right_unique (U : Relator.RightUnique r) (ab : ReflTransGen r a b)
    (ac : ReflTransGen r a c) : ReflTransGen r b c ∨ ReflTransGen r c b 
Arguments: {α : Type u_1} {r : α → α → Prop} {a b c : α} (U : Relator.RightUnique r) (ab : Relation.ReflTransGen r a b) (ac : Relation.ReflTransGen r a c)
Goal: Relation.ReflTransGen r b c ∨ Relation.ReflTransGen r c b
-- Relation.TransGen.to_reflTransGen
theorem to_reflTransGen {a b} (h : TransGen r a b) : ReflTransGen r a b 
Arguments: {α : Type u_1} {r : α → α → Prop} {a b : α} (h : Relation.TransGen r a b)
Goal: Relation.ReflTransGen r a b
-- Relation.TransGen.trans_left
theorem trans_left (hab : TransGen r a b) (hbc : ReflTransGen r b c) : TransGen r a c 
Arguments: {α : Type u_1} {r : α → α → Prop} {a b c : α} (hab : Relation.TransGen r a b) (hbc : Relation.ReflTransGen r b c)
Goal: Relation.TransGen r a c
-- Relation.TransGen.trans
@[trans]
theorem trans (hab : TransGen r a b) (hbc : TransGen r b c) : TransGen r a c 
Arguments: {α : Type u_1} {r : α → α → Prop} {a b c : α} (hab : Relation.TransGen r a b) (hbc : Relation.TransGen r b c)
Goal: Relation.TransGen r a c
-- Relation.TransGen.head'
theorem head' (hab : r a b) (hbc : ReflTransGen r b c) : TransGen r a c 
Arguments: {α : Type u_1} {r : α → α → Prop} {a b c : α} (hab : r a b) (hbc : Relation.ReflTransGen r b c)
Goal: Relation.TransGen r a c
-- Relation.TransGen.tail'
theorem tail' (hab : ReflTransGen r a b) (hbc : r b c) : TransGen r a c 
Arguments: {α : Type u_1} {r : α → α → Prop} {a b c : α} (hab : Relation.ReflTransGen r a b) (hbc : r b c)
Goal: Relation.TransGen r a c
-- Relation.TransGen.head
theorem head (hab : r a b) (hbc : TransGen r b c) : TransGen r a c 
Arguments: {α : Type u_1} {r : α → α → Prop} {a b c : α} (hab : r a b) (hbc : Relation.TransGen r b c)
Goal: Relation.TransGen r a c
-- Relation.TransGen.head_induction_on
@[elab_as_elim]
theorem head_induction_on {P : ∀ a : α, TransGen r a b → Prop} {a : α} (h : TransGen r a b)
    (base : ∀ {a} (h : r a b), P a (single h))
    (ih : ∀ {a c} (h' : r a c) (h : TransGen r c b), P c h → P a (h.head h')) : P a h 
Arguments: {α : Type u_1} {r : α → α → Prop} {b : α} {P : (a : α) → Relation.TransGen r a b → Prop} {a : α} (h : Relation.TransGen r a b) (base : ∀ {a : α} (h : r a b), P a ⋯) (ih : ∀ {a c : α} (h' : r a c) (h : Relation.TransGen r c b), P c h → P a ⋯)
Goal: P a h
-- Relation.TransGen.trans_induction_on
@[elab_as_elim]
theorem trans_induction_on {P : ∀ {a b : α}, TransGen r a b → Prop} {a b : α} (h : TransGen r a b)
    (base : ∀ {a b} (h : r a b), P (single h))
    (ih : ∀ {a b c} (h₁ : TransGen r a b) (h₂ : TransGen r b c), P h₁ → P h₂ → P (h₁.trans h₂)) :
    P h 
Arguments: {α : Type u_1} {r : α → α → Prop} {P : {a b : α} → Relation.TransGen r a b → Prop} {a b : α} (h : Relation.TransGen r a b) (base : ∀ {a b : α} (h : r a b), P ⋯) (ih : ∀ {a b c : α} (h₁ : Relation.TransGen r a b) (h₂ : Relation.TransGen r b c), P h₁ → P h₂ → P ⋯)
Goal: P h
-- Relation.TransGen.trans_right
theorem trans_right (hab : ReflTransGen r a b) (hbc : TransGen r b c) : TransGen r a c 
Arguments: {α : Type u_1} {r : α → α → Prop} {a b c : α} (hab : Relation.ReflTransGen r a b) (hbc : Relation.TransGen r b c)
Goal: Relation.TransGen r a c
-- Relation.TransGen.tail'_iff
theorem tail'_iff : TransGen r a c ↔ ∃ b, ReflTransGen r a b ∧ r b c 
Arguments: {α : Type u_1} {r : α → α → Prop} {a c : α}
Goal: Relation.TransGen r a c ↔ ∃ b, Relation.ReflTransGen r a b ∧ r b c
-- Relation.TransGen.head'_iff
theorem head'_iff : TransGen r a c ↔ ∃ b, r a b ∧ ReflTransGen r b c 
Arguments: {α : Type u_1} {r : α → α → Prop} {a c : α}
Goal: Relation.TransGen r a c ↔ ∃ b, r a b ∧ Relation.ReflTransGen r b c
-- Acc.TransGen
theorem _root_.Acc.TransGen (h : Acc r a) : Acc (TransGen r) a 
Arguments: {α : Type u_1} {r : α → α → Prop} {a : α} (h : Acc r a)
Goal: Acc (Relation.TransGen r) a
-- acc_transGen_iff
theorem _root_.acc_transGen_iff : Acc (TransGen r) a ↔ Acc r a 
Arguments: {α : Type u_1} {r : α → α → Prop} {a : α}
Goal: Acc (Relation.TransGen r) a ↔ Acc r a
-- WellFounded.transGen
theorem _root_.WellFounded.transGen (h : WellFounded r) : WellFounded (TransGen r) 
Arguments: {α : Type u_1} {r : α → α → Prop} (h : WellFounded r)
Goal: WellFounded (Relation.TransGen r)
-- Relation.reflGen_eq_self
lemma reflGen_eq_self (hr : Reflexive r) : ReflGen r = r 
Arguments: {α : Type u_1} {r : α → α → Prop} (hr : Reflexive r)
Goal: Relation.ReflGen r = r
-- Relation.reflexive_reflGen
lemma reflexive_reflGen : Reflexive (ReflGen r) 
Arguments: {α : Type u_1} {r : α → α → Prop}
Goal: Reflexive (Relation.ReflGen r)
-- Relation.reflGen_minimal
lemma reflGen_minimal {r' : α → α → Prop} (hr' : Reflexive r') (h : ∀ x y, r x y → r' x y) {x y : α}
    (hxy : ReflGen r x y) : r' x y 
Arguments: {α : Type u_1} {r r' : α → α → Prop} (hr' : Reflexive r') (h : ∀ (x y : α), r x y → r' x y) {x y : α} (hxy : Relation.ReflGen r x y)
Goal: r' x y
-- Relation.transGen_eq_self
theorem transGen_eq_self (trans : Transitive r) : TransGen r = r 
Arguments: {α : Type u_1} {r : α → α → Prop} (trans : Transitive r)
Goal: Relation.TransGen r = r
-- Relation.transitive_transGen
theorem transitive_transGen : Transitive (TransGen r) 
Arguments: {α : Type u_1} {r : α → α → Prop}
Goal: Transitive (Relation.TransGen r)
-- Relation.transGen_idem
theorem transGen_idem : TransGen (TransGen r) = TransGen r 
Arguments: {α : Type u_1} {r : α → α → Prop}
Goal: Relation.TransGen (Relation.TransGen r) = Relation.TransGen r
-- Relation.TransGen.lift
theorem TransGen.lift {p : β → β → Prop} {a b : α} (f : α → β) (h : ∀ a b, r a b → p (f a) (f b))
    (hab : TransGen r a b) : TransGen p (f a) (f b) 
Arguments: {α : Type u_1} {β : Type u_2} {r : α → α → Prop} {p : β → β → Prop} {a b : α} (f : α → β) (h : ∀ (a b : α), r a b → p (f a) (f b)) (hab : Relation.TransGen r a b)
Goal: Relation.TransGen p (f a) (f b)
-- Relation.TransGen.lift'
theorem TransGen.lift' {p : β → β → Prop} {a b : α} (f : α → β)
    (h : ∀ a b, r a b → TransGen p (f a) (f b)) (hab : TransGen r a b) :
    TransGen p (f a) (f b) 
Arguments: {α : Type u_1} {β : Type u_2} {r : α → α → Prop} {p : β → β → Prop} {a b : α} (f : α → β) (h : ∀ (a b : α), r a b → Relation.TransGen p (f a) (f b)) (hab : Relation.TransGen r a b)
Goal: Relation.TransGen p (f a) (f b)
-- Relation.TransGen.closed
theorem TransGen.closed {p : α → α → Prop} :
    (∀ a b, r a b → TransGen p a b) → TransGen r a b → TransGen p a b 
Arguments: {α : Type u_1} {r : α → α → Prop} {a b : α} {p : α → α → Prop}
Goal: (∀ (a b : α), r a b → Relation.TransGen p a b) → Relation.TransGen r a b → Relation.TransGen p a b
-- Relation.TransGen.closed'
lemma TransGen.closed' {P : α → Prop} (dc : ∀ {a b}, r a b → P b → P a)
    {a b : α} (h : TransGen r a b) : P b → P a 
Arguments: {α : Type u_1} {r : α → α → Prop} {P : α → Prop} (dc : ∀ {a b : α}, r a b → P b → P a) {a b : α} (h : Relation.TransGen r a b)
Goal: P b → P a
-- Relation.TransGen.mono
theorem TransGen.mono {p : α → α → Prop} :
    (∀ a b, r a b → p a b) → TransGen r a b → TransGen p a b 
Arguments: {α : Type u_1} {r : α → α → Prop} {a b : α} {p : α → α → Prop}
Goal: (∀ (a b : α), r a b → p a b) → Relation.TransGen r a b → Relation.TransGen p a b
-- Relation.transGen_minimal
lemma transGen_minimal {r' : α → α → Prop} (hr' : Transitive r') (h : ∀ x y, r x y → r' x y)
    {x y : α} (hxy : TransGen r x y) : r' x y 
Arguments: {α : Type u_1} {r r' : α → α → Prop} (hr' : Transitive r') (h : ∀ (x y : α), r x y → r' x y) {x y : α} (hxy : Relation.TransGen r x y)
Goal: r' x y
-- Relation.TransGen.swap
theorem TransGen.swap (h : TransGen r b a) : TransGen (swap r) a b 
Arguments: {α : Type u_1} {r : α → α → Prop} {a b : α} (h : Relation.TransGen r b a)
Goal: Relation.TransGen (Function.swap r) a b
-- Relation.transGen_swap
theorem transGen_swap : TransGen (swap r) a b ↔ TransGen r b a 
Arguments: {α : Type u_1} {r : α → α → Prop} {a b : α}
Goal: Relation.TransGen (Function.swap r) a b ↔ Relation.TransGen r b a
-- Relation.reflTransGen_iff_eq
theorem reflTransGen_iff_eq (h : ∀ b, ¬r a b) : ReflTransGen r a b ↔ b = a 
Arguments: {α : Type u_1} {r : α → α → Prop} {a b : α} (h : ∀ (b : α), ¬r a b)
Goal: Relation.ReflTransGen r a b ↔ b = a
-- Relation.reflTransGen_iff_eq_or_transGen
theorem reflTransGen_iff_eq_or_transGen : ReflTransGen r a b ↔ b = a ∨ TransGen r a b 
Arguments: {α : Type u_1} {r : α → α → Prop} {a b : α}
Goal: Relation.ReflTransGen r a b ↔ b = a ∨ Relation.TransGen r a b
-- Relation.ReflTransGen.lift
theorem ReflTransGen.lift {p : β → β → Prop} {a b : α} (f : α → β)
    (h : ∀ a b, r a b → p (f a) (f b)) (hab : ReflTransGen r a b) : ReflTransGen p (f a) (f b) 
Arguments: {α : Type u_1} {β : Type u_2} {r : α → α → Prop} {p : β → β → Prop} {a b : α} (f : α → β) (h : ∀ (a b : α), r a b → p (f a) (f b)) (hab : Relation.ReflTransGen r a b)
Goal: Relation.ReflTransGen p (f a) (f b)
-- Relation.ReflTransGen.mono
theorem ReflTransGen.mono {p : α → α → Prop} : (∀ a b, r a b → p a b) →
    ReflTransGen r a b → ReflTransGen p a b 
Arguments: {α : Type u_1} {r : α → α → Prop} {a b : α} {p : α → α → Prop}
Goal: (∀ (a b : α), r a b → p a b) → Relation.ReflTransGen r a b → Relation.ReflTransGen p a b
-- Relation.reflTransGen_eq_self
theorem reflTransGen_eq_self (refl : Reflexive r) (trans : Transitive r) : ReflTransGen r = r 
Arguments: {α : Type u_1} {r : α → α → Prop} (refl : Reflexive r) (trans : Transitive r)
Goal: Relation.ReflTransGen r = r
-- Relation.reflTransGen_minimal
lemma reflTransGen_minimal {r' : α → α → Prop} (hr₁ : Reflexive r') (hr₂ : Transitive r')
    (h : ∀ x y, r x y → r' x y) {x y : α} (hxy : ReflTransGen r x y) : r' x y 
Arguments: {α : Type u_1} {r r' : α → α → Prop} (hr₁ : Reflexive r') (hr₂ : Transitive r') (h : ∀ (x y : α), r x y → r' x y) {x y : α} (hxy : Relation.ReflTransGen r x y)
Goal: r' x y
-- Relation.reflexive_reflTransGen
theorem reflexive_reflTransGen : Reflexive (ReflTransGen r) 
Arguments: {α : Type u_1} {r : α → α → Prop}
Goal: Reflexive (Relation.ReflTransGen r)
-- Relation.transitive_reflTransGen
theorem transitive_reflTransGen : Transitive (ReflTransGen r) 
Arguments: {α : Type u_1} {r : α → α → Prop}
Goal: Transitive (Relation.ReflTransGen r)
-- Relation.reflTransGen_idem
theorem reflTransGen_idem : ReflTransGen (ReflTransGen r) = ReflTransGen r 
Arguments: {α : Type u_1} {r : α → α → Prop}
Goal: Relation.ReflTransGen (Relation.ReflTransGen r) = Relation.ReflTransGen r
-- Relation.ReflTransGen.lift'
theorem ReflTransGen.lift' {p : β → β → Prop} {a b : α} (f : α → β)
    (h : ∀ a b, r a b → ReflTransGen p (f a) (f b))
    (hab : ReflTransGen r a b) : ReflTransGen p (f a) (f b) 
Arguments: {α : Type u_1} {β : Type u_2} {r : α → α → Prop} {p : β → β → Prop} {a b : α} (f : α → β) (h : ∀ (a b : α), r a b → Relation.ReflTransGen p (f a) (f b)) (hab : Relation.ReflTransGen r a b)
Goal: Relation.ReflTransGen p (f a) (f b)
-- Relation.reflTransGen_closed
theorem reflTransGen_closed {p : α → α → Prop} :
    (∀ a b, r a b → ReflTransGen p a b) → ReflTransGen r a b → ReflTransGen p a b 
Arguments: {α : Type u_1} {r : α → α → Prop} {a b : α} {p : α → α → Prop}
Goal: (∀ (a b : α), r a b → Relation.ReflTransGen p a b) → Relation.ReflTransGen r a b → Relation.ReflTransGen p a b
-- Relation.ReflTransGen.swap
theorem ReflTransGen.swap (h : ReflTransGen r b a) : ReflTransGen (swap r) a b 
Arguments: {α : Type u_1} {r : α → α → Prop} {a b : α} (h : Relation.ReflTransGen r b a)
Goal: Relation.ReflTransGen (Function.swap r) a b
-- Relation.reflTransGen_swap
theorem reflTransGen_swap : ReflTransGen (swap r) a b ↔ ReflTransGen r b a 
Arguments: {α : Type u_1} {r : α → α → Prop} {a b : α}
Goal: Relation.ReflTransGen (Function.swap r) a b ↔ Relation.ReflTransGen r b a
-- Relation.reflGen_transGen
@[simp] lemma reflGen_transGen : ReflGen (TransGen r) = ReflTransGen r 
Arguments: {α : Type u_1} {r : α → α → Prop}
Goal: Relation.ReflGen (Relation.TransGen r) = Relation.ReflTransGen r
-- Relation.transGen_reflGen
@[simp] lemma transGen_reflGen : TransGen (ReflGen r) = ReflTransGen r 
Arguments: {α : Type u_1} {r : α → α → Prop}
Goal: Relation.TransGen (Relation.ReflGen r) = Relation.ReflTransGen r
-- Relation.reflTransGen_reflGen
@[simp] lemma reflTransGen_reflGen : ReflTransGen (ReflGen r) = ReflTransGen r 
Arguments: {α : Type u_1} {r : α → α → Prop}
Goal: Relation.ReflTransGen (Relation.ReflGen r) = Relation.ReflTransGen r
-- Relation.reflTransGen_transGen
@[simp] lemma reflTransGen_transGen : ReflTransGen (TransGen r) = ReflTransGen r 
Arguments: {α : Type u_1} {r : α → α → Prop}
Goal: Relation.ReflTransGen (Relation.TransGen r) = Relation.ReflTransGen r
-- Relation.reflTransGen_eq_transGen
lemma reflTransGen_eq_transGen (hr : Reflexive r) :
    ReflTransGen r = TransGen r 
Arguments: {α : Type u_1} {r : α → α → Prop} (hr : Reflexive r)
Goal: Relation.ReflTransGen r = Relation.TransGen r
-- Relation.reflTransGen_eq_reflGen
lemma reflTransGen_eq_reflGen (hr : Transitive r) :
    ReflTransGen r = ReflGen r 
Arguments: {α : Type u_1} {r : α → α → Prop} (hr : Transitive r)
Goal: Relation.ReflTransGen r = Relation.ReflGen r
-- Relation.church_rosser
theorem church_rosser (h : ∀ a b c, r a b → r a c → ∃ d, ReflGen r b d ∧ ReflTransGen r c d)
    (hab : ReflTransGen r a b) (hac : ReflTransGen r a c) : Join (ReflTransGen r) b c 
Arguments: {α : Type u_1} {r : α → α → Prop} {a b c : α} (h : ∀ (a b c : α), r a b → r a c → ∃ d, Relation.ReflGen r b d ∧ Relation.ReflTransGen r c d) (hab : Relation.ReflTransGen r a b) (hac : Relation.ReflTransGen r a c)
Goal: Relation.Join (Relation.ReflTransGen r) b c
-- Relation.join_of_single
theorem join_of_single (h : Reflexive r) (hab : r a b) : Join r a b 
Arguments: {α : Type u_1} {r : α → α → Prop} {a b : α} (h : Reflexive r) (hab : r a b)
Goal: Relation.Join r a b
-- Relation.symmetric_join
theorem symmetric_join : Symmetric (Join r) 
Arguments: {α : Type u_1} {r : α → α → Prop}
Goal: Symmetric (Relation.Join r)
-- Relation.reflexive_join
theorem reflexive_join (h : Reflexive r) : Reflexive (Join r) 
Arguments: {α : Type u_1} {r : α → α → Prop} (h : Reflexive r)
Goal: Reflexive (Relation.Join r)
-- Relation.transitive_join
theorem transitive_join (ht : Transitive r) (h : ∀ a b c, r a b → r a c → Join r b c) :
    Transitive (Join r) 
Arguments: {α : Type u_1} {r : α → α → Prop} (ht : Transitive r) (h : ∀ (a b c : α), r a b → r a c → Relation.Join r b c)
Goal: Transitive (Relation.Join r)
-- Relation.equivalence_join
theorem equivalence_join (hr : Reflexive r) (ht : Transitive r)
    (h : ∀ a b c, r a b → r a c → Join r b c) : Equivalence (Join r) 
Arguments: {α : Type u_1} {r : α → α → Prop} (hr : Reflexive r) (ht : Transitive r) (h : ∀ (a b c : α), r a b → r a c → Relation.Join r b c)
Goal: Equivalence (Relation.Join r)
-- Relation.equivalence_join_reflTransGen
theorem equivalence_join_reflTransGen
    (h : ∀ a b c, r a b → r a c → ∃ d, ReflGen r b d ∧ ReflTransGen r c d) :
    Equivalence (Join (ReflTransGen r)) 
Arguments: {α : Type u_1} {r : α → α → Prop} (h : ∀ (a b c : α), r a b → r a c → ∃ d, Relation.ReflGen r b d ∧ Relation.ReflTransGen r c d)
Goal: Equivalence (Relation.Join (Relation.ReflTransGen r))
-- Relation.join_of_equivalence
theorem join_of_equivalence {r' : α → α → Prop} (hr : Equivalence r) (h : ∀ a b, r' a b → r a b) :
    Join r' a b → r a b
  
Arguments: {α : Type u_1} {r : α → α → Prop} {a b : α} {r' : α → α → Prop} (hr : Equivalence r) (h : ∀ (a b : α), r' a b → r a b)
Goal: Relation.Join r' a b → r a b
-- Relation.reflTransGen_of_transitive_reflexive
theorem reflTransGen_of_transitive_reflexive {r' : α → α → Prop} (hr : Reflexive r)
    (ht : Transitive r) (h : ∀ a b, r' a b → r a b) (h' : ReflTransGen r' a b) : r a b 
Arguments: {α : Type u_1} {r : α → α → Prop} {a b : α} {r' : α → α → Prop} (hr : Reflexive r) (ht : Transitive r) (h : ∀ (a b : α), r' a b → r a b) (h' : Relation.ReflTransGen r' a b)
Goal: r a b
-- Relation.reflTransGen_of_equivalence
theorem reflTransGen_of_equivalence {r' : α → α → Prop} (hr : Equivalence r) :
    (∀ a b, r' a b → r a b) → ReflTransGen r' a b → r a b 
Arguments: {α : Type u_1} {r : α → α → Prop} {a b : α} {r' : α → α → Prop} (hr : Equivalence r)
Goal: (∀ (a b : α), r' a b → r a b) → Relation.ReflTransGen r' a b → r a b
-- Equivalence.eqvGen_iff
theorem Equivalence.eqvGen_iff (h : Equivalence r) : EqvGen r a b ↔ r a b 
Arguments: {α : Type u_1} {r : α → α → Prop} {a b : α} (h : Equivalence r)
Goal: EqvGen r a b ↔ r a b
-- Equivalence.eqvGen_eq
theorem Equivalence.eqvGen_eq (h : Equivalence r) : EqvGen r = r 
Arguments: {α : Type u_1} {r : α → α → Prop} (h : Equivalence r)
Goal: EqvGen r = r
-- EqvGen.mono
theorem EqvGen.mono {r p : α → α → Prop} (hrp : ∀ a b, r a b → p a b) (h : EqvGen r a b) :
    EqvGen p a b 
Arguments: {α : Type u_1} {a b : α} {r p : α → α → Prop} (hrp : ∀ (a b : α), r a b → p a b) (h : EqvGen r a b)
Goal: EqvGen p a b
-- Orientation.oangle_add_right_eq_arccos_of_oangle_eq_pi_div_two
theorem oangle_add_right_eq_arccos_of_oangle_eq_pi_div_two {x y : V} (h : o.oangle x y = ↑(π / 2)) :
    o.oangle x (x + y) = Real.arccos (‖x‖ / ‖x + y‖) 
Arguments: {V : Type u_1} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [hd2 : Fact (FiniteDimensional.finrank ℝ V = 2)] (o : Orientation ℝ V (Fin 2)) {x y : V} (h : o.oangle x y = ↑(π / 2))
Goal: o.oangle x (x + y) = ↑(Real.arccos (‖x‖ / ‖x + y‖))
-- Orientation.oangle_add_left_eq_arccos_of_oangle_eq_pi_div_two
theorem oangle_add_left_eq_arccos_of_oangle_eq_pi_div_two {x y : V} (h : o.oangle x y = ↑(π / 2)) :
    o.oangle (x + y) y = Real.arccos (‖y‖ / ‖x + y‖) 
Arguments: {V : Type u_1} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [hd2 : Fact (FiniteDimensional.finrank ℝ V = 2)] (o : Orientation ℝ V (Fin 2)) {x y : V} (h : o.oangle x y = ↑(π / 2))
Goal: o.oangle (x + y) y = ↑(Real.arccos (‖y‖ / ‖x + y‖))
-- Orientation.oangle_add_right_eq_arcsin_of_oangle_eq_pi_div_two
theorem oangle_add_right_eq_arcsin_of_oangle_eq_pi_div_two {x y : V} (h : o.oangle x y = ↑(π / 2)) :
    o.oangle x (x + y) = Real.arcsin (‖y‖ / ‖x + y‖) 
Arguments: {V : Type u_1} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [hd2 : Fact (FiniteDimensional.finrank ℝ V = 2)] (o : Orientation ℝ V (Fin 2)) {x y : V} (h : o.oangle x y = ↑(π / 2))
Goal: o.oangle x (x + y) = ↑(Real.arcsin (‖y‖ / ‖x + y‖))
-- Orientation.oangle_add_left_eq_arcsin_of_oangle_eq_pi_div_two
theorem oangle_add_left_eq_arcsin_of_oangle_eq_pi_div_two {x y : V} (h : o.oangle x y = ↑(π / 2)) :
    o.oangle (x + y) y = Real.arcsin (‖x‖ / ‖x + y‖) 
Arguments: {V : Type u_1} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [hd2 : Fact (FiniteDimensional.finrank ℝ V = 2)] (o : Orientation ℝ V (Fin 2)) {x y : V} (h : o.oangle x y = ↑(π / 2))
Goal: o.oangle (x + y) y = ↑(Real.arcsin (‖x‖ / ‖x + y‖))
-- Orientation.oangle_add_right_eq_arctan_of_oangle_eq_pi_div_two
theorem oangle_add_right_eq_arctan_of_oangle_eq_pi_div_two {x y : V} (h : o.oangle x y = ↑(π / 2)) :
    o.oangle x (x + y) = Real.arctan (‖y‖ / ‖x‖) 
Arguments: {V : Type u_1} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [hd2 : Fact (FiniteDimensional.finrank ℝ V = 2)] (o : Orientation ℝ V (Fin 2)) {x y : V} (h : o.oangle x y = ↑(π / 2))
Goal: o.oangle x (x + y) = ↑(Real.arctan (‖y‖ / ‖x‖))
-- Orientation.oangle_add_left_eq_arctan_of_oangle_eq_pi_div_two
theorem oangle_add_left_eq_arctan_of_oangle_eq_pi_div_two {x y : V} (h : o.oangle x y = ↑(π / 2)) :
    o.oangle (x + y) y = Real.arctan (‖x‖ / ‖y‖) 
Arguments: {V : Type u_1} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [hd2 : Fact (FiniteDimensional.finrank ℝ V = 2)] (o : Orientation ℝ V (Fin 2)) {x y : V} (h : o.oangle x y = ↑(π / 2))
Goal: o.oangle (x + y) y = ↑(Real.arctan (‖x‖ / ‖y‖))
-- Orientation.cos_oangle_add_right_of_oangle_eq_pi_div_two
theorem cos_oangle_add_right_of_oangle_eq_pi_div_two {x y : V} (h : o.oangle x y = ↑(π / 2)) :
    Real.Angle.cos (o.oangle x (x + y)) = ‖x‖ / ‖x + y‖ 
Arguments: {V : Type u_1} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [hd2 : Fact (FiniteDimensional.finrank ℝ V = 2)] (o : Orientation ℝ V (Fin 2)) {x y : V} (h : o.oangle x y = ↑(π / 2))
Goal: (o.oangle x (x + y)).cos = ‖x‖ / ‖x + y‖
-- Orientation.cos_oangle_add_left_of_oangle_eq_pi_div_two
theorem cos_oangle_add_left_of_oangle_eq_pi_div_two {x y : V} (h : o.oangle x y = ↑(π / 2)) :
    Real.Angle.cos (o.oangle (x + y) y) = ‖y‖ / ‖x + y‖ 
Arguments: {V : Type u_1} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [hd2 : Fact (FiniteDimensional.finrank ℝ V = 2)] (o : Orientation ℝ V (Fin 2)) {x y : V} (h : o.oangle x y = ↑(π / 2))
Goal: (o.oangle (x + y) y).cos = ‖y‖ / ‖x + y‖
-- Orientation.sin_oangle_add_right_of_oangle_eq_pi_div_two
theorem sin_oangle_add_right_of_oangle_eq_pi_div_two {x y : V} (h : o.oangle x y = ↑(π / 2)) :
    Real.Angle.sin (o.oangle x (x + y)) = ‖y‖ / ‖x + y‖ 
Arguments: {V : Type u_1} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [hd2 : Fact (FiniteDimensional.finrank ℝ V = 2)] (o : Orientation ℝ V (Fin 2)) {x y : V} (h : o.oangle x y = ↑(π / 2))
Goal: (o.oangle x (x + y)).sin = ‖y‖ / ‖x + y‖