package tezos-plompiler

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type
module CS = Csir.CS
module Tables = Csir.Tables
type wire =
  1. | A
  2. | B
  3. | C
type 'a tagged =
  1. | Input of 'a
  2. | Output of 'a
val untag : 'a tagged -> 'a
type arith_desc = {
  1. a : int;
  2. b : int;
  3. c : int;
  4. ql : Csir.Scalar.t;
  5. qr : Csir.Scalar.t;
  6. qm : Csir.Scalar.t;
  7. qc : Csir.Scalar.t;
  8. qo : Csir.Scalar.t;
  9. to_solve : wire;
}
type pow5_desc = {
  1. a : int;
  2. c : int;
}
type wires_desc = {
  1. a : int;
  2. b : int;
  3. c : int;
}
type add5_desc = {
  1. o : int;
  2. x1 : int;
  3. x2 : int;
  4. x3 : int;
  5. x4 : int;
  6. x5 : int;
  7. k1 : Csir.Scalar.t;
  8. k2 : Csir.Scalar.t;
  9. k3 : Csir.Scalar.t;
  10. k4 : Csir.Scalar.t;
  11. k5 : Csir.Scalar.t;
}
type lookup_desc = {
  1. a : int tagged;
  2. b : int tagged;
  3. c : int tagged;
  4. table : string;
}
type ws_desc = {
  1. x1 : int;
  2. y1 : int;
  3. x2 : int;
  4. y2 : int;
  5. x3 : int;
  6. y3 : int;
}
type ed_desc = {
  1. a : Csir.Scalar.t;
  2. d : Csir.Scalar.t;
  3. x1 : int;
  4. y1 : int;
  5. x2 : int;
  6. y2 : int;
  7. x3 : int;
  8. y3 : int;
}
type bits_desc = {
  1. nb_bits : int;
  2. shift : Z.t;
  3. l : int;
  4. bits : int list;
}
type pos128full_desc = {
  1. x0 : int;
  2. y0 : int;
  3. x1 : int;
  4. y1 : int;
  5. x2 : int;
  6. y2 : int;
  7. k : Csir.Scalar.t array;
  8. variant : Plompiler__.Variants.t;
}
type pos128partial_desc = {
  1. a : int;
  2. b : int;
  3. c : int;
  4. a_5 : int;
  5. b_5 : int;
  6. c_5 : int;
  7. x0 : int;
  8. y0 : int;
  9. x1 : int;
  10. y1 : int;
  11. x2 : int;
  12. y2 : int;
  13. k_cols : Linear_algebra.Make_VectorSpace(Csir.Scalar).matrix array;
  14. variant : Plompiler__.Variants.t;
}
type anemoi_desc = {
  1. x0 : int;
  2. y0 : int;
  3. w : int;
  4. v : int;
  5. x1 : int;
  6. y1 : int;
  7. kx : Csir.Scalar.t;
  8. ky : Csir.Scalar.t;
}
type anemoi_double_desc = {
  1. x0 : int;
  2. y0 : int;
  3. w0 : int;
  4. w1 : int;
  5. y1 : int;
  6. x2 : int;
  7. y2 : int;
  8. kx1 : Csir.Scalar.t;
  9. ky1 : Csir.Scalar.t;
  10. kx2 : Csir.Scalar.t;
  11. ky2 : Csir.Scalar.t;
}
type solver_desc =
  1. | Arith of arith_desc
  2. | Pow5 of pow5_desc
  3. | IsZero of wires_desc
  4. | IsNotZero of wires_desc
  5. | Add5 of add5_desc
  6. | Lookup of lookup_desc
  7. | Ecc_Ws of ws_desc
  8. | Ecc_Ed of ed_desc
  9. | Skip
  10. | BitsOfS of bits_desc
  11. | Poseidon128Full of pos128full_desc
  12. | Poseidon128Partial of pos128partial_desc
  13. | AnemoiRound of anemoi_desc
  14. | AnemoiDoubleRound of anemoi_double_desc
  15. | Updater of Optimizer.trace_info
type solvers
type t = {
  1. solvers : solvers;
  2. initial_size : int;
  3. final_size : int;
}
val t : t Repr.t
val empty_solver : t
val append_solver : solver_desc -> t -> t
val solve : t -> Csir.Scalar.t array -> Csir.Scalar.t array
OCaml

Innovation. Community. Security.