The interval tactic #
interval attempts to prove real inequalities between constant expressions by lifting the
expressions from ℝ to Interval.
Warning: We use native_decide, so you must trust the compiler.
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Turn a real inequality goal into an Interval goal
Equations
- { op := IntervalTactic.Ineq.lt, x := x, y := y }.app = q(⋯)
- { op := IntervalTactic.Ineq.le, x := x, y := y }.app = q(⋯)
- { op := IntervalTactic.Ineq.gt, x := x, y := y }.app = q(⋯)
- { op := IntervalTactic.Ineq.ge, x := x, y := y }.app = q(⋯)
Instances For
Close a goal using a tactic
Equations
- One or more equations did not get rendered due to their size.
Instances For
Delegate toMessageData to str for Ineq
Equations
- IntervalTactic.instToMessageDataIneq = { toMessageData := fun (i : IntervalTactic.Ineq) => (Lean.MessageData.ofFormat ∘ Std.format) i.str }
@[irreducible]
Necessary to avoid kernel errors for some reason
Equations
Instances For
Delegate toMessageData to repr for Interval
Equations
- IntervalTactic.instToMessageDataInterval = { toMessageData := fun (x : Interval) => x.toMessageData }
Unsafe native evaluation of interval expressions
Equations
Instances For
Prove a real inequality by lifting from ℝ to Interval.
Warning: We use native_decide, so you must trust the compiler.
Equations
- IntervalTactic.tacticInterval = Lean.ParserDescr.node `IntervalTactic.tacticInterval 1024 (Lean.ParserDescr.nonReservedSymbol "interval" false)