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.FactoryMath

/-! 
## Various lemmas about domination
-/

lemma 
dominates_refl: ∀ {α : Type} {m : Meas} (F : Factory α), dominates F m m = true
dominates_refl
(
F: Factory α
F
:
Factory: TypeType
Factory
α: ?m.3
α
) :
dominates: {α : Type} → Factory αMeasMeasBool
dominates
F: Factory α
F
m: ?m.11
m
m: ?m.11
m
:=

Goals accomplished! 🐙
α: Type

m: Meas

F: Factory α


α: Type

m: Meas

F: Factory α


α: Type

m: Meas

F: Factory α



Goals accomplished! 🐙

Goals accomplished! 🐙
lemma
dominates_trans: ∀ {α : Type} {m₁ m₂ m₃ : Meas} {F : Factory α}, dominates F m₁ m₂ = truedominates F m₂ m₃ = truedominates F m₁ m₃ = true
dominates_trans
{
F: Factory α
F
:
Factory: TypeType
Factory
α: ?m.233
α
} (
h: dominates F m₁ m₂ = true
h
:
dominates: {α : Type} → Factory αMeasMeasBool
dominates
F: Factory α
F
m₁: ?m.241
m₁
m₂: ?m.249
m₂
) (
h': dominates F m₂ m₃ = true
h'
:
dominates: {α : Type} → Factory αMeasMeasBool
dominates
F: Factory α
F
m₂: ?m.249
m₂
m₃: ?m.273
m₃
) :
dominates: {α : Type} → Factory αMeasMeasBool
dominates
F: Factory α
F
m₁: ?m.241
m₁
m₃: ?m.273
m₃
:=

Goals accomplished! 🐙
α: Type

m₁, m₂, m₃: Meas

F: Factory α

h: dominates F m₁ m₂ = true

h': dominates F m₂ m₃ = true


dominates F m₁ m₃ = true
α: Type

m₁, m₂, m₃: Meas

F: Factory α

h: dominates F m₁ m₂ = true

h': dominates F m₂ m₃ = true


dominates F m₁ m₃ = true
α: Type

m₁, m₂, m₃: Meas

F: Factory α

h: dominates F m₁ m₂ = true

h': dominates F m₂ m₃ = true


dominates F m₁ m₃ = true
α: Type

m₁, m₂, m₃: Meas

F: Factory α

h: m₁.last m₂.last Factory.le F m₁.cost m₂.cost = true

h': m₂.last m₃.last Factory.le F m₂.cost m₃.cost = true


m₁.last m₃.last Factory.le F m₁.cost m₃.cost = true
α: Type

m₁, m₂, m₃: Meas

F: Factory α

h: dominates F m₁ m₂ = true

h': dominates F m₂ m₃ = true


dominates F m₁ m₃ = true
α: Type

m₁, m₂, m₃: Meas

F: Factory α

h: m₁.last m₂.last Factory.le F m₁.cost m₂.cost = true

h': m₂.last m₃.last Factory.le F m₂.cost m₃.cost = true


left
m₁.last m₃.last
α: Type

m₁, m₂, m₃: Meas

F: Factory α

h: m₁.last m₂.last Factory.le F m₁.cost m₂.cost = true

h': m₂.last m₃.last Factory.le F m₂.cost m₃.cost = true


right
Factory.le F m₁.cost m₃.cost = true
α: Type

m₁, m₂, m₃: Meas

F: Factory α

h: dominates F m₁ m₂ = true

h': dominates F m₂ m₃ = true


dominates F m₁ m₃ = true
α: Type

m₁, m₂, m₃: Meas

F: Factory α

h: m₁.last m₂.last Factory.le F m₁.cost m₂.cost = true

h': m₂.last m₃.last Factory.le F m₂.cost m₃.cost = true


m₁.last m₃.last
α: Type

m₁, m₂, m₃: Meas

F: Factory α

h: m₁.last m₂.last Factory.le F m₁.cost m₂.cost = true

h': m₂.last m₃.last Factory.le F m₂.cost m₃.cost = true


a
m₁.last ?b
α: Type

m₁, m₂, m₃: Meas

F: Factory α

h: m₁.last m₂.last Factory.le F m₁.cost m₂.cost = true

h': m₂.last m₃.last Factory.le F m₂.cost m₃.cost = true


a
?b m₃.last
α: Type

m₁, m₂, m₃: Meas

F: Factory α

h: m₁.last m₂.last Factory.le F m₁.cost m₂.cost = true

h': m₂.last m₃.last Factory.le F m₂.cost m₃.cost = true


b
α: Type

m₁, m₂, m₃: Meas

F: Factory α

h: m₁.last m₂.last Factory.le F m₁.cost m₂.cost = true

h': m₂.last m₃.last Factory.le F m₂.cost m₃.cost = true


m₁.last m₃.last
α: Type

m₁, m₂, m₃: Meas

F: Factory α

h: m₁.last m₂.last Factory.le F m₁.cost m₂.cost = true

h': m₂.last m₃.last Factory.le F m₂.cost m₃.cost = true


a
m₁.last ?b
α: Type

m₁, m₂, m₃: Meas

F: Factory α

h: m₁.last m₂.last Factory.le F m₁.cost m₂.cost = true

h': m₂.last m₃.last Factory.le F m₂.cost m₃.cost = true


a
?b m₃.last
α: Type

m₁, m₂, m₃: Meas

F: Factory α

h: m₁.last m₂.last Factory.le F m₁.cost m₂.cost = true

h': m₂.last m₃.last Factory.le F m₂.cost m₃.cost = true


b

Goals accomplished! 🐙
α: Type

m₁, m₂, m₃: Meas

F: Factory α

h: m₁.last m₂.last Factory.le F m₁.cost m₂.cost = true

h': m₂.last m₃.last Factory.le F m₂.cost m₃.cost = true


m₁.last m₃.last
α: Type

m₁, m₂, m₃: Meas

F: Factory α

h: m₁.last m₂.last Factory.le F m₁.cost m₂.cost = true

h': m₂.last m₃.last Factory.le F m₂.cost m₃.cost = true


a
m₂.last m₃.last

Goals accomplished! 🐙
α: Type

m₁, m₂, m₃: Meas

F: Factory α

h: dominates F m₁ m₂ = true

h': dominates F m₂ m₃ = true


dominates F m₁ m₃ = true
α: Type

m₁, m₂, m₃: Meas

F: Factory α

h: m₁.last m₂.last Factory.le F m₁.cost m₂.cost = true

h': m₂.last m₃.last Factory.le F m₂.cost m₃.cost = true


Factory.le F m₁.cost m₃.cost = true
α: Type

m₁, m₂, m₃: Meas

F: Factory α

h: m₁.last m₂.last Factory.le F m₁.cost m₂.cost = true

h': m₂.last m₃.last Factory.le F m₂.cost m₃.cost = true


a
Factory.le F m₁.cost ?m.1551 = true
α: Type

m₁, m₂, m₃: Meas

F: Factory α

h: m₁.last m₂.last Factory.le F m₁.cost m₂.cost = true

h': m₂.last m₃.last Factory.le F m₂.cost m₃.cost = true


a
Factory.le F ?m.1551 m₃.cost = true
α: Type

m₁, m₂, m₃: Meas

F: Factory α

h: m₁.last m₂.last Factory.le F m₁.cost m₂.cost = true

h': m₂.last m₃.last Factory.le F m₂.cost m₃.cost = true


α
α: Type

m₁, m₂, m₃: Meas

F: Factory α

h: m₁.last m₂.last Factory.le F m₁.cost m₂.cost = true

h': m₂.last m₃.last Factory.le F m₂.cost m₃.cost = true


Factory.le F m₁.cost m₃.cost = true
α: Type

m₁, m₂, m₃: Meas

F: Factory α

h: m₁.last m₂.last Factory.le F m₁.cost m₂.cost = true

h': m₂.last m₃.last Factory.le F m₂.cost m₃.cost = true


a
Factory.le F m₁.cost ?m.1551 = true
α: Type

m₁, m₂, m₃: Meas

F: Factory α

h: m₁.last m₂.last Factory.le F m₁.cost m₂.cost = true

h': m₂.last m₃.last Factory.le F m₂.cost m₃.cost = true


a
Factory.le F ?m.1551 m₃.cost = true
α: Type

m₁, m₂, m₃: Meas

F: Factory α

h: m₁.last m₂.last Factory.le F m₁.cost m₂.cost = true

h': m₂.last m₃.last Factory.le F m₂.cost m₃.cost = true


α

Goals accomplished! 🐙
α: Type

m₁, m₂, m₃: Meas

F: Factory α

h: m₁.last m₂.last Factory.le F m₁.cost m₂.cost = true

h': m₂.last m₃.last Factory.le F m₂.cost m₃.cost = true


Factory.le F m₁.cost m₃.cost = true
α: Type

m₁, m₂, m₃: Meas

F: Factory α

h: m₁.last m₂.last Factory.le F m₁.cost m₂.cost = true

h': m₂.last m₃.last Factory.le F m₂.cost m₃.cost = true


a
Factory.le F m₂.cost m₃.cost = true

Goals accomplished! 🐙

Goals accomplished! 🐙
inductive
FourCases: {α : Type} → (F : Factory α) → (m₁ : Meas) → MeasProp
FourCases
(
F: Factory α
F
:
Factory: TypeType
Factory
α: ?m.1580
α
) (
m₁: Meas
m₁
m₂: Meas
m₂
:
Meas: {α : Type} → Type
Meas
) :
Prop: Type
Prop
where |
first_dom: ∀ {α : Type} {F : Factory α} {m₁ m₂ : Meas}, dominates F m₁ m₂ = trueFourCases F m₁ m₂
first_dom
(
h_dom: dominates F m₁ m₂ = true
h_dom
:
dominates: {α : Type} → Factory αMeasMeasBool
dominates
F: Factory α
F
m₁: Meas
m₁
m₂: Meas
m₂
) |
second_dom: ∀ {α : Type} {F : Factory α} {m₁ m₂ : Meas}, ¬dominates F m₁ m₂ = truedominates F m₂ m₁ = trueFourCases F m₁ m₂
second_dom
(
h_non_dom: ¬dominates F m₁ m₂ = true
h_non_dom
: ¬ (
dominates: {α : Type} → Factory αMeasMeasBool
dominates
F: Factory α
F
m₁: Meas
m₁
m₂: Meas
m₂
)) (
h_dom: dominates F m₂ m₁ = true
h_dom
:
dominates: {α : Type} → Factory αMeasMeasBool
dominates
F: Factory α
F
m₂: Meas
m₂
m₁: Meas
m₁
) |
first_last: ∀ {α : Type} {F : Factory α} {m₁ m₂ : Meas}, ¬dominates F m₁ m₂ = true¬dominates F m₂ m₁ = truem₁.last > m₂.lastFourCases F m₁ m₂
first_last
(
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₁
: ¬ (
dominates: {α : Type} → Factory αMeasMeasBool
dominates
F: Factory α
F
m₁: Meas
m₁
m₂: Meas
m₂
)) (
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_non_dom₂
: ¬ (
dominates: {α : Type} → Factory αMeasMeasBool
dominates
F: Factory α
F
m₂: Meas
m₂
m₁: Meas
m₁
)) (
h: m₁.last > m₂.last
h
:
m₁: Meas
m₁
.
last: {α : Type} → Meas
last
>
m₂: Meas
m₂
.
last: {α : Type} → Meas
last
) |
second_last: ∀ {α : Type} {F : Factory α} {m₁ m₂ : Meas}, ¬dominates F m₁ m₂ = true¬dominates F m₂ m₁ = truem₂.last > m₁.lastFourCases F m₁ m₂
second_last
(
h_non_dom₁: ¬dominates F m₁ m₂ = true
h_non_dom₁
: ¬ (
dominates: {α : Type} → Factory αMeasMeasBool
dominates
F: Factory α
F
m₁: Meas
m₁
m₂: Meas
m₂
)) (
h_non_dom₂: ¬dominates F m₂ m₁ = true
h_non_dom₂
: ¬ (
dominates: {α : Type} → Factory αMeasMeasBool
dominates
F: Factory α
F
m₂: Meas
m₂
m₁: Meas
m₁
)) (
h: m₂.last > m₁.last
h
:
m₂: Meas
m₂
.
last: {α : Type} → Meas
last
>
m₁: Meas
m₁
.
last: {α : Type} → Meas
last
) /-- In the `merge` operation, there are four possible cases based on domination of two measures. This lemma creates an exhaustive case analysis for these four cases. -/ lemma
four_cases: ∀ {α : Type} (F : Factory α) (m₁ m₂ : Meas), FourCases F m₁ m₂
four_cases
(
F: Factory α
F
:
Factory: TypeType
Factory
α: ?m.1859
α
) (
m₁: Meas
m₁
m₂: Meas
m₂
:
Meas: {α : Type} → Type
Meas
) :
FourCases: {α : Type} → Factory αMeasMeasProp
FourCases
F: Factory α
F
m₁: Meas
m₁
m₂: Meas
m₂
:=

Goals accomplished! 🐙
α: Type

F: Factory α

m₁, m₂: Meas


FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas


FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas


FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h✝: m₁.last < m₂.last


inl
FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h✝: m₁.last = m₂.last m₂.last < m₁.last


inr
FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas


FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h: m₁.last < m₂.last


FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h: m₁.last < m₂.last


FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h: m₁.last < m₂.last


FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h✝: m₁.last < m₂.last

h: Factory.le F m₁.cost m₂.cost = true


pos
FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h✝: m₁.last < m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


neg
FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h: m₁.last < m₂.last


FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last < m₂.last

h: Factory.le F m₁.cost m₂.cost = true


FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last < m₂.last

h: Factory.le F m₁.cost m₂.cost = true


h_dom
dominates F m₁ m₂ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last < m₂.last

h: Factory.le F m₁.cost m₂.cost = true


FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last < m₂.last

h: Factory.le F m₁.cost m₂.cost = true


dominates F m₁ m₂ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last < m₂.last

h: Factory.le F m₁.cost m₂.cost = true


m₁.last m₂.last Factory.le F m₁.cost m₂.cost = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last < m₂.last

h: Factory.le F m₁.cost m₂.cost = true


dominates F m₁ m₂ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last < m₂.last

h: Factory.le F m₁.cost m₂.cost = true


m₁.last m₂.last Factory.le F m₁.cost m₂.cost = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last < m₂.last

h: Factory.le F m₁.cost m₂.cost = true


left
m₁.last m₂.last
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last < m₂.last

h: Factory.le F m₁.cost m₂.cost = true


right
Factory.le F m₁.cost m₂.cost = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last < m₂.last

h: Factory.le F m₁.cost m₂.cost = true


left
m₁.last m₂.last
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last < m₂.last

h: Factory.le F m₁.cost m₂.cost = true


dominates F m₁ m₂ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last < m₂.last

h: Factory.le F m₁.cost m₂.cost = true


m₁.last m₂.last
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last < m₂.last

h: Factory.le F m₁.cost m₂.cost = true


a
m₁.last < m₂.last
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last < m₂.last

h: Factory.le F m₁.cost m₂.cost = true


m₁.last m₂.last

Goals accomplished! 🐙
α: Type

F: Factory α

m₁, m₂: Meas

h: m₁.last < m₂.last


FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last < m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last < m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last < m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


h_non_dom₁
¬dominates F m₁ m₂ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last < m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


h_non_dom₂
¬dominates F m₂ m₁ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last < m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


h
m₂.last > m₁.last
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last < m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


h_non_dom₁
¬dominates F m₁ m₂ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last < m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


h_non_dom₂
¬dominates F m₂ m₁ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last < m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last < m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


¬dominates F m₁ m₂ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last < m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


m₁.last m₂.lastFactory.le F m₁.cost m₂.cost = false
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last < m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


¬dominates F m₁ m₂ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last < m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true

a✝: m₁.last m₂.last


Factory.le F m₁.cost m₂.cost = false
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last < m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


¬dominates F m₁ m₂ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last < m₂.last

a✝: m₁.last m₂.last

h: Factory.le F m₁.cost m₂.cost = false


Factory.le F m₁.cost m₂.cost = false
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last < m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


¬dominates F m₁ m₂ = true

Goals accomplished! 🐙
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last < m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last < m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


¬dominates F m₂ m₁ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last < m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


m₂.last m₁.lastFactory.le F m₂.cost m₁.cost = false
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last < m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


¬dominates F m₂ m₁ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last < m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true

a✝: m₂.last m₁.last


Factory.le F m₂.cost m₁.cost = false
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last < m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


¬dominates F m₂ m₁ = true
α: Type

F: Factory α

m₁, m₂: Meas

h: ¬Factory.le F m₁.cost m₂.cost = true

a✝: m₂.last m₁.last

h': ¬m₂.last m₁.last


Factory.le F m₂.cost m₁.cost = false
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last < m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


¬dominates F m₂ m₁ = true

Goals accomplished! 🐙
α: Type

F: Factory α

m₁, m₂: Meas


FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h: m₁.last = m₂.last m₂.last < m₁.last


FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h✝: m₁.last = m₂.last


inl
FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h✝: m₂.last < m₁.last


inr
FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h: m₁.last = m₂.last m₂.last < m₁.last


FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last


FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last


FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last


FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: Factory.le F m₁.cost m₂.cost = true


pos
FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


neg
FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last


FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: Factory.le F m₁.cost m₂.cost = true


FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: Factory.le F m₁.cost m₂.cost = true


h_dom
dominates F m₁ m₂ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: Factory.le F m₁.cost m₂.cost = true


FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: Factory.le F m₁.cost m₂.cost = true


dominates F m₁ m₂ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: Factory.le F m₁.cost m₂.cost = true


m₁.last m₂.last Factory.le F m₁.cost m₂.cost = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: Factory.le F m₁.cost m₂.cost = true


dominates F m₁ m₂ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: Factory.le F m₁.cost m₂.cost = true


m₁.last m₂.last Factory.le F m₁.cost m₂.cost = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: Factory.le F m₁.cost m₂.cost = true


left
m₁.last m₂.last
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: Factory.le F m₁.cost m₂.cost = true


right
Factory.le F m₁.cost m₂.cost = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: Factory.le F m₁.cost m₂.cost = true


left
m₁.last m₂.last
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: Factory.le F m₁.cost m₂.cost = true


dominates F m₁ m₂ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: Factory.le F m₁.cost m₂.cost = true


m₁.last m₂.last

Goals accomplished! 🐙
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last


FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


h_non_dom
¬dominates F m₁ m₂ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


h_dom
dominates F m₂ m₁ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


¬dominates F m₁ m₂ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


m₁.last m₂.lastFactory.le F m₁.cost m₂.cost = false
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


¬dominates F m₁ m₂ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true

a✝: m₁.last m₂.last


Factory.le F m₁.cost m₂.cost = false
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


¬dominates F m₁ m₂ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

a✝: m₁.last m₂.last

h: Factory.le F m₁.cost m₂.cost = false


Factory.le F m₁.cost m₂.cost = false
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


¬dominates F m₁ m₂ = true

Goals accomplished! 🐙
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


dominates F m₂ m₁ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


m₂.last m₁.last Factory.le F m₂.cost m₁.cost = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


dominates F m₂ m₁ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


left
m₂.last m₁.last
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


right
Factory.le F m₂.cost m₁.cost = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


dominates F m₂ m₁ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


m₂.last m₁.last
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


a
m₂.last = m₁.last
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


m₂.last m₁.last
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


a
m₁.last = m₂.last
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


m₂.last m₁.last

Goals accomplished! 🐙
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


dominates F m₂ m₁ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


Factory.le F m₂.cost m₁.cost = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


h₁
Factory.lt F m₂.cost m₁.cost
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


Factory.le F m₂.cost m₁.cost = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₁.last = m₂.last

h: ¬Factory.le F m₁.cost m₂.cost = true


Factory.lt F m₂.cost m₁.cost

Goals accomplished! 🐙
α: Type

F: Factory α

m₁, m₂: Meas

h: m₁.last = m₂.last m₂.last < m₁.last


FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last


FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: Factory.le F m₂.cost m₁.cost = true


pos
FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: ¬Factory.le F m₂.cost m₁.cost = true


neg
FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last


FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: Factory.le F m₂.cost m₁.cost = true


FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: Factory.le F m₂.cost m₁.cost = true


h_non_dom
¬dominates F m₁ m₂ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: Factory.le F m₂.cost m₁.cost = true


h_dom
dominates F m₂ m₁ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: Factory.le F m₂.cost m₁.cost = true


FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: Factory.le F m₂.cost m₁.cost = true


¬dominates F m₁ m₂ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: Factory.le F m₂.cost m₁.cost = true


m₁.last m₂.lastFactory.le F m₁.cost m₂.cost = false
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: Factory.le F m₂.cost m₁.cost = true


¬dominates F m₁ m₂ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: Factory.le F m₂.cost m₁.cost = true

a✝: m₁.last m₂.last


Factory.le F m₁.cost m₂.cost = false
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: Factory.le F m₂.cost m₁.cost = true


¬dominates F m₁ m₂ = true
α: Type

F: Factory α

m₁, m₂: Meas

h: Factory.le F m₂.cost m₁.cost = true

a✝: m₁.last m₂.last

h': ¬m₁.last m₂.last


Factory.le F m₁.cost m₂.cost = false
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: Factory.le F m₂.cost m₁.cost = true


¬dominates F m₁ m₂ = true

Goals accomplished! 🐙
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: Factory.le F m₂.cost m₁.cost = true


FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: Factory.le F m₂.cost m₁.cost = true


dominates F m₂ m₁ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: Factory.le F m₂.cost m₁.cost = true


m₂.last m₁.last Factory.le F m₂.cost m₁.cost = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: Factory.le F m₂.cost m₁.cost = true


dominates F m₂ m₁ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: Factory.le F m₂.cost m₁.cost = true


m₂.last m₁.last Factory.le F m₂.cost m₁.cost = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: Factory.le F m₂.cost m₁.cost = true


left
m₂.last m₁.last
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: Factory.le F m₂.cost m₁.cost = true


right
Factory.le F m₂.cost m₁.cost = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: Factory.le F m₂.cost m₁.cost = true


left
m₂.last m₁.last
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: Factory.le F m₂.cost m₁.cost = true


dominates F m₂ m₁ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: Factory.le F m₂.cost m₁.cost = true


m₂.last m₁.last
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: Factory.le F m₂.cost m₁.cost = true


a
m₂.last < m₁.last
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: Factory.le F m₂.cost m₁.cost = true


m₂.last m₁.last

Goals accomplished! 🐙
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last


FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: ¬Factory.le F m₂.cost m₁.cost = true


FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: ¬Factory.le F m₂.cost m₁.cost = true


FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: ¬Factory.le F m₂.cost m₁.cost = true


h_non_dom₁
¬dominates F m₁ m₂ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: ¬Factory.le F m₂.cost m₁.cost = true


h_non_dom₂
¬dominates F m₂ m₁ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: ¬Factory.le F m₂.cost m₁.cost = true


h
m₁.last > m₂.last
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: ¬Factory.le F m₂.cost m₁.cost = true


h_non_dom₁
¬dominates F m₁ m₂ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: ¬Factory.le F m₂.cost m₁.cost = true


h_non_dom₂
¬dominates F m₂ m₁ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: ¬Factory.le F m₂.cost m₁.cost = true


FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: ¬Factory.le F m₂.cost m₁.cost = true


¬dominates F m₁ m₂ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: ¬Factory.le F m₂.cost m₁.cost = true


m₁.last m₂.lastFactory.le F m₁.cost m₂.cost = false
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: ¬Factory.le F m₂.cost m₁.cost = true


¬dominates F m₁ m₂ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: ¬Factory.le F m₂.cost m₁.cost = true

a✝: m₁.last m₂.last


Factory.le F m₁.cost m₂.cost = false
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: ¬Factory.le F m₂.cost m₁.cost = true


¬dominates F m₁ m₂ = true
α: Type

F: Factory α

m₁, m₂: Meas

h: ¬Factory.le F m₂.cost m₁.cost = true

a✝: m₁.last m₂.last

h': ¬m₁.last m₂.last


Factory.le F m₁.cost m₂.cost = false
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: ¬Factory.le F m₂.cost m₁.cost = true


¬dominates F m₁ m₂ = true

Goals accomplished! 🐙
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: ¬Factory.le F m₂.cost m₁.cost = true


FourCases F m₁ m₂
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: ¬Factory.le F m₂.cost m₁.cost = true


¬dominates F m₂ m₁ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: ¬Factory.le F m₂.cost m₁.cost = true


m₂.last m₁.lastFactory.le F m₂.cost m₁.cost = false
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: ¬Factory.le F m₂.cost m₁.cost = true


¬dominates F m₂ m₁ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: ¬Factory.le F m₂.cost m₁.cost = true

a✝: m₂.last m₁.last


Factory.le F m₂.cost m₁.cost = false
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: ¬Factory.le F m₂.cost m₁.cost = true


¬dominates F m₂ m₁ = true
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

a✝: m₂.last m₁.last

h: Factory.le F m₂.cost m₁.cost = false


Factory.le F m₂.cost m₁.cost = false
α: Type

F: Factory α

m₁, m₂: Meas

h': m₂.last < m₁.last

h: ¬Factory.le F m₂.cost m₁.cost = true


¬dominates F m₂ m₁ = true

Goals accomplished! 🐙

Goals accomplished! 🐙