Built with doc-gen4, running Lean4. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑Ctrl+↓to navigate, Ctrl+🖱️to focus. On Mac, use Cmdinstead of Ctrl.
import Pretty.Defs.Basic
import Pretty.Defs.MeasureSetOp
import Pretty.Supports.Dedup

section Resolve 

variable (
F: Factory α
F
:
Factory: TypeType
Factory
α: ?m.3
α
) mutual inductive
Resolve: {α : Type} → Factory αDocMeasureSetProp
Resolve
:
Doc: Type
Doc
: Type
: Type
→ @
MeasureSet: {α : Type} → Type
MeasureSet
α: ?m.9
α
Prop: Type
Prop
where |
line_taint: ∀ {α : Type} {F : Factory α} {c i : } {m : Meas}, c > F.W i > F.WMeasRender F Doc.nl c i mResolve F Doc.nl c i (MeasureSet.tainted m)
line_taint
(
h_bad: c > F.W i > F.W
h_bad
:
c: ?m.71
c
>
F: Factory α
F
.
W: {α : Type} → Factory α
W
i: ?m.84
i
>
F: Factory α
F
.
W: {α : Type} → Factory α
W
) (
h: MeasRender F Doc.nl c i m
h
:
MeasRender: {α : Type} → Factory αDocMeasProp
MeasRender
F: Factory α
F
Doc.nl: Doc
Doc.nl
c: ?m.71
c
i: ?m.84
i
m: ?m.99
m
) :
Resolve: DocMeasureSetProp
Resolve
Doc.nl: Doc
Doc.nl
c: ?m.71
c
i: ?m.84
i
(
MeasureSet.tainted: {α : Type} → MeasMeasureSet
MeasureSet.tainted
m: ?m.99
m
) |
line_set: ∀ {α : Type} {F : Factory α} {c i : } {m : Meas}, c F.Wi F.WMeasRender F Doc.nl c i mResolve F Doc.nl c i (MeasureSet.set [m] (_ : ¬[m] = []))
line_set
(
h_c: c F.W
h_c
:
c: ?m.126
c
F: Factory α
F
.
W: {α : Type} → Factory α
W
) (
h_i: i F.W
h_i
:
i: ?m.140
i
F: Factory α
F
.
W: {α : Type} → Factory α
W
) (
h: MeasRender F Doc.nl c i m
h
:
MeasRender: {α : Type} → Factory αDocMeasProp
MeasRender
F: Factory α
F
Doc.nl: Doc
Doc.nl
c: ?m.126
c
i: ?m.140
i
m: ?m.157
m
) :
Resolve: DocMeasureSetProp
Resolve
Doc.nl: Doc
Doc.nl
c: ?m.126
c
i: ?m.140
i
(
MeasureSet.set: {α : Type} → (ms : List Meas) → ms []MeasureSet
MeasureSet.set
[
m: ?m.157
m
] (

Goals accomplished! 🐙
α: Type

F: Factory α

c, i:

m: Meas

h_c: c F.W

h_i: i F.W

h: MeasRender F Doc.nl c i m


[m] []

Goals accomplished! 🐙
)) |
text_taint: ∀ {α : Type} {F : Factory α} {c i : } {s : String} {m : Meas}, c + String.length s > F.W i > F.WMeasRender F (Doc.text s) c i mResolve F (Doc.text s) c i (MeasureSet.tainted m)
text_taint
(
h_bad: unknown metavariable '?_uniq.330'
h_bad
:
c: ?m.271
c
+
s: ?m.363
s
s.length: unknown metavariable '?_uniq.330'
.
length: String
length
>
F: Factory α
F
.
W: {α : Type} → Factory α
W
i: ?m.322
i
>
F: Factory α
F
.
W: {α : Type} → Factory α
W
) (
h: MeasRender F (Doc.text s) c i m
h
:
MeasRender: {α : Type} → Factory αDocMeasProp
MeasRender
F: Factory α
F
(
Doc.text: StringDoc
Doc.text
s: ?m.363
s
)
c: ?m.271
c
i: ?m.322
i
m: ?m.405
m
) :
Resolve: DocMeasureSetProp
Resolve
(
Doc.text: StringDoc
Doc.text
s: ?m.363
s
)
c: ?m.271
c
i: ?m.322
i
(
MeasureSet.tainted: {α : Type} → MeasMeasureSet
MeasureSet.tainted
m: ?m.405
m
) |
text_set: ∀ {α : Type} {F : Factory α} {c i : } {s : String} {m : Meas}, c + String.length s F.Wi F.WMeasRender F (Doc.text s) c i mResolve F (Doc.text s) c i (MeasureSet.set [m] (_ : ¬[m] = []))
text_set
(
h_c: c + ?m.595 F.W
h_c
:
c: ?m.462
c
+
s: ?m.542
s
s.length: unknown metavariable '?_uniq.507'
.
length: String
length
F: Factory α
F
.
W: {α : Type} → Factory α
W
) (
h_i: i F.W
h_i
:
i: ?m.499
i
F: Factory α
F
.
W: {α : Type} → Factory α
W
) (
h: MeasRender F (Doc.text s) c i m
h
:
MeasRender: {α : Type} → Factory αDocMeasProp
MeasRender
F: Factory α
F
(
Doc.text: StringDoc
Doc.text
s: ?m.542
s
)
c: ?m.462
c
i: ?m.499
i
m: ?m.586
m
) :
Resolve: DocMeasureSetProp
Resolve
(
Doc.text: StringDoc
Doc.text
s: ?m.542
s
)
c: ?m.462
c
i: ?m.499
i
(
MeasureSet.set: {α : Type} → (ms : List Meas) → ms []MeasureSet
MeasureSet.set
[
m: ?m.586
m
] (

Goals accomplished! 🐙
α: Type

F: Factory α

c, i:

s: String

m: Meas

h_c: c + String.length s F.W

h_i: i F.W

h: MeasRender F (Doc.text s) c i m


[m] []

Goals accomplished! 🐙
)) |
align_taint: ∀ {α : Type} {F : Factory α} {i : } {d : Doc} {c : } {ms : MeasureSet}, i > F.WResolve F d c c msResolve F (Doc.align d) c i (MeasureSet.lift (Meas.adjust_align i) (MeasureSet.taint ms))
align_taint
(
h_bad: i > F.W
h_bad
:
i: ?m.674
i
>
F: Factory α
F
.
W: {α : Type} → Factory α
W
) (
h: Resolve d c c ms
h
:
Resolve: DocMeasureSetProp
Resolve
d: ?m.684
d
c: ?m.694
c
c: ?m.694
c
ms: ?m.704
ms
) :
Resolve: DocMeasureSetProp
Resolve
(
Doc.align: DocDoc
Doc.align
d: ?m.684
d
)
c: ?m.694
c
i: ?m.674
i
(
ms: ?m.704
ms
.
taint: {α : Type} → MeasureSetMeasureSet
taint
.
lift: {α : Type} → (MeasMeas) → MeasureSetMeasureSet
lift
(
Meas.adjust_align: {α : Type} → MeasMeas
Meas.adjust_align
i: ?m.674
i
)) |
align: ∀ {α : Type} {F : Factory α} {i : } {d : Doc} {c : } {ms : MeasureSet}, i F.WResolve F d c c msResolve F (Doc.align d) c i (MeasureSet.lift (Meas.adjust_align i) ms)
align
(
h_ok: i F.W
h_ok
:
i: ?m.735
i
F: Factory α
F
.
W: {α : Type} → Factory α
W
) (
h: Resolve d c c ms
h
:
Resolve: DocMeasureSetProp
Resolve
d: ?m.745
d
c: ?m.755
c
c: ?m.755
c
ms: ?m.765
ms
) :
Resolve: DocMeasureSetProp
Resolve
(
Doc.align: DocDoc
Doc.align
d: ?m.745
d
)
c: ?m.755
c
i: ?m.735
i
(
ms: ?m.765
ms
.
lift: {α : Type} → (MeasMeas) → MeasureSetMeasureSet
lift
(
Meas.adjust_align: {α : Type} → MeasMeas
Meas.adjust_align
i: ?m.735
i
)) |
nest: ∀ {α : Type} {F : Factory α} {d : Doc} {c i n : } {ms : MeasureSet}, Resolve F d c (i + n) msResolve F (Doc.nest n d) c i (MeasureSet.lift (Meas.adjust_nest n) ms)
nest
(
h: Resolve d c (i + n) ms
h
:
Resolve: DocMeasureSetProp
Resolve
d: ?m.794
d
c: ?m.798
c
(
i: ?m.805
i
+
n: ?m.812
n
)
ms: ?m.840
ms
) :
Resolve: DocMeasureSetProp
Resolve
(
Doc.nest: DocDoc
Doc.nest
n: ?m.812
n
d: ?m.794
d
)
c: ?m.798
c
i: ?m.805
i
(
ms: ?m.840
ms
.
lift: {α : Type} → (MeasMeas) → MeasureSetMeasureSet
lift
(
Meas.adjust_nest: {α : Type} → MeasMeas
Meas.adjust_nest
n: ?m.812
n
)) |
choice: ∀ {α : Type} {F : Factory α} {d : Doc} {c i : } {ms : MeasureSet} {d' : Doc} {ms' : MeasureSet}, Resolve F d c i msResolve F d' c i ms'Resolve F (Doc.choice d d') c i (MeasureSet.union F ms ms')
choice
(
h_left: Resolve d c i ms
h_left
:
Resolve: DocMeasureSetProp
Resolve
d: ?m.887
d
c: ?m.891
c
i: ?m.895
i
ms: ?m.899
ms
) (
h_right: Resolve d' c i ms'
h_right
:
Resolve: DocMeasureSetProp
Resolve
d': ?m.905
d'
c: ?m.891
c
i: ?m.895
i
ms': ?m.911
ms'
) :
Resolve: DocMeasureSetProp
Resolve
(
Doc.choice: DocDocDoc
Doc.choice
d: ?m.887
d
d': ?m.905
d'
)
c: ?m.891
c
i: ?m.895
i
(
MeasureSet.union: {α : Type} → Factory αMeasureSetMeasureSetMeasureSet
MeasureSet.union
F: Factory α
F
ms: ?m.899
ms
ms': ?m.911
ms'
) |
concat_taint: ∀ {α : Type} {F : Factory α} {d : Doc} {c i : } {m : Meas} {d' : Doc} {ms' : MeasureSet} {m' : Meas}, Resolve F d c i (MeasureSet.tainted m)Resolve F d' m.last i ms'MeasureSet.taint ms' = MeasureSet.tainted m'Resolve F (Doc.concat d d') c i (MeasureSet.tainted (Meas.concat F m m'))
concat_taint
(
h_left: Resolve d c i (MeasureSet.tainted m)
h_left
:
Resolve: DocMeasureSetProp
Resolve
d: ?m.929
d
c: ?m.933
c
i: ?m.937
i
(
MeasureSet.tainted: {α : Type} → MeasMeasureSet
MeasureSet.tainted
m: ?m.942
m
)) (
h_right: Resolve d' m.last i ms'
h_right
:
Resolve: DocMeasureSetProp
Resolve
d': ?m.949
d'
m: ?m.942
m
.
last: {α : Type} → Meas
last
i: ?m.937
i
ms': ?m.957
ms'
) (h_taint :
ms': ?m.957
ms'
.
taint: {α : Type} → MeasureSetMeasureSet
taint
=
MeasureSet.tainted: {α : Type} → MeasMeasureSet
MeasureSet.tainted
m': ?m.972
m'
) : (
Resolve: DocMeasureSetProp
Resolve
(
Doc.concat: DocDocDoc
Doc.concat
d: ?m.929
d
d': ?m.949
d'
)
c: ?m.933
c
i: ?m.937
i
(
MeasureSet.tainted: {α : Type} → MeasMeasureSet
MeasureSet.tainted
(
Meas.concat: {α : Type} → Factory αMeasMeasMeas
Meas.concat
F: Factory α
F
m: ?m.942
m
m': ?m.972
m'
))) |
concat_set: ∀ {α : Type} {F : Factory α} {d : Doc} {c i : } {ms : List Meas} {h_non_empty : ms []} {d' : Doc} {msr : MeasureSet}, Resolve F d c i (MeasureSet.set ms h_non_empty)ResolveConcat F ms d' i msrResolve F (Doc.concat d d') c i msr
concat_set
(
h_left: Resolve d c i (MeasureSet.set ms h_non_empty)
h_left
:
Resolve: DocMeasureSetProp
Resolve
d: ?m.1026
d
c: ?m.1030
c
i: ?m.1034
i
(
MeasureSet.set: {α : Type} → (ms : List Meas) → ms []MeasureSet
MeasureSet.set
ms: ?m.1039
ms
h_non_empty: ?m.1044
h_non_empty
)) (
h: ResolveConcat ms d' i msr
h
:
ResolveConcat: List MeasDocMeasureSetProp
ResolveConcat
ms: ?m.1039
ms
d': ?m.1054
d'
i: ?m.1034
i
msr: ?m.1061
msr
) :
Resolve: DocMeasureSetProp
Resolve
(
Doc.concat: DocDocDoc
Doc.concat
d: ?m.1026
d
d': ?m.1054
d'
)
c: ?m.1030
c
i: ?m.1034
i
msr: ?m.1061
msr
inductive
ResolveConcat: {α : Type} → Factory αList MeasDocMeasureSetProp
ResolveConcat
:
List: Type ?u.24 → Type ?u.24
List
Meas: {α : Type} → Type
Meas
Doc: Type
Doc
: Type
MeasureSet: {α : Type} → Type
MeasureSet
Prop: Type
Prop
where |
one: ∀ {α : Type} {F : Factory α} {d : Doc} {m : Meas} {i : } {msr : MeasureSet}, ResolveConcatOne F d m i msrResolveConcat F [m] d i msr
one
(
h_current: ResolveConcatOne d m i msr
h_current
:
ResolveConcatOne: DocMeasMeasureSetProp
ResolveConcatOne
d: ?m.1084
d
m: ?m.1088
m
i: ?m.1092
i
msr: ?m.1096
msr
) :
ResolveConcat: List MeasDocMeasureSetProp
ResolveConcat
[
m: ?m.1088
m
]
d: ?m.1084
d
i: ?m.1092
i
msr: ?m.1096
msr
|
cons: ∀ {α : Type} {F : Factory α} {ms : List Meas} {d : Doc} {i : } {msr : MeasureSet} {m : Meas} {msr' : MeasureSet}, ResolveConcat F ms d i msrResolveConcatOne F d m i msr'ResolveConcat F (m :: ms) d i (MeasureSet.union F msr' msr)
cons
(
h_rest: ResolveConcat ms d i msr
h_rest
:
ResolveConcat: List MeasDocMeasureSetProp
ResolveConcat
ms: ?m.1112
ms
d: ?m.1116
d
i: ?m.1120
i
msr: ?m.1124
msr
) (
h_current: ResolveConcatOne d m i msr'
h_current
:
ResolveConcatOne: DocMeasMeasureSetProp
ResolveConcatOne
d: ?m.1116
d
m: ?m.1130
m
i: ?m.1120
i
msr': ?m.1136
msr'
) :
ResolveConcat: List MeasDocMeasureSetProp
ResolveConcat
(
m: ?m.1130
m
::
ms: ?m.1112
ms
)
d: ?m.1116
d
i: ?m.1120
i
(
MeasureSet.union: {α : Type} → Factory αMeasureSetMeasureSetMeasureSet
MeasureSet.union
F: Factory α
F
msr': ?m.1136
msr'
msr: ?m.1124
msr
) inductive
ResolveConcatOne: DocMeasMeasureSetProp
ResolveConcatOne
:
Doc: Type
Doc
Meas: {α : Type} → Type
Meas
: Type
MeasureSet: {α : Type} → Type
MeasureSet
Prop: Type
Prop
where |
tainted: ∀ {α : Type} {F : Factory α} {d : Doc} {i : } {m' m : Meas}, Resolve F d m.last i (MeasureSet.tainted m')ResolveConcatOne F d m i (MeasureSet.tainted (Meas.concat F m m'))
tainted
(
h: Resolve d (sorryAx true) i (MeasureSet.tainted m')
h
:
Resolve: DocMeasureSetProp
Resolve
d: ?m.1160
d
m: ?m.1176
m
m.last:
.
last: {α : Type} → Meas
last
i: ?m.1164
i
(
MeasureSet.tainted: {α : Type} → MeasMeasureSet
MeasureSet.tainted
m': ?m.1169
m'
)) :
ResolveConcatOne: DocMeasMeasureSetProp
ResolveConcatOne
d: ?m.1160
d
m: ?m.1176
m
i: ?m.1164
i
(
MeasureSet.tainted: {α : Type} → MeasMeasureSet
MeasureSet.tainted
(
Meas.concat: {α : Type} → Factory αMeasMeasMeas
Meas.concat
F: Factory α
F
m: ?m.1176
m
m': ?m.1169
m'
)) |
set: ∀ {α : Type} {F : Factory α} {d : Doc} {i : } {ms : List Meas} {h_non_empty : ms []} {m : Meas}, Resolve F d m.last i (MeasureSet.set ms h_non_empty)ResolveConcatOne F d m i (MeasureSet.set (dedup F (List.map (fun m' => Meas.concat F m m') ms)) (_ : dedup F (List.map (fun m' => Meas.concat F m m') ms) []))
set
(
h: Resolve d ?m.1217 i (MeasureSet.set ms h_non_empty)
h
:
Resolve: DocMeasureSetProp
Resolve
d: ?m.1193
d
m: ?m.1214
m
m.last:
.
last: {α : Type} → Meas
last
i: ?m.1197
i
(
MeasureSet.set: {α : Type} → (ms : List Meas) → ms []MeasureSet
MeasureSet.set
ms: ?m.1202
ms
h_non_empty: ?m.1207
h_non_empty
)) :
ResolveConcatOne: DocMeasMeasureSetProp
ResolveConcatOne
d: ?m.1193
d
m: ?m.1214
m
i: ?m.1197
i
(
MeasureSet.set: {α : Type} → (ms : List Meas) → ms []MeasureSet
MeasureSet.set
(
dedup: {α : Type} → Factory αList MeasList Meas
dedup
F: Factory α
F
(
ms: ?m.1202
ms
.
map: {α : Type ?u.1224} → {β : Type ?u.1223} → (αβ) → List αList β
map
(fun
m': ?m.1232
m'
=>
Meas.concat: {α : Type} → Factory αMeasMeasMeas
Meas.concat
F: Factory α
F
m: ?m.1214
m
m': ?m.1232
m'
))) (

Goals accomplished! 🐙
α: Type

F: Factory α

d: Doc

i:

ms: List Meas

h_non_empty: ms []

m: Meas

h: Resolve d m.last i (MeasureSet.set ms h_non_empty)


dedup F (List.map (fun m' => Meas.concat F m m') ms) []
α: Type

F: Factory α

d: Doc

i:

ms: List Meas

h_non_empty: ms []

m: Meas

h: Resolve d m.last i (MeasureSet.set ms h_non_empty)


dedup F (List.map (fun m' => Meas.concat F m m') ms) []
α: Type

F: Factory α

d: Doc

i:

ms: List Meas

h_non_empty: ms []

m: Meas

h: Resolve d m.last i (MeasureSet.set ms h_non_empty)


dedup F (List.map (fun m' => Meas.concat F m m') ms) []
α: Type

F: Factory α

d: Doc

i:

ms: List Meas

h_non_empty: ms []

m: Meas

h: Resolve d m.last i (MeasureSet.set ms h_non_empty)


h
List.map (fun m' => Meas.concat F m m') ms []
α: Type

F: Factory α

d: Doc

i:

ms: List Meas

h_non_empty: ms []

m: Meas

h: Resolve d m.last i (MeasureSet.set ms h_non_empty)


dedup F (List.map (fun m' => Meas.concat F m m') ms) []

Goals accomplished! 🐙

Goals accomplished! 🐙
)) end end Resolve