Documentation

Isotope.STm.Sym

def Isotope.STm.use {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} :
STm L ASet A
Equations
Instances For
    @[simp]
    theorem Isotope.STm.use_sym {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} (a : A) :
    (sym a).use = {a}
    theorem Isotope.STm.mem_use_sym_iff {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} {a b : A} :
    a (sym b).use a = b
    @[simp]
    theorem Isotope.STm.use_const {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} (c : L.Val) :
    theorem Isotope.STm.not_mem_use_const {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} {a : A} {c : L.Val} :
    a(const c).use
    theorem Isotope.STm.use_op {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} {arity : Arity} (o : L.Op arity) (es : UArgs.Ix aritySTm L A) :
    (op o es).use = iArgs.posFinset arity, (es i).use
    @[simp]
    theorem Isotope.STm.mem_use_op_iff {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} {a : A} {arity : Arity} (o : L.Op arity) (es : UArgs.Ix aritySTm L A) :
    a (op o es).use iArgs.posFinset arity, a (es i).use
    def Isotope.STm.subtrees {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} :
    STm L ASet (STm L A)
    Equations
    Instances For
      @[simp]
      theorem Isotope.STm.subtrees_sym {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} (a : A) :
      theorem Isotope.STm.mem_subtrees_sym_iff {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} {e : STm L A} {a : A} :
      e (sym a).subtrees e = sym a
      @[simp]
      theorem Isotope.STm.subtrees_const {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} (c : L.Val) :
      theorem Isotope.STm.mem_subtrees_const_iff {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} {e : STm L A} {c : L.Val} :
      theorem Isotope.STm.subtrees_op {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} {arity : Arity} (o : L.Op arity) (es : UArgs.Ix aritySTm L A) :
      (op o es).subtrees = {op o es} iArgs.posFinset arity, (es i).subtrees
      theorem Isotope.STm.mem_subtrees_op_iff {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} {e : STm L A} {arity : Arity} (o : L.Op arity) (es : UArgs.Ix aritySTm L A) :
      e (op o es).subtrees e = op o es iArgs.posFinset arity, e (es i).subtrees
      @[simp]
      theorem Isotope.STm.mem_subtrees {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} {e : STm L A} :
      theorem Isotope.STm.mem_subtrees_use_iff {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} {a : A} {e : STm L A} :
      (∃ se.subtrees, a s.use) a e.use
      @[simp]
      theorem Isotope.STm.subtrees_use {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} {e : STm L A} :
      se.subtrees, s.use = e.use
      def Isotope.STm.useL {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} :
      STm L AList A
      Equations
      Instances For
        @[simp]
        theorem Isotope.STm.useL_sym {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} (a : A) :
        (sym a).useL = [a]
        @[simp]
        theorem Isotope.STm.useL_const {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} (c : L.Val) :
        theorem Isotope.STm.useL_op {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} {arity : Arity} (o : L.Op arity) (es : UArgs.Ix aritySTm L A) :
        (op o es).useL = List.flatMap (fun (i : UArgs.Ix arity) => (es i).useL) (Args.posList arity)
        @[simp]
        theorem Isotope.STm.mem_useL_iff {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} {a : A} {e : STm L A} :
        a e.useL a e.use
        theorem Isotope.STm.useL_toSet {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} (e : STm L A) :
        {a : A | a e.useL} = e.use
        def Isotope.STm.useF {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} [DecidableEq A] :
        STm L AFinset A
        Equations
        Instances For
          @[simp]
          theorem Isotope.STm.mem_useF_iff {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} [DecidableEq A] {a : A} {e : STm L A} :
          a e.useF a e.use
          @[simp]
          theorem Isotope.STm.useL_toFinset {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} [DecidableEq A] (e : STm L A) :
          theorem Isotope.STm.useF_toSet {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} [DecidableEq A] (e : STm L A) :
          {a : A | a e.useF} = e.use
          def Isotope.STm.subtreesL {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} :
          STm L AList (STm L A)
          Equations
          Instances For
            @[simp]
            theorem Isotope.STm.subtreesL_sym {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} {a : A} :
            @[simp]
            theorem Isotope.STm.subtreesL_const {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} {c : L.Val} :
            theorem Isotope.STm.subtreesL_op {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} {arity : Arity} (o : L.Op arity) (es : UArgs.Ix aritySTm L A) :
            (op o es).subtreesL = op o es :: List.flatMap (fun (i : UArgs.Ix arity) => (es i).subtreesL) (Args.posList arity)
            @[simp]
            theorem Isotope.STm.mem_subtreesL_iff {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} {s e : STm L A} :
            theorem Isotope.STm.subtreesL_toSet {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} (e : STm L A) :
            def Isotope.STm.subtreesF {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} [DecidableEq (STm L A)] :
            STm L AFinset (STm L A)
            Equations
            Instances For
              @[simp]
              theorem Isotope.STm.subtreesF_sym {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} [DecidableEq (STm L A)] {a : A} :
              @[simp]
              theorem Isotope.STm.subtreesF_const {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} [DecidableEq (STm L A)] {c : L.Val} :
              theorem Isotope.STm.subtreesF_op {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} [DecidableEq (STm L A)] {arity : Arity} (o : L.Op arity) (es : UArgs.Ix aritySTm L A) :
              (op o es).subtreesF = {op o es} (Args.posFinset arity).biUnion fun (i : UArgs.Ix arity) => (es i).subtreesF
              @[simp]
              theorem Isotope.STm.mem_subtreesF_iff {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} [DecidableEq (STm L A)] {s e : STm L A} :
              @[simp]
              theorem Isotope.STm.subtreesL_toFinset {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} [DecidableEq (STm L A)] (e : STm L A) :
              theorem Isotope.STm.subtreesF_toSet {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} [DecidableEq (STm L A)] (e : STm L A) :
              def Isotope.STm.children {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} :
              STm L AList (STm L A)
              Equations
              Instances For
                def Isotope.STm.childrenS {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} (e : STm L A) :
                Set (STm L A)
                Equations
                Instances For
                  @[simp]
                  theorem Isotope.STm.childrenS_sym {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} (a : A) :
                  @[simp]
                  theorem Isotope.STm.childrenS_const {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} (c : L.Val) :
                  @[simp]
                  theorem Isotope.STm.childrenS_op {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} {arity : Arity} (o : L.Op arity) (es : UArgs.Ix aritySTm L A) :
                  (op o es).childrenS = {x : STm L A | iArgs.posList arity, es i = x}
                  @[simp]
                  theorem Isotope.STm.childrenS_subset_subtrees {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} (e : STm L A) :
                  def Isotope.STm.strictSubtrees {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} :
                  STm L ASet (STm L A)
                  Equations
                  Instances For
                    @[simp]
                    theorem Isotope.STm.strictSubtrees_sym {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} (a : A) :
                    @[simp]
                    theorem Isotope.STm.strictSubtrees_const {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} (c : L.Val) :
                    @[simp]
                    theorem Isotope.STm.strictSubtrees_subset_subtrees {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} (e : STm L A) :
                    theorem Isotope.STm.strictSubtrees_eq_subtrees_children {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} (e : STm L A) :
                    def Isotope.STm.depth {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} :
                    STm L A
                    Equations
                    Instances For
                      def Isotope.STm.size {Arity : Type uargs} [instArgs : Args Arity] {L : Lang Arity} {A : Type ua} :
                      STm L A
                      Equations
                      Instances For