Documentation

Isotope.STm.Defs

structure Isotope.STm.Lang (Arity : Type uargs) [I : Args Arity] :
Type (max (max uargs (uop + 1)) (uval + 1))
Instances For
    inductive Isotope.STm {Arity : Type u_1} [I : Args Arity] (L : STm.Lang Arity) (A : Type uatom) :
    Type (max (max (max (max u_1 u_2) u_3) u_4) uatom)
    Instances For
      inductive Isotope.STm.Lang.Tag {Arity : Type u_1} [I : Args Arity] (L : Lang Arity) :
      Type (max (max u_1 u_3) u_4)
      Instances For
        def Isotope.STm.Lang.Tag.arity? {Arity : Type u_1} [I : Args Arity] {L : Lang Arity} :
        L.TagWithZero Arity
        Equations
        Instances For
          inductive Isotope.STm.Lang.Tag? {Arity : Type u_1} [I : Args Arity] (L : Lang Arity) (A : Type uatom) :
          Type (max (max (max u_1 u_3) u_4) uatom)
          Instances For
            def Isotope.STm.Lang.Tag?.arity? {Arity : Type u_1} [I : Args Arity] {L : Lang Arity} {A : Type uatom} :
            L.Tag? AWithZero Arity
            Equations
            Instances For
              def Isotope.STm.arity? {Arity : Type u_1} [I : Args Arity] {L : Lang Arity} {A : Type u_5} :
              STm L AOption Arity
              Equations
              Instances For
                def Isotope.STm.tag? {Arity : Type u_1} [I : Args Arity] {L : Lang Arity} {A : Type u_5} (e : STm L A) :
                Equations
                Instances For
                  @[implicit_reducible]
                  instance Isotope.STm.instCoeSym {Arity : Type u_1} [I : Args Arity] {L : Lang Arity} {A : Type u_5} :
                  Coe A (STm L A)
                  Equations
                  @[implicit_reducible]
                  instance Isotope.STm.instCoeVal {Arity : Type u_1} [I : Args Arity] {L : Lang Arity} {A : Type u_5} :
                  Coe L.Val (STm L A)
                  Equations
                  @[implicit_reducible]
                  instance Isotope.STm.instInhabited {Arity : Type u_1} [I : Args Arity] {L : Lang Arity} {A : Type u_5} [Inhabited L.Val] :
                  Equations
                  instance Isotope.STm.instNonemptySym {Arity : Type u_5} [I : Args Arity] {L : Lang Arity} {A : Type u_1} [inst : Nonempty A] :
                  instance Isotope.STm.instNonemptyVal {Arity : Type u_2} [I : Args Arity] {L : Lang Arity} {A : Type u_5} [inst : Nonempty L.Val] :
                  def Isotope.STm.mapSym {Arity : Type u_1} [I : Args Arity] {L : Lang Arity} {A : Type u_5} {A' : Type u_6} (f : AA') :
                  STm L ASTm L A'
                  Equations
                  Instances For
                    @[simp]
                    theorem Isotope.STm.mapSym_id {Arity : Type u_2} [I : Args Arity] {L : Lang Arity} {A : Type u_1} (e : STm L A) :
                    mapSym id e = e
                    @[simp]
                    theorem Isotope.STm.mapSym_mapSym {Arity : Type u_2} [I : Args Arity] {L : Lang Arity} {A₁ : Type u_1} {A₂ : Type u_7} {A₃ : Type u_6} (f : A₁A₂) (g : A₂A₃) (e : STm L A₁) :
                    mapSym g (mapSym f e) = mapSym (g f) e
                    def Isotope.STm.substSym {Arity : Type u_1} [I : Args Arity] {L : Lang Arity} {A₁ : Type u_5} {A₂ : Type u_6} (f : A₁STm L A₂) :
                    STm L A₁STm L A₂
                    Equations
                    Instances For
                      @[simp]
                      theorem Isotope.STm.substSym_sym_comp {Arity : Type u_2} [I : Args Arity] {L : Lang Arity} {A₁ : Type u_5} {A₂ : Type u_6} (f : A₁A₂) :
                      @[simp]
                      theorem Isotope.STm.substSym_sym {Arity : Type u_2} [I : Args Arity] {L : Lang Arity} {A : Type u_1} (e : STm L A) :
                      @[simp]
                      theorem Isotope.STm.substSym_substSym {Arity : Type u_2} [I : Args Arity] {L : Lang Arity} {A₁ : Type u_7} {A₂ : Type u_1} {A₃ : Type u_6} (f : A₁STm L A₂) (g : A₂STm L A₃) (e : STm L A₁) :
                      substSym g (substSym f e) = substSym (fun (a : A₁) => substSym g (f a)) e
                      @[implicit_reducible]
                      instance Isotope.STm.instMonad {Arity : Type u_1} [I : Args Arity] {L : Lang Arity} :
                      Equations
                      • One or more equations did not get rendered due to their size.
                      theorem Isotope.STm.map_def {Arity : Type u_2} [I : Args Arity] {L : Lang Arity} {A₁ A₂ : Type u_1} (f : A₁A₂) (e : STm L A₁) :
                      f <$> e = mapSym f e
                      @[simp]
                      theorem Isotope.STm.map_sym {Arity : Type u_2} [I : Args Arity] {L : Lang Arity} {A₁ A₂ : Type u_5} (f : A₁A₂) (a : A₁) :
                      f <$> sym a = sym (f a)
                      @[simp]
                      theorem Isotope.STm.map_const {Arity : Type u_1} [I : Args Arity] {L : Lang Arity} {A₁ A₂ : Type u_5} (f : A₁A₂) (c : L.Val) :
                      @[simp]
                      theorem Isotope.STm.map_op {Arity : Type u_1} [I : Args Arity] {L : Lang Arity} {A₁ A₂ : Type u_5} (f : A₁A₂) {arity : Arity} (o : L.Op arity) (es : UArgs.Ix aritySTm L A₁) :
                      f <$> op o es = op o fun (i : UArgs.Ix arity) => f <$> es i
                      theorem Isotope.STm.bind_def {Arity : Type u_2} [I : Args Arity] {L : Lang Arity} {A₁ A₂ : Type u_1} (e : STm L A₁) (f : A₁STm L A₂) :
                      e >>= f = substSym f e
                      @[simp]
                      theorem Isotope.STm.bind_sym {Arity : Type u_2} [I : Args Arity] {L : Lang Arity} {A₁ A₂ : Type u_1} (a : A₁) (f : A₁STm L A₂) :
                      sym a >>= f = f a
                      @[simp]
                      theorem Isotope.STm.bind_const {Arity : Type u_1} [I : Args Arity] {L : Lang Arity} {A₁ A₂ : Type u_5} (c : L.Val) (f : A₁STm L A₂) :
                      @[simp]
                      theorem Isotope.STm.bind_op {Arity : Type u_1} [I : Args Arity] {L : Lang Arity} {A₁ A₂ : Type u_5} {arity : Arity} (o : L.Op arity) (es : UArgs.Ix aritySTm L A₁) (f : A₁STm L A₂) :
                      op o es >>= f = op o (es >=> f)
                      instance Isotope.STm.instLawfulMonad {Arity : Type u_5} [I : Args Arity] {L : Lang Arity} :