Built with Alectryon. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑ Ctrl+↓ to navigate, Ctrl+πŸ–±οΈ to focus. On Mac, use ⌘ instead of Ctrl.
Hover-Settings: Show types: Show goals:
import Lean.Elab

structure 
WithLog: Type β†’ Type β†’ Type
WithLog
(
logged: Type
logged
:
Type: Type 1
Type
) (
Ξ±: Type
Ξ±
:
Type: Type 1
Type
) where
log: {logged Ξ± : Type} β†’ WithLog logged Ξ± β†’ List logged
log
:
List: Type β†’ Type
List
logged: Type
logged
val: {logged Ξ± : Type} β†’ WithLog logged Ξ± β†’ Ξ±
val
:
Ξ±: Type
Ξ±
instance: {logged : Type} β†’ Monad (WithLog logged)
instance
:
Monad: (Type β†’ Type) β†’ Type 1
Monad
<|
WithLog: Type β†’ Type β†’ Type
WithLog
logged: Type
logged
where pure
val: α✝
val
:= ⟨
[]: List logged
[]
,
val: α✝
val
⟩ bind
item: WithLog logged α✝
item
next: α✝ β†’ WithLog logged β✝
next
:= let rec
nextItem: {logged Ξ± Ξ² : Type} β†’ WithLog logged Ξ± β†’ (Ξ± β†’ WithLog logged Ξ²) β†’ WithLog logged Ξ²
nextItem
:=
next: α✝ β†’ WithLog logged β✝
next
item: WithLog logged α✝
item
.
val: {logged Ξ± : Type} β†’ WithLog logged Ξ± β†’ Ξ±
val
⟨
item: WithLog logged α✝
item
.
log: {logged Ξ± : Type} β†’ WithLog logged Ξ± β†’ List logged
log
++
nextItem: WithLog logged β✝
nextItem
.
log: {logged Ξ± : Type} β†’ WithLog logged Ξ± β†’ List logged
log
,
nextItem: WithLog logged β✝
nextItem
.
val: {logged Ξ± : Type} β†’ WithLog logged Ξ± β†’ Ξ±
val
⟩ set_option relaxedAutoImplicit false set_option autoImplicit false set_option pp.all true set_option pp.analyze true set_option trace.Meta.synthInstance true set_option synthInstance.checkSynthOrder true def
Option': (Ξ± : Type u_1) β†’ Type u_1
Option'
:=
Option: (Ξ± : Type u_1) β†’ Type u_1
Option
-- The error is now gone -- /-- -- error: fields missing: 'map', 'mapConst', 'seq', 'seqLeft' -- -/ -- #guard_msgs(error, drop info) in
instance: Monad.{u_1, u_1} Option'.{u_1}
instance
:
Monad: (m : Type u_1 β†’ Type u_1) β†’ Type (u_1 + 1)
Monad
Option': (Ξ± : Type u_1) β†’ Type u_1
Option'
[Meta.synthInstance] ❌️ Functor.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance] βœ…οΈ new goal Functor.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.instances] #[@Applicative.toFunctor.{?u.7, ?u.8}] [Meta.synthInstance.apply] βœ…οΈ apply @Applicative.toFunctor.{?u.4, ?u.4} to Functor.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.tryResolve] βœ…οΈ Functor.{?u.4, ?u.4} Option'.{?u.4} β‰Ÿ Functor.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance] βœ…οΈ new goal Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.instances] #[@Monad.toApplicative.{?u.9, ?u.10}, @Alternative.toApplicative.{?u.11, ?u.12}] [Meta.synthInstance.apply] βœ…οΈ apply @Alternative.toApplicative.{?u.4, ?u.4} to Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.4, ?u.4} Option'.{?u.4} β‰Ÿ Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance] βœ…οΈ no instances for Alternative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.instances] #[] [Meta.synthInstance.apply] βœ…οΈ apply @Monad.toApplicative.{?u.4, ?u.4} to Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.4, ?u.4} Option'.{?u.4} β‰Ÿ Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance] βœ…οΈ no instances for Monad.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.instances] #[] [Meta.synthInstance] result <not-available> [Meta.synthInstance] ❌️ Seq.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance] βœ…οΈ new goal Seq.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.instances] #[@Applicative.toSeq.{?u.7, ?u.8}] [Meta.synthInstance.apply] βœ…οΈ apply @Applicative.toSeq.{?u.4, ?u.4} to Seq.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.tryResolve] βœ…οΈ Seq.{?u.4, ?u.4} Option'.{?u.4} β‰Ÿ Seq.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance] βœ…οΈ new goal Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.instances] #[@Monad.toApplicative.{?u.9, ?u.10}, @Alternative.toApplicative.{?u.11, ?u.12}] [Meta.synthInstance.apply] βœ…οΈ apply @Alternative.toApplicative.{?u.4, ?u.4} to Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.4, ?u.4} Option'.{?u.4} β‰Ÿ Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance] βœ…οΈ no instances for Alternative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.instances] #[] [Meta.synthInstance.apply] βœ…οΈ apply @Monad.toApplicative.{?u.4, ?u.4} to Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.4, ?u.4} Option'.{?u.4} β‰Ÿ Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance] βœ…οΈ no instances for Monad.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.instances] #[] [Meta.synthInstance] result <not-available> [Meta.synthInstance] ❌️ SeqLeft.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance] βœ…οΈ new goal SeqLeft.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.instances] #[@Applicative.toSeqLeft.{?u.7, ?u.8}] [Meta.synthInstance.apply] βœ…οΈ apply @Applicative.toSeqLeft.{?u.4, ?u.4} to SeqLeft.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.tryResolve] βœ…οΈ SeqLeft.{?u.4, ?u.4} Option'.{?u.4} β‰Ÿ SeqLeft.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance] βœ…οΈ new goal Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.instances] #[@Monad.toApplicative.{?u.9, ?u.10}, @Alternative.toApplicative.{?u.11, ?u.12}] [Meta.synthInstance.apply] βœ…οΈ apply @Alternative.toApplicative.{?u.4, ?u.4} to Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.4, ?u.4} Option'.{?u.4} β‰Ÿ Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance] βœ…οΈ no instances for Alternative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.instances] #[] [Meta.synthInstance.apply] βœ…οΈ apply @Monad.toApplicative.{?u.4, ?u.4} to Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.4, ?u.4} Option'.{?u.4} β‰Ÿ Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance] βœ…οΈ no instances for Monad.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.instances] #[] [Meta.synthInstance] result <not-available> [Meta.synthInstance] ❌️ SeqRight.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance] βœ…οΈ new goal SeqRight.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.instances] #[@Applicative.toSeqRight.{?u.7, ?u.8}] [Meta.synthInstance.apply] βœ…οΈ apply @Applicative.toSeqRight.{?u.4, ?u.4} to SeqRight.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.tryResolve] βœ…οΈ SeqRight.{?u.4, ?u.4} Option'.{?u.4} β‰Ÿ SeqRight.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance] βœ…οΈ new goal Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.instances] #[@Monad.toApplicative.{?u.9, ?u.10}, @Alternative.toApplicative.{?u.11, ?u.12}] [Meta.synthInstance.apply] βœ…οΈ apply @Alternative.toApplicative.{?u.4, ?u.4} to Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.4, ?u.4} Option'.{?u.4} β‰Ÿ Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance] βœ…οΈ no instances for Alternative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.instances] #[] [Meta.synthInstance.apply] βœ…οΈ apply @Monad.toApplicative.{?u.4, ?u.4} to Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.4, ?u.4} Option'.{?u.4} β‰Ÿ Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance] βœ…οΈ no instances for Monad.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.instances] #[] [Meta.synthInstance] result <not-available>
variable (
logged: Type
logged
:
Type: Type 1
Type
) in
@instMonadWithLog logged
[Meta.synthInstance] βœ…οΈ Monad.{0, 0} (WithLog logged) [Meta.synthInstance] βœ…οΈ new goal Monad.{0, 0} (WithLog logged) [Meta.synthInstance.instances] #[@instMonadWithLog] [Meta.synthInstance.apply] βœ…οΈ apply @instMonadWithLog to Monad.{0, 0} (WithLog logged) [Meta.synthInstance.tryResolve] βœ…οΈ Monad.{0, 0} (WithLog logged) β‰Ÿ Monad.{0, 0} (WithLog logged) [Meta.synthInstance.answer] βœ…οΈ Monad.{0, 0} (WithLog logged) [Meta.synthInstance] result @instMonadWithLog logged
-- instance : Pure <| WithLog logged where -- pure val := ⟨[], val⟩ -- -- instance : Bind <| WithLog logged where -- -- bind item next := -- -- let {log := thisLog, .. } := item -- -- let {log := nextOut, val := nextRes} := next item.val -- -- ⟨thisLog ++ nextOut, nextRes⟩ -- instance : Bind <| WithLog logged where -- bind item next := -- let nextItem := next item.val -- ⟨item.log ++ nextItem.log, nextItem.val⟩ -- section CheckInstances -- variable (logged : Type) -- /- -- failed to synthesize -- Applicative (WithLog logged) -- -/ -- #synth Applicative <| WithLog logged -- /- -- failed to synthesize -- Monad (WithLog logged) -- -/ -- #synth Monad <| WithLog logged -- /- -- [Meta.synthInstance] βœ… Monad (WithLog logged) β–Ό -- [] new goal Monad (WithLog logged) β–Ά -- [] βœ… apply @instMonadWithLog to Monad (WithLog logged) β–Ό -- [tryResolve] βœ… Monad (WithLog logged) β‰Ÿ Monad (WithLog logged) -- [] result instMonadWithLog -- -/ -- #synth Monad <| WithLog logged -- end CheckInstances -- /- -- [Meta.synthInstance] ❌ Applicative (WithLog logged) β–Ά -- [Meta.synthInstance] ❌ Functor (WithLog logged) β–Ά -- [Meta.synthInstance] βœ… Pure (WithLog logged) β–Ά -- [Meta.synthInstance] ❌ Seq (WithLog logged) β–Ά -- [Meta.synthInstance] ❌ SeqLeft (WithLog logged) β–Ά -- [Meta.synthInstance] ❌ SeqRight (WithLog logged) β–Ά -- [Meta.synthInstance] βœ… Bind (WithLog logged) β–Ά -- -/ -- instance : Monad <| WithLog logged where -- no error -- variable (logged : Type) in -- #synth Monad <| WithLog logged -- def Option' := Option -- #print Monad.map._default -- structure A where -- a : Nat -> Nat := fun x => x -- structure B extends A where -- a := A.a._default /- @[reducible] def Applicative.map._default.{u_1, u_2} : {f : Type u_1 β†’ Type u_2} β†’ Pure.{u_1, u_2} f β†’ Seq.{u_1, u_2} f β†’ {Ξ± Ξ² : Type u_1} β†’ (Ξ± β†’ Ξ²) β†’ f Ξ± β†’ f Ξ² := fun {f : Type u_1 β†’ Type u_2} (toPure : Pure.{u_1, u_2} f) (toSeq : Seq.{u_1, u_2} f) => @id.{max (u_1 + 2) (u_2 + 1)} ({Ξ± Ξ² : Type u_1} β†’ (Ξ± β†’ Ξ²) β†’ f Ξ± β†’ f Ξ²) fun {Ξ± Ξ² : Type u_1} (x : Ξ± β†’ Ξ²) (y : f Ξ±) => @Seq.seq.{u_1, u_2} f toSeq Ξ± Ξ² (@Pure.pure.{u_1, u_2} f toPure (Ξ± β†’ Ξ²) x) fun (x : Unit) => y -/
def Applicative.map._default.{u, v} : {f : Type u β†’ Type v} β†’ (pure : {Ξ± : Type u} β†’ Ξ± β†’ f Ξ±) β†’ (seq : {Ξ± Ξ² : Type u} β†’ f (Ξ± β†’ Ξ²) β†’ (Unit β†’ f Ξ±) β†’ f Ξ²) β†’ {Ξ± Ξ² : Type u} β†’ (x : Ξ± β†’ Ξ²) β†’ (y : f Ξ±) β†’ f Ξ² := fun {f : Type u β†’ Type v} (pure : {Ξ± : Type u} β†’ Ξ± β†’ f Ξ±) (seq : {Ξ± Ξ² : Type u} β†’ f (Ξ± β†’ Ξ²) β†’ (Unit β†’ f Ξ±) β†’ f Ξ²) => @id.{max (u + 2) (v + 1)} ({Ξ± Ξ² : Type u} β†’ (x : Ξ± β†’ Ξ²) β†’ (y : f Ξ±) β†’ f Ξ²) fun {Ξ± Ξ² : Type u} (x : Ξ± β†’ Ξ²) (y : f Ξ±) => @seq Ξ± Ξ² (@pure (Ξ± β†’ Ξ²) x) fun (x : Unit) => y
Applicative.map._default: {f : Type u β†’ Type v} β†’ (pure : {Ξ± : Type u} β†’ Ξ± β†’ f Ξ±) β†’ (seq : {Ξ± Ξ² : Type u} β†’ f (Ξ± β†’ Ξ²) β†’ (Unit β†’ f Ξ±) β†’ f Ξ²) β†’ {Ξ± Ξ² : Type u} β†’ (x : Ξ± β†’ Ξ²) β†’ (y : f Ξ±) β†’ f Ξ²
Applicative.map._default
/- @[reducible] def Monad.map._default.{u_1, u_2} : {m : Type u_1 β†’ Type u_2} β†’ Applicative m β†’ Bind m β†’ {Ξ± Ξ² : Type u_1} β†’ (Ξ± β†’ Ξ²) β†’ m Ξ± β†’ m Ξ² := fun {m} toApplicative toBind => @id ({Ξ± Ξ² : Type u_1} β†’ (Ξ± β†’ Ξ²) β†’ m Ξ± β†’ m Ξ²) fun {Ξ± Ξ²} f x => x >>= pure ∘ f -/
def Monad.map._default.{u, v} : {m : Type u β†’ Type v} β†’ (pure : {Ξ± : Type u} β†’ Ξ± β†’ m Ξ±) β†’ (bind : {Ξ± Ξ² : Type u} β†’ m Ξ± β†’ (Ξ± β†’ m Ξ²) β†’ m Ξ²) β†’ {Ξ± Ξ² : Type u} β†’ (f : Ξ± β†’ Ξ²) β†’ (x : m Ξ±) β†’ m Ξ² := fun {m : Type u β†’ Type v} (pure : {Ξ± : Type u} β†’ Ξ± β†’ m Ξ±) (bind : {Ξ± Ξ² : Type u} β†’ m Ξ± β†’ (Ξ± β†’ m Ξ²) β†’ m Ξ²) => @id.{max (u + 2) (v + 1)} ({Ξ± Ξ² : Type u} β†’ (f : Ξ± β†’ Ξ²) β†’ (x : m Ξ±) β†’ m Ξ²) fun {Ξ± Ξ² : Type u} (f : Ξ± β†’ Ξ²) (x : m Ξ±) => @bind Ξ± Ξ² x (@Function.comp.{u + 1, u + 1, v + 1} Ξ± Ξ² (m Ξ²) (@pure Ξ²) f)
Monad.map._default: {m : Type u β†’ Type v} β†’ (pure : {Ξ± : Type u} β†’ Ξ± β†’ m Ξ±) β†’ (bind : {Ξ± Ξ² : Type u} β†’ m Ξ± β†’ (Ξ± β†’ m Ξ²) β†’ m Ξ²) β†’ {Ξ± Ξ² : Type u} β†’ (f : Ξ± β†’ Ξ²) β†’ (x : m Ξ±) β†’ m Ξ²
Monad.map._default
set_option structureDiamondWarning true -- instance : Monad Option' where -- pure := Option.some -- bind := Option.bind -- map := Monad.map._default -- instance : Monad Option' where -- pure := Option.some -- bind a f := -- let b := Option.bind a f -- b -- map f x := Monad.map._default _ _ f x -- instance : Monad Option' where -- pure := Option.some -- bind a f := -- let rec b := Option.bind a f -- b -- map f x := Monad.map._default _ _ f x
instance: Monad.{u_1, u_1} Option'.{u_1}
instance
:
Monad: (m : Type u_1 β†’ Type u_1) β†’ Type (u_1 + 1)
Monad
Option': (Ξ± : Type u_1) β†’ Type u_1
Option'
[Meta.synthInstance] βœ…οΈ Functor.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance] βœ…οΈ new goal Functor.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.instances] #[@Applicative.toFunctor.{?u.7, ?u.8}] [Meta.synthInstance.apply] βœ…οΈ apply @Applicative.toFunctor.{?u.4, ?u.4} to Functor.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.tryResolve] βœ…οΈ Functor.{?u.4, ?u.4} Option'.{?u.4} β‰Ÿ Functor.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance] βœ…οΈ new goal Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.instances] #[@Monad.toApplicative.{?u.9, ?u.10}, @Alternative.toApplicative.{?u.11, ?u.12}] [Meta.synthInstance.apply] βœ…οΈ apply @Alternative.toApplicative.{?u.4, ?u.4} to Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.4, ?u.4} Option'.{?u.4} β‰Ÿ Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance] βœ…οΈ no instances for Alternative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.instances] #[] [Meta.synthInstance.apply] βœ…οΈ apply @Monad.toApplicative.{?u.4, ?u.4} to Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.4, ?u.4} Option'.{?u.4} β‰Ÿ Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance] βœ…οΈ new goal Monad.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.instances] #[instMonadOption'.{?u.13}] [Meta.synthInstance.apply] βœ…οΈ apply instMonadOption'.{?u.4} to Monad.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.tryResolve] βœ…οΈ Monad.{?u.4, ?u.4} Option'.{?u.4} β‰Ÿ Monad.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.answer] βœ…οΈ Monad.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.resume] βœ…οΈ propagating Monad.{?u.4, ?u.4} Option'.{?u.4} to subgoal Monad.{?u.4, ?u.4} Option'.{?u.4} of Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.resume] size: 1 [Meta.synthInstance.answer] βœ…οΈ Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.resume] βœ…οΈ propagating Applicative.{?u.4, ?u.4} Option'.{?u.4} to subgoal Applicative.{?u.4, ?u.4} Option'.{?u.4} of Functor.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.resume] size: 2 [Meta.synthInstance.answer] βœ…οΈ Functor.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance] result @Applicative.toFunctor.{?u.4, ?u.4} Option'.{?u.4} (@Monad.toApplicative.{?u.4, ?u.4} Option'.{?u.4} instMonadOption'.{?u.4}) [Meta.synthInstance] βœ…οΈ Seq.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance] βœ…οΈ new goal Seq.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.instances] #[@Applicative.toSeq.{?u.7, ?u.8}] [Meta.synthInstance.apply] βœ…οΈ apply @Applicative.toSeq.{?u.4, ?u.4} to Seq.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.tryResolve] βœ…οΈ Seq.{?u.4, ?u.4} Option'.{?u.4} β‰Ÿ Seq.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance] βœ…οΈ new goal Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.instances] #[@Monad.toApplicative.{?u.9, ?u.10}, @Alternative.toApplicative.{?u.11, ?u.12}] [Meta.synthInstance.apply] βœ…οΈ apply @Alternative.toApplicative.{?u.4, ?u.4} to Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.4, ?u.4} Option'.{?u.4} β‰Ÿ Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance] βœ…οΈ no instances for Alternative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.instances] #[] [Meta.synthInstance.apply] βœ…οΈ apply @Monad.toApplicative.{?u.4, ?u.4} to Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.4, ?u.4} Option'.{?u.4} β‰Ÿ Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance] βœ…οΈ new goal Monad.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.instances] #[instMonadOption'.{?u.13}] [Meta.synthInstance.apply] βœ…οΈ apply instMonadOption'.{?u.4} to Monad.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.tryResolve] βœ…οΈ Monad.{?u.4, ?u.4} Option'.{?u.4} β‰Ÿ Monad.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.answer] βœ…οΈ Monad.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.resume] βœ…οΈ propagating Monad.{?u.4, ?u.4} Option'.{?u.4} to subgoal Monad.{?u.4, ?u.4} Option'.{?u.4} of Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.resume] size: 1 [Meta.synthInstance.answer] βœ…οΈ Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.resume] βœ…οΈ propagating Applicative.{?u.4, ?u.4} Option'.{?u.4} to subgoal Applicative.{?u.4, ?u.4} Option'.{?u.4} of Seq.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.resume] size: 2 [Meta.synthInstance.answer] βœ…οΈ Seq.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance] result @Applicative.toSeq.{?u.4, ?u.4} Option'.{?u.4} (@Monad.toApplicative.{?u.4, ?u.4} Option'.{?u.4} instMonadOption'.{?u.4}) [Meta.synthInstance] βœ…οΈ SeqLeft.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance] βœ…οΈ new goal SeqLeft.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.instances] #[@Applicative.toSeqLeft.{?u.7, ?u.8}] [Meta.synthInstance.apply] βœ…οΈ apply @Applicative.toSeqLeft.{?u.4, ?u.4} to SeqLeft.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.tryResolve] βœ…οΈ SeqLeft.{?u.4, ?u.4} Option'.{?u.4} β‰Ÿ SeqLeft.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance] βœ…οΈ new goal Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.instances] #[@Monad.toApplicative.{?u.9, ?u.10}, @Alternative.toApplicative.{?u.11, ?u.12}] [Meta.synthInstance.apply] βœ…οΈ apply @Alternative.toApplicative.{?u.4, ?u.4} to Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.4, ?u.4} Option'.{?u.4} β‰Ÿ Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance] βœ…οΈ no instances for Alternative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.instances] #[] [Meta.synthInstance.apply] βœ…οΈ apply @Monad.toApplicative.{?u.4, ?u.4} to Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.4, ?u.4} Option'.{?u.4} β‰Ÿ Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance] βœ…οΈ new goal Monad.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.instances] #[instMonadOption'.{?u.13}] [Meta.synthInstance.apply] βœ…οΈ apply instMonadOption'.{?u.4} to Monad.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.tryResolve] βœ…οΈ Monad.{?u.4, ?u.4} Option'.{?u.4} β‰Ÿ Monad.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.answer] βœ…οΈ Monad.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.resume] βœ…οΈ propagating Monad.{?u.4, ?u.4} Option'.{?u.4} to subgoal Monad.{?u.4, ?u.4} Option'.{?u.4} of Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.resume] size: 1 [Meta.synthInstance.answer] βœ…οΈ Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.resume] βœ…οΈ propagating Applicative.{?u.4, ?u.4} Option'.{?u.4} to subgoal Applicative.{?u.4, ?u.4} Option'.{?u.4} of SeqLeft.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.resume] size: 2 [Meta.synthInstance.answer] βœ…οΈ SeqLeft.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance] result @Applicative.toSeqLeft.{?u.4, ?u.4} Option'.{?u.4} (@Monad.toApplicative.{?u.4, ?u.4} Option'.{?u.4} instMonadOption'.{?u.4}) [Meta.synthInstance] βœ…οΈ SeqRight.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance] βœ…οΈ new goal SeqRight.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.instances] #[@Applicative.toSeqRight.{?u.7, ?u.8}] [Meta.synthInstance.apply] βœ…οΈ apply @Applicative.toSeqRight.{?u.4, ?u.4} to SeqRight.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.tryResolve] βœ…οΈ SeqRight.{?u.4, ?u.4} Option'.{?u.4} β‰Ÿ SeqRight.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance] βœ…οΈ new goal Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.instances] #[@Monad.toApplicative.{?u.9, ?u.10}, @Alternative.toApplicative.{?u.11, ?u.12}] [Meta.synthInstance.apply] βœ…οΈ apply @Alternative.toApplicative.{?u.4, ?u.4} to Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.4, ?u.4} Option'.{?u.4} β‰Ÿ Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance] βœ…οΈ no instances for Alternative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.instances] #[] [Meta.synthInstance.apply] βœ…οΈ apply @Monad.toApplicative.{?u.4, ?u.4} to Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.4, ?u.4} Option'.{?u.4} β‰Ÿ Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance] βœ…οΈ new goal Monad.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.instances] #[instMonadOption'.{?u.13}] [Meta.synthInstance.apply] βœ…οΈ apply instMonadOption'.{?u.4} to Monad.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.tryResolve] βœ…οΈ Monad.{?u.4, ?u.4} Option'.{?u.4} β‰Ÿ Monad.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.answer] βœ…οΈ Monad.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.resume] βœ…οΈ propagating Monad.{?u.4, ?u.4} Option'.{?u.4} to subgoal Monad.{?u.4, ?u.4} Option'.{?u.4} of Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.resume] size: 1 [Meta.synthInstance.answer] βœ…οΈ Applicative.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.resume] βœ…οΈ propagating Applicative.{?u.4, ?u.4} Option'.{?u.4} to subgoal Applicative.{?u.4, ?u.4} Option'.{?u.4} of SeqRight.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance.resume] size: 2 [Meta.synthInstance.answer] βœ…οΈ SeqRight.{?u.4, ?u.4} Option'.{?u.4} [Meta.synthInstance] result @Applicative.toSeqRight.{?u.4, ?u.4} Option'.{?u.4} (@Monad.toApplicative.{?u.4, ?u.4} Option'.{?u.4} instMonadOption'.{?u.4})
Lean.Elab.Term.elabLetDecl : Lean.Elab.Term.TermElab
Lean.Elab.Term.elabLetDecl: Lean.Elab.Term.TermElab
Lean.Elab.Term.elabLetDecl
Lean.Elab.Term.elabLetRec : Lean.Elab.Term.TermElab
Lean.Elab.Term.elabLetRec: Lean.Elab.Term.TermElab
Lean.Elab.Term.elabLetRec
Lean.Elab.Structural.preprocess (e : Lean.Expr) (recFnNames : Array.{0} Lean.Name) (numFixedParams : Nat) : Lean.Core.CoreM Lean.Expr
Lean.Elab.Structural.preprocess: (e : Lean.Expr) β†’ (recFnNames : Array.{0} Lean.Name) β†’ (numFixedParams : Nat) β†’ Lean.Core.CoreM Lean.Expr
Lean.Elab.Structural.preprocess
Lean.Elab.Command.elabDeclaration : Lean.Elab.Command.CommandElab
Lean.Elab.Command.elabDeclaration: Lean.Elab.Command.CommandElab
Lean.Elab.Command.elabDeclaration