kdrag.datatype.pattern_match

kdrag.datatype.pattern_match(x: DatatypeRef, pat: DatatypeRef) tuple[list[BoolRef], dict[DatatypeRef, DatatypeRef]]

A Symbolic execution of sorts of pattern matching. Returns the constraints and substitutions for variables

>>> import kdrag.theories.nat as nat
>>> n,m = smt.Consts("n m", nat.Nat)
>>> pattern_match(n, nat.S(nat.S(m)))
([is(S, n), is(S, pred(n))], {m: pred(pred(n))})
Parameters:
  • x (DatatypeRef)

  • pat (DatatypeRef)

Return type:

tuple[list[BoolRef], dict[DatatypeRef, DatatypeRef]]