Backtracking fixed
This commit is contained in:
parent
a85169dced
commit
fd16c4cedc
18 changed files with 213 additions and 39 deletions
|
@ -39,6 +39,10 @@ class EvaluatesToDifferent(private val left: Expression, private val right: Expr
|
|||
}
|
||||
}
|
||||
|
||||
override fun applySubstitution(subs: Substitutions): EvaluatesToDifferent = EvaluatesToDifferent(
|
||||
left.applySubstitution(subs) as Expression,
|
||||
right.applySubstitution(subs) as Expression
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -57,6 +61,11 @@ class EvaluatesTo(private val left: Expression, private val right: Expression) :
|
|||
|
||||
return if (equivalent(t1.to, t2.to, subs)) sequenceOf(Result.success(emptyMap())) else emptySequence()
|
||||
}
|
||||
|
||||
override fun applySubstitution(subs: Substitutions): EvaluatesTo = EvaluatesTo(
|
||||
left.applySubstitution(subs) as Expression,
|
||||
right.applySubstitution(subs) as Expression
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -78,6 +87,11 @@ class Is(val number: Expression, val expr: Expression) :
|
|||
|
||||
return unifyLazy(t1.to, t2.to, subs)
|
||||
}
|
||||
|
||||
override fun applySubstitution(subs: Substitutions): Is = Is(
|
||||
number.applySubstitution(subs) as Expression,
|
||||
expr.applySubstitution(subs) as Expression
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -101,6 +115,11 @@ open class Add(private val expr1: Expression, private val expr2: Expression) :
|
|||
val simplification = result.simplify(map.first().getOrThrow())
|
||||
return Simplification(this, simplification.to)
|
||||
}
|
||||
|
||||
override fun applySubstitution(subs: Substitutions): Add = Add(
|
||||
expr1.applySubstitution(subs) as Expression,
|
||||
expr2.applySubstitution(subs) as Expression
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -114,6 +133,11 @@ open class Subtract(private val expr1: Expression, private val expr2: Expression
|
|||
val simplification = result.simplify(map.first().getOrThrow())
|
||||
return Simplification(this, simplification.to)
|
||||
}
|
||||
|
||||
override fun applySubstitution(subs: Substitutions): Subtract = Subtract(
|
||||
expr1.applySubstitution(subs) as Expression,
|
||||
expr2.applySubstitution(subs) as Expression
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -127,6 +151,11 @@ class Multiply(val expr1: Expression, val expr2: Expression) :
|
|||
val simplification = result.simplify(map.first().getOrThrow())
|
||||
return Simplification(this, simplification.to)
|
||||
}
|
||||
|
||||
override fun applySubstitution(subs: Substitutions): Multiply = Multiply(
|
||||
expr1.applySubstitution(subs) as Expression,
|
||||
expr2.applySubstitution(subs) as Expression
|
||||
)
|
||||
}
|
||||
|
||||
class Divide(private val expr1: Expression, private val expr2: Expression) :
|
||||
|
@ -137,6 +166,11 @@ class Divide(private val expr1: Expression, private val expr2: Expression) :
|
|||
val simplification = result.simplify(map.first().getOrThrow())
|
||||
return Simplification(this, simplification.to)
|
||||
}
|
||||
|
||||
override fun applySubstitution(subs: Substitutions): Divide = Divide(
|
||||
expr1.applySubstitution(subs) as Expression,
|
||||
expr2.applySubstitution(subs) as Expression
|
||||
)
|
||||
}
|
||||
|
||||
// TODO Expr mod Expr
|
||||
|
@ -166,5 +200,11 @@ class Between(private val expr1: Expression, private val expr2: Expression, priv
|
|||
}
|
||||
}
|
||||
|
||||
override fun applySubstitution(subs: Substitutions): Between = Between(
|
||||
expr1.applySubstitution(subs) as Expression,
|
||||
expr2.applySubstitution(subs) as Expression,
|
||||
expr3.applySubstitution(subs) as Expression
|
||||
)
|
||||
|
||||
override fun toString(): String = "$expr1..$expr3..$expr2"
|
||||
}
|
||||
|
|
Reference in a new issue