import Lean.Elab
structure WithLog : Type β Type β Type
WithLog ( logged : Type ) ( Ξ± : Type ) where
log : {logged Ξ± : Type} β WithLog logged Ξ± β List logged
log : List logged
val : {logged Ξ± : Type} β WithLog logged Ξ± β Ξ±
val : Ξ±
instance : {logged : Type} β Monad (WithLog logged)
instance : Monad : (Type β Type) β Type 1
Monad <| WithLog : Type β Type β Type
WithLog logged where
pure 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'
# guard_msgsError: βοΈ 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' where
pure := Option.some : {Ξ± : Type u_1} β Ξ± β Option.{u_1} Ξ±
Option.some
bind a f : Ξ±β β Option'.{u_1} Ξ²β
f :=
let b := Option.bind : {Ξ± Ξ² : Type u_1} β Option.{u_1} Ξ± β (Ξ± β Option.{u_1} Ξ²) β Option.{u_1} Ξ²
Option.bind a f : Ξ±β β Option'.{u_1} Ξ²β
f
b 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 ) in
# synth Monad : (Type β Type) β Type 1
Monad <| WithLog : Type β Type β Type
WithLog 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 @ 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
-/
#print @[ 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
-/
#print @[ 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' where
pure := Option.some : {Ξ± : Type u_1} β Ξ± β Option.{u_1} Ξ±
Option.some
bind a f : Ξ±β β Option'.{u_1} Ξ²β
f :=
let c :=
let rec b := Option.bind : {Ξ± Ξ² : Type u_1} β Option.{u_1} Ξ± β (Ξ± β Option.{u_1} Ξ²) β Option.{u_1} Ξ²
Option.bind a f : Ξ±β β Option'.{u_1} Ξ²β
f
b
c [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 })
#check Lean.Elab.Term.elabLetDecl : Lean.Elab.Term.TermElab Lean.Elab.Term.elabLetDecl : Lean.Elab.Term.TermElab
Lean.Elab.Term.elabLetDecl
#check Lean.Elab.Term.elabLetRec : Lean.Elab.Term.TermElab Lean.Elab.Term.elabLetRec : Lean.Elab.Term.TermElab
Lean.Elab.Term.elabLetRec
#check 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
#check 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