Zulip Chat Archive
Stream: maths
Topic: clear_denominator
Patrick Massot (May 30 2018 at 11:54):
Let's start a new thread about this
Patrick Massot (May 30 2018 at 11:55):
It's a dream about a tactic called clear_denominator
Patrick Massot (May 30 2018 at 11:55):
Assume the current goal is either an equality or an inequality
Patrick Massot (May 30 2018 at 11:57):
It has a bunch of +, -, *, /, maybe • (scalar multiplication)
Patrick Massot (May 30 2018 at 11:57):
we want to get rid of all divisions
Patrick Massot (May 30 2018 at 11:57):
the tactic walks through the goal and builds a list of all denominators (right-hand argument of a /)
Patrick Massot (May 30 2018 at 11:59):
It creates sub-goals x ≠ 0
for all denominators x
, and immediately tries to discharge them by assumption
or applying ne_of_gt
or ne_of_lt
to all assumptions
Patrick Massot (May 30 2018 at 12:00):
then it multiplies both sides of the goal by the product of all denominators, using the relevant lemmas (assuming the subgoals)
Patrick Massot (May 30 2018 at 12:00):
and then simplifies the goal to get rid of divisions by using x/x = 1
Patrick Massot (May 30 2018 at 12:01):
Of course nested divisions would be problematic
Patrick Massot (May 30 2018 at 12:01):
The Cauchy-Schwarz thread is an example where you could use this
Assia Mahboubi (May 30 2018 at 12:06):
The inequality case is more difficult because of sign conditions, isn't it? But even in the equality case, the size of the formula to be proved can become quite large. Coq has a field
tactic, built on top of ring
, that does about the same thing as what you describe I think.
Patrick Massot (May 30 2018 at 12:25):
Indeed signs matter in inequalities
Patrick Massot (May 30 2018 at 12:25):
And we clearly need this field tactic (but Mario always want us to suffer instead of using automation)
Assia Mahboubi (May 30 2018 at 13:14):
The field
problem is more difficult than the ring
one. It probably has to start as a partial procedure, like the one you describe, because a complete one is much more delicate from an algorithmic point of view (you need stuff like subresultants or even may be probabilistic methods otherwise the complexity and growth of the polynomials are dreadful).
Last updated: Dec 20 2023 at 11:08 UTC