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: 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

error: fields missing: 'map', 'mapConst', 'seq', 'seqLeft'

Error: ❌️ Docstring on `#guard_msgs` does not match generated message: error: fields missing: 'map', 'mapConst', 'seq', 'seqLeft'
(error, drop info) in
instance: Monad.{u_1, u_1} Option'.{u_1}
instance
:
Monad: (Type u_1 β†’ Type u_1) β†’ Type (u_1 + 1)
Monad
Option': Type u_1 β†’ Type u_1
Option'
Error: fields missing: 'map', 'mapConst', 'seq', 'seqLeft'
[Meta.synthInstance] ❌️ Functor.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance] new goal Functor.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance.instances] #[@Applicative.toFunctor.{?u.949, ?u.950}] [Meta.synthInstance] βœ…οΈ apply @Applicative.toFunctor.{?u.931, ?u.931} to Functor.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance.tryResolve] βœ…οΈ Functor.{?u.931, ?u.931} Option'.{?u.931} β‰Ÿ Functor.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance] new goal Applicative.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance.instances] #[@Monad.toApplicative.{?u.956, ?u.957}, @Alternative.toApplicative.{?u.958, ?u.959}] [Meta.synthInstance] βœ…οΈ apply @Alternative.toApplicative.{?u.931, ?u.931} to Applicative.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.931, ?u.931} Option'.{?u.931} β‰Ÿ Applicative.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance] no instances for Alternative.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance.instances] #[] [Meta.synthInstance] βœ…οΈ apply @Monad.toApplicative.{?u.931, ?u.931} to Applicative.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.931, ?u.931} Option'.{?u.931} β‰Ÿ Applicative.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance] no instances for Monad.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance.instances] #[] [Meta.synthInstance] result <not-available> [Meta.synthInstance] ❌️ Seq.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance] new goal Seq.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance.instances] #[@Applicative.toSeq.{?u.992, ?u.993}] [Meta.synthInstance] βœ…οΈ apply @Applicative.toSeq.{?u.931, ?u.931} to Seq.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance.tryResolve] βœ…οΈ Seq.{?u.931, ?u.931} Option'.{?u.931} β‰Ÿ Seq.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance] new goal Applicative.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance.instances] #[@Monad.toApplicative.{?u.999, ?u.1000}, @Alternative.toApplicative.{?u.1001, ?u.1002}] [Meta.synthInstance] βœ…οΈ apply @Alternative.toApplicative.{?u.931, ?u.931} to Applicative.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.931, ?u.931} Option'.{?u.931} β‰Ÿ Applicative.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance] no instances for Alternative.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance.instances] #[] [Meta.synthInstance] βœ…οΈ apply @Monad.toApplicative.{?u.931, ?u.931} to Applicative.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.931, ?u.931} Option'.{?u.931} β‰Ÿ Applicative.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance] no instances for Monad.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance.instances] #[] [Meta.synthInstance] result <not-available> [Meta.synthInstance] ❌️ SeqLeft.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance] new goal SeqLeft.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance.instances] #[@Applicative.toSeqLeft.{?u.1017, ?u.1018}] [Meta.synthInstance] βœ…οΈ apply @Applicative.toSeqLeft.{?u.931, ?u.931} to SeqLeft.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance.tryResolve] βœ…οΈ SeqLeft.{?u.931, ?u.931} Option'.{?u.931} β‰Ÿ SeqLeft.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance] new goal Applicative.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance.instances] #[@Monad.toApplicative.{?u.1024, ?u.1025}, @Alternative.toApplicative.{?u.1026, ?u.1027}] [Meta.synthInstance] βœ…οΈ apply @Alternative.toApplicative.{?u.931, ?u.931} to Applicative.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.931, ?u.931} Option'.{?u.931} β‰Ÿ Applicative.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance] no instances for Alternative.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance.instances] #[] [Meta.synthInstance] βœ…οΈ apply @Monad.toApplicative.{?u.931, ?u.931} to Applicative.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.931, ?u.931} Option'.{?u.931} β‰Ÿ Applicative.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance] no instances for Monad.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance.instances] #[] [Meta.synthInstance] result <not-available> [Meta.synthInstance] ❌️ SeqRight.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance] new goal SeqRight.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance.instances] #[@Applicative.toSeqRight.{?u.1042, ?u.1043}] [Meta.synthInstance] βœ…οΈ apply @Applicative.toSeqRight.{?u.931, ?u.931} to SeqRight.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance.tryResolve] βœ…οΈ SeqRight.{?u.931, ?u.931} Option'.{?u.931} β‰Ÿ SeqRight.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance] new goal Applicative.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance.instances] #[@Monad.toApplicative.{?u.1049, ?u.1050}, @Alternative.toApplicative.{?u.1051, ?u.1052}] [Meta.synthInstance] βœ…οΈ apply @Alternative.toApplicative.{?u.931, ?u.931} to Applicative.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.931, ?u.931} Option'.{?u.931} β‰Ÿ Applicative.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance] no instances for Alternative.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance.instances] #[] [Meta.synthInstance] βœ…οΈ apply @Monad.toApplicative.{?u.931, ?u.931} to Applicative.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.931, ?u.931} Option'.{?u.931} β‰Ÿ Applicative.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance] no instances for Monad.{?u.931, ?u.931} Option'.{?u.931} [Meta.synthInstance.instances] #[] [Meta.synthInstance] result <not-available>
variable (
logged: Type
logged
:
Type: Type 1
Type
) in
[Meta.synthInstance] βœ…οΈ Monad.{0, 0} (WithLog logged) [Meta.synthInstance] new goal Monad.{0, 0} (WithLog logged) [Meta.synthInstance.instances] #[@instMonadWithLog] [Meta.synthInstance] βœ…οΈ 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
@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 -/
@[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
Applicative.map._default: {f : Type u_1 β†’ Type u_2} β†’ Pure.{u_1, u_2} f β†’ Seq.{u_1, u_2} f β†’ {Ξ± Ξ² : Type u_1} β†’ (Ξ± β†’ Ξ²) β†’ 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 -/
@[reducible] def Monad.map._default.{u_1, u_2} : {m : Type u_1 β†’ Type u_2} β†’ Applicative.{u_1, u_2} m β†’ Bind.{u_1, u_2} m β†’ {Ξ± Ξ² : Type u_1} β†’ (Ξ± β†’ Ξ²) β†’ m Ξ± β†’ m Ξ² := fun {m : Type u_1 β†’ Type u_2} (toApplicative : Applicative.{u_1, u_2} m) (toBind : Bind.{u_1, u_2} m) => @id.{max (u_1 + 2) (u_2 + 1)} ({Ξ± Ξ² : Type u_1} β†’ (Ξ± β†’ Ξ²) β†’ m Ξ± β†’ m Ξ²) fun {Ξ± Ξ² : Type u_1} (f : Ξ± β†’ Ξ²) (x : m Ξ±) => @Bind.bind.{u_1, u_2} m toBind Ξ± Ξ² x (@Function.comp.{u_1 + 1, u_1 + 1, u_2 + 1} Ξ± Ξ² (m Ξ²) (@Pure.pure.{u_1, u_2} m (@Applicative.toPure.{u_1, u_2} m toApplicative) Ξ²) f)
Monad.map._default: {m : Type u_1 β†’ Type u_2} β†’ Applicative.{u_1, u_2} m β†’ Bind.{u_1, u_2} m β†’ {Ξ± Ξ² : Type u_1} β†’ (Ξ± β†’ Ξ²) β†’ 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: (Type u_1 β†’ Type u_1) β†’ Type (u_1 + 1)
Monad
Option': Type u_1 β†’ Type u_1
Option'
[Meta.synthInstance] βœ…οΈ Functor.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance] new goal Functor.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.instances] #[@Applicative.toFunctor.{?u.1507, ?u.1508}] [Meta.synthInstance] βœ…οΈ apply @Applicative.toFunctor.{?u.1489, ?u.1489} to Functor.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.tryResolve] βœ…οΈ Functor.{?u.1489, ?u.1489} Option'.{?u.1489} β‰Ÿ Functor.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance] new goal Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.instances] #[@Monad.toApplicative.{?u.1514, ?u.1515}, @Alternative.toApplicative.{?u.1516, ?u.1517}] [Meta.synthInstance] βœ…οΈ apply @Alternative.toApplicative.{?u.1489, ?u.1489} to Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} β‰Ÿ Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance] no instances for Alternative.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.instances] #[] [Meta.synthInstance] βœ…οΈ apply @Monad.toApplicative.{?u.1489, ?u.1489} to Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} β‰Ÿ Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance] new goal Monad.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.instances] #[instMonadOption'.{?u.1526}] [Meta.synthInstance] βœ…οΈ apply instMonadOption'.{?u.1489} to Monad.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.tryResolve] βœ…οΈ Monad.{?u.1489, ?u.1489} Option'.{?u.1489} β‰Ÿ Monad.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.answer] βœ…οΈ Monad.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.resume] propagating Monad.{?u.1489, ?u.1489} Option'.{?u.1489} to subgoal Monad.{?u.1489, ?u.1489} Option'.{?u.1489} of Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.resume] size: 1 [Meta.synthInstance.answer] βœ…οΈ Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.resume] propagating Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} to subgoal Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} of Functor.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.resume] size: 2 [Meta.synthInstance.answer] βœ…οΈ Functor.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance] result @Applicative.toFunctor.{?u.1489, ?u.1489} Option'.{?u.1489} (@Monad.toApplicative.{?u.1489, ?u.1489} Option'.{?u.1489} instMonadOption'.{?u.1489}) [Meta.synthInstance] βœ…οΈ Seq.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance] new goal Seq.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.instances] #[@Applicative.toSeq.{?u.1545, ?u.1546}] [Meta.synthInstance] βœ…οΈ apply @Applicative.toSeq.{?u.1489, ?u.1489} to Seq.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.tryResolve] βœ…οΈ Seq.{?u.1489, ?u.1489} Option'.{?u.1489} β‰Ÿ Seq.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance] new goal Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.instances] #[@Monad.toApplicative.{?u.1552, ?u.1553}, @Alternative.toApplicative.{?u.1554, ?u.1555}] [Meta.synthInstance] βœ…οΈ apply @Alternative.toApplicative.{?u.1489, ?u.1489} to Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} β‰Ÿ Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance] no instances for Alternative.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.instances] #[] [Meta.synthInstance] βœ…οΈ apply @Monad.toApplicative.{?u.1489, ?u.1489} to Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} β‰Ÿ Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance] new goal Monad.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.instances] #[instMonadOption'.{?u.1562}] [Meta.synthInstance] βœ…οΈ apply instMonadOption'.{?u.1489} to Monad.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.tryResolve] βœ…οΈ Monad.{?u.1489, ?u.1489} Option'.{?u.1489} β‰Ÿ Monad.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.answer] βœ…οΈ Monad.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.resume] propagating Monad.{?u.1489, ?u.1489} Option'.{?u.1489} to subgoal Monad.{?u.1489, ?u.1489} Option'.{?u.1489} of Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.resume] size: 1 [Meta.synthInstance.answer] βœ…οΈ Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.resume] propagating Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} to subgoal Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} of Seq.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.resume] size: 2 [Meta.synthInstance.answer] βœ…οΈ Seq.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance] result @Applicative.toSeq.{?u.1489, ?u.1489} Option'.{?u.1489} (@Monad.toApplicative.{?u.1489, ?u.1489} Option'.{?u.1489} instMonadOption'.{?u.1489}) [Meta.synthInstance] βœ…οΈ SeqLeft.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance] new goal SeqLeft.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.instances] #[@Applicative.toSeqLeft.{?u.1564, ?u.1565}] [Meta.synthInstance] βœ…οΈ apply @Applicative.toSeqLeft.{?u.1489, ?u.1489} to SeqLeft.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.tryResolve] βœ…οΈ SeqLeft.{?u.1489, ?u.1489} Option'.{?u.1489} β‰Ÿ SeqLeft.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance] new goal Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.instances] #[@Monad.toApplicative.{?u.1571, ?u.1572}, @Alternative.toApplicative.{?u.1573, ?u.1574}] [Meta.synthInstance] βœ…οΈ apply @Alternative.toApplicative.{?u.1489, ?u.1489} to Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} β‰Ÿ Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance] no instances for Alternative.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.instances] #[] [Meta.synthInstance] βœ…οΈ apply @Monad.toApplicative.{?u.1489, ?u.1489} to Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} β‰Ÿ Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance] new goal Monad.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.instances] #[instMonadOption'.{?u.1581}] [Meta.synthInstance] βœ…οΈ apply instMonadOption'.{?u.1489} to Monad.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.tryResolve] βœ…οΈ Monad.{?u.1489, ?u.1489} Option'.{?u.1489} β‰Ÿ Monad.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.answer] βœ…οΈ Monad.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.resume] propagating Monad.{?u.1489, ?u.1489} Option'.{?u.1489} to subgoal Monad.{?u.1489, ?u.1489} Option'.{?u.1489} of Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.resume] size: 1 [Meta.synthInstance.answer] βœ…οΈ Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.resume] propagating Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} to subgoal Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} of SeqLeft.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.resume] size: 2 [Meta.synthInstance.answer] βœ…οΈ SeqLeft.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance] result @Applicative.toSeqLeft.{?u.1489, ?u.1489} Option'.{?u.1489} (@Monad.toApplicative.{?u.1489, ?u.1489} Option'.{?u.1489} instMonadOption'.{?u.1489}) [Meta.synthInstance] βœ…οΈ SeqRight.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance] new goal SeqRight.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.instances] #[@Applicative.toSeqRight.{?u.1583, ?u.1584}] [Meta.synthInstance] βœ…οΈ apply @Applicative.toSeqRight.{?u.1489, ?u.1489} to SeqRight.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.tryResolve] βœ…οΈ SeqRight.{?u.1489, ?u.1489} Option'.{?u.1489} β‰Ÿ SeqRight.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance] new goal Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.instances] #[@Monad.toApplicative.{?u.1590, ?u.1591}, @Alternative.toApplicative.{?u.1592, ?u.1593}] [Meta.synthInstance] βœ…οΈ apply @Alternative.toApplicative.{?u.1489, ?u.1489} to Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} β‰Ÿ Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance] no instances for Alternative.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.instances] #[] [Meta.synthInstance] βœ…οΈ apply @Monad.toApplicative.{?u.1489, ?u.1489} to Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} β‰Ÿ Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance] new goal Monad.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.instances] #[instMonadOption'.{?u.1600}] [Meta.synthInstance] βœ…οΈ apply instMonadOption'.{?u.1489} to Monad.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.tryResolve] βœ…οΈ Monad.{?u.1489, ?u.1489} Option'.{?u.1489} β‰Ÿ Monad.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.answer] βœ…οΈ Monad.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.resume] propagating Monad.{?u.1489, ?u.1489} Option'.{?u.1489} to subgoal Monad.{?u.1489, ?u.1489} Option'.{?u.1489} of Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.resume] size: 1 [Meta.synthInstance.answer] βœ…οΈ Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.resume] propagating Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} to subgoal Applicative.{?u.1489, ?u.1489} Option'.{?u.1489} of SeqRight.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance.resume] size: 2 [Meta.synthInstance.answer] βœ…οΈ SeqRight.{?u.1489, ?u.1489} Option'.{?u.1489} [Meta.synthInstance] result @Applicative.toSeqRight.{?u.1489, ?u.1489} Option'.{?u.1489} (@Monad.toApplicative.{?u.1489, ?u.1489} Option'.{?u.1489} instMonadOption'.{?u.1489})
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) : Lean.Core.CoreM Lean.Expr
Lean.Elab.Structural.preprocess: Lean.Expr β†’ Array.{0} Lean.Name β†’ Lean.Core.CoreM Lean.Expr
Lean.Elab.Structural.preprocess
Lean.Elab.Command.elabStructure (modifiers : Lean.Elab.Modifiers) (stx : Lean.Syntax) : Lean.Elab.Command.CommandElabM Unit
Lean.Elab.Command.elabStructure: Lean.Elab.Modifiers β†’ Lean.Syntax β†’ Lean.Elab.Command.CommandElabM Unit
Lean.Elab.Command.elabStructure