Preview Runtime Showcase

2. Code Panels🔗

Definition2.1
✓L∃∀Nused by 0

In-module external definition panel sample.

Lean code for Definition2.1●1 definition
  • def PreviewRuntimeShowcase.CodePanelDecls.previewExternalDefinitionPreviewRuntimeShowcase.CodePanelDecls.previewExternalDefinition : Nat : NatNat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    
    def PreviewRuntimeShowcase.CodePanelDecls.previewExternalDefinitionPreviewRuntimeShowcase.CodePanelDecls.previewExternalDefinition : Nat :
      NatNat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    
Definition2.2
✓L∃∀Nused by 0

In-module external Lean abbrev panel sample. Status summaries stay definition-like, while the rendered declaration preserves the abbrev keyword.

Lean code for Definition2.2●1 definition
  • abbrev PreviewRuntimeShowcase.CodePanelDecls.previewExternalAbbrevPreviewRuntimeShowcase.CodePanelDecls.previewExternalAbbrev : Nat : NatNat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    
    abbrev PreviewRuntimeShowcase.CodePanelDecls.previewExternalAbbrevPreviewRuntimeShowcase.CodePanelDecls.previewExternalAbbrev : Nat :
      NatNat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    
Definition2.3
✓L∃∀Nused by 0

In-module external unsafe definition panel sample.

Lean code for Definition2.3●1 definition
  • complete
    unsafe def PreviewRuntimeShowcase.CodePanelDecls.previewExternalUnsafeDefinitionPreviewRuntimeShowcase.CodePanelDecls.previewExternalUnsafeDefinition : Nat :
      NatNat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    
    unsafe def PreviewRuntimeShowcase.CodePanelDecls.previewExternalUnsafeDefinitionPreviewRuntimeShowcase.CodePanelDecls.previewExternalUnsafeDefinition : Nat :
      NatNat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    
Definition2.4
✓L∃∀Nused by 0

External definition panel sample with multiple documented Lean definitions.

Lean code for Definition2.4●2 definitions
  • def PreviewRuntimeShowcase.CodePanelDecls.previewDocstringedDefinitionPreviewRuntimeShowcase.CodePanelDecls.previewDocstringedDefinition : NatThe first documented preview definition used to test multi-declaration
    docstring rendering in external code panels.
     : NatNat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    
    def PreviewRuntimeShowcase.CodePanelDecls.previewDocstringedDefinitionPreviewRuntimeShowcase.CodePanelDecls.previewDocstringedDefinition : NatThe first documented preview definition used to test multi-declaration
    docstring rendering in external code panels.
     :
      NatNat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    
    The first documented preview definition used to test multi-declaration
    docstring rendering in external code panels.
    
  • def PreviewRuntimeShowcase.CodePanelDecls.previewDocstringedFunctionPreviewRuntimeShowcase.CodePanelDecls.previewDocstringedFunction (n : Nat) : NatAdds a small preview offset to `n`.
    
    The second paragraph keeps paragraph spacing visible when several documented
    definitions appear in the same code panel.
    
      (nNat : NatNat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    ) : NatNat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    
    def PreviewRuntimeShowcase.CodePanelDecls.previewDocstringedFunctionPreviewRuntimeShowcase.CodePanelDecls.previewDocstringedFunction (n : Nat) : NatAdds a small preview offset to `n`.
    
    The second paragraph keeps paragraph spacing visible when several documented
    definitions appear in the same code panel.
    
      (nNat : NatNat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    ) : NatNat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    
    Adds a small preview offset to `n`.
    
    The second paragraph keeps paragraph spacing visible when several documented
    definitions appear in the same code panel.
    
Theorem2.5
✓L∃∀Nused by 0

In-module external theorem panel sample.

Lean code for Theorem2.5●1 theorem
  • theorem PreviewRuntimeShowcase.CodePanelDecls.previewExternalTheoremPreviewRuntimeShowcase.CodePanelDecls.previewExternalTheorem : True : TrueTrue : Prop`True` is a proposition and has only an introduction rule, `True.intro : True`.
    In other words, `True` is simply true, and has a canonical proof, `True.intro`
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    theorem PreviewRuntimeShowcase.CodePanelDecls.previewExternalTheoremPreviewRuntimeShowcase.CodePanelDecls.previewExternalTheorem : True :
      TrueTrue : Prop`True` is a proposition and has only an introduction rule, `True.intro : True`.
    In other words, `True` is simply true, and has a canonical proof, `True.intro`
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
Theorem2.6
✓L∃∀Nused by 0

External theorem panel sample with a declaration docstring.

Lean code for Theorem2.6●1 theorem
  • theorem PreviewRuntimeShowcase.CodePanelDecls.previewDocstringedTheoremPreviewRuntimeShowcase.CodePanelDecls.previewDocstringedTheorem : TrueA documented preview theorem whose statement is intentionally small.
     : TrueTrue : Prop`True` is a proposition and has only an introduction rule, `True.intro : True`.
    In other words, `True` is simply true, and has a canonical proof, `True.intro`
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    theorem PreviewRuntimeShowcase.CodePanelDecls.previewDocstringedTheoremPreviewRuntimeShowcase.CodePanelDecls.previewDocstringedTheorem : TrueA documented preview theorem whose statement is intentionally small.
     :
      TrueTrue : Prop`True` is a proposition and has only an introduction rule, `True.intro : True`.
    In other words, `True` is simply true, and has a canonical proof, `True.intro`
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    A documented preview theorem whose statement is intentionally small.
    
Theorem2.7
✓L∃∀Nused by 0

In-module external theorem panel sample with multiple complete declarations.

Lean code for Theorem2.7●2 theorems
  • theorem PreviewRuntimeShowcase.CodePanelDecls.previewExternalTheoremPreviewRuntimeShowcase.CodePanelDecls.previewExternalTheorem : True : TrueTrue : Prop`True` is a proposition and has only an introduction rule, `True.intro : True`.
    In other words, `True` is simply true, and has a canonical proof, `True.intro`
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    theorem PreviewRuntimeShowcase.CodePanelDecls.previewExternalTheoremPreviewRuntimeShowcase.CodePanelDecls.previewExternalTheorem : True :
      TrueTrue : Prop`True` is a proposition and has only an introduction rule, `True.intro : True`.
    In other words, `True` is simply true, and has a canonical proof, `True.intro`
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
  • theorem PreviewRuntimeShowcase.CodePanelDecls.previewExternalTheoremTwoPreviewRuntimeShowcase.CodePanelDecls.previewExternalTheoremTwo : True : TrueTrue : Prop`True` is a proposition and has only an introduction rule, `True.intro : True`.
    In other words, `True` is simply true, and has a canonical proof, `True.intro`
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    theorem PreviewRuntimeShowcase.CodePanelDecls.previewExternalTheoremTwoPreviewRuntimeShowcase.CodePanelDecls.previewExternalTheoremTwo : True :
      TrueTrue : Prop`True` is a proposition and has only an introduction rule, `True.intro : True`.
    In other words, `True` is simply true, and has a canonical proof, `True.intro`
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
Theorem2.8
⚠L∃∀Nused by 0

In-module external theorem panel with a sorry-backed declaration.

Lean code for Theorem2.8●1 theorem, incomplete
  • contains sorry
    theorem PreviewRuntimeShowcase.CodePanelDecls.previewExternalSorryPreviewRuntimeShowcase.CodePanelDecls.previewExternalSorry : True : TrueTrue : Prop`True` is a proposition and has only an introduction rule, `True.intro : True`.
    In other words, `True` is simply true, and has a canonical proof, `True.intro`
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    theorem PreviewRuntimeShowcase.CodePanelDecls.previewExternalSorryPreviewRuntimeShowcase.CodePanelDecls.previewExternalSorry : True :
      TrueTrue : Prop`True` is a proposition and has only an introduction rule, `True.intro : True`.
    In other words, `True` is simply true, and has a canonical proof, `True.intro`
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
Theorem2.9
⚠L∃∀Nused by 0

In-module external theorem panel sample with mixed declaration health.

Lean code for Theorem2.9●2 theorems, 1 incomplete
  • theorem PreviewRuntimeShowcase.CodePanelDecls.previewExternalTheoremPreviewRuntimeShowcase.CodePanelDecls.previewExternalTheorem : True : TrueTrue : Prop`True` is a proposition and has only an introduction rule, `True.intro : True`.
    In other words, `True` is simply true, and has a canonical proof, `True.intro`
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    theorem PreviewRuntimeShowcase.CodePanelDecls.previewExternalTheoremPreviewRuntimeShowcase.CodePanelDecls.previewExternalTheorem : True :
      TrueTrue : Prop`True` is a proposition and has only an introduction rule, `True.intro : True`.
    In other words, `True` is simply true, and has a canonical proof, `True.intro`
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
  • contains sorry
    theorem PreviewRuntimeShowcase.CodePanelDecls.previewExternalSorryPreviewRuntimeShowcase.CodePanelDecls.previewExternalSorry : True : TrueTrue : Prop`True` is a proposition and has only an introduction rule, `True.intro : True`.
    In other words, `True` is simply true, and has a canonical proof, `True.intro`
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    theorem PreviewRuntimeShowcase.CodePanelDecls.previewExternalSorryPreviewRuntimeShowcase.CodePanelDecls.previewExternalSorry : True :
      TrueTrue : Prop`True` is a proposition and has only an introduction rule, `True.intro : True`.
    In other words, `True` is simply true, and has a canonical proof, `True.intro`
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
Theorem2.10
!L∃∀Nused by 0

External theorem panel sample with multiple references and one missing declaration.

Lean code for Theorem2.10●2 declarations, 1 missing
  • theorem PreviewRuntimeShowcase.CodePanelDecls.previewExternalTheoremPreviewRuntimeShowcase.CodePanelDecls.previewExternalTheorem : True : TrueTrue : Prop`True` is a proposition and has only an introduction rule, `True.intro : True`.
    In other words, `True` is simply true, and has a canonical proof, `True.intro`
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    theorem PreviewRuntimeShowcase.CodePanelDecls.previewExternalTheoremPreviewRuntimeShowcase.CodePanelDecls.previewExternalTheorem : True :
      TrueTrue : Prop`True` is a proposition and has only an introduction rule, `True.intro : True`.
    In other words, `True` is simply true, and has a canonical proof, `True.intro`
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
  • declaration not found (name was not present during directive/code-block registration)
Definition2.11
✓L∃∀Nused by 0

Out-of-module external definition panel sample.

Lean code for Definition2.11●1 definition
  • defdefined in Init/Prelude.lean
    complete
    def Nat.addNat.add : Nat → Nat → NatAddition of natural numbers, typically used via the `+` operator.
    
    This function is overridden in both the kernel and the compiler to efficiently evaluate using the
    arbitrary-precision arithmetic library. The definition provided here is the logical model.
     : NatNat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
     → NatNat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
     → NatNat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    
    def Nat.addNat.add : Nat → Nat → NatAddition of natural numbers, typically used via the `+` operator.
    
    This function is overridden in both the kernel and the compiler to efficiently evaluate using the
    arbitrary-precision arithmetic library. The definition provided here is the logical model.
     : NatNat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
     → NatNat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
     → NatNat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    
    Addition of natural numbers, typically used via the `+` operator.
    
    This function is overridden in both the kernel and the compiler to efficiently evaluate using the
    arbitrary-precision arithmetic library. The definition provided here is the logical model.
    
Theorem2.12
✓L∃∀Nused by 0

Out-of-module external theorem panel sample.

Lean code for Theorem2.12●1 theorem
  • theoremdefined in Init/Data/Nat/Basic.lean
    complete
    theorem Nat.add_assocNat.add_assoc (n m k : Nat) : n + m + k = n + (m + k) (nNat mNat kNat : NatNat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    ) : nNat +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. mNat +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. kNat =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. nNat +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.mNat +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. kNat)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
    theorem Nat.add_assocNat.add_assoc (n m k : Nat) : n + m + k = n + (m + k) (nNat mNat kNat : NatNat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    ) :
      nNat +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. mNat +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. kNat =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. nNat +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. (HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.mNat +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. kNat)HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`.
Definition2.13
!L∃∀Nused by 0

External declaration panel with a missing declaration.

Lean code for Definition2.13●1 declaration, 1 missing
Theorem2.14
AL∃∀Nused by 0

External theorem panel with an axiom-like declaration.

Lean code for Theorem2.14●1 definition, incomplete
  • axiom PreviewRuntimeShowcase.CodePanelDecls.previewExternalAxiomPreviewRuntimeShowcase.CodePanelDecls.previewExternalAxiom : True : TrueTrue : Prop`True` is a proposition and has only an introduction rule, `True.intro : True`.
    In other words, `True` is simply true, and has a canonical proof, `True.intro`
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    axiom PreviewRuntimeShowcase.CodePanelDecls.previewExternalAxiomPreviewRuntimeShowcase.CodePanelDecls.previewExternalAxiom : True :
      TrueTrue : Prop`True` is a proposition and has only an introduction rule, `True.intro : True`.
    In other words, `True` is simply true, and has a canonical proof, `True.intro`
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
Definition2.15
✓L∃∀Nused by 0

External inductive panel sample with documented constructors.

Lean code for Definition2.15●1 definition
  • inductive(2 constructors)defined in PreviewRuntimeShowcase/Chapters/CodePanels.lean
    complete
    inductive PreviewRuntimeShowcase.CodePanelDecls.PreviewStagePreviewRuntimeShowcase.CodePanelDecls.PreviewStage : TypeA small inductive type used to exercise rendered constructor lists.
     : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    inductive PreviewRuntimeShowcase.CodePanelDecls.PreviewStagePreviewRuntimeShowcase.CodePanelDecls.PreviewStage : TypeA small inductive type used to exercise rendered constructor lists.
     :
      TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    A small inductive type used to exercise rendered constructor lists.
    

    Constructors

    PreviewRuntimeShowcase.CodePanelDecls.PreviewStage.initialPreviewRuntimeShowcase.CodePanelDecls.PreviewStage.initial : PreviewRuntimeShowcase.CodePanelDecls.PreviewStageThe initial stage of the preview workflow.  :
      PreviewRuntimeShowcase.CodePanelDecls.PreviewStagePreviewRuntimeShowcase.CodePanelDecls.PreviewStage : TypeA small inductive type used to exercise rendered constructor lists.
    
    The initial stage of the preview workflow. 
    PreviewRuntimeShowcase.CodePanelDecls.PreviewStage.stepPreviewRuntimeShowcase.CodePanelDecls.PreviewStage.step (n : Nat) : PreviewRuntimeShowcase.CodePanelDecls.PreviewStageA numbered follow-up stage. 
      (nNat : NatNat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    ) :
      PreviewRuntimeShowcase.CodePanelDecls.PreviewStagePreviewRuntimeShowcase.CodePanelDecls.PreviewStage : TypeA small inductive type used to exercise rendered constructor lists.
    
    A numbered follow-up stage. 
Definition2.16
✓L∃∀Nused by 0

External class panel sample with documented methods.

Lean code for Definition2.16●1 definition
  • complete
    class PreviewRuntimeShowcase.CodePanelDecls.PreviewFoldPreviewRuntimeShowcase.CodePanelDecls.PreviewFold (α : Type) : TypeA compact class used to exercise rendered method documentation.
     (αType : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. ) : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    class PreviewRuntimeShowcase.CodePanelDecls.PreviewFoldPreviewRuntimeShowcase.CodePanelDecls.PreviewFold (α : Type) : TypeA compact class used to exercise rendered method documentation.
    
      (αType : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. ) : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    A compact class used to exercise rendered method documentation.
    

    Methods

    neutralαThe neutral preview value.  : αType
    The neutral preview value. 
    combineα → α → αCombine two preview values.  : αType → αType → αType
    Combine two preview values. 
Definition2.17
✓L∃∀Nused by 0

External structure panel sample with a field-heavy package shape.

Lean code for Definition2.17●1 definition
  • complete
    structure PreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackagePreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage : TypeA preview Frey package is a compact stand-in for a structure whose constructor
    duplicates a field-heavy mathematical record.
     : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    structure PreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackagePreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage : TypeA preview Frey package is a compact stand-in for a structure whose constructor
    duplicates a field-heavy mathematical record.
     :
      TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    A preview Frey package is a compact stand-in for a structure whose constructor
    duplicates a field-heavy mathematical record.
    

    Fields

    aNatThe first value in the package.  : NatNat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    
    The first value in the package. 
    bNatThe second value in the package.  : NatNat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    
    The second value in the package. 
    cNatThe target value in the package.  : NatNat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    
    The target value in the package. 
    pNatThe prime-like exponent under discussion.  : NatNat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    
    The prime-like exponent under discussion. 
    hp55 ≤ self.pThe lower-bound hypothesis on `p`.  : 5 ≤LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. selfPreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage.pPreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage.p
      (self : PreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage) : NatThe prime-like exponent under discussion. 
    The lower-bound hypothesis on `p`. 
    hFLTself.a ^ self.p + self.b ^ self.p = self.c ^ self.pThe Fermat-like equation carried by the package.  : selfPreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage.aPreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage.a
      (self : PreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage) : NatThe first value in the package.  ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. selfPreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage.pPreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage.p
      (self : PreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage) : NatThe prime-like exponent under discussion.  +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. selfPreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage.bPreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage.b
      (self : PreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage) : NatThe second value in the package.  ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. selfPreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage.pPreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage.p
      (self : PreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage) : NatThe prime-like exponent under discussion.  =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. selfPreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage.cPreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage.c
      (self : PreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage) : NatThe target value in the package.  ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. selfPreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage.pPreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage.p
      (self : PreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage) : NatThe prime-like exponent under discussion. 
    The Fermat-like equation carried by the package. 
Theorem2.18
✓L∃∀Nused by 0

External theorem panel sample with a Markdown-like docstring.

Lean code for Theorem2.18●1 theorem
  • theorem PreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage.ofCounterexamplePreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage.ofCounterexample {a b c p : Nat} (hp5 : 5 ≤ p)
      (H : a ^ p + b ^ p = c ^ p) : Nonempty PreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackageGiven a counterexample `a^p + b^p = c^p` with `p >= 5`,
    there exists a preview Frey package.
    
      {aNat bNat cNat pNat : NatNat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } (hp55 ≤ p : 5 ≤LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. pNat) (Ha ^ p + b ^ p = c ^ p : aNat ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. pNat +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. bNat ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. pNat =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. cNat ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. pNat) :
      NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type,
    that is, there exists an element in the type. It differs from `Inhabited α`
    in that `Nonempty α` is a `Prop`, which means that it does not actually carry
    an element of `α`, only a proof that *there exists* such an element.
    Given `Nonempty α`, you can construct an element of `α` *nonconstructively*
    using `Classical.choice`.
     PreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackagePreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage : TypeA preview Frey package is a compact stand-in for a structure whose constructor
    duplicates a field-heavy mathematical record.
    
    theorem PreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage.ofCounterexamplePreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage.ofCounterexample {a b c p : Nat} (hp5 : 5 ≤ p)
      (H : a ^ p + b ^ p = c ^ p) : Nonempty PreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackageGiven a counterexample `a^p + b^p = c^p` with `p >= 5`,
    there exists a preview Frey package.
    
      {aNat bNat cNat pNat : NatNat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    } (hp55 ≤ p : 5 ≤LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. pNat)
      (Ha ^ p + b ^ p = c ^ p : aNat ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. pNat +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. bNat ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. pNat =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. cNat ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. pNat) :
      NonemptyNonempty.{u} (α : Sort u) : Prop`Nonempty α` is a typeclass that says that `α` is not an empty type,
    that is, there exists an element in the type. It differs from `Inhabited α`
    in that `Nonempty α` is a `Prop`, which means that it does not actually carry
    an element of `α`, only a proof that *there exists* such an element.
    Given `Nonempty α`, you can construct an element of `α` *nonconstructively*
    using `Classical.choice`.
    
        PreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackagePreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage : TypeA preview Frey package is a compact stand-in for a structure whose constructor
    duplicates a field-heavy mathematical record.
    
    Given a counterexample `a^p + b^p = c^p` with `p >= 5`,
    there exists a preview Frey package.
    
Definition2.19
✓L∃∀Nused by 0

External declaration panel sample mixing definitions, theorems, inductives, classes, and structures.

Lean code for Definition2.19●5 declarations
  • def PreviewRuntimeShowcase.CodePanelDecls.previewDocstringedDefinitionPreviewRuntimeShowcase.CodePanelDecls.previewDocstringedDefinition : NatThe first documented preview definition used to test multi-declaration
    docstring rendering in external code panels.
     : NatNat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    
    def PreviewRuntimeShowcase.CodePanelDecls.previewDocstringedDefinitionPreviewRuntimeShowcase.CodePanelDecls.previewDocstringedDefinition : NatThe first documented preview definition used to test multi-declaration
    docstring rendering in external code panels.
     :
      NatNat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    
    The first documented preview definition used to test multi-declaration
    docstring rendering in external code panels.
    
  • theorem PreviewRuntimeShowcase.CodePanelDecls.previewDocstringedTheoremPreviewRuntimeShowcase.CodePanelDecls.previewDocstringedTheorem : TrueA documented preview theorem whose statement is intentionally small.
     : TrueTrue : Prop`True` is a proposition and has only an introduction rule, `True.intro : True`.
    In other words, `True` is simply true, and has a canonical proof, `True.intro`
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    theorem PreviewRuntimeShowcase.CodePanelDecls.previewDocstringedTheoremPreviewRuntimeShowcase.CodePanelDecls.previewDocstringedTheorem : TrueA documented preview theorem whose statement is intentionally small.
     :
      TrueTrue : Prop`True` is a proposition and has only an introduction rule, `True.intro : True`.
    In other words, `True` is simply true, and has a canonical proof, `True.intro`
    For more information: [Propositional Logic](https://lean-lang.org/theorem_proving_in_lean4/propositions_and_proofs.html#propositional-logic)
    
    A documented preview theorem whose statement is intentionally small.
    
  • inductive(2 constructors)defined in PreviewRuntimeShowcase/Chapters/CodePanels.lean
    complete
    inductive PreviewRuntimeShowcase.CodePanelDecls.PreviewStagePreviewRuntimeShowcase.CodePanelDecls.PreviewStage : TypeA small inductive type used to exercise rendered constructor lists.
     : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    inductive PreviewRuntimeShowcase.CodePanelDecls.PreviewStagePreviewRuntimeShowcase.CodePanelDecls.PreviewStage : TypeA small inductive type used to exercise rendered constructor lists.
     :
      TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    A small inductive type used to exercise rendered constructor lists.
    

    Constructors

    PreviewRuntimeShowcase.CodePanelDecls.PreviewStage.initialPreviewRuntimeShowcase.CodePanelDecls.PreviewStage.initial : PreviewRuntimeShowcase.CodePanelDecls.PreviewStageThe initial stage of the preview workflow.  :
      PreviewRuntimeShowcase.CodePanelDecls.PreviewStagePreviewRuntimeShowcase.CodePanelDecls.PreviewStage : TypeA small inductive type used to exercise rendered constructor lists.
    
    The initial stage of the preview workflow. 
    PreviewRuntimeShowcase.CodePanelDecls.PreviewStage.stepPreviewRuntimeShowcase.CodePanelDecls.PreviewStage.step (n : Nat) : PreviewRuntimeShowcase.CodePanelDecls.PreviewStageA numbered follow-up stage. 
      (nNat : NatNat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    ) :
      PreviewRuntimeShowcase.CodePanelDecls.PreviewStagePreviewRuntimeShowcase.CodePanelDecls.PreviewStage : TypeA small inductive type used to exercise rendered constructor lists.
    
    A numbered follow-up stage. 
  • complete
    class PreviewRuntimeShowcase.CodePanelDecls.PreviewFoldPreviewRuntimeShowcase.CodePanelDecls.PreviewFold (α : Type) : TypeA compact class used to exercise rendered method documentation.
     (αType : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. ) : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    class PreviewRuntimeShowcase.CodePanelDecls.PreviewFoldPreviewRuntimeShowcase.CodePanelDecls.PreviewFold (α : Type) : TypeA compact class used to exercise rendered method documentation.
    
      (αType : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. ) : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    A compact class used to exercise rendered method documentation.
    

    Methods

    neutralαThe neutral preview value.  : αType
    The neutral preview value. 
    combineα → α → αCombine two preview values.  : αType → αType → αType
    Combine two preview values. 
  • complete
    structure PreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackagePreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage : TypeA preview Frey package is a compact stand-in for a structure whose constructor
    duplicates a field-heavy mathematical record.
     : TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    structure PreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackagePreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage : TypeA preview Frey package is a compact stand-in for a structure whose constructor
    duplicates a field-heavy mathematical record.
     :
      TypeA type universe. `Type ≡ Type 0`, `Type u ≡ Sort (u + 1)`. 
    A preview Frey package is a compact stand-in for a structure whose constructor
    duplicates a field-heavy mathematical record.
    

    Fields

    aNatThe first value in the package.  : NatNat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    
    The first value in the package. 
    bNatThe second value in the package.  : NatNat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    
    The second value in the package. 
    cNatThe target value in the package.  : NatNat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    
    The target value in the package. 
    pNatThe prime-like exponent under discussion.  : NatNat : TypeThe natural numbers, starting at zero.
    
    This type is special-cased by both the kernel and the compiler, and overridden with an efficient
    implementation. Both use a fast arbitrary-precision arithmetic library (usually
    [GMP](https://gmplib.org/)); at runtime, `Nat` values that are sufficiently small are unboxed.
    
    The prime-like exponent under discussion. 
    hp55 ≤ self.pThe lower-bound hypothesis on `p`.  : 5 ≤LE.le.{u} {α : Type u} [self : LE α] : α → α → PropThe less-equal relation: `x ≤ y` 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `≤` in identifiers is `le`. selfPreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage.pPreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage.p
      (self : PreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage) : NatThe prime-like exponent under discussion. 
    The lower-bound hypothesis on `p`. 
    hFLTself.a ^ self.p + self.b ^ self.p = self.c ^ self.pThe Fermat-like equation carried by the package.  : selfPreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage.aPreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage.a
      (self : PreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage) : NatThe first value in the package.  ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. selfPreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage.pPreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage.p
      (self : PreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage) : NatThe prime-like exponent under discussion.  +HAdd.hAdd.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HAdd α β γ] : α → β → γ`a + b` computes the sum of `a` and `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `+` in identifiers is `add`. selfPreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage.bPreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage.b
      (self : PreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage) : NatThe second value in the package.  ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. selfPreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage.pPreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage.p
      (self : PreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage) : NatThe prime-like exponent under discussion.  =Eq.{u_1} {α : Sort u_1} : α → α → PropThe equality relation. It has one introduction rule, `Eq.refl`.
    We use `a = b` as notation for `Eq a b`.
    A fundamental property of equality is that it is an equivalence relation.
    ```
    variable (α : Type) (a b c d : α)
    variable (hab : a = b) (hcb : c = b) (hcd : c = d)
    
    example : a = d :=
      Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd
    ```
    Equality is much more than an equivalence relation, however. It has the important property that every assertion
    respects the equivalence, in the sense that we can substitute equal expressions without changing the truth value.
    That is, given `h1 : a = b` and `h2 : p a`, we can construct a proof for `p b` using substitution: `Eq.subst h1 h2`.
    Example:
    ```
    example (α : Type) (a b : α) (p : α → Prop)
            (h1 : a = b) (h2 : p a) : p b :=
      Eq.subst h1 h2
    
    example (α : Type) (a b : α) (p : α → Prop)
        (h1 : a = b) (h2 : p a) : p b :=
      h1 ▸ h2
    ```
    The triangle in the second presentation is a macro built on top of `Eq.subst` and `Eq.symm`, and you can enter it by typing `\t`.
    For more information: [Equality](https://lean-lang.org/theorem_proving_in_lean4/quantifiers_and_equality.html#equality)
    
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `=` in identifiers is `eq`. selfPreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage.cPreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage.c
      (self : PreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage) : NatThe target value in the package.  ^HPow.hPow.{u, v, w} {α : Type u} {β : Type v} {γ : outParam (Type w)} [self : HPow α β γ] : α → β → γ`a ^ b` computes `a` to the power of `b`.
    The meaning of this notation is type-dependent. 
    
    Conventions for notations in identifiers:
    
     * The recommended spelling of `^` in identifiers is `pow`. selfPreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage.pPreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage.p
      (self : PreviewRuntimeShowcase.CodePanelDecls.PreviewFreyPackage) : NatThe prime-like exponent under discussion. 
    The Fermat-like equation carried by the package. 
Definition2.20
✓L∃∀Nused by 0

Inline code panel sample with complete Lean code.

Lean code for Definition2.20def panelInlineOnlyOk : Nat := 0
Definition2.21
⚠L∃∀Nused by 0

Inline code panel sample with a sorry-backed declaration.

Lean code for Definition2.21theorem declaration uses `sorry`panelInlineOnlySorry : True := ⊢ True All goals completed! 🐙
Theorem2.22
✓L∃∀Nused by 0

Inline code panel sample with multiple complete Lean theorems.

Lean code for Theorem2.22theorem panelInlineMultiTheoremOkLeft : True := ⊢ True All goals completed! 🐙 theorem panelInlineMultiTheoremOkRight : True := ⊢ True All goals completed! 🐙
Theorem2.23
⚠L∃∀Nused by 0

Inline code panel sample with multiple Lean theorems and mixed declaration health.

Lean code for Theorem2.23theorem panelInlineMultiTheoremWarningOk : True := ⊢ True All goals completed! 🐙 theorem declaration uses `sorry`panelInlineMultiTheoremWarningSorry : True := ⊢ True All goals completed! 🐙
Definition2.24
⚠L∃∀Nused by 0

Inline code panel sample with mixed declaration health.

Lean code for Definition2.24def panelInlineOk : Nat := 0 theorem declaration uses `sorry`panelInlineSorry : True := ⊢ True All goals completed! 🐙
Definition2.25
AL∃∀Nused by 0

Inline code panel sample with an axiom-like declaration.

Lean code for Definition2.25axiom panelInlineAxiom : True
Definition2.26
✓L∃∀Nused by 0

Inline Lean structure sample with declaration and field docstrings.

Lean code for Definition2.26/-- Inline package docstring used to compare literate Lean against the external declaration renderer. * The field `left` is shown as inline code. * **Bold text** checks richer Markdown. -/ structure PanelInlineDocstringedStructure where /-- The left inline field. -/ left : Nat /-- The right inline field. -/ right : Nat /-- A proof-like field that keeps dependent-looking field layout visible. -/ ordered : left <= right
Definition2.27
✓L∃∀Nused by 0

Inline Lean inductive sample with declaration and constructor docstrings.

Lean code for Definition2.27/-- Inline workflow stage docstring used to compare constructor documentation. -/ inductive PanelInlineDocstringedStage where /-- The initial inline stage. -/ | initial /-- A follow-up inline stage carrying a counter. -/ | followup (_ : Nat)
Definition2.28
✓L∃∀Nused by 0

Inline Lean panel sample mixing documented structures, inductives, and classes.

Lean code for Definition2.28/-- Inline mixed configuration docstring. -/ structure PanelInlineMixedConfig where /-- Whether the preview branch is enabled. -/ enabled : Bool /-- Inline mixed state docstring. -/ inductive PanelInlineMixedState where /-- The ready state. -/ | ready /-- The running state with a step count. -/ | running (_ : Nat) /-- Inline mixed fold class docstring. -/ class PanelInlineMixedFold (α : Type) where /-- The empty inline value. -/ empty : α /-- Merge two inline values. -/ merge : α -> α -> α
Definition2.29
XL∃∀Nused by 0

Statement without associated Lean code.