From 7933d744e06337f1d69b7da83f2cee1611556097 Mon Sep 17 00:00:00 2001 From: ericmarin Date: Tue, 10 Mar 2026 11:05:26 +0100 Subject: added prover script --- parser.py | 53 ----------------------------------------------------- 1 file changed, 53 deletions(-) delete mode 100644 parser.py (limited to 'parser.py') 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) -- cgit v1.2.3