Documentation

Projects.Util.Function

structure Inverse {α : Type u_1} {β : Type u_2} (f : αβ) (g : βα) :
  • fg {x : β} : f (g x) = x
  • gf {x : α} : g (f x) = x
Instances For
    structure BijectiveOn {α : Type u_1} {β : Type u_2} (pa : αProp) (pb : βProp) (f : αβ) (f' : βα) :
    • h : ∃ (e : { x : α // pa x } { y : β // pb y }), (∀ {x : α} (hx : pa x), f x = (e x, hx)) ∀ {y : β} (hy : pb y), f' y = (e.symm y, hy)
    Instances For
      structure StrictBijectiveOn {α : Type u_1} {β : Type u_2} (pa : αProp) (pb : βProp) (f : αβ) (f' : βα) extends BijectiveOn pa pb f f' :
      • h : ∃ (e : { x : α // pa x } { y : β // pb y }), (∀ {x : α} (hx : pa x), f x = (e x, hx)) ∀ {y : β} (hy : pb y), f' y = (e.symm y, hy)
      • cnd_of_right {x : α} : pb (f x)pa x
      • cnd_of_left {y : β} : pa (f' y)pb y
      Instances For
        def fn_set' {α : Type u_1} [DecidableEq α] (a b x : α) :
        α
        Equations
        Instances For
          def fn_swap' {α : Type u_1} [DecidableEq α] (a b x : α) :
          α
          Equations
          Instances For
            def fn_set {α : Type u_1} {β : Type u_2} [DecidableEq α] (a : α) (b : β) (f : αβ) (x : α) :
            β
            Equations
            Instances For
              def fn_swap {α : Type u_1} {β : Type u_2} [DecidableEq α] (a b : α) (f : αβ) (x : α) :
              β
              Equations
              Instances For
                def Function.fixNCnd {α : Type u_1} (f : αα) (x : α) (k : ) :
                Equations
                Instances For
                  noncomputable def Function.fixN {α : Type u_1} (f : αα) (x : α) :
                  Equations
                  Instances For
                    noncomputable def Function.fix {α : Type u_1} (f : αα) (x : α) :
                    α
                    Equations
                    Instances For
                      def Function.fixCnd {α : Type u_1} (f : αα) (x : α) (k : ) :
                      Equations
                      Instances For
                        theorem fn_set_eq {α : Type u_1} {β : Type u_2} [DecidableEq α] {a : α} {b : β} {f : αβ} {x : α} :
                        fn_set a b f x = if x = a then b else f x
                        theorem fn_swap_eq {α : Type u_1} {β : Type u_2} [DecidableEq α] {a b : α} {f : αβ} {x : α} :
                        fn_swap a b f x = f (if x = a then b else if x = b then a else x)
                        @[simp]
                        theorem fn_swap'_idemp {α : Type u_1} [DecidableEq α] {a b x : α} :
                        fn_swap' a b (fn_swap' a b x) = x
                        @[simp]
                        theorem fn_swap_idemp {α : Type u_1} {β : Type u_2} [DecidableEq α] {a b : α} {f : αβ} :
                        fn_swap a b (fn_swap a b f) = f
                        def fn_swap'_equiv {α : Type u_1} [DecidableEq α] (a b : α) :
                        α α
                        Equations
                        Instances For
                          @[simp]
                          theorem fn_swap'_equiv_to_fun {α : Type u_1} [DecidableEq α] {a b : α} :
                          @[simp]
                          theorem fn_swap'_equiv_inv_fun {α : Type u_1} [DecidableEq α] {a b : α} :
                          @[simp]
                          theorem fn_swap'_equiv_apply {α : Type u_1} [DecidableEq α] {a b x : α} :
                          (fn_swap'_equiv a b) x = fn_swap' a b x
                          @[simp]
                          theorem fn_set'_eq_of_eq {α : Type u_1} [DecidableEq α] {a b : α} :
                          fn_set' a b a = b
                          @[simp]
                          theorem fn_swap'_eq_of_eq_left {α : Type u_1} [DecidableEq α] {a b : α} :
                          fn_swap' a b a = b
                          @[simp]
                          theorem fn_swap'_eq_of_eq_right {α : Type u_1} [DecidableEq α] {a b : α} :
                          fn_swap' a b b = a
                          @[simp]
                          theorem fn_set_eq_of_eq {α : Type u_1} {β : Type u_2} [DecidableEq α] {a : α} {b : β} {f : αβ} :
                          fn_set a b f a = b
                          @[simp]
                          theorem fn_swap_eq_of_eq_left {α : Type u_1} {β : Type u_2} [DecidableEq α] {a b : α} {f : αβ} :
                          fn_swap a b f a = f b
                          @[simp]
                          theorem fn_swap_eq_of_eq_right {α : Type u_1} {β : Type u_2} [DecidableEq α] {a b : α} {f : αβ} :
                          fn_swap a b f b = f a
                          theorem fn_set_eq_of_ne {α : Type u_1} {β : Type u_2} [DecidableEq α] {a : α} {b : β} {f : αβ} {x : α} (hx : x a) :
                          fn_set a b f x = f x
                          theorem fn_set_fn_set_eq_fn_swap {α : Type u_1} {β : Type u_2} [DecidableEq α] {a b : α} {f : αβ} :
                          fn_set a (f b) (fn_set b (f a) f) = fn_swap a b f
                          theorem fn_set_same_value {α : Type u_1} {β : Type u_2} [DecidableEq α] {f : αβ} {a : α} :
                          fn_set a (f a) f = f
                          theorem fn_set_twice_same {α : Type u_1} {β : Type u_2} [DecidableEq α] {f : αβ} {a : α} {b₁ b₂ : β} :
                          fn_set a b₂ (fn_set a b₁ f) = fn_set a b₂ f
                          theorem fn_set_comm {α : Type u_1} {β : Type u_2} [DecidableEq α] {f : αβ} {a₁ a₂ : α} {b₁ b₂ : β} (h : a₁ a₂) :
                          fn_set a₁ b₁ (fn_set a₂ b₂ f) = fn_set a₂ b₂ (fn_set a₁ b₁ f)
                          theorem fn_set_ext {α : Type u_1} {β : Type u_2} [DecidableEq α] {f g : αβ} {a : α} {b : β} :
                          (∀ (x : α), fn_set a b f x = fn_set a b g x) ∀ (x : α), x af x = g x
                          @[simp]
                          theorem inverse_id {α : Type u_1} :
                          @[simp]
                          @[simp]
                          theorem bijectiveOn_id {α : Type u_1} {pa : αProp} :
                          theorem BijectiveOn.cnd_right {α : Type u_1} {β : Type u_2} {pa : αProp} {pb : βProp} {f : αβ} {f' : βα} {H : BijectiveOn pa pb f f'} {x : α} (h : pa x) :
                          pb (f x)
                          theorem BijectiveOn.cnd_left {α : Type u_1} {β : Type u_2} {pa : αProp} {pb : βProp} {f : αβ} {f' : βα} {H : BijectiveOn pa pb f f'} {y : β} (h : pb y) :
                          pa (f' y)
                          theorem BijectiveOn.cancel_left {α : Type u_1} {β : Type u_2} {pa : αProp} {pb : βProp} {f : αβ} {f' : βα} {H : BijectiveOn pa pb f f'} {x : α} (h : pa x) :
                          f' (f x) = x
                          theorem BijectiveOn.cancel_right {α : Type u_1} {β : Type u_2} {pa : αProp} {pb : βProp} {f : αβ} {f' : βα} {H : BijectiveOn pa pb f f'} {y : β} (h : pb y) :
                          f (f' y) = y
                          theorem BijectiveOn.symm {α : Type u_1} {β : Type u_2} {pa : αProp} {pb : βProp} {f : αβ} {f' : βα} {H : BijectiveOn pa pb f f'} :
                          BijectiveOn pb pa f' f
                          @[simp]
                          theorem strictBijectiveOn_id {α : Type u_1} {pa : αProp} :
                          theorem StrictBijectiveOn.symm {α : Type u_1} {β : Type u_2} {pa : αProp} {pb : βProp} {f : αβ} {f' : βα} {H : StrictBijectiveOn pa pb f f'} :
                          def Equiv.comp {α : Type u_1} {β : Type u_2} {γ : Type u_3} (e₁ : β γ) (e₂ : α β) :
                          α γ
                          Equations
                          • e₁.comp e₂ = { toFun := e₁ e₂, invFun := e₂.symm e₁.symm, left_inv := , right_inv := }
                          Instances For
                            @[simp]
                            theorem Equiv.coe_toFun_comp {α : Type u_1} {β : Type u_2} {γ : Type u_3} {e₁ : β γ} {e₂ : α β} :
                            (e₁.comp e₂) = e₁ e₂
                            @[simp]
                            theorem Equiv.symm_comp {α : Type u_1} {β : Type u_2} {γ : Type u_3} {e₁ : β γ} {e₂ : α β} :
                            (e₁.comp e₂).symm = e₂.symm.comp e₁.symm
                            theorem Inverse.symm {α : Type u_1} {β : Type u_2} {f : αβ} {g : βα} {H : Inverse f g} :
                            theorem Equiv.forall_iff {α : Type u_1} {β : Type u_2} {e : α β} {p : αProp} :
                            (∀ (x : α), p x) ∀ (y : β), p (e.symm y)
                            theorem Equiv.forall_iff' {α : Type u_1} {β : Type u_2} {e : α β} {p : βProp} :
                            (∀ (x : β), p x) ∀ (y : α), p (e y)
                            @[simp]
                            theorem Equiv.mk_symm {α : Type u_1} {β : Type u_2} {f : αβ} {g : βα} {h₁ : Function.LeftInverse g f} {h₂ : Function.RightInverse g f} :
                            { toFun := f, invFun := g, left_inv := h₁, right_inv := h₂ }.symm = { toFun := g, invFun := f, left_inv := h₂, right_inv := h₁ }
                            def FinFn {n : } (α : Fin nType u) (β : Type v) :
                            Type ((max u v) + 1)
                            Equations
                            Instances For
                              def mkFinFn {n : } {α : Fin nType u} {β : Type v} (f : ((n : Fin n) → α n)β) :
                              FinFn α β
                              Equations
                              Instances For
                                def callFinFn {n : } {α : Fin nType u} {β : Type v} (f : FinFn α β) (ps : (n : Fin n) → α n) :
                                β
                                Equations
                                Instances For
                                  theorem Function.iterate_add' {α : Type u_1} {f : αα} {n m : } :
                                  f^[n + m] = f^[m] f^[n]
                                  theorem Function.fixCnd_spec {α : Type u_1} {f : αα} {x : α} (k : ) (h : IsFixedPt f (f^[k] x)) :
                                  fixNCnd f x (fixN f x)
                                  theorem Function.fix_spec {α : Type u_1} {f : αα} {x : α} (k : ) (h : IsFixedPt f (f^[k] x)) :
                                  fixCnd f x k
                                  theorem Function.fix_spec' {α : Type u_1} {f : αα} {x : α} (k : ) (h : IsFixedPt f (f^[k] x)) :
                                  fixCnd f x (fixN f x)
                                  theorem Function.fixCnd_fixN_of_fixCnd {α : Type u_1} {f : αα} {x : α} {k : } (h : fixCnd f x k) :
                                  fixCnd f x (fixN f x)
                                  theorem Function.fixCnd_apply {α : Type u_1} {f : αα} {x : α} {k : } (h : fixCnd f x k) :
                                  fixCnd f (f x) k
                                  theorem Function.fix_apply {α : Type u_1} {f : αα} {x : α} {k : } (h : fixCnd f x k) :
                                  fix f (f x) = fix f x