Equations
- x.toNat = match x with | Lean.Compiler.LCNF.Phase.base => 0 | Lean.Compiler.LCNF.Phase.mono => 1 | Lean.Compiler.LCNF.Phase.impure => 2
Instances For
Equations
- Lean.Compiler.LCNF.instLTPhase = { lt := fun (l r : Lean.Compiler.LCNF.Phase) => l.toNat < r.toNat }
Equations
- Lean.Compiler.LCNF.instLEPhase = { le := fun (l r : Lean.Compiler.LCNF.Phase) => l.toNat ≤ r.toNat }
instance
Lean.Compiler.LCNF.instDecidableLtPhase
{p1 : Lean.Compiler.LCNF.Phase}
{p2 : Lean.Compiler.LCNF.Phase}
:
Equations
- Lean.Compiler.LCNF.instDecidableLtPhase = p1.toNat.decLt p2.toNat
instance
Lean.Compiler.LCNF.instDecidableLePhase
{p1 : Lean.Compiler.LCNF.Phase}
{p2 : Lean.Compiler.LCNF.Phase}
:
Equations
- Lean.Compiler.LCNF.instDecidableLePhase = p1.toNat.decLe p2.toNat
A single compiler Pass
, consisting of the actual pass function operating
on the Decl
s as well as meta information.
- occurrence : Nat
Which occurrence of the pass in the pipeline this is. Some passes, like simp, can occur multiple times in the pipeline. For most passes this value does not matter.
- phase : Lean.Compiler.LCNF.Phase
Which phase this
Pass
is supposed to run in - phaseOut : Lean.Compiler.LCNF.Phase
Resulting phase.
- phaseInv : self.phaseOut ≥ self.phase
- name : Lake.Name
The name of the
Pass
The actual pass function, operating on the
Decl
s.
Instances For
theorem
Lean.Compiler.LCNF.Pass.phaseInv
(self : Lean.Compiler.LCNF.Pass)
:
self.phaseOut ≥ self.phase
Equations
- One or more equations did not get rendered due to their size.
Can be used to install, remove, replace etc. passes by tagging a declaration
of type PassInstaller
with the cpass
attribute.
- install : Array Lean.Compiler.LCNF.Pass → Lean.CoreM (Array Lean.Compiler.LCNF.Pass)
Instances For
Equations
- Lean.Compiler.LCNF.instInhabitedPassInstaller = { default := { install := default } }
The PassManager
used to store all Pass
es that will be run within
pipeline.
- passes : Array Lean.Compiler.LCNF.Pass
Instances For
Equations
- Lean.Compiler.LCNF.instInhabitedPassManager = { default := { passes := default } }
Equations
- One or more equations did not get rendered due to their size.
def
Lean.Compiler.LCNF.Pass.mkPerDeclaration
(name : Lake.Name)
(run : Lean.Compiler.LCNF.Decl → Lean.Compiler.LCNF.CompilerM Lean.Compiler.LCNF.Decl)
(phase : Lean.Compiler.LCNF.Phase)
(occurrence : optParam Nat 0)
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
Lean.Compiler.LCNF.PassManager.findHighestOccurrence
(targetName : Lake.Name)
(passes : Array Lean.Compiler.LCNF.Pass)
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Lean.Compiler.LCNF.PassInstaller.installAtEnd p = { install := fun (passes : Array Lean.Compiler.LCNF.Pass) => pure (passes.push p) }
Instances For
Equations
- Lean.Compiler.LCNF.PassInstaller.append passesNew = { install := fun (passes : Array Lean.Compiler.LCNF.Pass) => pure (passes ++ passesNew) }
Instances For
def
Lean.Compiler.LCNF.PassInstaller.withEachOccurrence
(targetName : Lake.Name)
(f : Nat → Lean.Compiler.LCNF.PassInstaller)
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
Lean.Compiler.LCNF.PassInstaller.installAfter
(targetName : Lake.Name)
(p : Lean.Compiler.LCNF.Pass → Lean.Compiler.LCNF.Pass)
(occurrence : optParam Nat 0)
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
Lean.Compiler.LCNF.PassInstaller.installAfterEach
(targetName : Lake.Name)
(p : Lean.Compiler.LCNF.Pass → Lean.Compiler.LCNF.Pass)
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
Lean.Compiler.LCNF.PassInstaller.installBefore
(targetName : Lake.Name)
(p : Lean.Compiler.LCNF.Pass → Lean.Compiler.LCNF.Pass)
(occurrence : optParam Nat 0)
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
Lean.Compiler.LCNF.PassInstaller.installBeforeEachOccurrence
(targetName : Lake.Name)
(p : Lean.Compiler.LCNF.Pass → Lean.Compiler.LCNF.Pass)
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
Lean.Compiler.LCNF.PassInstaller.replacePass
(targetName : Lake.Name)
(p : Lean.Compiler.LCNF.Pass → Lean.Compiler.LCNF.Pass)
(occurrence : optParam Nat 0)
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
Lean.Compiler.LCNF.PassInstaller.replaceEachOccurrence
(targetName : Lake.Name)
(p : Lean.Compiler.LCNF.Pass → Lean.Compiler.LCNF.Pass)
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
Lean.Compiler.LCNF.PassInstaller.run
(manager : Lean.Compiler.LCNF.PassManager)
(installer : Lean.Compiler.LCNF.PassInstaller)
:
Equations
- Lean.Compiler.LCNF.PassInstaller.run manager installer = do let __do_lift ← installer.install manager.passes pure { passes := __do_lift }
Instances For
def
Lean.Compiler.LCNF.PassInstaller.runFromDecl
(manager : Lean.Compiler.LCNF.PassManager)
(declName : Lake.Name)
:
Equations
- One or more equations did not get rendered due to their size.