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.Supports.MergeBasic

/-!
### Various measure set operations (Figure 12)
-/

/--
- lift;
-/
def 
MeasureSet.lift: {α : Type} → (MeasMeas) → MeasureSetMeasureSet
MeasureSet.lift
(
f: MeasMeas
f
: @
Meas: {α : Type} → Type
Meas
α: ?m.4
α
→ @
Meas: {α : Type} → Type
Meas
α: ?m.4
α
) : @
MeasureSet: {α : Type} → Type
MeasureSet
α: ?m.4
α
→ @
MeasureSet: {α : Type} → Type
MeasureSet
α: ?m.4
α
|
MeasureSet.tainted: {α : Type} → MeasMeasureSet
MeasureSet.tainted
m: Meas
m
=>
MeasureSet.tainted: {α : Type} → MeasMeasureSet
MeasureSet.tainted
(
f: MeasMeas
f
m: Meas
m
) |
MeasureSet.set: {α : Type} → (ms : List Meas) → ms []MeasureSet
MeasureSet.set
ms: List Meas
ms
h: ms []
h
=>
MeasureSet.set: {α : Type} → (ms : List Meas) → ms []MeasureSet
MeasureSet.set
(
ms: List Meas
ms
.
map: {α : Type ?u.58} → {β : Type ?u.57} → (αβ) → List αList β
map
f: MeasMeas
f
) (

Goals accomplished! 🐙
α: Type

f: MeasMeas

ms: List Meas

h: ms []


List.map f ms []

Goals accomplished! 🐙
) /-- - taint; and -/ def
MeasureSet.taint: {α : Type} → MeasureSetMeasureSet
MeasureSet.taint
: @
MeasureSet: {α : Type} → Type
MeasureSet
α: ?m.558
α
→ @
MeasureSet: {α : Type} → Type
MeasureSet
α: ?m.558
α
|
MeasureSet.tainted: {α : Type} → MeasMeasureSet
MeasureSet.tainted
m: Meas
m
=>
MeasureSet.tainted: {α : Type} → MeasMeasureSet
MeasureSet.tainted
m: Meas
m
|
MeasureSet.set: {α : Type} → (ms : List Meas) → ms []MeasureSet
MeasureSet.set
ms: List Meas
ms
h: ms []
h
=>
MeasureSet.tainted: {α : Type} → MeasMeasureSet
MeasureSet.tainted
(
ms: List Meas
ms
.
head: {α : Type ?u.606} → (as : List α) → as []α
head
h: ms []
h
) /-- - union (⊎) -/ def
MeasureSet.union: {α : Type} → Factory αMeasureSetMeasureSetMeasureSet
MeasureSet.union
(
F: Factory α
F
:
Factory: TypeType
Factory
α: ?m.795
α
) : @
MeasureSet: {α : Type} → Type
MeasureSet
α: ?m.795
α
→ @
MeasureSet: {α : Type} → Type
MeasureSet
α: ?m.795
α
→ @
MeasureSet: {α : Type} → Type
MeasureSet
α: ?m.795
α
|
s: MeasureSet
s
,
MeasureSet.tainted: {α : Type} → MeasMeasureSet
MeasureSet.tainted
_ =>
s: MeasureSet
s
|
MeasureSet.tainted: {α : Type} → MeasMeasureSet
MeasureSet.tainted
_,
MeasureSet.set: {α : Type} → (ms : List Meas) → ms []MeasureSet
MeasureSet.set
ms: List Meas
ms
h: ms []
h
=>
MeasureSet.set: {α : Type} → (ms : List Meas) → ms []MeasureSet
MeasureSet.set
ms: List Meas
ms
h: ms []
h
|
MeasureSet.set: {α : Type} → (ms : List Meas) → ms []MeasureSet
MeasureSet.set
ms₁: List Meas
ms₁
h₁: ms₁ []
h₁
,
MeasureSet.set: {α : Type} → (ms : List Meas) → ms []MeasureSet
MeasureSet.set
ms₂: List Meas
ms₂
_ =>
MeasureSet.set: {α : Type} → (ms : List Meas) → ms []MeasureSet
MeasureSet.set
(
merge: {α : Type} → Factory αList Meas × List MeasList Meas
merge
F: Factory α
F
ms₁: List Meas
ms₁
,
ms₂: List Meas
ms₂
⟩) (

Goals accomplished! 🐙
α: Type

F: Factory α

ms₁: List Meas

h₁: ms₁ []

ms₂: List Meas

h✝: ms₂ []


merge F (ms₁, ms₂) []
α: Type

F: Factory α

ms₁: List Meas

h₁: ms₁ []

ms₂: List Meas

h✝: ms₂ []


merge F (ms₁, ms₂) []
α: Type

F: Factory α

ms₁: List Meas

h₁: ms₁ []

ms₂: List Meas

h✝: ms₂ []


merge F (ms₁, ms₂) []
α: Type

F: Factory α

ms₁: List Meas

h₁: ms₁ []

ms₂: List Meas

h✝: ms₂ []


h
ms₁ [] ms₂ []
α: Type

F: Factory α

ms₁: List Meas

h₁: ms₁ []

ms₂: List Meas

h✝: ms₂ []


merge F (ms₁, ms₂) []

Goals accomplished! 🐙

Goals accomplished! 🐙
)