Extends Lean's incremental reporting and reuse between commands into various steps inside declarations: * headers and bodies of each (mutual) definition/theorem * `theorem ... := by` for each contained tactic step, including recursively inside supported combinators currently consisting of * `·` (cdot), `case`, `next` * `induction`, `cases` * macros such as `next` unfolding to the above  *Incremental reuse* means not recomputing any such steps if they are not affected by a document change. *Incremental reporting* includes the parts seen in the recording above: the progress bar and messages. Other language server features such as hover etc. are *not yet* supported incrementally, i.e. they are shown only when the declaration has been fully processed as before. --------- Co-authored-by: Scott Morrison <scott.morrison@gmail.com>
22 lines
456 B
Text
22 lines
456 B
Text
/-! Incremental reuse in combinator -/
|
||
|
||
def case (h : a ∨ b ∨ c) : True := by
|
||
cases h
|
||
case inr h =>
|
||
cases h
|
||
case inl =>
|
||
dbg_trace "c 0"
|
||
dbg_trace "c 1"
|
||
dbg_trace "c 2"
|
||
--^ sync
|
||
--^ insert: ".5"
|
||
|
||
-- RESET
|
||
def case (h : a ∨ b) : True := by
|
||
cases h
|
||
. dbg_trace "d 0"
|
||
dbg_trace "d 1"
|
||
dbg_trace "d 2"
|
||
--^ sync
|
||
--^ insert: ".5"
|
||
dbg_trace "d 3"
|