File: .lake/packages/lean4/src/lean/Lean/Compiler/LCNF/Testing.lean

full_name: Lean.Compiler.LCNF.Code.containsConst.goLetValue
code: partial def Code.containsConst (constName : Name) (code : Code) : Bool 
goal: Bool

full_name: Lean.Compiler.LCNF.Code.containsConst
code: partial def Code.containsConst (constName : Name) (code : Code) : Bool 
goal: Bool

full_name: Lean.Compiler.LCNF.Code.containsConst.goExpr
code: partial def Code.containsConst (constName : Name) (code : Code) : Bool 
goal: Bool

full_name: Lean.Compiler.LCNF.Testing.TestInstallerContext
code: structure TestInstallerContext where
  passUnderTestName : Name
  testName : Name
goal: Type

full_name: Lean.Compiler.LCNF.Testing.TestInstallerContext.passUnderTestName
code: structure TestInstallerContext where
  passUnderTestName : Name
  testName : Name
goal: Lean.Name

full_name: Lean.Compiler.LCNF.Testing.TestInstallerContext.testName
code: structure TestInstallerContext where
  passUnderTestName : Name
  testName : Name
goal: Lean.Name

full_name: Lean.Compiler.LCNF.Testing.TestContext
code: structure TestContext where
  passUnderTest : Pass
  testName : Name
goal: Type

full_name: Lean.Compiler.LCNF.Testing.TestContext.passUnderTest
code: structure TestContext where
  passUnderTest : Pass
  testName : Name
goal: Lean.Compiler.LCNF.Pass

full_name: Lean.Compiler.LCNF.Testing.TestContext.testName
code: structure TestContext where
  passUnderTest : Pass
  testName : Name
goal: Lean.Name

full_name: Lean.Compiler.LCNF.Testing.SimpleAssertionContext.decls
code: structure SimpleAssertionContext where
  decls : Array Decl
goal: Array Lean.Compiler.LCNF.Decl

full_name: Lean.Compiler.LCNF.Testing.SimpleAssertionContext
code: structure SimpleAssertionContext where
  decls : Array Decl
goal: Type

full_name: Lean.Compiler.LCNF.Testing.InOutAssertionContext
code: structure InOutAssertionContext where
  input : Array Decl
  output : Array Decl
goal: Type

full_name: Lean.Compiler.LCNF.Testing.InOutAssertionContext.input
code: structure InOutAssertionContext where
  input : Array Decl
  output : Array Decl
goal: Array Lean.Compiler.LCNF.Decl

full_name: Lean.Compiler.LCNF.Testing.InOutAssertionContext.output
code: structure InOutAssertionContext where
  input : Array Decl
  output : Array Decl
goal: Array Lean.Compiler.LCNF.Decl

full_name: Lean.Compiler.LCNF.Testing.TestInstallerM
code: abbrev TestInstallerM 
goal: Type

full_name: Lean.Compiler.LCNF.Testing.TestInstaller
code: abbrev TestInstaller 
goal: Type

full_name: Lean.Compiler.LCNF.Testing.TestM
code: abbrev TestM 
goal: Type

full_name: Lean.Compiler.LCNF.Testing.SimpleAssertionM
code: abbrev SimpleAssertionM 
goal: Type

full_name: Lean.Compiler.LCNF.Testing.InOutAssertionM
code: abbrev InOutAssertionM 
goal: Type

full_name: Lean.Compiler.LCNF.Testing.SimpleTest
code: abbrev SimpleTest 
goal: Type

full_name: Lean.Compiler.LCNF.Testing.InOutTest
code: abbrev InOutTest 
goal: Type

full_name: Lean.Compiler.LCNF.Testing.TestInstaller.install
code: def TestInstaller.install (x : TestInstaller) (passUnderTestName testName : Name) : PassInstaller 
goal: Lean.Compiler.LCNF.PassInstaller

full_name: Lean.Compiler.LCNF.Testing.TestM.run
code: def TestM.run (x : TestM α) (passUnderTest : Pass) (testName : Name) : CompilerM α 
goal: Lean.Compiler.LCNF.CompilerM α

full_name: Lean.Compiler.LCNF.Testing.SimpleAssertionM.run
code: def SimpleAssertionM.run (x : SimpleAssertionM α) (decls : Array Decl) (passUnderTest : Pass) (testName : Name) : CompilerM α 
goal: Lean.Compiler.LCNF.CompilerM α

full_name: Lean.Compiler.LCNF.Testing.InOutAssertionM.run
code: def InOutAssertionM.run (x : InOutAssertionM α) (input output : Array Decl) (passUnderTest : Pass) (testName : Name) : CompilerM α 
goal: Lean.Compiler.LCNF.CompilerM α

full_name: Lean.Compiler.LCNF.Testing.getTestName
code: def getTestName : TestM Name 
goal: Lean.Compiler.LCNF.Testing.TestM Lean.Name

full_name: Lean.Compiler.LCNF.Testing.getPassUnderTest
code: def getPassUnderTest : TestM Pass 
goal: Lean.Compiler.LCNF.Testing.TestM Lean.Compiler.LCNF.Pass

full_name: Lean.Compiler.LCNF.Testing.getDecls
code: def getDecls : SimpleAssertionM (Array Decl) 
goal: Lean.Compiler.LCNF.Testing.SimpleAssertionM (Array Lean.Compiler.LCNF.Decl)

full_name: Lean.Compiler.LCNF.Testing.getInputDecls
code: def getInputDecls : InOutAssertionM (Array Decl) 
goal: Lean.Compiler.LCNF.Testing.InOutAssertionM (Array Lean.Compiler.LCNF.Decl)

full_name: Lean.Compiler.LCNF.Testing.getOutputDecls
code: def getOutputDecls : InOutAssertionM (Array Decl) 
goal: Lean.Compiler.LCNF.Testing.InOutAssertionM (Array Lean.Compiler.LCNF.Decl)

full_name: Lean.Compiler.LCNF.Testing.assert
code: /--
If `property` is `false` throw an exception with `msg`.
-/
def assert (property : Bool) (msg : String) : TestM Unit 
goal: Lean.Compiler.LCNF.Testing.TestM Unit

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Compiler.LCNF.Testing.0.Lean.Compiler.LCNF.Testing.assertAfterTest
code: private def assertAfterTest (test : SimpleTest) : TestInstallerM (Pass → Pass) 
goal: Lean.Compiler.LCNF.Testing.TestInstallerM (Lean.Compiler.LCNF.Pass → Lean.Compiler.LCNF.Pass)

full_name: Lean.Compiler.LCNF.Testing.assertAfter
code: /--
Install an assertion pass right after a specific occurrence of a pass,
default is first.
-/
def assertAfter (test : SimpleTest) (occurrence : Nat := 0): TestInstaller 
goal: Lean.Compiler.LCNF.Testing.TestInstaller

full_name: Lean.Compiler.LCNF.Testing.assertAfterEachOccurrence
code: /--
Install an assertion pass right after each occurrence of a pass.
-/
def assertAfterEachOccurrence (test : SimpleTest) : TestInstaller 
goal: Lean.Compiler.LCNF.Testing.TestInstaller

full_name: Lean.Compiler.LCNF.Testing.assertForEachDeclAfter
code: /--
Install an assertion pass right after a specific occurrence of a pass,
default is first. The assertion operates on a per declaration basis.
-/
def assertForEachDeclAfter (assertion : Pass → Decl → Bool) (msg : String) (occurrence : Nat := 0) : TestInstaller 
goal: Lean.Compiler.LCNF.Testing.TestInstaller

full_name: Lean.Compiler.LCNF.Testing.assertForEachDeclAfterEachOccurrence
code: /--
Install an assertion pass right after the each occurrence of a pass. The
assertion operates on a per declaration basis.
-/
def assertForEachDeclAfterEachOccurrence (assertion : Pass → Decl → Bool) (msg : String) : TestInstaller 
goal: Lean.Compiler.LCNF.Testing.TestInstaller

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Compiler.LCNF.Testing.0.Lean.Compiler.LCNF.Testing.assertAroundTest
code: private def assertAroundTest (test : InOutTest) : TestInstallerM (Pass → Pass) 
goal: Lean.Compiler.LCNF.Testing.TestInstallerM (Lean.Compiler.LCNF.Pass → Lean.Compiler.LCNF.Pass)

full_name: Lean.Compiler.LCNF.Testing.assertAround
code: /--
Replace a specific occurrence, default is first, of a pass with a wrapper one that allows
the user to provide an assertion which takes into account both the
declarations that were sent to and produced by the pass under test.
-/
def assertAround (test : InOutTest) (occurrence : Nat := 0) : TestInstaller 
goal: Lean.Compiler.LCNF.Testing.TestInstaller

full_name: Lean.Compiler.LCNF.Testing.assertAroundEachOccurrence
code: /--
Replace all occurrences of a pass with a wrapper one that allows
the user to provide an assertion which takes into account both the
declarations that were sent to and produced by the pass under test.
-/
def assertAroundEachOccurrence (test : InOutTest) : TestInstaller 
goal: Lean.Compiler.LCNF.Testing.TestInstaller

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Compiler.LCNF.Testing.0.Lean.Compiler.LCNF.Testing.throwFixPointError
code: private def throwFixPointError (err : String) (firstResult secondResult : Array Decl) : CompilerM Unit 
goal: Lean.Compiler.LCNF.CompilerM Unit

full_name: Lean.Compiler.LCNF.Testing.assertIsAtFixPoint
code: /--
Insert a pass after `passUnderTestName`, that ensures, that if
`passUnderTestName` is executed twice in a row, no change in the resulting
expression will occur, i.e. the pass is at a fix point.
-/
def assertIsAtFixPoint : TestInstaller 
goal: Lean.Compiler.LCNF.Testing.TestInstaller

full_name: Lean.Compiler.LCNF.Testing.assertSize
code: /--
Compare the overall sizes of the input and output of `passUnderTest` with `assertion`.
If `assertion inputSize outputSize` is `false` throw an exception with `msg`.
-/
def assertSize (assertion : Nat → Nat → Bool) (msg : String) : TestInstaller 
goal: Lean.Compiler.LCNF.Testing.TestInstaller

full_name: Lean.Compiler.LCNF.Testing.assertPreservesSize
code: /--
Assert that the overall size of the `Decl`s in the compilation pipeline does not change
after `passUnderTestName`.
-/
def assertPreservesSize (msg : String) : TestInstaller 
goal: Lean.Compiler.LCNF.Testing.TestInstaller

full_name: Lean.Compiler.LCNF.Testing.assertReducesSize
code: /--
Assert that the overall size of the `Decl`s in the compilation pipeline gets reduced by `passUnderTestName`.
-/
def assertReducesSize (msg : String) : TestInstaller 
goal: Lean.Compiler.LCNF.Testing.TestInstaller

full_name: Lean.Compiler.LCNF.Testing.assertReducesOrPreservesSize
code: /--
Assert that the overall size of the `Decl`s in the compilation pipeline gets reduced or stays unchanged
by `passUnderTestName`.
-/
def assertReducesOrPreservesSize (msg : String) : TestInstaller 
goal: Lean.Compiler.LCNF.Testing.TestInstaller

full_name: Lean.Compiler.LCNF.Testing.assertDoesNotContainConstAfter
code: /--
Assert that the pass under test produces `Decl`s that do not contain
`Expr.const constName` in their `Code.let` values anymore.
-/
def assertDoesNotContainConstAfter (constName : Name) (msg : String) : TestInstaller 
goal: Lean.Compiler.LCNF.Testing.TestInstaller

full_name: Lean.Compiler.LCNF.Testing.assertNoFun
code: def assertNoFun : TestInstaller 
goal: Lean.Compiler.LCNF.Testing.TestInstaller