# Relator for functions, pairs, sums, and lists. #

def Relator.LiftFun {α : Sort u₁} {β : Sort u₂} {γ : Sort v₁} {δ : Sort v₂} (R : αβProp) (S : γδProp) (f : αγ) (g : βδ) :

The binary relations R : α → β → Prop and S : γ → δ → Prop induce a binary relation on functions LiftFun : (α → γ) → (β → δ) → Prop.

Equations
• (R S) f g = ∀ ⦃a : α⦄ ⦃b : β⦄, R a bS (f a) (g b)
Instances For

(R ⇒ S) f g means LiftFun R S f g.

Equations
Instances For
def Relator.RightTotal {α : Type u₁} {β : Type u₂} (R : αβProp) :

A relation is "right total" if every element appears on the right.

Equations
• = ∀ (b : β), ∃ (a : α), R a b
Instances For
def Relator.LeftTotal {α : Type u₁} {β : Type u₂} (R : αβProp) :

A relation is "left total" if every element appears on the left.

Equations
• = ∀ (a : α), ∃ (b : β), R a b
Instances For
def Relator.BiTotal {α : Type u₁} {β : Type u₂} (R : αβProp) :

A relation is "bi-total" if it is both right total and left total.

Equations
Instances For
def Relator.LeftUnique {α : Type u₁} {β : Type u₂} (R : αβProp) :

A relation is "left unique" if every element on the right is paired with at most one element on the left.

Equations
• = ∀ ⦃a b : α⦄ ⦃c : β⦄, R a cR b ca = b
Instances For
def Relator.RightUnique {α : Type u₁} {β : Type u₂} (R : αβProp) :

A relation is "right unique" if every element on the left is paired with at most one element on the right.

Equations
• = ∀ ⦃a : α⦄ ⦃b c : β⦄, R a bR a cb = c
Instances For
def Relator.BiUnique {α : Type u₁} {β : Type u₂} (R : αβProp) :

A relation is "bi-unique" if it is both left unique and right unique.

Equations
Instances For
theorem Relator.RightTotal.rel_forall {α : Type u₁} {β : Type u₂} {R : αβProp} (h : ) :
((R fun (x : Sort u_1) (x_1 : Prop) => xx_1) fun (x : Sort (imax (u₁ + 1) u_1)) (x_1 : Prop) => xx_1) (fun (p : αSort u_1) => (i : α) → p i) fun (q : βProp) => ∀ (i : β), q i
theorem Relator.LeftTotal.rel_exists {α : Type u₁} {β : Type u₂} {R : αβProp} (h : ) :
((R fun (x x_1 : Prop) => xx_1) fun (x x_1 : Prop) => xx_1) (fun (p : αProp) => ∃ (i : α), p i) fun (q : βProp) => ∃ (i : β), q i
theorem Relator.BiTotal.rel_forall {α : Type u₁} {β : Type u₂} {R : αβProp} (h : ) :
((R Iff) Iff) (fun (p : αProp) => ∀ (i : α), p i) fun (q : βProp) => ∀ (i : β), q i
theorem Relator.BiTotal.rel_exists {α : Type u₁} {β : Type u₂} {R : αβProp} (h : ) :
((R Iff) Iff) (fun (p : αProp) => ∃ (i : α), p i) fun (q : βProp) => ∃ (i : β), q i
theorem Relator.left_unique_of_rel_eq {α : Type u₁} {β : Type u₂} {R : αβProp} {eq' : ββProp} (he : (R R Iff) Eq eq') :
theorem Relator.rel_imp :
() (fun (x x_1 : Prop) => xx_1) fun (x x_1 : Prop) => xx_1
theorem Relator.bi_total_eq {α : Type u₁} :
theorem Relator.LeftUnique.flip {α : Type u_1} {β : Type u_2} {r : αβProp} (h : ) :
theorem Relator.rel_and :
((fun (x x_1 : Prop) => x x_1) (fun (x x_1 : Prop) => x x_1) fun (x x_1 : Prop) => x x_1) (fun (x x_1 : Prop) => x x_1) fun (x x_1 : Prop) => x x_1
theorem Relator.rel_or :
((fun (x x_1 : Prop) => x x_1) (fun (x x_1 : Prop) => x x_1) fun (x x_1 : Prop) => x x_1) (fun (x x_1 : Prop) => x x_1) fun (x x_1 : Prop) => x x_1
theorem Relator.rel_iff :
((fun (x x_1 : Prop) => x x_1) (fun (x x_1 : Prop) => x x_1) fun (x x_1 : Prop) => x x_1) (fun (x x_1 : Prop) => x x_1) fun (x x_1 : Prop) => x x_1
theorem Relator.rel_eq {α : Type u_1} {β : Type u_2} {r : αβProp} (hr : ) :
(r r fun (x x_1 : Prop) => x x_1) (fun (x x_1 : α) => x = x_1) fun (x x_1 : β) => x = x_1
theorem Relator.LeftTotal.refl {α : Type u_5} {r₁₁ : ααProp} (hr : ∀ (a : α), r₁₁ a a) :
theorem Relator.LeftTotal.symm {β : Type u_2} {α : Type u_5} {r₁₂ : αβProp} {r₂₁ : βαProp} (hr : ∀ (a : α) (b : β), r₁₂ a br₂₁ b a) :
theorem Relator.LeftTotal.trans {β : Type u_2} {γ : Type u_3} {α : Type u_5} {r₁₂ : αβProp} {r₂₃ : βγProp} {r₁₃ : αγProp} (hr : ∀ (a : α) (b : β) (c : γ), r₁₂ a br₂₃ b cr₁₃ a c) :
theorem Relator.RightTotal.refl {α : Type u_5} {r₁₁ : ααProp} (hr : ∀ (a : α), r₁₁ a a) :
theorem Relator.RightTotal.symm {β : Type u_2} {α : Type u_5} {r₁₂ : αβProp} {r₂₁ : βαProp} (hr : ∀ (a : α) (b : β), r₁₂ a br₂₁ b a) :
theorem Relator.RightTotal.trans {β : Type u_2} {γ : Type u_3} {α : Type u_5} {r₁₂ : αβProp} {r₂₃ : βγProp} {r₁₃ : αγProp} (hr : ∀ (a : α) (b : β) (c : γ), r₁₂ a br₂₃ b cr₁₃ a c) :
theorem Relator.BiTotal.refl {α : Type u_5} {r₁₁ : ααProp} (hr : ∀ (a : α), r₁₁ a a) :
theorem Relator.BiTotal.symm {β : Type u_2} {α : Type u_5} {r₁₂ : αβProp} {r₂₁ : βαProp} (hr : ∀ (a : α) (b : β), r₁₂ a br₂₁ b a) :
theorem Relator.BiTotal.trans {β : Type u_2} {γ : Type u_3} {α : Type u_5} {r₁₂ : αβProp} {r₂₃ : βγProp} {r₁₃ : αγProp} (hr : ∀ (a : α) (b : β) (c : γ), r₁₂ a br₂₃ b cr₁₃ a c) :