void test11() { Flags flags = vc_createFlags(); VC vc = vc_createValidityChecker(flags); Type a = vc_createType(vc, "a"); Type aa = vc_funType1(vc, a, a); Op f = vc_createOp(vc, "f", aa); Expr x = vc_varExpr(vc, "x", a); Expr fx = vc_funExpr1(vc, f, x); Expr ffx = vc_funExpr1(vc, f, fx); Expr e = vc_eqExpr(vc, x, fx); Expr expectE = vc_eqExpr(vc, fx, ffx); Expr newE = vc_substExpr(vc, e, &x, 1, &fx, 1); FatalAssert(expectE == newE, "Expected equal"); vc_destroyValidityChecker(vc); }
void test10() { Flags flags = vc_createFlags(); VC vc = vc_createValidityChecker(flags); Type a = vc_createType(vc, "a"); Type aa = vc_funType1(vc, a, a); Op f1 = vc_createOp(vc, "f", aa); Type aa2; Op f2 = vc_lookupOp(vc, "f", &aa2); FatalAssert(f2 != NULL, "Expected f2 not NULL"); FatalAssert(f1 == f2, "Expected equal"); Expr x = vc_varExpr(vc, "x", a); Expr f1x = vc_funExpr1(vc, f1, x); Expr f2x = vc_funExpr1(vc, f2, x); Expr eq = vc_eqExpr(vc, f1x, f2x); int res = vc_query(vc, eq); printf("eq: %d\n", res); vc_destroyValidityChecker(vc); }
// User-defined types value caml_vc_createType(value vc, value name) { CAMLparam2(vc, name); CAMLreturn(alloc_Type(vc_createType(VC_val(vc),String_val(name)))); }