diff options
| author | ericmarin <maarin.eric@gmail.com> | 2026-03-10 11:05:26 +0100 |
|---|---|---|
| committer | ericmarin <maarin.eric@gmail.com> | 2026-03-10 12:05:35 +0100 |
| commit | 7933d744e06337f1d69b7da83f2cee1611556097 (patch) | |
| tree | 2a1594ab6f8d2cfeb784dee80e2d830d9999e4a5 /parser.py | |
| parent | 51cd389b4e322313671dd0e53513ce84b72a1652 (diff) | |
| download | vein-7933d744e06337f1d69b7da83f2cee1611556097.tar.gz vein-7933d744e06337f1d69b7da83f2cee1611556097.zip | |
added prover script
Diffstat (limited to '')
| -rw-r--r-- | parser.py | 53 |
1 files changed, 0 insertions, 53 deletions
diff --git a/parser.py b/parser.py deleted file mode 100644 index e66f9d2..0000000 --- a/parser.py +++ /dev/null @@ -1,53 +0,0 @@ - -class Concrete: - def __init__(self, val): self.val = val - def __str__(self): return str(self.val) - -class Symbolic: - def __init__(self, id): self.id = id - def __str__(self): return f"x_{self.id}" - -class TermAdd: - def __init__(self, a, b): self.a, self.b = a, b - def __str__(self): return f"(+ {self.a} {self.b})" - -class TermMul: - def __init__(self, a, b): self.a, self.b = a, b - def __str__(self): return f"(* {self.a} {self.b})" - -class TermReLU: - def __init__(self, a): self.a = a - def __str__(self): return f"(ite (> {self.a} 0) {self.a} 0)" - -def generate_z3(net_a_str, net_b_str, epsilon=1e-5): - context = { - 'Concrete': Concrete, - 'Symbolic': Symbolic, - 'TermAdd': TermAdd, - 'TermMul': TermMul, - 'TermReLU': TermReLU - } - - try: - tree_a = eval(net_a_str, context) - tree_b = eval(net_b_str, context) - except Exception as e: - print(f"; Error parsing Inpla output: {e}") - return - - print("(declare-const x_0 Real)") - print("(declare-const x_1 Real)") - - print(f"(define-fun net_a () Real {tree_a})") - print(f"(define-fun net_b () Real {tree_b})") - - print(f"(assert (> (abs (- net_a net_b)) {epsilon:.10f}))") - - print("(check-sat)") - print("(get-model)") - -if __name__ == "__main__": - output_net_a = "TermAdd(TermMul(Symbolic(0), Concrete(2)), Concrete(3))" # 2x + 3 - output_net_b = "TermAdd(Concrete(3), TermMul(Concrete(2), Symbolic(0)))" # 3 + 2x - - generate_z3(output_net_a, output_net_b) |
