macro-test.lisp 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. (def! inc (fn* [a] (i+ a 1)))
  2. (def! gensym
  3. (let* [counter (atom 0)]
  4. (fn* []
  5. (symbol (str "G__" (swap! counter inc))))))
  6. (defmacro! zk-square (fn* [var] (
  7. (let* [v1 (gensym)
  8. v2 (gensym)] (
  9. `(alloc ~v1 ~var)
  10. `(def! v2 (alloc ~v2 (square ~var)))
  11. `(enforce
  12. (scalar::one ~v1)
  13. (scalar::one ~v1)
  14. (scalar::one ~v2)
  15. )
  16. `{ "v2" v2 }
  17. )
  18. ))
  19. ))
  20. ;; -u^2 + v^2 = 1 + du^2v^2
  21. (defmacro! zk-witness (fn* [val1 val2] (
  22. (let* [v (gensym)
  23. u (gensym)
  24. u2v2 (gensym)] (
  25. `(alloc ~v1 ~var)
  26. `(alloc ~v2 (square ~var))
  27. `(enforce
  28. (scalar::one ~v1)
  29. (scalar::one ~v1)
  30. (scalar::one ~v2)
  31. )
  32. )
  33. ))
  34. ))
  35. (def! param1 (scalar 3))
  36. (def! param2 (scalar 1))
  37. (prove
  38. (
  39. (def! result1 (zk-square param1))
  40. ;; (def! result2 (zk-square param2))
  41. (println 'result1_map (nth (nth result1 0) 3))
  42. (println 'result1 (nth (nth result1 0) 1))
  43. )
  44. )