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.Resolve
import Pretty.Claims.MeasRender
import Pretty.Supports.Pareto
import Pretty.Supports.ResolveLast 
import Pretty.Supports.ResolvePareto

/-!
## Lemmas for the informal proof of time complexity of $Ξ _e$
-/

/--
A measure set from resolving will have size 
at most $W_\mathcal{F} + 1$ (Lemma 5.9) 
-/
lemma 
Resolve_bound: βˆ€ {Ξ± : Type} {ms : List Meas} {F : Factory Ξ±} {d : Doc} {c i : β„•} {h_not_empty : ms β‰  []}, Resolve F d c i (MeasureSet.set ms h_not_empty) β†’ List.length ms ≀ F.W + 1
Resolve_bound
{
h_not_empty: ms β‰  []
h_not_empty
:
ms: ?m.5
ms
β‰ 
[]: unknown metavariable '?_uniq.39'
[]
} (
h: Resolve F d c i (MeasureSet.set ms h_not_empty)
h
:
Resolve: {Ξ± : Type} β†’ Factory Ξ± β†’ Doc β†’ β„• β†’ β„• β†’ MeasureSet β†’ Prop
Resolve
F: ?m.18
F
d: ?m.33
d
c: ?m.47
c
i: ?m.61
i
(
MeasureSet.set: {Ξ± : Type} β†’ (ms : List Meas) β†’ ms β‰  [] β†’ MeasureSet
MeasureSet.set
ms: ?m.5
ms
h_not_empty: ms β‰  []
h_not_empty
)) :
ms: ?m.5
ms
.
length: {Ξ± : Type ?u.86} β†’ List Ξ± β†’ β„•
length
≀
F: ?m.18
F
.
W: {Ξ± : Type} β†’ Factory Ξ± β†’ β„•
W
+
1: ?m.96
1
:=

Goals accomplished! πŸ™
α✝: Type

ms: List Meas

F: Factory α✝

d: Doc

c, i: β„•

h_not_empty: ms β‰  []

h: Resolve F d c i (MeasureSet.set ms h_not_empty)


α✝: Type

ms: List Meas

F: Factory α✝

d: Doc

c, i: β„•

h_not_empty: ms β‰  []

h: Resolve F d c i (MeasureSet.set ms h_not_empty)

h_last: last_decreasing ms


α✝: Type

ms: List Meas

F: Factory α✝

d: Doc

c, i: β„•

h_not_empty: ms β‰  []

h: Resolve F d c i (MeasureSet.set ms h_not_empty)


α✝: Type

F: Factory α✝

d: Doc

c, i: β„•

h_not_empty: [] β‰  []

h: Resolve F d c i (MeasureSet.set [] h_not_empty)

h_last: last_decreasing []


nil
α✝: Type

F: Factory α✝

d: Doc

c, i: β„•

head✝: Meas

tail✝: List Meas

h_not_empty: head✝ :: tail✝ β‰  []

h: Resolve F d c i (MeasureSet.set (head✝ :: tail✝) h_not_empty)

h_last: last_decreasing (head✝ :: tail✝)


cons
List.length (head✝ :: tail✝) ≀ F.W + 1
α✝: Type

ms: List Meas

F: Factory α✝

d: Doc

c, i: β„•

h_not_empty: ms β‰  []

h: Resolve F d c i (MeasureSet.set ms h_not_empty)


α✝: Type

F: Factory α✝

d: Doc

c, i: β„•

h_not_empty: [] β‰  []

h: Resolve F d c i (MeasureSet.set [] h_not_empty)

h_last: last_decreasing []



Goals accomplished! πŸ™
α✝: Type

ms: List Meas

F: Factory α✝

d: Doc

c, i: β„•

h_not_empty: ms β‰  []

h: Resolve F d c i (MeasureSet.set ms h_not_empty)


α✝: Type

F: Factory α✝

d: Doc

c, i: β„•

hd: Meas

tl: List Meas

h_not_empty: hd :: tl β‰  []

h: Resolve F d c i (MeasureSet.set (hd :: tl) h_not_empty)

h_last: last_decreasing (hd :: tl)


List.length (hd :: tl) ≀ F.W + 1
α✝: Type

F: Factory α✝

d: Doc

c, i: β„•

hd: Meas

tl: List Meas

h_not_empty: hd :: tl β‰  []

h: Resolve F d c i (MeasureSet.set (hd :: tl) h_not_empty)

h_last: last_decreasing (hd :: tl)


List.length (hd :: tl) ≀ F.W + 1

Goals accomplished! πŸ™
α✝: Type

F: Factory α✝

d: Doc

c, i: β„•

hd: Meas

tl: List Meas

h_not_empty: hd :: tl β‰  []

h: Resolve F d c i (MeasureSet.set (hd :: tl) h_not_empty)

h_last: last_decreasing (hd :: tl)


List.length (hd :: tl) - 1 - (List.length (hd :: tl) - 1) < List.length (hd :: tl)

Goals accomplished! πŸ™
α✝: Type

F: Factory α✝

d: Doc

c, i: β„•

hd: Meas

tl: List Meas

h_not_empty: hd :: tl β‰  []

h: Resolve F d c i (MeasureSet.set (hd :: tl) h_not_empty)

h_last: last_decreasing (hd :: tl)


List.length (hd :: tl) ≀ F.W + 1

Goals accomplished! πŸ™
α✝: Type

F: Factory α✝

d: Doc

c, i: β„•

hd: Meas

tl: List Meas

h_not_empty: hd :: tl β‰  []

h: Resolve F d c i (MeasureSet.set (hd :: tl) h_not_empty)

h_last: last_decreasing (hd :: tl)


(List.get (hd :: tl) { val := List.length (hd :: tl) - 1 - (List.length (hd :: tl) - 1), isLt := (_ : Nat.succ (List.length tl) - Nat.succ 0 - (Nat.succ (List.length tl) - Nat.succ 0) < Nat.succ (List.length tl)) }).last β‰₯ List.length (hd :: tl) - 1
α✝: Type

F: Factory α✝

d: Doc

c, i: β„•

hd: Meas

tl: List Meas

h_not_empty: hd :: tl β‰  []

h: Resolve F d c i (MeasureSet.set (hd :: tl) h_not_empty)

h_last: last_decreasing (hd :: tl)


(List.get (hd :: tl) { val := List.length (hd :: tl) - 1 - (List.length (hd :: tl) - 1), isLt := (_ : Nat.succ (List.length tl) - Nat.succ 0 - (Nat.succ (List.length tl) - Nat.succ 0) < Nat.succ (List.length tl)) }).last β‰₯ List.length (hd :: tl) - 1
α✝: Type

F: Factory α✝

d: Doc

c, i: β„•

hd: Meas

tl: List Meas

h_not_empty: hd :: tl β‰  []

h: Resolve F d c i (MeasureSet.set (hd :: tl) h_not_empty)

h_last: last_decreasing (hd :: tl)


(List.get (hd :: tl) { val := List.length (hd :: tl) - 1 - (List.length (hd :: tl) - 1), isLt := (_ : Nat.succ (List.length tl) - Nat.succ 0 - (Nat.succ (List.length tl) - Nat.succ 0) < Nat.succ (List.length tl)) }).last β‰₯ List.length (hd :: tl) - 1
α✝: Type

F: Factory α✝

d: Doc

c, i: β„•

hd: Meas

tl: List Meas

h_not_empty: hd :: tl β‰  []

h: Resolve F d c i (MeasureSet.set (hd :: tl) h_not_empty)

h_last: last_decreasing (hd :: tl)


(List.get (hd :: tl) { val := List.length (hd :: tl) - 1 - (List.length (hd :: tl) - 1), isLt := (_ : Nat.succ (List.length tl) - Nat.succ 0 - (Nat.succ (List.length tl) - Nat.succ 0) < Nat.succ (List.length tl)) }).last β‰₯ List.length (hd :: tl) - 1
α✝: Type

F: Factory α✝

d: Doc

c, i: β„•

hd: Meas

tl: List Meas

h_not_empty: hd :: tl β‰  []

h: Resolve F d c i (MeasureSet.set (hd :: tl) h_not_empty)

h_last: last_decreasing (hd :: tl)


h
α✝: Type

F: Factory α✝

d: Doc

c, i: β„•

hd: Meas

tl: List Meas

h_not_empty: hd :: tl β‰  []

h: Resolve F d c i (MeasureSet.set (hd :: tl) h_not_empty)

h_last: last_decreasing (hd :: tl)


h_bound
List.length (hd :: tl) - 1 < List.length (hd :: tl)

Goals accomplished! πŸ™

Goals accomplished! πŸ™
α✝: Type

F: Factory α✝

d: Doc

c, i: β„•

hd: Meas

tl: List Meas

h_not_empty: hd :: tl β‰  []

h: Resolve F d c i (MeasureSet.set (hd :: tl) h_not_empty)

h_last: last_decreasing (hd :: tl)


List.length (hd :: tl) ≀ F.W + 1
α✝: Type

F: Factory α✝

d: Doc

c, i: β„•

hd: Meas

tl: List Meas

h_not_empty: hd :: tl β‰  []

h: Resolve F d c i (MeasureSet.set (hd :: tl) h_not_empty)

h_last: last_decreasing (hd :: tl)

h_bound: List.length tl ≀ hd.last


List.length (hd :: tl) ≀ F.W + 1
α✝: Type

F: Factory α✝

d: Doc

c, i: β„•

hd: Meas

tl: List Meas

h_not_empty: hd :: tl β‰  []

h: Resolve F d c i (MeasureSet.set (hd :: tl) h_not_empty)

h_last: last_decreasing (hd :: tl)


List.length (hd :: tl) ≀ F.W + 1
α✝: Type

F: Factory α✝

d: Doc

c, i: β„•

hd: Meas

tl: List Meas

h_not_empty: hd :: tl β‰  []

h: Resolve F d c i (MeasureSet.set (hd :: tl) h_not_empty)

h_last: last_decreasing (hd :: tl)

h_bound: List.length tl ≀ hd.last


List.length (hd :: tl) ≀ F.W + 1

Goals accomplished! πŸ™
α✝: Type

F: Factory α✝

d: Doc

c, i: β„•

hd: Meas

tl: List Meas

h_not_empty: hd :: tl β‰  []

h: Resolve F d c i (MeasureSet.set (hd :: tl) h_not_empty)

h_last: last_decreasing (hd :: tl)

h_bound: List.length tl ≀ hd.last


hd :: tl β‰  []

Goals accomplished! πŸ™
α✝: Type

F: Factory α✝

d: Doc

c, i: β„•

hd: Meas

tl: List Meas

h_not_empty: hd :: tl β‰  []

h: Resolve F d c i (MeasureSet.set (hd :: tl) h_not_empty)

h_last: last_decreasing (hd :: tl)

h_bound: List.length tl ≀ hd.last


List.length (hd :: tl) ≀ F.W + 1

Goals accomplished! πŸ™
α✝: Type

F: Factory α✝

d: Doc

c, i: β„•

hd: Meas

tl: List Meas

h_not_empty: hd :: tl β‰  []

h: Resolve F d c i (MeasureSet.set (hd :: tl) h_not_empty)

h_last: last_decreasing (hd :: tl)

h_bound: List.length tl ≀ hd.last


hd ∈ hd :: tl

Goals accomplished! πŸ™
α✝: Type

F: Factory α✝

d: Doc

c, i: β„•

hd: Meas

tl: List Meas

h_not_empty: hd :: tl β‰  []

h: Resolve F d c i (MeasureSet.set (hd :: tl) h_not_empty)

h_last✝: last_decreasing (hd :: tl)

h_bound: List.length tl ≀ hd.last

h_last: hd.last ≀ F.W


List.length (hd :: tl) ≀ F.W + 1
α✝: Type

F: Factory α✝

d: Doc

c, i: β„•

hd: Meas

tl: List Meas

h_not_empty: hd :: tl β‰  []

h: Resolve F d c i (MeasureSet.set (hd :: tl) h_not_empty)

h_last: last_decreasing (hd :: tl)


List.length (hd :: tl) ≀ F.W + 1
α✝: Type

F: Factory α✝

d: Doc

c, i: β„•

hd: Meas

tl: List Meas

h_not_empty: hd :: tl β‰  []

h: Resolve F d c i (MeasureSet.set (hd :: tl) h_not_empty)

h_last✝: last_decreasing (hd :: tl)

h_bound: List.length tl ≀ hd.last

h_last: hd.last ≀ F.W


α✝: Type

F: Factory α✝

d: Doc

c, i: β„•

hd: Meas

tl: List Meas

h_not_empty: hd :: tl β‰  []

h: Resolve F d c i (MeasureSet.set (hd :: tl) h_not_empty)

h_last: last_decreasing (hd :: tl)


List.length (hd :: tl) ≀ F.W + 1
α✝: Type

F: Factory α✝

d: Doc

c, i: β„•

hd: Meas

tl: List Meas

h_not_empty: hd :: tl β‰  []

h: Resolve F d c i (MeasureSet.set (hd :: tl) h_not_empty)

h_last✝: last_decreasing (hd :: tl)

h_bound: List.length tl ≀ hd.last

h_last: hd.last ≀ F.W


α✝: Type

F: Factory α✝

d: Doc

c, i: β„•

hd: Meas

tl: List Meas

h_not_empty: hd :: tl β‰  []

h: Resolve F d c i (MeasureSet.set (hd :: tl) h_not_empty)

h_last✝: last_decreasing (hd :: tl)

h_bound: List.length tl ≀ hd.last

h_last: hd.last ≀ F.W


a
α✝: Type

F: Factory α✝

d: Doc

c, i: β„•

hd: Meas

tl: List Meas

h_not_empty: hd :: tl β‰  []

h: Resolve F d c i (MeasureSet.set (hd :: tl) h_not_empty)

h_last✝: last_decreasing (hd :: tl)

h_bound: List.length tl ≀ hd.last

h_last: hd.last ≀ F.W


a
?b ≀ F.W
α✝: Type

F: Factory α✝

d: Doc

c, i: β„•

hd: Meas

tl: List Meas

h_not_empty: hd :: tl β‰  []

h: Resolve F d c i (MeasureSet.set (hd :: tl) h_not_empty)

h_last✝: last_decreasing (hd :: tl)

h_bound: List.length tl ≀ hd.last

h_last: hd.last ≀ F.W


b

Goals accomplished! πŸ™
/-- If resolving happens at a printing context that exceeds $W_\mathcal{F}$, the result will always be tainted (Lemma 5.10) -/ lemma
Resolve_exceeding_tainted: βˆ€ {Ξ± : Type} {F : Factory Ξ±} {d : Doc} {c i : β„•} {ms : MeasureSet}, Resolve F d c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m
Resolve_exceeding_tainted
(
h: Resolve F d c i ms
h
:
Resolve: {Ξ± : Type} β†’ Factory Ξ± β†’ Doc β†’ β„• β†’ β„• β†’ MeasureSet β†’ Prop
Resolve
F: ?m.9999
F
d: ?m.10006
d
c: ?m.10012
c
i: ?m.10018
i
ms: ?m.10024
ms
) (
h_bad: c > F.W ∨ i > F.W
h_bad
:
c: ?m.10012
c
>
F: ?m.9999
F
.
W: {Ξ± : Type} β†’ Factory Ξ± β†’ β„•
W
∨
i: ?m.10018
i
>
F: ?m.9999
F
.
W: {Ξ± : Type} β†’ Factory Ξ± β†’ β„•
W
) : βˆƒ
m: ?m.10050
m
,
ms: ?m.10024
ms
=
MeasureSet.tainted: {Ξ± : Type} β†’ Meas β†’ MeasureSet
MeasureSet.tainted
m: ?m.10050
m
:=

Goals accomplished! πŸ™
α✝: Type

F: Factory α✝

d: Doc

c, i: β„•

ms: MeasureSet

h: Resolve F d c i ms

h_bad: c > F.W ∨ i > F.W


βˆƒ m, ms = MeasureSet.tainted m
α✝: Type

F: Factory α✝

s✝: String

c, i: β„•

ms: MeasureSet

h: Resolve F (Doc.text s✝) c i ms

h_bad: c > F.W ∨ i > F.W


text
βˆƒ m, ms = MeasureSet.tainted m
α✝: Type

F: Factory α✝

c, i: β„•

ms: MeasureSet

h: Resolve F Doc.nl c i ms

h_bad: c > F.W ∨ i > F.W


nl
βˆƒ m, ms = MeasureSet.tainted m
α✝: Type

F: Factory α✝

dβ‚βœ, dβ‚‚βœ: Doc

d₁_ih✝: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

dβ‚‚_ih✝: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms: MeasureSet

h: Resolve F (Doc.concat dβ‚βœ dβ‚‚βœ) c i ms

h_bad: c > F.W ∨ i > F.W


concat
βˆƒ m, ms = MeasureSet.tainted m
α✝: Type

F: Factory α✝

n✝: β„•

d✝: Doc

d_ih✝: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms: MeasureSet

h: Resolve F (Doc.nest n✝ d✝) c i ms

h_bad: c > F.W ∨ i > F.W


nest
βˆƒ m, ms = MeasureSet.tainted m
α✝: Type

F: Factory α✝

d✝: Doc

d_ih✝: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms: MeasureSet

h: Resolve F (Doc.align d✝) c i ms

h_bad: c > F.W ∨ i > F.W


align
βˆƒ m, ms = MeasureSet.tainted m
α✝: Type

F: Factory α✝

dβ‚βœ, dβ‚‚βœ: Doc

d₁_ih✝: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

dβ‚‚_ih✝: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms: MeasureSet

h: Resolve F (Doc.choice dβ‚βœ dβ‚‚βœ) c i ms

h_bad: c > F.W ∨ i > F.W


choice
βˆƒ m, ms = MeasureSet.tainted m
α✝: Type

F: Factory α✝

d: Doc

c, i: β„•

ms: MeasureSet

h: Resolve F d c i ms

h_bad: c > F.W ∨ i > F.W


βˆƒ m, ms = MeasureSet.tainted m
α✝: Type

F: Factory α✝

s✝: String

c, i: β„•

ms: MeasureSet

h: Resolve F (Doc.text s✝) c i ms

h_bad: c > F.W ∨ i > F.W


βˆƒ m, ms = MeasureSet.tainted m
α✝: Type

F: Factory α✝

s✝: String

c, i: β„•

h_bad: c > F.W ∨ i > F.W

m✝: Meas

h_bad✝: c + String.length s✝ > F.W ∨ i > F.W

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


text_taint
α✝: Type

F: Factory α✝

s✝: String

c, i: β„•

h_bad: c > F.W ∨ i > F.W

m✝: Meas

h_c✝: c + String.length s✝ ≀ F.W

h_i✝: i ≀ F.W

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


text_set
βˆƒ m, MeasureSet.set [m✝] (_ : Β¬[m✝] = []) = MeasureSet.tainted m
α✝: Type

F: Factory α✝

s✝: String

c, i: β„•

ms: MeasureSet

h: Resolve F (Doc.text s✝) c i ms

h_bad: c > F.W ∨ i > F.W


βˆƒ m, ms = MeasureSet.tainted m
α✝: Type

F: Factory α✝

s✝: String

c, i: β„•

h_bad: c > F.W ∨ i > F.W

m: Meas

h_bad✝: c + String.length s✝ > F.W ∨ i > F.W

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



Goals accomplished! πŸ™
α✝: Type

F: Factory α✝

s✝: String

c, i: β„•

ms: MeasureSet

h: Resolve F (Doc.text s✝) c i ms

h_bad: c > F.W ∨ i > F.W


βˆƒ m, ms = MeasureSet.tainted m
α✝: Type

F: Factory α✝

s✝: String

c, i: β„•

h_bad: c > F.W ∨ i > F.W

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, MeasureSet.set [m✝] (_ : Β¬[m✝] = []) = MeasureSet.tainted m
α✝: Type

F: Factory α✝

s✝: String

c, i: β„•

m✝: Meas

h_c: c + String.length s✝ ≀ F.W

h_i: i ≀ F.W

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

h✝: c > F.W


inl
βˆƒ m, MeasureSet.set [m✝] (_ : Β¬[m✝] = []) = MeasureSet.tainted m
α✝: Type

F: Factory α✝

s✝: String

c, i: β„•

m✝: Meas

h_c: c + String.length s✝ ≀ F.W

h_i: i ≀ F.W

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

h✝: i > F.W


inr
βˆƒ m, MeasureSet.set [m✝] (_ : Β¬[m✝] = []) = MeasureSet.tainted m
α✝: Type

F: Factory α✝

s✝: String

c, i: β„•

h_bad: c > F.W ∨ i > F.W

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, MeasureSet.set [m✝] (_ : Β¬[m✝] = []) = MeasureSet.tainted m
α✝: Type

F: Factory α✝

s✝: String

c, i: β„•

m✝: Meas

h_c: c + String.length s✝ ≀ F.W

h_i: i ≀ F.W

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

h_bad: c > F.W


βˆƒ m, MeasureSet.set [m✝] (_ : Β¬[m✝] = []) = MeasureSet.tainted m
α✝: Type

F: Factory α✝

s✝: String

c, i: β„•

m✝: Meas

h_c: c + String.length s✝ ≀ F.W

h_i: i ≀ F.W

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

h_bad: c > F.W


βˆƒ m, MeasureSet.set [m✝] (_ : Β¬[m✝] = []) = MeasureSet.tainted m

Goals accomplished! πŸ™
α✝: Type

F: Factory α✝

s✝: String

c, i: β„•

m✝: Meas

h_c: c + String.length s✝ ≀ F.W

h_i: i ≀ F.W

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

h_bad: c > F.W


c ≀ F.W

Goals accomplished! πŸ™
α✝: Type

F: Factory α✝

s✝: String

c, i: β„•

m✝: Meas

h_c: c + String.length s✝ ≀ F.W

h_i: i ≀ F.W

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

h_bad: c > F.W


βˆƒ m, MeasureSet.set [m✝] (_ : Β¬[m✝] = []) = MeasureSet.tainted m
α✝: Type

F: Factory α✝

s✝: String

c, i: β„•

m✝: Meas

h_c: c + String.length s✝ ≀ F.W

h_i: i ≀ F.W

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

this: c ≀ F.W

h_bad: Β¬c ≀ F.W


βˆƒ m, MeasureSet.set [m✝] (_ : Β¬[m✝] = []) = MeasureSet.tainted m
α✝: Type

F: Factory α✝

s✝: String

c, i: β„•

m✝: Meas

h_c: c + String.length s✝ ≀ F.W

h_i: i ≀ F.W

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

h_bad: c > F.W


βˆƒ m, MeasureSet.set [m✝] (_ : Β¬[m✝] = []) = MeasureSet.tainted m

Goals accomplished! πŸ™
α✝: Type

F: Factory α✝

s✝: String

c, i: β„•

h_bad: c > F.W ∨ i > F.W

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, MeasureSet.set [m✝] (_ : Β¬[m✝] = []) = MeasureSet.tainted m
α✝: Type

F: Factory α✝

s✝: String

c, i: β„•

m✝: Meas

h_c: c + String.length s✝ ≀ F.W

h_i: i ≀ F.W

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

h_bad: i > F.W


βˆƒ m, MeasureSet.set [m✝] (_ : Β¬[m✝] = []) = MeasureSet.tainted m
α✝: Type

F: Factory α✝

s✝: String

c, i: β„•

m✝: Meas

h_c: c + String.length s✝ ≀ F.W

h_i: i ≀ F.W

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

h_bad: Β¬i ≀ F.W


βˆƒ m, MeasureSet.set [m✝] (_ : Β¬[m✝] = []) = MeasureSet.tainted m
α✝: Type

F: Factory α✝

s✝: String

c, i: β„•

m✝: Meas

h_c: c + String.length s✝ ≀ F.W

h_i: i ≀ F.W

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

h_bad: i > F.W


βˆƒ m, MeasureSet.set [m✝] (_ : Β¬[m✝] = []) = MeasureSet.tainted m

Goals accomplished! πŸ™
α✝: Type

F: Factory α✝

d: Doc

c, i: β„•

ms: MeasureSet

h: Resolve F d c i ms

h_bad: c > F.W ∨ i > F.W


βˆƒ m, ms = MeasureSet.tainted m
α✝: Type

F: Factory α✝

c, i: β„•

ms: MeasureSet

h: Resolve F Doc.nl c i ms

h_bad: c > F.W ∨ i > F.W


βˆƒ m, ms = MeasureSet.tainted m
α✝: Type

F: Factory α✝

c, i: β„•

h_bad: c > F.W ∨ i > F.W

m✝: Meas

h_bad✝: c > F.W ∨ i > F.W

h✝: MeasRender F Doc.nl c i m✝


line_taint
α✝: Type

F: Factory α✝

c, i: β„•

h_bad: c > F.W ∨ i > F.W

m✝: Meas

h_c✝: c ≀ F.W

h_i✝: i ≀ F.W

h✝: MeasRender F Doc.nl c i m✝


line_set
βˆƒ m, MeasureSet.set [m✝] (_ : Β¬[m✝] = []) = MeasureSet.tainted m
α✝: Type

F: Factory α✝

c, i: β„•

ms: MeasureSet

h: Resolve F Doc.nl c i ms

h_bad: c > F.W ∨ i > F.W


βˆƒ m, ms = MeasureSet.tainted m
α✝: Type

F: Factory α✝

c, i: β„•

h_bad: c > F.W ∨ i > F.W

m: Meas

h_bad✝: c > F.W ∨ i > F.W

h✝: MeasRender F Doc.nl c i m



Goals accomplished! πŸ™
α✝: Type

F: Factory α✝

c, i: β„•

ms: MeasureSet

h: Resolve F Doc.nl c i ms

h_bad: c > F.W ∨ i > F.W


βˆƒ m, ms = MeasureSet.tainted m
α✝: Type

F: Factory α✝

c, i: β„•

h_bad: c > F.W ∨ i > F.W

m✝: Meas

h_c: c ≀ F.W

h_i: i ≀ F.W

h✝: MeasRender F Doc.nl c i m✝


βˆƒ m, MeasureSet.set [m✝] (_ : Β¬[m✝] = []) = MeasureSet.tainted m
α✝: 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✝

h✝: c > F.W


inl
βˆƒ m, MeasureSet.set [m✝] (_ : Β¬[m✝] = []) = MeasureSet.tainted m
α✝: 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✝

h✝: i > F.W


inr
βˆƒ m, MeasureSet.set [m✝] (_ : Β¬[m✝] = []) = MeasureSet.tainted m
α✝: Type

F: Factory α✝

c, i: β„•

h_bad: c > F.W ∨ i > F.W

m✝: Meas

h_c: c ≀ F.W

h_i: i ≀ F.W

h✝: MeasRender F Doc.nl c i m✝


βˆƒ m, MeasureSet.set [m✝] (_ : Β¬[m✝] = []) = MeasureSet.tainted m
α✝: 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✝

h_bad: c > F.W


βˆƒ m, MeasureSet.set [m✝] (_ : Β¬[m✝] = []) = MeasureSet.tainted m
α✝: 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✝

h_bad: Β¬c ≀ F.W


βˆƒ m, MeasureSet.set [m✝] (_ : Β¬[m✝] = []) = MeasureSet.tainted m
α✝: 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✝

h_bad: c > F.W


βˆƒ m, MeasureSet.set [m✝] (_ : Β¬[m✝] = []) = MeasureSet.tainted m

Goals accomplished! πŸ™
α✝: Type

F: Factory α✝

c, i: β„•

h_bad: c > F.W ∨ i > F.W

m✝: Meas

h_c: c ≀ F.W

h_i: i ≀ F.W

h✝: MeasRender F Doc.nl c i m✝


βˆƒ m, MeasureSet.set [m✝] (_ : Β¬[m✝] = []) = MeasureSet.tainted m
α✝: 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✝

h_bad: i > F.W


βˆƒ m, MeasureSet.set [m✝] (_ : Β¬[m✝] = []) = MeasureSet.tainted m
α✝: 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✝

h_bad: Β¬i ≀ F.W


βˆƒ m, MeasureSet.set [m✝] (_ : Β¬[m✝] = []) = MeasureSet.tainted m
α✝: 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✝

h_bad: i > F.W


βˆƒ m, MeasureSet.set [m✝] (_ : Β¬[m✝] = []) = MeasureSet.tainted m

Goals accomplished! πŸ™
α✝: Type

F: Factory α✝

d: Doc

c, i: β„•

ms: MeasureSet

h: Resolve F d c i ms

h_bad: c > F.W ∨ i > F.W


βˆƒ m, ms = MeasureSet.tainted m
α✝: Type

F: Factory α✝

n: β„•

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms: MeasureSet

h: Resolve F (Doc.nest n d✝) c i ms

h_bad: c > F.W ∨ i > F.W


βˆƒ m, ms = MeasureSet.tainted m
α✝: Type

F: Factory α✝

n: β„•

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

h_bad: c > F.W ∨ i > F.W

ms✝: MeasureSet

h✝: Resolve F d✝ c (i + n) ms✝


nest
α✝: Type

F: Factory α✝

n: β„•

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms: MeasureSet

h: Resolve F (Doc.nest n d✝) c i ms

h_bad: c > F.W ∨ i > F.W


βˆƒ m, ms = MeasureSet.tainted m
α✝: Type

F: Factory α✝

n: β„•

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

h_bad: c > F.W ∨ i > F.W

ms✝: MeasureSet

h: Resolve F d✝ c (i + n) ms✝


α✝: Type

F: Factory α✝

n: β„•

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms✝: MeasureSet

h: Resolve F d✝ c (i + n) ms✝

h✝: c > F.W


inl
α✝: Type

F: Factory α✝

n: β„•

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms✝: MeasureSet

h: Resolve F d✝ c (i + n) ms✝

h✝: i > F.W


inr
α✝: Type

F: Factory α✝

n: β„•

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

h_bad: c > F.W ∨ i > F.W

ms✝: MeasureSet

h: Resolve F d✝ c (i + n) ms✝


α✝: Type

F: Factory α✝

n: β„•

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms✝: MeasureSet

h: Resolve F d✝ c (i + n) ms✝

h_bad: c > F.W


α✝: Type

F: Factory α✝

n: β„•

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms✝: MeasureSet

h: Resolve F d✝ c (i + n) ms✝

h_bad: c > F.W



Goals accomplished! πŸ™
α✝: Type

F: Factory α✝

n: β„•

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms✝: MeasureSet

h: Resolve F d✝ c (i + n) ms✝

h_bad: c > F.W


c > F.W ∨ i + n > F.W
α✝: Type

F: Factory α✝

n: β„•

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms✝: MeasureSet

h: Resolve F d✝ c (i + n) ms✝

h_bad: c > F.W


c > F.W ∨ i + n > F.W
α✝: Type

F: Factory α✝

n: β„•

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms✝: MeasureSet

h: Resolve F d✝ c (i + n) ms✝

h_bad: c > F.W


c > F.W ∨ i + n > F.W
α✝: Type

F: Factory α✝

n: β„•

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms✝: MeasureSet

h: Resolve F d✝ c (i + n) ms✝

h_bad: c > F.W


h
c > F.W
α✝: Type

F: Factory α✝

n: β„•

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms✝: MeasureSet

h: Resolve F d✝ c (i + n) ms✝

h_bad: c > F.W


c > F.W ∨ i + n > F.W

Goals accomplished! πŸ™

Goals accomplished! πŸ™
α✝: Type

F: Factory α✝

n: β„•

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms✝: MeasureSet

h: Resolve F d✝ c (i + n) ms✝

h_bad: c > F.W

m: Meas

h✝: ms✝ = MeasureSet.tainted m


α✝: Type

F: Factory α✝

n: β„•

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms✝: MeasureSet

h: Resolve F d✝ c (i + n) ms✝

h_bad: c > F.W


α✝: Type

F: Factory α✝

n: β„•

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms✝: MeasureSet

h: Resolve F d✝ c (i + n) ms✝

h_bad: c > F.W

m: Meas

h✝: ms✝ = MeasureSet.tainted m


α✝: Type

F: Factory α✝

n: β„•

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms✝: MeasureSet

h: Resolve F d✝ c (i + n) ms✝

h_bad: c > F.W



Goals accomplished! πŸ™
α✝: Type

F: Factory α✝

n: β„•

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

h_bad: c > F.W ∨ i > F.W

ms✝: MeasureSet

h: Resolve F d✝ c (i + n) ms✝


α✝: Type

F: Factory α✝

n: β„•

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms✝: MeasureSet

h: Resolve F d✝ c (i + n) ms✝

h_bad: i > F.W


α✝: Type

F: Factory α✝

n: β„•

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms✝: MeasureSet

h: Resolve F d✝ c (i + n) ms✝

h_bad: i > F.W



Goals accomplished! πŸ™
α✝: Type

F: Factory α✝

n: β„•

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms✝: MeasureSet

h: Resolve F d✝ c (i + n) ms✝

h_bad: i > F.W


c > F.W ∨ i + n > F.W
α✝: Type

F: Factory α✝

n: β„•

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms✝: MeasureSet

h: Resolve F d✝ c (i + n) ms✝

h_bad: i > F.W


c > F.W ∨ i + n > F.W
α✝: Type

F: Factory α✝

n: β„•

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms✝: MeasureSet

h: Resolve F d✝ c (i + n) ms✝

h_bad: i > F.W


c > F.W ∨ i + n > F.W
α✝: Type

F: Factory α✝

n: β„•

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms✝: MeasureSet

h: Resolve F d✝ c (i + n) ms✝

h_bad: i > F.W


h
i + n > F.W
α✝: Type

F: Factory α✝

n: β„•

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms✝: MeasureSet

h: Resolve F d✝ c (i + n) ms✝

h_bad: i > F.W


c > F.W ∨ i + n > F.W

Goals accomplished! πŸ™

Goals accomplished! πŸ™
α✝: Type

F: Factory α✝

n: β„•

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms✝: MeasureSet

h: Resolve F d✝ c (i + n) ms✝

h_bad: i > F.W

m: Meas

h✝: ms✝ = MeasureSet.tainted m


α✝: Type

F: Factory α✝

n: β„•

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms✝: MeasureSet

h: Resolve F d✝ c (i + n) ms✝

h_bad: i > F.W


α✝: Type

F: Factory α✝

n: β„•

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms✝: MeasureSet

h: Resolve F d✝ c (i + n) ms✝

h_bad: i > F.W

m: Meas

h✝: ms✝ = MeasureSet.tainted m


α✝: Type

F: Factory α✝

n: β„•

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms✝: MeasureSet

h: Resolve F d✝ c (i + n) ms✝

h_bad: i > F.W



Goals accomplished! πŸ™
α✝: Type

F: Factory α✝

d: Doc

c, i: β„•

ms: MeasureSet

h: Resolve F d c i ms

h_bad: c > F.W ∨ i > F.W


βˆƒ m, ms = MeasureSet.tainted m
α✝: Type

F: Factory α✝

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms: MeasureSet

h: Resolve F (Doc.align d✝) c i ms

h_bad: c > F.W ∨ i > F.W


βˆƒ m, ms = MeasureSet.tainted m
α✝: Type

F: Factory α✝

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

h_bad: c > F.W ∨ i > F.W

ms✝: MeasureSet

h✝: Resolve F d✝ c c ms✝

h_bad✝: i > F.W


align_taint
α✝: Type

F: Factory α✝

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

h_bad: c > F.W ∨ i > F.W

ms✝: MeasureSet

h✝: Resolve F d✝ c c ms✝

h_ok✝: i ≀ F.W


align
α✝: Type

F: Factory α✝

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms: MeasureSet

h: Resolve F (Doc.align d✝) c i ms

h_bad: c > F.W ∨ i > F.W


βˆƒ m, ms = MeasureSet.tainted m
α✝: Type

F: Factory α✝

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

h_bad: c > F.W ∨ i > F.W

ms✝: MeasureSet

h: Resolve F d✝ c c ms✝

h_ok✝: i ≀ F.W


α✝: Type

F: Factory α✝

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms✝: MeasureSet

h: Resolve F d✝ c c ms✝

h_ok✝: i ≀ F.W

h✝: c > F.W


inl
α✝: Type

F: Factory α✝

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms✝: MeasureSet

h: Resolve F d✝ c c ms✝

h_ok✝: i ≀ F.W

h✝: i > F.W


inr
α✝: Type

F: Factory α✝

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

h_bad: c > F.W ∨ i > F.W

ms✝: MeasureSet

h: Resolve F d✝ c c ms✝

h_ok✝: i ≀ F.W


α✝: Type

F: Factory α✝

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms✝: MeasureSet

h: Resolve F d✝ c c ms✝

h_ok✝: i ≀ F.W

h_bad: c > F.W


α✝: Type

F: Factory α✝

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms✝: MeasureSet

h: Resolve F d✝ c c ms✝

h_ok✝: i ≀ F.W

h_bad: c > F.W



Goals accomplished! πŸ™
α✝: Type

F: Factory α✝

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms✝: MeasureSet

h: Resolve F d✝ c c ms✝

h_ok✝: i ≀ F.W

h_bad: c > F.W


c > F.W ∨ c > F.W
α✝: Type

F: Factory α✝

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms✝: MeasureSet

h: Resolve F d✝ c c ms✝

h_ok✝: i ≀ F.W

h_bad: c > F.W


c > F.W ∨ c > F.W
α✝: Type

F: Factory α✝

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms✝: MeasureSet

h: Resolve F d✝ c c ms✝

h_ok✝: i ≀ F.W

h_bad: c > F.W


c > F.W ∨ c > F.W
α✝: Type

F: Factory α✝

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms✝: MeasureSet

h: Resolve F d✝ c c ms✝

h_ok✝: i ≀ F.W

h_bad: c > F.W


h
c > F.W
α✝: Type

F: Factory α✝

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms✝: MeasureSet

h: Resolve F d✝ c c ms✝

h_ok✝: i ≀ F.W

h_bad: c > F.W


c > F.W ∨ c > F.W

Goals accomplished! πŸ™

Goals accomplished! πŸ™
α✝: Type

F: Factory α✝

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms✝: MeasureSet

h: Resolve F d✝ c c ms✝

h_ok✝: i ≀ F.W

h_bad: c > F.W

m: Meas

h✝: ms✝ = MeasureSet.tainted m


α✝: Type

F: Factory α✝

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms✝: MeasureSet

h: Resolve F d✝ c c ms✝

h_ok✝: i ≀ F.W

h_bad: c > F.W


α✝: Type

F: Factory α✝

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms✝: MeasureSet

h: Resolve F d✝ c c ms✝

h_ok✝: i ≀ F.W

h_bad: c > F.W

m: Meas

h✝: ms✝ = MeasureSet.tainted m


α✝: Type

F: Factory α✝

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms✝: MeasureSet

h: Resolve F d✝ c c ms✝

h_ok✝: i ≀ F.W

h_bad: c > F.W



Goals accomplished! πŸ™
α✝: Type

F: Factory α✝

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

h_bad: c > F.W ∨ i > F.W

ms✝: MeasureSet

h: Resolve F d✝ c c ms✝

h_ok✝: i ≀ F.W


α✝: Type

F: Factory α✝

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms✝: MeasureSet

h: Resolve F d✝ c c ms✝

h_ok✝: i ≀ F.W

h✝: i > F.W



Goals accomplished! πŸ™
α✝: Type

F: Factory α✝

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms: MeasureSet

h: Resolve F (Doc.align d✝) c i ms

h_bad: c > F.W ∨ i > F.W


βˆƒ m, ms = MeasureSet.tainted m
α✝: Type

F: Factory α✝

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

h_bad: c > F.W ∨ i > F.W

ms: MeasureSet

h: Resolve F d✝ c c ms

h_bad✝: i > F.W


α✝: Type

F: Factory α✝

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

h_bad: c > F.W ∨ i > F.W

h_bad✝: i > F.W

m✝: Meas

h: Resolve F d✝ c c (MeasureSet.tainted m✝)


tainted
α✝: Type

F: Factory α✝

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

h_bad: c > F.W ∨ i > F.W

h_bad✝: i > F.W

ms✝: List Meas

h✝: ms✝ β‰  []

h: Resolve F d✝ c c (MeasureSet.set ms✝ h✝)


set
α✝: Type

F: Factory α✝

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

h_bad: c > F.W ∨ i > F.W

ms: MeasureSet

h: Resolve F d✝ c c ms

h_bad✝: i > F.W


α✝: Type

F: Factory α✝

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

h_bad: c > F.W ∨ i > F.W

h_bad✝: i > F.W

m: Meas

h: Resolve F d✝ c c (MeasureSet.tainted m)



Goals accomplished! πŸ™
α✝: Type

F: Factory α✝

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

h_bad: c > F.W ∨ i > F.W

ms: MeasureSet

h: Resolve F d✝ c c ms

h_bad✝: i > F.W


α✝: Type

F: Factory α✝

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

h_bad: c > F.W ∨ i > F.W

h_bad✝: i > F.W

ms: List Meas

h✝: ms β‰  []

h: Resolve F d✝ c c (MeasureSet.set ms h✝)


α✝: Type

F: Factory α✝

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

h_bad: c > F.W ∨ i > F.W

h_bad✝: i > F.W

ms: List Meas

h✝: ms β‰  []

h: Resolve F d✝ c c (MeasureSet.set ms h✝)



Goals accomplished! πŸ™
α✝: Type

F: Factory α✝

d✝: Doc

ih: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F d✝ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

h_bad: c > F.W ∨ i > F.W

h_bad✝: i > F.W

ms: List Meas

h✝: ms β‰  []

h: Resolve F d✝ c c (MeasureSet.set ms h✝)


ms β‰  []

Goals accomplished! πŸ™

Goals accomplished! πŸ™
α✝: Type

F: Factory α✝

d: Doc

c, i: β„•

ms: MeasureSet

h: Resolve F d c i ms

h_bad: c > F.W ∨ i > F.W


βˆƒ m, ms = MeasureSet.tainted m
α✝: Type

F: Factory α✝

dβ‚βœ, dβ‚‚βœ: Doc

ih₁: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

ihβ‚‚: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms: MeasureSet

h: Resolve F (Doc.choice dβ‚βœ dβ‚‚βœ) c i ms

h_bad: c > F.W ∨ i > F.W


βˆƒ m, ms = MeasureSet.tainted m
α✝: Type

F: Factory α✝

dβ‚βœ, dβ‚‚βœ: Doc

ih₁: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

ihβ‚‚: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

h_bad: c > F.W ∨ i > F.W

ms✝, ms'✝: MeasureSet

h_left✝: Resolve F dβ‚βœ c i ms✝

h_right✝: Resolve F dβ‚‚βœ c i ms'✝


choice
βˆƒ m, MeasureSet.union F ms✝ ms'✝ = MeasureSet.tainted m
α✝: Type

F: Factory α✝

dβ‚βœ, dβ‚‚βœ: Doc

ih₁: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

ihβ‚‚: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms: MeasureSet

h: Resolve F (Doc.choice dβ‚βœ dβ‚‚βœ) c i ms

h_bad: c > F.W ∨ i > F.W


βˆƒ m, ms = MeasureSet.tainted m
α✝: Type

F: Factory α✝

dβ‚βœ, dβ‚‚βœ: Doc

ih₁: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

ihβ‚‚: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

h_bad: c > F.W ∨ i > F.W

ms✝, ms'✝: MeasureSet

h_left: Resolve F dβ‚βœ c i ms✝

h_right: Resolve F dβ‚‚βœ c i ms'✝


βˆƒ m, MeasureSet.union F ms✝ ms'✝ = MeasureSet.tainted m
α✝: Type

F: Factory α✝

dβ‚βœ, dβ‚‚βœ: Doc

ih₁: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

ihβ‚‚: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

h_bad: c > F.W ∨ i > F.W

ms✝, ms'✝: MeasureSet

h_left: Resolve F dβ‚βœ c i ms✝

h_right: Resolve F dβ‚‚βœ c i ms'✝

m: Meas

h: ms✝ = MeasureSet.tainted m


βˆƒ m, MeasureSet.union F ms✝ ms'✝ = MeasureSet.tainted m
α✝: Type

F: Factory α✝

dβ‚βœ, dβ‚‚βœ: Doc

ih₁: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

ihβ‚‚: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

h_bad: c > F.W ∨ i > F.W

ms✝, ms'✝: MeasureSet

h_left: Resolve F dβ‚βœ c i ms✝

h_right: Resolve F dβ‚‚βœ c i ms'✝


βˆƒ m, MeasureSet.union F ms✝ ms'✝ = MeasureSet.tainted m
α✝: Type

F: Factory α✝

dβ‚βœ, dβ‚‚βœ: Doc

ih₁: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

ihβ‚‚: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

h_bad: c > F.W ∨ i > F.W

ms✝, ms'✝: MeasureSet

h_left: Resolve F dβ‚βœ c i ms✝

h_right: Resolve F dβ‚‚βœ c i ms'✝

m: Meas

h: ms✝ = MeasureSet.tainted m

m': Meas

h': ms'✝ = MeasureSet.tainted m'


βˆƒ m, MeasureSet.union F ms✝ ms'✝ = MeasureSet.tainted m
α✝: Type

F: Factory α✝

dβ‚βœ, dβ‚‚βœ: Doc

ih₁: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

ihβ‚‚: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

h_bad: c > F.W ∨ i > F.W

ms✝, ms'✝: MeasureSet

h_left: Resolve F dβ‚βœ c i ms✝

h_right: Resolve F dβ‚‚βœ c i ms'✝


βˆƒ m, MeasureSet.union F ms✝ ms'✝ = MeasureSet.tainted m
α✝: Type

F: Factory α✝

dβ‚βœ, dβ‚‚βœ: Doc

ih₁: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

ihβ‚‚: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

h_bad: c > F.W ∨ i > F.W

ms✝, ms'✝: MeasureSet

h_left: Resolve F dβ‚βœ c i ms✝

h_right: Resolve F dβ‚‚βœ c i ms'✝

m: Meas

h: ms✝ = MeasureSet.tainted m

m': Meas

h': ms'✝ = MeasureSet.tainted m'


MeasureSet.union F ms✝ ms'✝ = MeasureSet.tainted m
α✝: Type

F: Factory α✝

dβ‚βœ, dβ‚‚βœ: Doc

ih₁: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

ihβ‚‚: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

h_bad: c > F.W ∨ i > F.W

ms✝, ms'✝: MeasureSet

h_left: Resolve F dβ‚βœ c i ms✝

h_right: Resolve F dβ‚‚βœ c i ms'✝


βˆƒ m, MeasureSet.union F ms✝ ms'✝ = MeasureSet.tainted m
α✝: Type

F: Factory α✝

dβ‚βœ, dβ‚‚βœ: Doc

ih₁: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

ihβ‚‚: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

h_bad: c > F.W ∨ i > F.W

m, m': Meas

h_left: Resolve F dβ‚βœ c i (MeasureSet.tainted m)

h_right: Resolve F dβ‚‚βœ c i (MeasureSet.tainted m')


α✝: Type

F: Factory α✝

dβ‚βœ, dβ‚‚βœ: Doc

ih₁: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

ihβ‚‚: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

h_bad: c > F.W ∨ i > F.W

ms✝, ms'✝: MeasureSet

h_left: Resolve F dβ‚βœ c i ms✝

h_right: Resolve F dβ‚‚βœ c i ms'✝


βˆƒ m, MeasureSet.union F ms✝ ms'✝ = MeasureSet.tainted m

Goals accomplished! πŸ™
α✝: Type

F: Factory α✝

d: Doc

c, i: β„•

ms: MeasureSet

h: Resolve F d c i ms

h_bad: c > F.W ∨ i > F.W


βˆƒ m, ms = MeasureSet.tainted m
α✝: Type

F: Factory α✝

dβ‚βœ, dβ‚‚βœ: Doc

ih₁: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

dβ‚‚_ih✝: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms: MeasureSet

h: Resolve F (Doc.concat dβ‚βœ dβ‚‚βœ) c i ms

h_bad: c > F.W ∨ i > F.W


βˆƒ m, ms = MeasureSet.tainted m
α✝: Type

F: Factory α✝

dβ‚βœ, dβ‚‚βœ: Doc

ih₁: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

dβ‚‚_ih✝: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

h_bad: c > F.W ∨ i > F.W

m✝: Meas

ms'✝: MeasureSet

m'✝: Meas

h_taint✝: MeasureSet.taint ms'✝ = MeasureSet.tainted m'✝

h_right✝: Resolve F dβ‚‚βœ m✝.last i ms'✝

h_left✝: Resolve F dβ‚βœ c i (MeasureSet.tainted m✝)


concat_taint
βˆƒ m, MeasureSet.tainted (Meas.concat F m✝ m'✝) = MeasureSet.tainted m
α✝: Type

F: Factory α✝

dβ‚βœ, dβ‚‚βœ: Doc

ih₁: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

dβ‚‚_ih✝: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms: MeasureSet

h_bad: c > F.W ∨ i > F.W

ms✝: List Meas

h_non_empty✝: ms✝ β‰  []

h_left✝: Resolve F dβ‚βœ c i (MeasureSet.set ms✝ h_non_empty✝)

h✝: ResolveConcat F ms✝ dβ‚‚βœ i ms


concat_set
βˆƒ m, ms = MeasureSet.tainted m
α✝: Type

F: Factory α✝

dβ‚βœ, dβ‚‚βœ: Doc

ih₁: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

dβ‚‚_ih✝: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms: MeasureSet

h: Resolve F (Doc.concat dβ‚βœ dβ‚‚βœ) c i ms

h_bad: c > F.W ∨ i > F.W


βˆƒ m, ms = MeasureSet.tainted m
α✝: Type

F: Factory α✝

dβ‚βœ, dβ‚‚βœ: Doc

ih₁: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

dβ‚‚_ih✝: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

h_bad: c > F.W ∨ i > F.W

m₁: Meas

ms'✝: MeasureSet

mβ‚‚: Meas

h_taint✝: MeasureSet.taint ms'✝ = MeasureSet.tainted mβ‚‚

h_right✝: Resolve F dβ‚‚βœ m₁.last i ms'✝

h_left✝: Resolve F dβ‚βœ c i (MeasureSet.tainted m₁)


βˆƒ m, MeasureSet.tainted (Meas.concat F m₁ mβ‚‚) = MeasureSet.tainted m

Goals accomplished! πŸ™
α✝: Type

F: Factory α✝

dβ‚βœ, dβ‚‚βœ: Doc

ih₁: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

dβ‚‚_ih✝: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms: MeasureSet

h: Resolve F (Doc.concat dβ‚βœ dβ‚‚βœ) c i ms

h_bad: c > F.W ∨ i > F.W


βˆƒ m, ms = MeasureSet.tainted m
α✝: Type

F: Factory α✝

dβ‚βœ, dβ‚‚βœ: Doc

ih₁: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

dβ‚‚_ih✝: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms: MeasureSet

h_bad: c > F.W ∨ i > F.W

ms✝: List Meas

h_non_empty✝: ms✝ β‰  []

h_left: Resolve F dβ‚βœ c i (MeasureSet.set ms✝ h_non_empty✝)

h✝: ResolveConcat F ms✝ dβ‚‚βœ i ms


βˆƒ m, ms = MeasureSet.tainted m
α✝: Type

F: Factory α✝

dβ‚βœ, dβ‚‚βœ: Doc

ih₁: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

dβ‚‚_ih✝: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms: MeasureSet

h_bad: c > F.W ∨ i > F.W

ms✝: List Meas

h_non_empty✝: ms✝ β‰  []

h_left: Resolve F dβ‚βœ c i (MeasureSet.set ms✝ h_non_empty✝)

h✝¹: ResolveConcat F ms✝ dβ‚‚βœ i ms

w✝: Meas

h✝: MeasureSet.set ms✝ h_non_empty✝ = MeasureSet.tainted w✝


βˆƒ m, ms = MeasureSet.tainted m
α✝: Type

F: Factory α✝

dβ‚βœ, dβ‚‚βœ: Doc

ih₁: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

dβ‚‚_ih✝: βˆ€ {c i : β„•} {ms : MeasureSet}, Resolve F dβ‚‚βœ c i ms β†’ c > F.W ∨ i > F.W β†’ βˆƒ m, ms = MeasureSet.tainted m

c, i: β„•

ms: MeasureSet

h_bad: c > F.W ∨ i > F.W

ms✝: List Meas

h_non_empty✝: ms✝ β‰  []

h_left: Resolve F dβ‚βœ c i (MeasureSet.set ms✝ h_non_empty✝)

h✝: ResolveConcat F ms✝ dβ‚‚βœ i ms


βˆƒ m, ms = MeasureSet.tainted m

Goals accomplished! πŸ™