MP
Size: a a a
MP
PS
YS
PS
YS
PS
YS
PS
rules = innermost(alt(
rule(Add(C, D), to(lambda v: Int(v.C + v.D))),
rule(Sub(C, D), to(lambda v: Int(v.C - v.D))),
rule(Mul(C, D), to(lambda v: Int(v.C * v.D))),
rule(Neg(C), to(lambda v: Int(-v.C))),
rule(Cmul(Int(1), X), to(lambda v: v.X)),
rule(Cmul(Int(-1), X), to(lambda v: Neg(v.X))),
rule(Sub(X, C), to(lambda v: Add(v.X, Int(-v.C)))),
rule(Cadd(Cmul(X, Y), Cmul(X, Z)), to(lambda v: Mul(v.X, Add(v.Y, v.Z)))),
rule(Sub(Cmul(X, Y), Cmul(X, Z)), to(lambda v: Mul(v.X, Sub(v.Y, v.Z)))),
rule(Cadd(Int(0), X), to(lambda v: v.X)),
rule(Sub(X, X), to(lambda v: Int(0))),
rule(Cmul(Int(0), X), to(lambda v: Int(0))),
rule(Neg(Sub(X, Y)), to(lambda v: Sub(v.Y, v.X))),
rule(Cadd(X, Cadd(C, Y)), to(lambda v: Add(Int(v.C), Add(v.X, v.Y)))),
rule(Cadd(X, Sub(C, Y)), to(lambda v: Add(Int(v.C), Sub(v.X, v.Y)))),
rule(Cadd(X, Sub(Y, C)), to(lambda v: Sub(Add(v.X, v.Y), Int(v.C)))),
rule(Cadd(X, Sub(C, Y)), to(lambda v: Sub(Sub(v.X, v.Y), Int(v.C)))),
rule(Cadd(X, Sub(Y, C)), to(lambda v: Add(Int(v.C), Sub(v.X, v.Y)))),
rule(Cadd(C, Cadd(D, X)), to(lambda v: Add(Int(v.C + v.D), v.X))),
rule(Cadd(C, Sub(D, X)), to(lambda v: Sub(Int(v.C + v.D), v.X))),
rule(Cadd(C, Sub(X, D)), to(lambda v: Add(Int(v.C - v.D), v.X))),
rule(Sub(C, Sub(X, D)), to(lambda v: Sub(Int(v.C + v.D), v.X))),
rule(Sub(C, Sub(D, X)), to(lambda v: Add(Int(v.C - v.D), v.X))),
rule(Cmul(C, Cmul(D, X)), to(lambda v: Mul(Int(v.C * v.D), v.X)))
))
PS
YS
rules = innermost(alt(
rule(Add(C, D), to(lambda v: Int(v.C + v.D))),
rule(Sub(C, D), to(lambda v: Int(v.C - v.D))),
rule(Mul(C, D), to(lambda v: Int(v.C * v.D))),
rule(Neg(C), to(lambda v: Int(-v.C))),
rule(Cmul(Int(1), X), to(lambda v: v.X)),
rule(Cmul(Int(-1), X), to(lambda v: Neg(v.X))),
rule(Sub(X, C), to(lambda v: Add(v.X, Int(-v.C)))),
rule(Cadd(Cmul(X, Y), Cmul(X, Z)), to(lambda v: Mul(v.X, Add(v.Y, v.Z)))),
rule(Sub(Cmul(X, Y), Cmul(X, Z)), to(lambda v: Mul(v.X, Sub(v.Y, v.Z)))),
rule(Cadd(Int(0), X), to(lambda v: v.X)),
rule(Sub(X, X), to(lambda v: Int(0))),
rule(Cmul(Int(0), X), to(lambda v: Int(0))),
rule(Neg(Sub(X, Y)), to(lambda v: Sub(v.Y, v.X))),
rule(Cadd(X, Cadd(C, Y)), to(lambda v: Add(Int(v.C), Add(v.X, v.Y)))),
rule(Cadd(X, Sub(C, Y)), to(lambda v: Add(Int(v.C), Sub(v.X, v.Y)))),
rule(Cadd(X, Sub(Y, C)), to(lambda v: Sub(Add(v.X, v.Y), Int(v.C)))),
rule(Cadd(X, Sub(C, Y)), to(lambda v: Sub(Sub(v.X, v.Y), Int(v.C)))),
rule(Cadd(X, Sub(Y, C)), to(lambda v: Add(Int(v.C), Sub(v.X, v.Y)))),
rule(Cadd(C, Cadd(D, X)), to(lambda v: Add(Int(v.C + v.D), v.X))),
rule(Cadd(C, Sub(D, X)), to(lambda v: Sub(Int(v.C + v.D), v.X))),
rule(Cadd(C, Sub(X, D)), to(lambda v: Add(Int(v.C - v.D), v.X))),
rule(Sub(C, Sub(X, D)), to(lambda v: Sub(Int(v.C + v.D), v.X))),
rule(Sub(C, Sub(D, X)), to(lambda v: Add(Int(v.C - v.D), v.X))),
rule(Cmul(C, Cmul(D, X)), to(lambda v: Mul(Int(v.C * v.D), v.X)))
))
PS
YS
rules = innermost(alt(
rule(Add(C, D), to(lambda v: Int(v.C + v.D))),
rule(Sub(C, D), to(lambda v: Int(v.C - v.D))),
rule(Mul(C, D), to(lambda v: Int(v.C * v.D))),
rule(Neg(C), to(lambda v: Int(-v.C))),
rule(Cmul(Int(1), X), to(lambda v: v.X)),
rule(Cmul(Int(-1), X), to(lambda v: Neg(v.X))),
rule(Sub(X, C), to(lambda v: Add(v.X, Int(-v.C)))),
rule(Cadd(Cmul(X, Y), Cmul(X, Z)), to(lambda v: Mul(v.X, Add(v.Y, v.Z)))),
rule(Sub(Cmul(X, Y), Cmul(X, Z)), to(lambda v: Mul(v.X, Sub(v.Y, v.Z)))),
rule(Cadd(Int(0), X), to(lambda v: v.X)),
rule(Sub(X, X), to(lambda v: Int(0))),
rule(Cmul(Int(0), X), to(lambda v: Int(0))),
rule(Neg(Sub(X, Y)), to(lambda v: Sub(v.Y, v.X))),
rule(Cadd(X, Cadd(C, Y)), to(lambda v: Add(Int(v.C), Add(v.X, v.Y)))),
rule(Cadd(X, Sub(C, Y)), to(lambda v: Add(Int(v.C), Sub(v.X, v.Y)))),
rule(Cadd(X, Sub(Y, C)), to(lambda v: Sub(Add(v.X, v.Y), Int(v.C)))),
rule(Cadd(X, Sub(C, Y)), to(lambda v: Sub(Sub(v.X, v.Y), Int(v.C)))),
rule(Cadd(X, Sub(Y, C)), to(lambda v: Add(Int(v.C), Sub(v.X, v.Y)))),
rule(Cadd(C, Cadd(D, X)), to(lambda v: Add(Int(v.C + v.D), v.X))),
rule(Cadd(C, Sub(D, X)), to(lambda v: Sub(Int(v.C + v.D), v.X))),
rule(Cadd(C, Sub(X, D)), to(lambda v: Add(Int(v.C - v.D), v.X))),
rule(Sub(C, Sub(X, D)), to(lambda v: Sub(Int(v.C + v.D), v.X))),
rule(Sub(C, Sub(D, X)), to(lambda v: Add(Int(v.C - v.D), v.X))),
rule(Cmul(C, Cmul(D, X)), to(lambda v: Mul(Int(v.C * v.D), v.X)))
))
PS
PS
AP
lambda x: (
y := x + 1,
z := y * 2,
w := str(input()),
w + z + y
)[-1]
AP
AP
PS