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:
Style: centered; floating; windowed.
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: (Type u_1 β†’ Type u_1) β†’ Type (u_1 + 1)
Monad
Option': Type u_1 β†’ Type u_1
Option'
[Meta.synthInstance] ❌️ Functor.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance] new goal Functor.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance.instances] #[@Applicative.toFunctor.{?u.1003, ?u.1004}] [Meta.synthInstance] βœ…οΈ apply @Applicative.toFunctor.{?u.985, ?u.985} to Functor.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance.tryResolve] βœ…οΈ Functor.{?u.985, ?u.985} Option'.{?u.985} β‰Ÿ Functor.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance] new goal Applicative.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance.instances] #[@Monad.toApplicative.{?u.1010, ?u.1011}, @Alternative.toApplicative.{?u.1012, ?u.1013}] [Meta.synthInstance] βœ…οΈ apply @Alternative.toApplicative.{?u.985, ?u.985} to Applicative.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.985, ?u.985} Option'.{?u.985} β‰Ÿ Applicative.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance] no instances for Alternative.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance.instances] #[] [Meta.synthInstance] βœ…οΈ apply @Monad.toApplicative.{?u.985, ?u.985} to Applicative.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.985, ?u.985} Option'.{?u.985} β‰Ÿ Applicative.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance] no instances for Monad.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance.instances] #[] [Meta.synthInstance] result <not-available> [Meta.synthInstance] ❌️ Seq.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance] new goal Seq.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance.instances] #[@Applicative.toSeq.{?u.1048, ?u.1049}] [Meta.synthInstance] βœ…οΈ apply @Applicative.toSeq.{?u.985, ?u.985} to Seq.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance.tryResolve] βœ…οΈ Seq.{?u.985, ?u.985} Option'.{?u.985} β‰Ÿ Seq.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance] new goal Applicative.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance.instances] #[@Monad.toApplicative.{?u.1055, ?u.1056}, @Alternative.toApplicative.{?u.1057, ?u.1058}] [Meta.synthInstance] βœ…οΈ apply @Alternative.toApplicative.{?u.985, ?u.985} to Applicative.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.985, ?u.985} Option'.{?u.985} β‰Ÿ Applicative.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance] no instances for Alternative.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance.instances] #[] [Meta.synthInstance] βœ…οΈ apply @Monad.toApplicative.{?u.985, ?u.985} to Applicative.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.985, ?u.985} Option'.{?u.985} β‰Ÿ Applicative.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance] no instances for Monad.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance.instances] #[] [Meta.synthInstance] result <not-available> [Meta.synthInstance] ❌️ SeqLeft.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance] new goal SeqLeft.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance.instances] #[@Applicative.toSeqLeft.{?u.1073, ?u.1074}] [Meta.synthInstance] βœ…οΈ apply @Applicative.toSeqLeft.{?u.985, ?u.985} to SeqLeft.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance.tryResolve] βœ…οΈ SeqLeft.{?u.985, ?u.985} Option'.{?u.985} β‰Ÿ SeqLeft.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance] new goal Applicative.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance.instances] #[@Monad.toApplicative.{?u.1080, ?u.1081}, @Alternative.toApplicative.{?u.1082, ?u.1083}] [Meta.synthInstance] βœ…οΈ apply @Alternative.toApplicative.{?u.985, ?u.985} to Applicative.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.985, ?u.985} Option'.{?u.985} β‰Ÿ Applicative.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance] no instances for Alternative.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance.instances] #[] [Meta.synthInstance] βœ…οΈ apply @Monad.toApplicative.{?u.985, ?u.985} to Applicative.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.985, ?u.985} Option'.{?u.985} β‰Ÿ Applicative.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance] no instances for Monad.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance.instances] #[] [Meta.synthInstance] result <not-available> [Meta.synthInstance] ❌️ SeqRight.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance] new goal SeqRight.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance.instances] #[@Applicative.toSeqRight.{?u.1098, ?u.1099}] [Meta.synthInstance] βœ…οΈ apply @Applicative.toSeqRight.{?u.985, ?u.985} to SeqRight.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance.tryResolve] βœ…οΈ SeqRight.{?u.985, ?u.985} Option'.{?u.985} β‰Ÿ SeqRight.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance] new goal Applicative.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance.instances] #[@Monad.toApplicative.{?u.1105, ?u.1106}, @Alternative.toApplicative.{?u.1107, ?u.1108}] [Meta.synthInstance] βœ…οΈ apply @Alternative.toApplicative.{?u.985, ?u.985} to Applicative.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.985, ?u.985} Option'.{?u.985} β‰Ÿ Applicative.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance] no instances for Alternative.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance.instances] #[] [Meta.synthInstance] βœ…οΈ apply @Monad.toApplicative.{?u.985, ?u.985} to Applicative.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.985, ?u.985} Option'.{?u.985} β‰Ÿ Applicative.{?u.985, ?u.985} Option'.{?u.985} [Meta.synthInstance] no instances for Monad.{?u.985, ?u.985} Option'.{?u.985} [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 @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 -/
@[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.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance] new goal Functor.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.instances] #[@Applicative.toFunctor.{?u.1478, ?u.1479}] [Meta.synthInstance] βœ…οΈ apply @Applicative.toFunctor.{?u.1460, ?u.1460} to Functor.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.tryResolve] βœ…οΈ Functor.{?u.1460, ?u.1460} Option'.{?u.1460} β‰Ÿ Functor.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance] new goal Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.instances] #[@Monad.toApplicative.{?u.1485, ?u.1486}, @Alternative.toApplicative.{?u.1487, ?u.1488}] [Meta.synthInstance] βœ…οΈ apply @Alternative.toApplicative.{?u.1460, ?u.1460} to Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} β‰Ÿ Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance] no instances for Alternative.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.instances] #[] [Meta.synthInstance] βœ…οΈ apply @Monad.toApplicative.{?u.1460, ?u.1460} to Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} β‰Ÿ Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance] new goal Monad.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.instances] #[instMonadOption'.{?u.1499}] [Meta.synthInstance] βœ…οΈ apply instMonadOption'.{?u.1460} to Monad.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.tryResolve] βœ…οΈ Monad.{?u.1460, ?u.1460} Option'.{?u.1460} β‰Ÿ Monad.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.answer] βœ…οΈ Monad.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.resume] propagating Monad.{?u.1460, ?u.1460} Option'.{?u.1460} to subgoal Monad.{?u.1460, ?u.1460} Option'.{?u.1460} of Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.resume] size: 1 [Meta.synthInstance.answer] βœ…οΈ Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.resume] propagating Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} to subgoal Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} of Functor.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.resume] size: 2 [Meta.synthInstance.answer] βœ…οΈ Functor.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance] result @Applicative.toFunctor.{?u.1460, ?u.1460} Option'.{?u.1460} (@Monad.toApplicative.{?u.1460, ?u.1460} Option'.{?u.1460} instMonadOption'.{?u.1460}) [Meta.synthInstance] βœ…οΈ Seq.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance] new goal Seq.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.instances] #[@Applicative.toSeq.{?u.1520, ?u.1521}] [Meta.synthInstance] βœ…οΈ apply @Applicative.toSeq.{?u.1460, ?u.1460} to Seq.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.tryResolve] βœ…οΈ Seq.{?u.1460, ?u.1460} Option'.{?u.1460} β‰Ÿ Seq.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance] new goal Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.instances] #[@Monad.toApplicative.{?u.1527, ?u.1528}, @Alternative.toApplicative.{?u.1529, ?u.1530}] [Meta.synthInstance] βœ…οΈ apply @Alternative.toApplicative.{?u.1460, ?u.1460} to Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} β‰Ÿ Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance] no instances for Alternative.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.instances] #[] [Meta.synthInstance] βœ…οΈ apply @Monad.toApplicative.{?u.1460, ?u.1460} to Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} β‰Ÿ Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance] new goal Monad.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.instances] #[instMonadOption'.{?u.1537}] [Meta.synthInstance] βœ…οΈ apply instMonadOption'.{?u.1460} to Monad.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.tryResolve] βœ…οΈ Monad.{?u.1460, ?u.1460} Option'.{?u.1460} β‰Ÿ Monad.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.answer] βœ…οΈ Monad.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.resume] propagating Monad.{?u.1460, ?u.1460} Option'.{?u.1460} to subgoal Monad.{?u.1460, ?u.1460} Option'.{?u.1460} of Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.resume] size: 1 [Meta.synthInstance.answer] βœ…οΈ Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.resume] propagating Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} to subgoal Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} of Seq.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.resume] size: 2 [Meta.synthInstance.answer] βœ…οΈ Seq.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance] result @Applicative.toSeq.{?u.1460, ?u.1460} Option'.{?u.1460} (@Monad.toApplicative.{?u.1460, ?u.1460} Option'.{?u.1460} instMonadOption'.{?u.1460}) [Meta.synthInstance] βœ…οΈ SeqLeft.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance] new goal SeqLeft.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.instances] #[@Applicative.toSeqLeft.{?u.1539, ?u.1540}] [Meta.synthInstance] βœ…οΈ apply @Applicative.toSeqLeft.{?u.1460, ?u.1460} to SeqLeft.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.tryResolve] βœ…οΈ SeqLeft.{?u.1460, ?u.1460} Option'.{?u.1460} β‰Ÿ SeqLeft.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance] new goal Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.instances] #[@Monad.toApplicative.{?u.1546, ?u.1547}, @Alternative.toApplicative.{?u.1548, ?u.1549}] [Meta.synthInstance] βœ…οΈ apply @Alternative.toApplicative.{?u.1460, ?u.1460} to Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} β‰Ÿ Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance] no instances for Alternative.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.instances] #[] [Meta.synthInstance] βœ…οΈ apply @Monad.toApplicative.{?u.1460, ?u.1460} to Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} β‰Ÿ Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance] new goal Monad.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.instances] #[instMonadOption'.{?u.1556}] [Meta.synthInstance] βœ…οΈ apply instMonadOption'.{?u.1460} to Monad.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.tryResolve] βœ…οΈ Monad.{?u.1460, ?u.1460} Option'.{?u.1460} β‰Ÿ Monad.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.answer] βœ…οΈ Monad.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.resume] propagating Monad.{?u.1460, ?u.1460} Option'.{?u.1460} to subgoal Monad.{?u.1460, ?u.1460} Option'.{?u.1460} of Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.resume] size: 1 [Meta.synthInstance.answer] βœ…οΈ Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.resume] propagating Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} to subgoal Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} of SeqLeft.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.resume] size: 2 [Meta.synthInstance.answer] βœ…οΈ SeqLeft.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance] result @Applicative.toSeqLeft.{?u.1460, ?u.1460} Option'.{?u.1460} (@Monad.toApplicative.{?u.1460, ?u.1460} Option'.{?u.1460} instMonadOption'.{?u.1460}) [Meta.synthInstance] βœ…οΈ SeqRight.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance] new goal SeqRight.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.instances] #[@Applicative.toSeqRight.{?u.1558, ?u.1559}] [Meta.synthInstance] βœ…οΈ apply @Applicative.toSeqRight.{?u.1460, ?u.1460} to SeqRight.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.tryResolve] βœ…οΈ SeqRight.{?u.1460, ?u.1460} Option'.{?u.1460} β‰Ÿ SeqRight.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance] new goal Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.instances] #[@Monad.toApplicative.{?u.1565, ?u.1566}, @Alternative.toApplicative.{?u.1567, ?u.1568}] [Meta.synthInstance] βœ…οΈ apply @Alternative.toApplicative.{?u.1460, ?u.1460} to Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} β‰Ÿ Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance] no instances for Alternative.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.instances] #[] [Meta.synthInstance] βœ…οΈ apply @Monad.toApplicative.{?u.1460, ?u.1460} to Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.tryResolve] βœ…οΈ Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} β‰Ÿ Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance] new goal Monad.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.instances] #[instMonadOption'.{?u.1575}] [Meta.synthInstance] βœ…οΈ apply instMonadOption'.{?u.1460} to Monad.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.tryResolve] βœ…οΈ Monad.{?u.1460, ?u.1460} Option'.{?u.1460} β‰Ÿ Monad.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.answer] βœ…οΈ Monad.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.resume] propagating Monad.{?u.1460, ?u.1460} Option'.{?u.1460} to subgoal Monad.{?u.1460, ?u.1460} Option'.{?u.1460} of Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.resume] size: 1 [Meta.synthInstance.answer] βœ…οΈ Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.resume] propagating Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} to subgoal Applicative.{?u.1460, ?u.1460} Option'.{?u.1460} of SeqRight.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance.resume] size: 2 [Meta.synthInstance.answer] βœ…οΈ SeqRight.{?u.1460, ?u.1460} Option'.{?u.1460} [Meta.synthInstance] result @Applicative.toSeqRight.{?u.1460, ?u.1460} Option'.{?u.1460} (@Monad.toApplicative.{?u.1460, ?u.1460} Option'.{?u.1460} instMonadOption'.{?u.1460})
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.elabDeclaration : Lean.Elab.Command.CommandElab
Lean.Elab.Command.elabDeclaration: Lean.Elab.Command.CommandElab
Lean.Elab.Command.elabDeclaration