kdrag.contract.contract
- kdrag.contract.contract(f: FuncDeclRef, args: list[ExprRef], pre, post, by=None, **kwargs) Proof
Register the contract for function f: for all args, pre => post.
>>> x = smt.Int("x") >>> foo = kd.define("foo4392", [x], x + 1) >>> c = contract(foo, [x], x > 0, foo(x) > 0, by=[foo.defn]) >>> c |= ForAll(x, Implies(x > 0, foo4392(x) > 0)) >>> c.thm.pattern(0) foo4392(Var(0)) >>> prove(foo(5) > 0) |= foo4392(5) > 0 >>> prove(foo(5) > 5) Traceback (most recent call last): ... LemmaError: ...
- Parameters:
f (FuncDeclRef)
args (list[ExprRef])
- Return type: