Built with
doc-gen4, running Lean4.
Bubbles (
) indicate interactive fragments: hover for details, tap to reveal contents.
Use
Ctrl+āCtrl+āto navigate,
Ctrl+š±ļøto focus.
On Mac, use
Cmdinstead of
Ctrl.
/-
Copyright (c) 2017 Mario Carneiro. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Mario Carneiro
! This file was ported from Lean 3 source module order.rel_iso.group
! leanprover-community/mathlib commit 62a5626868683c104774de8d85b9855234ac807c
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
import Mathlib.Algebra.Group.Defs
import Mathlib.Order.RelIso.Basic
/-!
# Relation isomorphisms form a group
-/
variable {α : Type _} {r : α ā α ā Prop}
namespace RelIso
instance : Group (r ār r) where
one := RelIso.refl: {α : Type ?u.191} ā (r : α ā α ā Prop) ā r ār r
RelIso.refl r
mul fā fā := fā.trans: {α : Type ?u.61} ā
{β : Type ?u.60} ā
{γ : Type ?u.59} ā {r : α ā α ā Prop} ā {s : β ā β ā Prop} ā {t : γ ā γ ā Prop} ā r ār s ā s ār t ā r ār t
trans fā
inv := RelIso.symm: {α : Type ?u.273} ā {β : Type ?u.272} ā {r : α ā α ā Prop} ā {s : β ā β ā Prop} ā r ār s ā s ār r
RelIso.symm
mul_assoc fā fā fā := rfl: ā {α : Sort ?u.103} {a : α}, a = a
rfl
one_mul f := ext: ā {α : Type ?u.202} {β : Type ?u.203} {r : α ā α ā Prop} {s : β ā β ā Prop} ā¦f g : r ār sā¦,
(ā (x : α), āf x = āg x) ā f = g
ext fun _ => rfl: ā {α : Sort ?u.225} {a : α}, a = a
rfl
mul_one f := ext: ā {α : Type ?u.235} {β : Type ?u.236} {r : α ā α ā Prop} {s : β ā β ā Prop} ā¦f g : r ār sā¦,
(ā (x : α), āf x = āg x) ā f = g
ext fun _ => rfl: ā {α : Sort ?u.258} {a : α}, a = a
rfl
mul_left_inv f := ext: ā {α : Type ?u.329} {β : Type ?u.330} {r : α ā α ā Prop} {s : β ā β ā Prop} ā¦f g : r ār sā¦,
(ā (x : α), āf x = āg x) ā f = g
ext f.symm_apply_apply: ā {α : Type ?u.349} {β : Type ?u.350} {r : α ā α ā Prop} {s : β ā β ā Prop} (e : r ār s) (x : α),
ā(RelIso.symm e) (āe x) = x
symm_apply_apply
@[simp]
theorem coe_one : ((1 : r ār r) : α ā α) = id: {α : Sort ?u.1821} ā α ā α
id :=
rfl: ā {α : Sort ?u.1862} {a : α}, a = a
rfl
#align rel_iso.coe_one RelIso.coe_one: ā {α : Type u_1} {r : α ā α ā Prop}, ā1 = id
RelIso.coe_one
@[simp]
theorem coe_mul: ā (eā eā : r ār r), ā(eā * eā) = āeā ā āeā
coe_mul (eā eā : r ār r) : ((eā * eā) : α ā α) = eā ā eā :=
rfl: ā {α : Sort ?u.2880} {a : α}, a = a
rfl
#align rel_iso.coe_mul RelIso.coe_mul: ā {α : Type u_1} {r : α ā α ā Prop} (eā eā : r ār r), ā(eā * eā) = āeā ā āeā
RelIso.coe_mul
theorem mul_apply: ā {α : Type u_1} {r : α ā α ā Prop} (eā eā : r ār r) (x : α), ā(eā * eā) x = āeā (āeā x)
mul_apply (eā eā : r ār r) (x : α) : (eā * eā) x = eā (eā x) :=
rfl: ā {α : Sort ?u.3188} {a : α}, a = a
rfl
#align rel_iso.mul_apply RelIso.mul_apply: ā {α : Type u_1} {r : α ā α ā Prop} (eā eā : r ār r) (x : α), ā(eā * eā) x = āeā (āeā x)
RelIso.mul_apply
@[simp]
theorem inv_apply_self: ā {α : Type u_1} {r : α ā α ā Prop} (e : r ār r) (x : α), āeā»Ā¹ (āe x) = x
inv_apply_self (e : r ār r) (x) : eā»Ā¹ (e x) = x :=
e.symm_apply_apply: ā {α : Type ?u.3356} {β : Type ?u.3357} {r : α ā α ā Prop} {s : β ā β ā Prop} (e : r ār s) (x : α),
ā(RelIso.symm e) (āe x) = x
symm_apply_apply x
#align rel_iso.inv_apply_self RelIso.inv_apply_self: ā {α : Type u_1} {r : α ā α ā Prop} (e : r ār r) (x : α), āeā»Ā¹ (āe x) = x
RelIso.inv_apply_self
@[simp]
theorem apply_inv_self: ā {α : Type u_1} {r : α ā α ā Prop} (e : r ār r) (x : α), āe (āeā»Ā¹ x) = x
apply_inv_self (e : r ār r) (x) : e (eā»Ā¹ x) = x :=
e.apply_symm_apply: ā {α : Type ?u.3569} {β : Type ?u.3570} {r : α ā α ā Prop} {s : β ā β ā Prop} (e : r ār s) (x : β),
āe (ā(RelIso.symm e) x) = x
apply_symm_apply x
#align rel_iso.apply_inv_self RelIso.apply_inv_self: ā {α : Type u_1} {r : α ā α ā Prop} (e : r ār r) (x : α), āe (āeā»Ā¹ x) = x
RelIso.apply_inv_self
end RelIso