public static Zen <T> Create(T value) { if (hashConsTable.TryGetValue(value, out var v)) { return(v); } var ret = new ZenConstantExpr <T>(value); hashConsTable[value] = ret; return(ret); }
private static Zen <bool> Simplify(Zen <bool> e) { if (e is ZenConstantExpr <bool> x) { return(x.Value ? ZenConstantExpr <bool> .Create(false) : ZenConstantExpr <bool> .Create(true)); } if (e is ZenNotExpr y) { return(y.Expr); } return(new ZenNotExpr(e)); }