Documentation

Circuitlib.Circuit.Category.Combinational

Combinational circuit category #

References #

structure Circuit.CombinationalCircuitCategory (V : Type u_1) (G : Type u_2) :

Category of combinational circuits.

  • of :: (
  • )
Instances For
    @[implicit_reducible]
    Equations
    @[implicit_reducible, inline]
    Equations
    • One or more equations did not get rendered due to their size.
    @[reducible, inline]
    Equations
    Instances For
      @[implicit_reducible, inline]
      Equations
      • One or more equations did not get rendered due to their size.
      @[simp]
      theorem Circuit.CombinationalCircuitCategory.tensorHom_val_add {V : Type v} {G : Type u} {X₁ X₂ : CombinationalCircuitCategory V G} :
      min X₁.obj (X₁.obj + X₂.obj) = X₁.obj
      @[simp]
      theorem Circuit.CombinationalCircuitCategory.tensorHom_val_sub {V : Type v} {G : Type u} {X₁ X₂ : CombinationalCircuitCategory V G} :
      X₁.obj + X₂.obj - X₁.obj = X₂.obj
      @[reducible, inline]
      abbrev Circuit.CombinationalCircuitCategory.tensorHom_val {V : Type v} {G : Type u} [SemilatticeSup V] {X₁ Y₁ X₂ Y₂ : CombinationalCircuitCategory V G} (f : X₁ Y₁) (g : X₂ Y₂) (v : Wires V (X₁.obj + X₂.obj)) :
      Wires V (Y₁.obj + Y₂.obj)
      Equations
      Instances For
        @[simp]
        theorem Circuit.CombinationalCircuitCategory.tensorHom_eq {V : Type v} {G : Type u} [SemilatticeSup V] {X₁ Y₁ X₂ : CombinationalCircuitCategory V G} (a : Wires V (X₁.obj + X₂.obj)) (f : X₁ Y₁) :
        (f (Vector.ofFn fun (i : Fin X₁.obj) => Vector.get a (Fin.castAdd X₂.obj i))).toArray.size = Y₁.obj
        @[simp]
        theorem Circuit.CombinationalCircuitCategory.tensorHom_take {V : Type v} {G : Type u} {X₁ X₂ : CombinationalCircuitCategory V G} (a : Wires V (X₁.obj + X₂.obj)) :
        Vector.cast (Vector.take a X₁.obj) = Vector.ofFn fun (i : Fin X₁.obj) => Vector.get a (Fin.castAdd X₂.obj i)
        @[simp]
        theorem Circuit.CombinationalCircuitCategory.tensorHom_eq_left {V : Type v} {G : Type u} [SemilatticeSup V] {X₁ Y₁ X₂ Y₂ : CombinationalCircuitCategory V G} (a : Wires V (X₁.obj + X₂.obj)) (j : Fin Y₁.obj) (f : X₁ Y₁) (g : X₂ Y₂) :
        Vector.get (tensorHom_val f g a) (Fin.castAdd Y₂.obj j) = Vector.get (f (Vector.ofFn fun (i : Fin X₁.obj) => Vector.get a (Fin.castAdd X₂.obj i))) j
        @[simp]
        theorem Circuit.CombinationalCircuitCategory.tensorHom_eq_right {V : Type v} {G : Type u} [SemilatticeSup V] {X₁ Y₁ X₂ Y₂ : CombinationalCircuitCategory V G} (a : Wires V (X₁.obj + X₂.obj)) (j : Fin Y₂.obj) (f : X₁ Y₁) (g : X₂ Y₂) :
        Vector.get (tensorHom_val f g a) (Fin.natAdd Y₁.obj j) = Vector.get (g (Vector.ofFn fun (i : Fin X₂.obj) => Vector.get a (Fin.natAdd X₁.obj i))) j
        @[simp]
        theorem Circuit.CombinationalCircuitCategory.tensorHom_get {V : Type v} {G : Type u} [SemilatticeSup V] {X₁ Y₁ X₂ Y₂ : CombinationalCircuitCategory V G} (f : X₁ Y₁) (g : X₂ Y₂) (w : Wires V (X₁.obj + X₂.obj)) (i : Fin (Y₁.obj + Y₂.obj)) :
        Vector.get (tensorHom_val f g w) i = if h : i < Y₁.obj then Vector.get (f (Vector.ofFn fun (k : Fin X₁.obj) => Vector.get w (Fin.castAdd X₂.obj k))) i, h else Vector.get (g (Vector.ofFn fun (k : Fin X₂.obj) => Vector.get w (Fin.natAdd X₁.obj k))) i - Y₁.obj,
        @[simp]
        theorem Circuit.CombinationalCircuitCategory.tensorHom_monotone {V : Type v} {G : Type u} [SemilatticeSup V] {X₁ Y₁ X₂ Y₂ : CombinationalCircuitCategory V G} (f : X₁ Y₁) (g : X₂ Y₂) :
        @[reducible, inline]
        abbrev Circuit.CombinationalCircuitCategory.tensorHom {V : Type v} {G : Type u} [SemilatticeSup V] {X₁ Y₁ X₂ Y₂ : CombinationalCircuitCategory V G} (f : X₁ Y₁) (g : X₂ Y₂) :
        X₁.tensorObj X₂ Y₁.tensorObj Y₂
        Equations
        Instances For
          @[reducible, inline]
          abbrev Circuit.CombinationalCircuitCategory.iso_hom_val {V : Type v} {n m : } (h : n = m) :
          Wires V nWires V m
          Equations
          Instances For
            @[reducible, inline]
            abbrev Circuit.CombinationalCircuitCategory.iso_inv_val {V : Type v} {n m : } (h : n = m) :
            Wires V mWires V n
            Equations
            Instances For
              @[inline]
              def Circuit.CombinationalCircuitCategory.iso {V : Type v} {G : Type u} [SemilatticeSup V] {n m : } (h : n = m) :
              { obj := n } { obj := m }
              Equations
              Instances For
                @[simp]
                theorem Circuit.CombinationalCircuitCategory.tensorHom_comp_tensorHom {V : Type v} {G : Type u} [SemilatticeSup V] {X₁ Y₁ Z₁ X₂ Y₂ Z₂ : CombinationalCircuitCategory V G} (f₁ : X₁ Y₁) (f₂ : X₂ Y₂) (g₁ : Y₁ Z₁) (g₂ : Y₂ Z₂) :
                @[simp]
                theorem Circuit.CombinationalCircuitCategory.associator_naturality {V : Type v} {G : Type u} [SemilatticeSup V] {X₁ X₂ X₃ Y₁ Y₂ Y₃ : CombinationalCircuitCategory V G} (f₁ : X₁ Y₁) (f₂ : X₂ Y₂) (f₃ : X₃ Y₃) :
                @[implicit_reducible, inline]
                Equations
                • One or more equations did not get rendered due to their size.
                @[simp]
                theorem Circuit.CombinationalCircuitCategory.braiding_add {V : Type v} {G : Type u} {i : } {X Y : CombinationalCircuitCategory V G} (h : i < Y.obj) :
                X.obj + i < X.obj + Y.obj
                @[implicit_reducible, inline]
                Equations
                • One or more equations did not get rendered due to their size.