import Pretty.Supports.LastAndCost /-! ## Various lemmas related to the `dedup` operation -/ lemma dedup_not_empty (h :h: ms β []ms βms: ?m.5[]) : dedup[]: unknown metavariable '?_uniq.11'FF: ?m.20ms βms: ?m.5[] :=[]: List ?m.39Goals accomplished! πGoals accomplished! πGoals accomplished! πΞ±β: Type
F: Factory Ξ±β
hd, hd': Meas
tl': List Meas
ih: hd' :: tl' β [] β dedup F (hd' :: tl') β []
h: hd :: hd' :: tl' β []
hβ: Factory.le F hd'.cost hd.cost = true
inlΞ±β: Type
F: Factory Ξ±β
hd, hd': Meas
tl': List Meas
ih: hd' :: tl' β [] β dedup F (hd' :: tl') β []
h: hd :: hd' :: tl' β []
hβ: Β¬Factory.le F hd'.cost hd.cost = true
inrGoals accomplished! πlemmaGoals accomplished! πdedup_member (h :m β dedupm: ?m.1678FF: ?m.1698ms) :ms: ?m.1720m βm: ?m.1678ms :=ms: ?m.1720Goals accomplished! πGoals accomplished! πGoals accomplished! πΞ±β: Type
m: Meas
F: Factory Ξ±β
hd, hd': Meas
tl': List Meas
ih: m β dedup F (hd' :: tl') β m β hd' :: tl'
hβ: Factory.le F hd'.cost hd.cost = true
h: m β dedup F (hd' :: tl')
inlΞ±β: Type
m: Meas
F: Factory Ξ±β
hd, hd': Meas
tl': List Meas
ih: m β dedup F (hd' :: tl') β m β hd' :: tl'
hβ: Β¬Factory.le F hd'.cost hd.cost = true
h: m β hd :: dedup F (hd' :: tl')
inrGoals accomplished! πΞ±β: Type
m: Meas
F: Factory Ξ±β
hd, hd': Meas
tl': List Meas
ih: m β dedup F (hd' :: tl') β m β hd' :: tl'
hβΒΉ: Β¬Factory.le F hd'.cost hd.cost = true
hβ: m = hd
inlΞ±β: Type
m: Meas
F: Factory Ξ±β
hd, hd': Meas
tl': List Meas
ih: m β dedup F (hd' :: tl') β m β hd' :: tl'
hβΒΉ: Β¬Factory.le F hd'.cost hd.cost = true
hβ: m β dedup F (hd' :: tl')
inrGoals accomplished! πlemmaGoals accomplished! πdedup_last_first (h : dedupF (F: ?m.9189m ::m: ?m.9200ms) =ms: ?m.9209m' ::m': ?m.9220ms') (ms': ?m.9231h_last : last_decreasing (h_last: last_decreasing (m :: ms)m ::m: ?m.9200ms)) :ms: ?m.9209m.last β₯m: ?m.9200m'.last :=m': ?m.9220Goals accomplished! πΞ±β: Type
F: Factory Ξ±β
m': Meas
ms': List Meas
m: Meas
h: dedup F [m] = m' :: ms'
h_last: last_decreasing [m]
nilm.last β₯ m'.lastΞ±β: Type
F: Factory Ξ±β
m': Meas
ms': List Meas
headβ: Meas
tailβ: List Meas
tail_ihβ: β {m : Meas}, dedup F (m :: tailβ) = m' :: ms' β last_decreasing (m :: tailβ) β m.last β₯ m'.last
m: Meas
h: dedup F (m :: headβ :: tailβ) = m' :: ms'
h_last: last_decreasing (m :: headβ :: tailβ)
consm.last β₯ m'.lastGoals accomplished! πΞ±β: Type
F: Factory Ξ±β
m': Meas
ms': List Meas
hd: Meas
tl: List Meas
ih: β {m : Meas}, dedup F (m :: tl) = m' :: ms' β last_decreasing (m :: tl) β m.last β₯ m'.last
m: Meas
h: (if Factory.le F hd.cost m.cost = true then dedup F (hd :: tl) else m :: dedup F (hd :: tl)) = m' :: ms'
h_last: last_decreasing (m :: hd :: tl)m.last β₯ m'.lastΞ±β: Type
F: Factory Ξ±β
m': Meas
ms': List Meas
hd: Meas
tl: List Meas
ih: β {m : Meas}, dedup F (m :: tl) = m' :: ms' β last_decreasing (m :: tl) β m.last β₯ m'.last
m: Meas
h_last: last_decreasing (m :: hd :: tl)
hβ: Factory.le F hd.cost m.cost = true
h: dedup F (hd :: tl) = m' :: ms'
inlm.last β₯ m'.lastΞ±β: Type
F: Factory Ξ±β
m': Meas
ms': List Meas
hd: Meas
tl: List Meas
ih: β {m : Meas}, dedup F (m :: tl) = m' :: ms' β last_decreasing (m :: tl) β m.last β₯ m'.last
m: Meas
h_last: last_decreasing (m :: hd :: tl)
hβ: Β¬Factory.le F hd.cost m.cost = true
h: m :: dedup F (hd :: tl) = m' :: ms'
inrm.last β₯ m'.lastΞ±β: Type
F: Factory Ξ±β
m': Meas
ms': List Meas
hd: Meas
tl: List Meas
ih: β {m : Meas}, dedup F (m :: tl) = m' :: ms' β last_decreasing (m :: tl) β m.last β₯ m'.last
m: Meas
h_last: last_decreasing (m :: hd :: tl)
h_if: Factory.le F hd.cost m.cost = true
h: dedup F (hd :: tl) = m' :: ms'm.last β₯ m'.lastΞ±β: Type
F: Factory Ξ±β
m': Meas
ms': List Meas
hd: Meas
tl: List Meas
ih: β {m : Meas}, dedup F (m :: tl) = m' :: ms' β last_decreasing (m :: tl) β m.last β₯ m'.last
m: Meas
h_last: last_decreasing (m :: hd :: tl)
h_if: Factory.le F hd.cost m.cost = true
h: dedup F (hd :: tl) = m' :: ms'm.last β₯ m'.lastΞ±β: Type
F: Factory Ξ±β
m': Meas
ms': List Meas
hd: Meas
tl: List Meas
ih: β {m : Meas}, dedup F (m :: tl) = m' :: ms' β last_decreasing (m :: tl) β m.last β₯ m'.last
m: Meas
h_last: last_decreasing (m :: hd :: tl)
h_if: Factory.le F hd.cost m.cost = true
h: dedup F (hd :: tl) = m' :: ms'm.last β₯ m'.lastΞ±β: Type
F: Factory Ξ±β
m': Meas
ms': List Meas
hd: Meas
tl: List Meas
ih: β {m : Meas}, dedup F (m :: tl) = m' :: ms' β last_decreasing (m :: tl) β m.last β₯ m'.last
m: Meas
h_last: last_decreasing (m :: hd :: tl)
h_if: Factory.le F hd.cost m.cost = true
h: dedup F (hd :: tl) = m' :: ms'm.last β₯ m'.lastGoals accomplished! πΞ±β: Type
F: Factory Ξ±β
m': Meas
ms': List Meas
hd: Meas
tl: List Meas
ih: β {m : Meas}, dedup F (m :: tl) = m' :: ms' β last_decreasing (m :: tl) β m.last β₯ m'.last
m: Meas
h_last: last_decreasing (m :: hd :: tl)
hβ: Β¬Factory.le F hd.cost m.cost = true
h: m :: dedup F (hd :: tl) = m' :: ms'm.last β₯ m'.lastΞ±β: Type
F: Factory Ξ±β
m': Meas
ms': List Meas
hd: Meas
tl: List Meas
ih: β {m : Meas}, dedup F (m :: tl) = m' :: ms' β last_decreasing (m :: tl) β m.last β₯ m'.last
m: Meas
h_last: last_decreasing (m :: hd :: tl)
hβ: Β¬Factory.le F hd.cost m.cost = true
h: m = m' β§ dedup F (hd :: tl) = ms'm.last β₯ m'.lastΞ±β: Type
F: Factory Ξ±β
m': Meas
ms': List Meas
hd: Meas
tl: List Meas
ih: β {m : Meas}, dedup F (m :: tl) = m' :: ms' β last_decreasing (m :: tl) β m.last β₯ m'.last
m: Meas
h_last: last_decreasing (m :: hd :: tl)
hβ: Β¬Factory.le F hd.cost m.cost = true
h: m :: dedup F (hd :: tl) = m' :: ms'm.last β₯ m'.lastlemmaGoals accomplished! πdedup_last_decreasing (dedup_last_decreasing: β {Ξ± : Type} {ms : List Meas} {F : Factory Ξ±}, last_decreasing ms β last_decreasing (dedup F ms)h : last_decreasingh: last_decreasing msms) : last_decreasing (dedupms: ?m.12118FF: ?m.12130ms) :=ms: ?m.12118Goals accomplished! πlast_decreasing (dedup F ms)
nillast_decreasing (dedup F [])Ξ±β: Type
F: Factory Ξ±β
headβ: Meas
tailβ: List Meas
tail_ihβ: last_decreasing tailβ β last_decreasing (dedup F tailβ)
h: last_decreasing (headβ :: tailβ)
conslast_decreasing (dedup F (headβ :: tailβ))last_decreasing (dedup F ms)last_decreasing (dedup F [])Goals accomplished! πlast_decreasing (dedup F ms)Ξ±β: Type
F: Factory Ξ±β
x: Meas
tl: List Meas
ih: last_decreasing tl β last_decreasing (dedup F tl)
h: last_decreasing (x :: tl)last_decreasing (dedup F (x :: tl))Ξ±β: Type
F: Factory Ξ±β
x: Meas
ih: last_decreasing [] β last_decreasing (dedup F [])
h: last_decreasing [x]
nillast_decreasing (dedup F [x])Ξ±β: Type
F: Factory Ξ±β
x, headβ: Meas
tailβ: List Meas
ih: last_decreasing (headβ :: tailβ) β last_decreasing (dedup F (headβ :: tailβ))
h: last_decreasing (x :: headβ :: tailβ)
conslast_decreasing (dedup F (x :: headβ :: tailβ))Ξ±β: Type
F: Factory Ξ±β
x: Meas
tl: List Meas
ih: last_decreasing tl β last_decreasing (dedup F tl)
h: last_decreasing (x :: tl)last_decreasing (dedup F (x :: tl))Ξ±β: Type
F: Factory Ξ±β
x: Meas
ih: last_decreasing [] β last_decreasing (dedup F [])
h: last_decreasing [x]last_decreasing (dedup F [x])Goals accomplished! πΞ±β: Type
F: Factory Ξ±β
x: Meas
tl: List Meas
ih: last_decreasing tl β last_decreasing (dedup F tl)
h: last_decreasing (x :: tl)last_decreasing (dedup F (x :: tl))Ξ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (dedup F (x' :: tl'))
h: last_decreasing (x :: x' :: tl')last_decreasing (dedup F (x :: x' :: tl'))Ξ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (dedup F (x' :: tl'))
h: last_decreasing (x :: x' :: tl')last_decreasing (if Factory.le F x'.cost x.cost = true then dedup F (x' :: tl') else x :: dedup F (x' :: tl'))Ξ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (dedup F (x' :: tl'))
h: last_decreasing (x :: x' :: tl')last_decreasing (dedup F (x :: x' :: tl'))Ξ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (dedup F (x' :: tl'))
h: last_decreasing (x :: x' :: tl')
hβ: Factory.le F x'.cost x.cost = true
inllast_decreasing (dedup F (x' :: tl'))Ξ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (dedup F (x' :: tl'))
h: last_decreasing (x :: x' :: tl')
hβ: Β¬Factory.le F x'.cost x.cost = true
inrlast_decreasing (x :: dedup F (x' :: tl'))Ξ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (dedup F (x' :: tl'))
h: last_decreasing (x :: x' :: tl')last_decreasing (dedup F (x :: x' :: tl'))Ξ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (dedup F (x' :: tl'))
h: last_decreasing (x :: x' :: tl')
hβ: Factory.le F x'.cost x.cost = truelast_decreasing (dedup F (x' :: tl'))Ξ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (dedup F (x' :: tl'))
h: last_decreasing (x :: x' :: tl')
hβ: Factory.le F x'.cost x.cost = truelast_decreasing (x' :: tl')Ξ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (dedup F (x' :: tl'))
h: last_decreasing (x :: x' :: tl')
hβ: Factory.le F x'.cost x.cost = truelast_decreasing (dedup F (x' :: tl'))Ξ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (dedup F (x' :: tl'))
h: last_decreasing (x :: x' :: tl')
hβ: Factory.le F x'.cost x.cost = true
hlast_decreasing (?x :: x' :: tl')Ξ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (dedup F (x' :: tl'))
h: last_decreasing (x :: x' :: tl')
hβ: Factory.le F x'.cost x.cost = true
xMeasΞ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (dedup F (x' :: tl'))
h: last_decreasing (x :: x' :: tl')
hβ: Factory.le F x'.cost x.cost = truelast_decreasing (dedup F (x' :: tl'))Goals accomplished! πΞ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (dedup F (x' :: tl'))
h: last_decreasing (x :: x' :: tl')last_decreasing (dedup F (x :: x' :: tl'))Ξ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (dedup F (x' :: tl'))
h: last_decreasing (x :: x' :: tl')
hβ: Β¬Factory.le F x'.cost x.cost = truelast_decreasing (x :: dedup F (x' :: tl'))Ξ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (dedup F (x' :: tl'))
h: last_decreasing (x :: x' :: tl')
hβ: Β¬Factory.le F x'.cost x.cost = true
h_case: dedup F (x' :: tl') = []
nillast_decreasing [x]Ξ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (dedup F (x' :: tl'))
h: last_decreasing (x :: x' :: tl')
hβ: Β¬Factory.le F x'.cost x.cost = true
headβ: Meas
tailβ: List Meas
h_case: dedup F (x' :: tl') = headβ :: tailβ
conslast_decreasing (x :: headβ :: tailβ)Ξ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (dedup F (x' :: tl'))
h: last_decreasing (x :: x' :: tl')
hβ: Β¬Factory.le F x'.cost x.cost = truelast_decreasing (x :: dedup F (x' :: tl'))Ξ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (dedup F (x' :: tl'))
h: last_decreasing (x :: x' :: tl')
hβ: Β¬Factory.le F x'.cost x.cost = true
h_case: dedup F (x' :: tl') = []last_decreasing [x]Goals accomplished! πΞ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (dedup F (x' :: tl'))
h: last_decreasing (x :: x' :: tl')
hβ: Β¬Factory.le F x'.cost x.cost = truelast_decreasing (x :: dedup F (x' :: tl'))Ξ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (dedup F (x' :: tl'))
h: last_decreasing (x :: x' :: tl')
hβ: Β¬Factory.le F x'.cost x.cost = true
headβ: Meas
tailβ: List Meas
h_case: dedup F (x' :: tl') = headβ :: tailβlast_decreasing (x :: headβ :: tailβ)Ξ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (dedup F (x' :: tl'))
h: last_decreasing (x :: x' :: tl')
hβ: Β¬Factory.le F x'.cost x.cost = true
headβ: Meas
tailβ: List Meas
h_case: dedup F (x' :: tl') = headβ :: tailβlast_decreasing (x :: headβ :: tailβ)Ξ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
h: last_decreasing (x :: x' :: tl')
hβ: Β¬Factory.le F x'.cost x.cost = true
headβ: Meas
tailβ: List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (headβ :: tailβ)
h_case: dedup F (x' :: tl') = headβ :: tailβlast_decreasing (x :: headβ :: tailβ)Ξ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
h: last_decreasing (x :: x' :: tl')
hβ: Β¬Factory.le F x'.cost x.cost = true
headβ: Meas
tailβ: List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (headβ :: tailβ)
h_case: dedup F (x' :: tl') = headβ :: tailβlast_decreasing (x :: headβ :: tailβ)Ξ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
h: last_decreasing (x :: x' :: tl')
hβ: Β¬Factory.le F x'.cost x.cost = true
headβ: Meas
tailβ: List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (headβ :: tailβ)
h_case: dedup F (x' :: tl') = headβ :: tailβlast_decreasing (x :: headβ :: tailβ)Ξ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (dedup F (x' :: tl'))
h: last_decreasing (x :: x' :: tl')
hβ: Β¬Factory.le F x'.cost x.cost = true
headβ: Meas
tailβ: List Meas
h_case: dedup F (x' :: tl') = headβ :: tailβlast_decreasing (x :: headβ :: tailβ)Ξ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
h: last_decreasing (x :: x' :: tl')
hβ: Β¬Factory.le F x'.cost x.cost = true
headβ: Meas
tailβ: List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (headβ :: tailβ)
h_case: dedup F (x' :: tl') = headβ :: tailβ
h_lastx.last > headβ.lastΞ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
h: last_decreasing (x :: x' :: tl')
hβ: Β¬Factory.le F x'.cost x.cost = true
headβ: Meas
tailβ: List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (headβ :: tailβ)
h_case: dedup F (x' :: tl') = headβ :: tailβ
hlast_decreasing (headβ :: tailβ)Ξ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (dedup F (x' :: tl'))
h: last_decreasing (x :: x' :: tl')
hβ: Β¬Factory.le F x'.cost x.cost = true
headβ: Meas
tailβ: List Meas
h_case: dedup F (x' :: tl') = headβ :: tailβlast_decreasing (x :: headβ :: tailβ)Ξ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
h: last_decreasing (x :: x' :: tl')
hβ: Β¬Factory.le F x'.cost x.cost = true
headβ: Meas
tailβ: List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (headβ :: tailβ)
h_case: dedup F (x' :: tl') = headβ :: tailβx.last > headβ.lastΞ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
h: last_decreasing (x :: x' :: tl')
hβ: Β¬Factory.le F x'.cost x.cost = true
headβ: Meas
tailβ: List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (headβ :: tailβ)
h_case: x'.last β₯ headβ.lastx.last > headβ.lastΞ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
h: last_decreasing (x :: x' :: tl')
hβ: Β¬Factory.le F x'.cost x.cost = true
headβ: Meas
tailβ: List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (headβ :: tailβ)
h_case: dedup F (x' :: tl') = headβ :: tailβx.last > headβ.lastΞ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
h: last_decreasing (x :: x' :: tl')
hβ: Β¬Factory.le F x'.cost x.cost = true
headβ: Meas
tailβ: List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (headβ :: tailβ)
h_case: headβ.last β€ x'.lastheadβ.last < x.lastΞ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
h: last_decreasing (x :: x' :: tl')
hβ: Β¬Factory.le F x'.cost x.cost = true
headβ: Meas
tailβ: List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (headβ :: tailβ)
h_case: dedup F (x' :: tl') = headβ :: tailβx.last > headβ.lastΞ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
hβ: Β¬Factory.le F x'.cost x.cost = true
headβ: Meas
tailβ: List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (headβ :: tailβ)
h_case: headβ.last β€ x'.last
h: x.last > x'.lastheadβ.last < x.lastΞ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
h: last_decreasing (x :: x' :: tl')
hβ: Β¬Factory.le F x'.cost x.cost = true
headβ: Meas
tailβ: List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (headβ :: tailβ)
h_case: dedup F (x' :: tl') = headβ :: tailβx.last > headβ.lastΞ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
hβ: Β¬Factory.le F x'.cost x.cost = true
headβ: Meas
tailβ: List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (headβ :: tailβ)
h_case: headβ.last β€ x'.last
h: x'.last < x.lastheadβ.last < x.lastΞ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
h: last_decreasing (x :: x' :: tl')
hβ: Β¬Factory.le F x'.cost x.cost = true
headβ: Meas
tailβ: List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (headβ :: tailβ)
h_case: dedup F (x' :: tl') = headβ :: tailβx.last > headβ.lastΞ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
h: last_decreasing (x :: x' :: tl')
hβ: Β¬Factory.le F x'.cost x.cost = true
headβ: Meas
tailβ: List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (headβ :: tailβ)
h_case: dedup F (x' :: tl') = headβ :: tailβx.last > headβ.lastGoals accomplished! πΞ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (dedup F (x' :: tl'))
h: last_decreasing (x :: x' :: tl')
hβ: Β¬Factory.le F x'.cost x.cost = true
headβ: Meas
tailβ: List Meas
h_case: dedup F (x' :: tl') = headβ :: tailβlast_decreasing (x :: headβ :: tailβ)Ξ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
h: last_decreasing (x :: x' :: tl')
hβ: Β¬Factory.le F x'.cost x.cost = true
headβ: Meas
tailβ: List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (headβ :: tailβ)
h_case: dedup F (x' :: tl') = headβ :: tailβlast_decreasing (headβ :: tailβ)Ξ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
h: last_decreasing (x :: x' :: tl')
hβ: Β¬Factory.le F x'.cost x.cost = true
headβ: Meas
tailβ: List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (headβ :: tailβ)
h_case: dedup F (x' :: tl') = headβ :: tailβlast_decreasing (x' :: tl')Ξ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
h: last_decreasing (x :: x' :: tl')
hβ: Β¬Factory.le F x'.cost x.cost = true
headβ: Meas
tailβ: List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (headβ :: tailβ)
h_case: dedup F (x' :: tl') = headβ :: tailβlast_decreasing (headβ :: tailβ)Ξ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
h: last_decreasing (x :: x' :: tl')
hβ: Β¬Factory.le F x'.cost x.cost = true
headβ: Meas
tailβ: List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (headβ :: tailβ)
h_case: dedup F (x' :: tl') = headβ :: tailβ
hlast_decreasing (?x :: x' :: tl')Ξ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
h: last_decreasing (x :: x' :: tl')
hβ: Β¬Factory.le F x'.cost x.cost = true
headβ: Meas
tailβ: List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (headβ :: tailβ)
h_case: dedup F (x' :: tl') = headβ :: tailβ
xMeasΞ±β: Type
F: Factory Ξ±β
x, x': Meas
tl': List Meas
h: last_decreasing (x :: x' :: tl')
hβ: Β¬Factory.le F x'.cost x.cost = true
headβ: Meas
tailβ: List Meas
ih: last_decreasing (x' :: tl') β last_decreasing (headβ :: tailβ)
h_case: dedup F (x' :: tl') = headβ :: tailβlast_decreasing (headβ :: tailβ)lemmaGoals accomplished! πdedup_cost_first (h : dedupF (F: ?m.15325m ::m: ?m.15336ms) =ms: ?m.15345m' ::m': ?m.15356ms') (ms': ?m.15367h_last : cost_increasing_non_stricth_last: cost_increasing_non_strict F (m :: ms)F (F: ?m.15325m ::m: ?m.15336ms)) :ms: ?m.15345m.m: ?m.15336cost =cost: {Ξ± : Type} β Meas β Ξ±m'.m': ?m.15356cost :=cost: {Ξ± : Type} β Meas β Ξ±Goals accomplished! πΞ±β: Type
F: Factory Ξ±β
m': Meas
ms': List Meas
m: Meas
h: dedup F [m] = m' :: ms'
h_last: cost_increasing_non_strict F [m]
nilm.cost = m'.costΞ±β: Type
F: Factory Ξ±β
m': Meas
ms': List Meas
headβ: Meas
tailβ: List Meas
tail_ihβ: β {m : Meas}, dedup F (m :: tailβ) = m' :: ms' β cost_increasing_non_strict F (m :: tailβ) β m.cost = m'.cost
m: Meas
h: dedup F (m :: headβ :: tailβ) = m' :: ms'
h_last: cost_increasing_non_strict F (m :: headβ :: tailβ)
consm.cost = m'.costGoals accomplished! πΞ±β: Type
F: Factory Ξ±β
m': Meas
ms': List Meas
hd: Meas
tl: List Meas
ih: β {m : Meas}, dedup F (m :: tl) = m' :: ms' β cost_increasing_non_strict F (m :: tl) β m.cost = m'.cost
m: Meas
h: (if Factory.le F hd.cost m.cost = true then dedup F (hd :: tl) else m :: dedup F (hd :: tl)) = m' :: ms'
h_last: cost_increasing_non_strict F (m :: hd :: tl)m.cost = m'.costΞ±β: Type
F: Factory Ξ±β
m': Meas
ms': List Meas
hd: Meas
tl: List Meas
ih: β {m : Meas}, dedup F (m :: tl) = m' :: ms' β cost_increasing_non_strict F (m :: tl) β m.cost = m'.cost
m: Meas
h_last: cost_increasing_non_strict F (m :: hd :: tl)
hβ: Factory.le F hd.cost m.cost = true
h: dedup F (hd :: tl) = m' :: ms'
inlm.cost = m'.costΞ±β: Type
F: Factory Ξ±β
m': Meas
ms': List Meas
hd: Meas
tl: List Meas
ih: β {m : Meas}, dedup F (m :: tl) = m' :: ms' β cost_increasing_non_strict F (m :: tl) β m.cost = m'.cost
m: Meas
h_last: cost_increasing_non_strict F (m :: hd :: tl)
hβ: Β¬Factory.le F hd.cost m.cost = true
h: m :: dedup F (hd :: tl) = m' :: ms'
inrm.cost = m'.costΞ±β: Type
F: Factory Ξ±β
m': Meas
ms': List Meas
hd: Meas
tl: List Meas
ih: β {m : Meas}, dedup F (m :: tl) = m' :: ms' β cost_increasing_non_strict F (m :: tl) β m.cost = m'.cost
m: Meas
h_last: cost_increasing_non_strict F (m :: hd :: tl)
h_if: Factory.le F hd.cost m.cost = true
h: dedup F (hd :: tl) = m' :: ms'm.cost = m'.costΞ±β: Type
F: Factory Ξ±β
m': Meas
ms': List Meas
hd: Meas
tl: List Meas
ih: β {m : Meas}, dedup F (m :: tl) = m' :: ms' β cost_increasing_non_strict F (m :: tl) β m.cost = m'.cost
m: Meas
h_last: cost_increasing_non_strict F (m :: hd :: tl)
h_if: Factory.le F hd.cost m.cost = true
h: dedup F (hd :: tl) = m' :: ms'm.cost = m'.costΞ±β: Type
F: Factory Ξ±β
m': Meas
ms': List Meas
hd: Meas
tl: List Meas
ih: β {m : Meas}, dedup F (m :: tl) = m' :: ms' β cost_increasing_non_strict F (m :: tl) β m.cost = m'.cost
m: Meas
h_last: cost_increasing_non_strict F (m :: hd :: tl)
h_if: Factory.le F hd.cost m.cost = true
h: dedup F (hd :: tl) = m' :: ms'm.cost = m'.costΞ±β: Type
F: Factory Ξ±β
m': Meas
ms': List Meas
hd: Meas
tl: List Meas
ih: β {m : Meas}, dedup F (m :: tl) = m' :: ms' β cost_increasing_non_strict F (m :: tl) β m.cost = m'.cost
m: Meas
h_last: cost_increasing_non_strict F (m :: hd :: tl)
h_if: Factory.le F hd.cost m.cost = true
h: dedup F (hd :: tl) = m' :: ms'm.cost = m'.costGoals accomplished! πΞ±β: Type
F: Factory Ξ±β
m': Meas
ms': List Meas
hd: Meas
tl: List Meas
ih: β {m : Meas}, dedup F (m :: tl) = m' :: ms' β cost_increasing_non_strict F (m :: tl) β m.cost = m'.cost
m: Meas
h_last: cost_increasing_non_strict F (m :: hd :: tl)
hβ: Β¬Factory.le F hd.cost m.cost = true
h: m :: dedup F (hd :: tl) = m' :: ms'm.cost = m'.costΞ±β: Type
F: Factory Ξ±β
m': Meas
ms': List Meas
hd: Meas
tl: List Meas
ih: β {m : Meas}, dedup F (m :: tl) = m' :: ms' β cost_increasing_non_strict F (m :: tl) β m.cost = m'.cost
m: Meas
h_last: cost_increasing_non_strict F (m :: hd :: tl)
hβ: Β¬Factory.le F hd.cost m.cost = true
h: m = m' β§ dedup F (hd :: tl) = ms'm.cost = m'.costΞ±β: Type
F: Factory Ξ±β
m': Meas
ms': List Meas
hd: Meas
tl: List Meas
ih: β {m : Meas}, dedup F (m :: tl) = m' :: ms' β cost_increasing_non_strict F (m :: tl) β m.cost = m'.cost
m: Meas
h_last: cost_increasing_non_strict F (m :: hd :: tl)
hβ: Β¬Factory.le F hd.cost m.cost = true
h: m :: dedup F (hd :: tl) = m' :: ms'm.cost = m'.costlemmaGoals accomplished! πdedup_cost_increasing (dedup_cost_increasing: β {Ξ± : Type} {F : Factory Ξ±} {ms : List Meas}, cost_increasing_non_strict F ms β cost_increasing F (dedup F ms)h : cost_increasing_non_stricth: cost_increasing_non_strict F msFF: ?m.16376ms) : cost_increasingms: ?m.16383F (dedupF: ?m.16376FF: ?m.16376ms) :=ms: ?m.16383Goals accomplished! πcost_increasing F (dedup F ms)
nilcost_increasing F (dedup F [])Ξ±β: Type
F: Factory Ξ±β
headβ: Meas
tailβ: List Meas
tail_ihβ: cost_increasing_non_strict F tailβ β cost_increasing F (dedup F tailβ)
h: cost_increasing_non_strict F (headβ :: tailβ)
conscost_increasing F (dedup F (headβ :: tailβ))cost_increasing F (dedup F ms)cost_increasing F (dedup F [])Ξ±β: Type
F: Factory Ξ±β
h: cost_increasing_non_strict F []
i: β
hi: i < List.length (dedup F [])
hj: i + 1 < List.length (dedup F [])cost_increasing F (dedup F [])Goals accomplished! πcost_increasing F (dedup F ms)Ξ±β: Type
F: Factory Ξ±β
x: Meas
tl: List Meas
ih: cost_increasing_non_strict F tl β cost_increasing F (dedup F tl)
h: cost_increasing_non_strict F (x :: tl)cost_increasing F (dedup F (x :: tl))Ξ±β: Type
F: Factory Ξ±β
x: Meas
ih: cost_increasing_non_strict F [] β cost_increasing F (dedup F [])
h: cost_increasing_non_strict F [x]
nilcost_increasing F (dedup F [x])Ξ±β: Type
F: Factory Ξ±β
x, headβ: Meas
tailβ: List Meas
ih: cost_increasing_non_strict F (headβ :: tailβ) β cost_increasing F (dedup F (headβ :: tailβ))
h: cost_increasing_non_strict F (x :: headβ :: tailβ)
conscost_increasing F (dedup F (x :: headβ :: tailβ))Ξ±β: Type
F: Factory Ξ±β
x: Meas
tl: List Meas
ih: cost_increasing_non_strict F tl β cost_increasing F (dedup F tl)
h: cost_increasing_non_strict F (x :: tl)cost_increasing F (dedup F (x :: tl))Ξ±β: Type
F: Factory Ξ±β
x: Meas
ih: cost_increasing_non_strict F [] β cost_increasing F (dedup F [])
h: cost_increasing_non_strict F [x]cost_increasing F (dedup F [x])Ξ±β: Type
F: Factory Ξ±β
x: Meas
ih: cost_increasing_non_strict F [] β cost_increasing F (dedup F [])
h: cost_increasing_non_strict F [x]cost_increasing F [x]Ξ±β: Type
F: Factory Ξ±β
x: Meas
ih: cost_increasing_non_strict F [] β cost_increasing F (dedup F [])
h: cost_increasing_non_strict F [x]cost_increasing F (dedup F [x])Goals accomplished! πΞ±β: Type
F: Factory Ξ±β
x: Meas
tl: List Meas
ih: cost_increasing_non_strict F tl β cost_increasing F (dedup F tl)
h: cost_increasing_non_strict F (x :: tl)cost_increasing F (dedup F (x :: tl))Ξ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
ih: cost_increasing_non_strict F (y :: tl) β cost_increasing F (dedup F (y :: tl))
h: cost_increasing_non_strict F (x :: y :: tl)cost_increasing F (dedup F (x :: y :: tl))Ξ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
ih: cost_increasing_non_strict F (y :: tl) β cost_increasing F (dedup F (y :: tl))
h: cost_increasing_non_strict F (x :: y :: tl)cost_increasing F (if Factory.le F y.cost x.cost = true then dedup F (y :: tl) else x :: dedup F (y :: tl))Ξ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
ih: cost_increasing_non_strict F (y :: tl) β cost_increasing F (dedup F (y :: tl))
h: cost_increasing_non_strict F (x :: y :: tl)cost_increasing F (dedup F (x :: y :: tl))Ξ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
ih: cost_increasing_non_strict F (y :: tl) β cost_increasing F (dedup F (y :: tl))
h: cost_increasing_non_strict F (x :: y :: tl)
hβ: Factory.le F y.cost x.cost = true
inlcost_increasing F (dedup F (y :: tl))Ξ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
ih: cost_increasing_non_strict F (y :: tl) β cost_increasing F (dedup F (y :: tl))
h: cost_increasing_non_strict F (x :: y :: tl)
hβ: Β¬Factory.le F y.cost x.cost = true
inrcost_increasing F (x :: dedup F (y :: tl))Ξ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
ih: cost_increasing_non_strict F (y :: tl) β cost_increasing F (dedup F (y :: tl))
h: cost_increasing_non_strict F (x :: y :: tl)cost_increasing F (dedup F (x :: y :: tl))Ξ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
ih: cost_increasing_non_strict F (y :: tl) β cost_increasing F (dedup F (y :: tl))
h: cost_increasing_non_strict F (x :: y :: tl)
hβ: Factory.le F y.cost x.cost = truecost_increasing F (dedup F (y :: tl))Ξ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
ih: cost_increasing_non_strict F (y :: tl) β cost_increasing F (dedup F (y :: tl))
h: cost_increasing_non_strict F (x :: y :: tl)
hβ: Factory.le F y.cost x.cost = truecost_increasing_non_strict F (y :: tl)Ξ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
ih: cost_increasing_non_strict F (y :: tl) β cost_increasing F (dedup F (y :: tl))
h: cost_increasing_non_strict F (x :: y :: tl)
hβ: Factory.le F y.cost x.cost = truecost_increasing F (dedup F (y :: tl))Ξ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
ih: cost_increasing_non_strict F (y :: tl) β cost_increasing F (dedup F (y :: tl))
h: cost_increasing_non_strict F (x :: y :: tl)
hβ: Factory.le F y.cost x.cost = true
hcost_increasing_non_strict F (?x :: y :: tl)Ξ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
ih: cost_increasing_non_strict F (y :: tl) β cost_increasing F (dedup F (y :: tl))
h: cost_increasing_non_strict F (x :: y :: tl)
hβ: Factory.le F y.cost x.cost = true
xMeasΞ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
ih: cost_increasing_non_strict F (y :: tl) β cost_increasing F (dedup F (y :: tl))
h: cost_increasing_non_strict F (x :: y :: tl)
hβ: Factory.le F y.cost x.cost = truecost_increasing F (dedup F (y :: tl))Goals accomplished! πΞ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
ih: cost_increasing_non_strict F (y :: tl) β cost_increasing F (dedup F (y :: tl))
h: cost_increasing_non_strict F (x :: y :: tl)cost_increasing F (dedup F (x :: y :: tl))Ξ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
ih: cost_increasing_non_strict F (y :: tl) β cost_increasing F (dedup F (y :: tl))
h: cost_increasing_non_strict F (x :: y :: tl)
h_if: Β¬Factory.le F y.cost x.cost = truecost_increasing F (x :: dedup F (y :: tl))Ξ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
ih: cost_increasing_non_strict F (y :: tl) β cost_increasing F (dedup F (y :: tl))
h_if: Β¬Factory.le F y.cost x.cost = true
h: cost_increasing_non_strict F (y :: tl)cost_increasing F (x :: dedup F (y :: tl))Ξ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
ih: cost_increasing_non_strict F (y :: tl) β cost_increasing F (dedup F (y :: tl))
h: cost_increasing_non_strict F (x :: y :: tl)
h_if: Β¬Factory.le F y.cost x.cost = truecost_increasing F (x :: dedup F (y :: tl))Ξ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
h_if: Β¬Factory.le F y.cost x.cost = true
h: cost_increasing_non_strict F (y :: tl)
ih: cost_increasing F (dedup F (y :: tl))cost_increasing F (x :: dedup F (y :: tl))Ξ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
ih: cost_increasing_non_strict F (y :: tl) β cost_increasing F (dedup F (y :: tl))
h: cost_increasing_non_strict F (x :: y :: tl)
h_if: Β¬Factory.le F y.cost x.cost = truecost_increasing F (x :: dedup F (y :: tl))Ξ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
h_if: Β¬Factory.le F y.cost x.cost = true
h: cost_increasing_non_strict F (y :: tl)
ih: cost_increasing F (dedup F (y :: tl))cost_increasing F (x :: dedup F (y :: tl))Ξ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
h_if: Factory.lt F x.cost y.cost
h: cost_increasing_non_strict F (y :: tl)
ih: cost_increasing F (dedup F (y :: tl))cost_increasing F (x :: dedup F (y :: tl))Ξ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
h_if: Factory.lt F x.cost y.cost
h: cost_increasing_non_strict F (y :: tl)
ih: cost_increasing F (dedup F (y :: tl))cost_increasing F (x :: dedup F (y :: tl))Ξ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
h_if: Factory.lt F x.cost y.cost
h: cost_increasing_non_strict F (y :: tl)
ih: cost_increasing F (dedup F (y :: tl))cost_increasing F (x :: dedup F (y :: tl))Ξ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
ih: cost_increasing_non_strict F (y :: tl) β cost_increasing F (dedup F (y :: tl))
h: cost_increasing_non_strict F (x :: y :: tl)
h_if: Β¬Factory.le F y.cost x.cost = truecost_increasing F (x :: dedup F (y :: tl))Ξ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
h_if: Factory.lt F x.cost y.cost
h: cost_increasing_non_strict F (y :: tl)
ih: cost_increasing F (dedup F (y :: tl))
h_case: dedup F (y :: tl) = []
nilcost_increasing F [x]Ξ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
h_if: Factory.lt F x.cost y.cost
h: cost_increasing_non_strict F (y :: tl)
ih: cost_increasing F (dedup F (y :: tl))
headβ: Meas
tailβ: List Meas
h_case: dedup F (y :: tl) = headβ :: tailβ
conscost_increasing F (x :: headβ :: tailβ)Ξ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
ih: cost_increasing_non_strict F (y :: tl) β cost_increasing F (dedup F (y :: tl))
h: cost_increasing_non_strict F (x :: y :: tl)
h_if: Β¬Factory.le F y.cost x.cost = truecost_increasing F (x :: dedup F (y :: tl))Ξ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
h_if: Factory.lt F x.cost y.cost
h: cost_increasing_non_strict F (y :: tl)
ih: cost_increasing F (dedup F (y :: tl))
h_case: dedup F (y :: tl) = []cost_increasing F [x]Goals accomplished! πΞ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
ih: cost_increasing_non_strict F (y :: tl) β cost_increasing F (dedup F (y :: tl))
h: cost_increasing_non_strict F (x :: y :: tl)
h_if: Β¬Factory.le F y.cost x.cost = truecost_increasing F (x :: dedup F (y :: tl))Ξ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
h_if: Factory.lt F x.cost y.cost
h: cost_increasing_non_strict F (y :: tl)
ih: cost_increasing F (dedup F (y :: tl))
headβ: Meas
tailβ: List Meas
h_case: dedup F (y :: tl) = headβ :: tailβcost_increasing F (x :: headβ :: tailβ)Ξ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
h_if: Factory.lt F x.cost y.cost
h: cost_increasing_non_strict F (y :: tl)
ih: cost_increasing F (dedup F (y :: tl))
headβ: Meas
tailβ: List Meas
h_case: dedup F (y :: tl) = headβ :: tailβcost_increasing F (x :: headβ :: tailβ)Ξ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
h_if: Factory.lt F x.cost y.cost
ih: cost_increasing F (dedup F (y :: tl))
headβ: Meas
tailβ: List Meas
h_case: dedup F (y :: tl) = headβ :: tailβ
h: y.cost = headβ.cost
h_costFactory.lt F x.cost headβ.costΞ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
h_if: Factory.lt F x.cost y.cost
ih: cost_increasing F (dedup F (y :: tl))
headβ: Meas
tailβ: List Meas
h_case: dedup F (y :: tl) = headβ :: tailβ
h: y.cost = headβ.cost
hcost_increasing F (headβ :: tailβ)Ξ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
h_if: Factory.lt F x.cost y.cost
h: cost_increasing_non_strict F (y :: tl)
ih: cost_increasing F (dedup F (y :: tl))
headβ: Meas
tailβ: List Meas
h_case: dedup F (y :: tl) = headβ :: tailβcost_increasing F (x :: headβ :: tailβ)Ξ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
h_if: Factory.lt F x.cost y.cost
ih: cost_increasing F (dedup F (y :: tl))
headβ: Meas
tailβ: List Meas
h_case: dedup F (y :: tl) = headβ :: tailβ
h: y.cost = headβ.costcost_increasing F (headβ :: tailβ)Ξ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
h_if: Factory.lt F x.cost y.cost
headβ: Meas
tailβ: List Meas
h_case: dedup F (y :: tl) = headβ :: tailβ
h: y.cost = headβ.cost
ih: cost_increasing F (headβ :: tailβ)cost_increasing F (headβ :: tailβ)Ξ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
h_if: Factory.lt F x.cost y.cost
ih: cost_increasing F (dedup F (y :: tl))
headβ: Meas
tailβ: List Meas
h_case: dedup F (y :: tl) = headβ :: tailβ
h: y.cost = headβ.costcost_increasing F (headβ :: tailβ)Goals accomplished! πΞ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
h_if: Factory.lt F x.cost y.cost
h: cost_increasing_non_strict F (y :: tl)
ih: cost_increasing F (dedup F (y :: tl))
headβ: Meas
tailβ: List Meas
h_case: dedup F (y :: tl) = headβ :: tailβcost_increasing F (x :: headβ :: tailβ)Ξ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
h_if: Factory.lt F x.cost y.cost
ih: cost_increasing F (dedup F (y :: tl))
headβ: Meas
tailβ: List Meas
h_case: dedup F (y :: tl) = headβ :: tailβ
h: y.cost = headβ.costFactory.lt F x.cost headβ.costΞ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
h_if: Factory.lt F x.cost y.cost
ih: cost_increasing F (dedup F (y :: tl))
headβ: Meas
tailβ: List Meas
h_case: dedup F (y :: tl) = headβ :: tailβ
h: y.cost = headβ.costFactory.lt F x.cost headβ.costΞ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
h_if: Factory.lt F x.cost y.cost
ih: cost_increasing F (dedup F (y :: tl))
headβ: Meas
tailβ: List Meas
h_case: dedup F (y :: tl) = headβ :: tailβ
h: y.cost = headβ.costFactory.lt F x.cost y.costΞ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
h_if: Factory.lt F x.cost y.cost
ih: cost_increasing F (dedup F (y :: tl))
headβ: Meas
tailβ: List Meas
h_case: dedup F (y :: tl) = headβ :: tailβ
h: y.cost = headβ.costFactory.lt F x.cost y.costΞ±β: Type
F: Factory Ξ±β
x, y: Meas
tl: List Meas
h_if: Factory.lt F x.cost y.cost
ih: cost_increasing F (dedup F (y :: tl))
headβ: Meas
tailβ: List Meas
h_case: dedup F (y :: tl) = headβ :: tailβ
h: y.cost = headβ.costFactory.lt F x.cost headβ.costlemmaGoals accomplished! πdedup_cons (m' : Meas) (h :m': Measm β dedupm: ?m.17535FF: ?m.17558ms) :ms: ?m.17583m β dedupm: ?m.17535F (F: ?m.17558m' ::m': Measms) :=ms: ?m.17583Goals accomplished! πGoals accomplished! πGoals accomplished! πlemmaGoals accomplished! πdedup_dom (h :h: m β msm βm: ?m.18926ms) (ms: ?m.18945h_last : last_decreasingh_last: last_decreasing msms) (ms: ?m.18945h_cost : cost_increasing_non_stricth_cost: cost_increasing_non_strict F msFF: ?m.18988ms) : βms: ?m.18945m_better,m_better: ?m.19037m_better β dedupm_better: ?m.19037FF: ?m.18988ms β§ dominatesms: ?m.18945FF: ?m.18988m_betterm_better: ?m.19037m :=m: ?m.18926Goals accomplished! πΞ±β: Type
m: Meas
F: Factory Ξ±β
h: m β []
h_last: last_decreasing []
h_cost: cost_increasing_non_strict F []
nilΞ±β: Type
m: Meas
F: Factory Ξ±β
headβ: Meas
tailβ: List Meas
tail_ihβ: m β tailβ β last_decreasing tailβ β cost_increasing_non_strict F tailβ β β m_better, m_better β dedup F tailβ β§ dominates F m_better m = true
h: m β headβ :: tailβ
h_last: last_decreasing (headβ :: tailβ)
h_cost: cost_increasing_non_strict F (headβ :: tailβ)
consGoals accomplished! πΞ±β: Type
m: Meas
F: Factory Ξ±β
x: Meas
ms: List Meas
ih: m β ms β last_decreasing ms β cost_increasing_non_strict F ms β β m_better, m_better β dedup F ms β§ dominates F m_better m = true
h: m β x :: ms
h_last: last_decreasing (x :: ms)
h_cost: cost_increasing_non_strict F (x :: ms)Ξ±β: Type
m: Meas
F: Factory Ξ±β
ms: List Meas
ih: m β ms β last_decreasing ms β cost_increasing_non_strict F ms β β m_better, m_better β dedup F ms β§ dominates F m_better m = true
h_last: last_decreasing (m :: ms)
h_cost: cost_increasing_non_strict F (m :: ms)
headΞ±β: Type
m: Meas
F: Factory Ξ±β
x: Meas
ms: List Meas
ih: m β ms β last_decreasing ms β cost_increasing_non_strict F ms β β m_better, m_better β dedup F ms β§ dominates F m_better m = true
h_last: last_decreasing (x :: ms)
h_cost: cost_increasing_non_strict F (x :: ms)
aβ: List.Mem m ms
tailΞ±β: Type
m: Meas
F: Factory Ξ±β
x: Meas
ms: List Meas
ih: m β ms β last_decreasing ms β cost_increasing_non_strict F ms β β m_better, m_better β dedup F ms β§ dominates F m_better m = true
h: m β x :: ms
h_last: last_decreasing (x :: ms)
h_cost: cost_increasing_non_strict F (x :: ms)Ξ±β: Type
m: Meas
F: Factory Ξ±β
ms: List Meas
ih: m β ms β last_decreasing ms β cost_increasing_non_strict F ms β β m_better, m_better β dedup F ms β§ dominates F m_better m = true
h_last: last_decreasing (m :: ms)
h_cost: cost_increasing_non_strict F (m :: ms)Ξ±β: Type
m: Meas
F: Factory Ξ±β
ih: m β [] β last_decreasing [] β cost_increasing_non_strict F [] β β m_better, m_better β dedup F [] β§ dominates F m_better m = true
h_last: last_decreasing [m]
h_cost: cost_increasing_non_strict F [m]
nilΞ±β: Type
m: Meas
F: Factory Ξ±β
headβ: Meas
tailβ: List Meas
ih: m β headβ :: tailβ β last_decreasing (headβ :: tailβ) β cost_increasing_non_strict F (headβ :: tailβ) β β m_better, m_better β dedup F (headβ :: tailβ) β§ dominates F m_better m = true
h_last: last_decreasing (m :: headβ :: tailβ)
h_cost: cost_increasing_non_strict F (m :: headβ :: tailβ)
consΞ±β: Type
m: Meas
F: Factory Ξ±β
ms: List Meas
ih: m β ms β last_decreasing ms β cost_increasing_non_strict F ms β β m_better, m_better β dedup F ms β§ dominates F m_better m = true
h_last: last_decreasing (m :: ms)
h_cost: cost_increasing_non_strict F (m :: ms)Ξ±β: Type
m: Meas
F: Factory Ξ±β
ih: m β [] β last_decreasing [] β cost_increasing_non_strict F [] β β m_better, m_better β dedup F [] β§ dominates F m_better m = true
h_last: last_decreasing [m]
h_cost: cost_increasing_non_strict F [m]Goals accomplished! πΞ±β: Type
m: Meas
F: Factory Ξ±β
ms: List Meas
ih: m β ms β last_decreasing ms β cost_increasing_non_strict F ms β β m_better, m_better β dedup F ms β§ dominates F m_better m = true
h_last: last_decreasing (m :: ms)
h_cost: cost_increasing_non_strict F (m :: ms)Ξ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)Ξ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)Ξ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)Ξ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Factory.le F y.cost m.cost = true
inlΞ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Β¬Factory.le F y.cost m.cost = true
inrΞ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)Ξ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Factory.le F y.cost m.cost = trueΞ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Factory.le F y.cost m.cost = true
h_case: dedup F (y :: ms) = []
nilΞ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Factory.le F y.cost m.cost = true
headβ: Meas
tailβ: List Meas
h_case: dedup F (y :: ms) = headβ :: tailβ
consΞ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Factory.le F y.cost m.cost = trueΞ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Factory.le F y.cost m.cost = true
h_case: dedup F (y :: ms) = []Ξ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Factory.le F y.cost m.cost = true
h_case: dedup F (y :: ms) = []Goals accomplished! πΞ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Factory.le F y.cost m.cost = true
h_case: dedup F (y :: ms) = []Ξ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Factory.le F y.cost m.cost = true
h_case: dedup F (y :: ms) = []Ξ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Factory.le F y.cost m.cost = true
h_case: dedup F (y :: ms) = []Ξ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Factory.le F y.cost m.cost = true
h_case: dedup F (y :: ms) = []
hΞ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Factory.le F y.cost m.cost = true
h_case: dedup F (y :: ms) = []Goals accomplished! πGoals accomplished! πΞ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Factory.le F y.cost m.cost = true
h_case: dedup F (y :: ms) = []Goals accomplished! πΞ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Factory.le F y.cost m.cost = trueΞ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Factory.le F y.cost m.cost = true
hd: Meas
tl: List Meas
h_case: dedup F (y :: ms) = hd :: tlΞ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Factory.le F y.cost m.cost = true
hd: Meas
tl: List Meas
h_case: dedup F (y :: ms) = hd :: tlΞ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Factory.le F y.cost m.cost = true
hd: Meas
tl: List Meas
h_case: dedup F (y :: ms) = hd :: tlΞ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Factory.le F y.cost m.cost = true
hd: Meas
tl: List Meas
h_case: dedup F (y :: ms) = hd :: tlΞ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Factory.le F y.cost m.cost = true
hd: Meas
tl: List Meas
h_case: dedup F (y :: ms) = hd :: tlΞ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Factory.le F y.cost m.cost = true
hd: Meas
tl: List Meas
h_case: dedup F (y :: ms) = hd :: tl
h_last': y.last β₯ hd.lastΞ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Factory.le F y.cost m.cost = true
hd: Meas
tl: List Meas
h_case: dedup F (y :: ms) = hd :: tlΞ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Factory.le F y.cost m.cost = true
hd: Meas
tl: List Meas
h_case: dedup F (y :: ms) = hd :: tl
h_last': y.last β₯ hd.last
h_cost': y.cost = hd.costΞ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Factory.le F y.cost m.cost = true
hd: Meas
tl: List Meas
h_case: dedup F (y :: ms) = hd :: tlΞ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Factory.le F y.cost m.cost = true
hd: Meas
tl: List Meas
h_case: dedup F (y :: ms) = hd :: tl
h_last': y.last β₯ hd.last
h_cost': y.cost = hd.costhd.last β€ m.last β§ Factory.le F hd.cost m.cost = trueΞ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Factory.le F y.cost m.cost = true
hd: Meas
tl: List Meas
h_case: dedup F (y :: ms) = hd :: tlΞ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Factory.le F y.cost m.cost = true
hd: Meas
tl: List Meas
h_case: dedup F (y :: ms) = hd :: tl
h_last': y.last β₯ hd.last
h_cost': y.cost = hd.cost
lefthd.last β€ m.lastΞ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Factory.le F y.cost m.cost = true
hd: Meas
tl: List Meas
h_case: dedup F (y :: ms) = hd :: tl
h_last': y.last β₯ hd.last
h_cost': y.cost = hd.cost
rightFactory.le F hd.cost m.cost = trueΞ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Factory.le F y.cost m.cost = true
hd: Meas
tl: List Meas
h_case: dedup F (y :: ms) = hd :: tlΞ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Factory.le F y.cost m.cost = true
hd: Meas
tl: List Meas
h_case: dedup F (y :: ms) = hd :: tl
h_last': y.last β₯ hd.last
h_cost': y.cost = hd.costhd.last β€ m.lastΞ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Factory.le F y.cost m.cost = true
hd: Meas
tl: List Meas
h_case: dedup F (y :: ms) = hd :: tl
h_last': y.last β₯ hd.last
h_cost': y.cost = hd.cost
h_last'': m.last > y.lasthd.last β€ m.lastΞ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Factory.le F y.cost m.cost = true
hd: Meas
tl: List Meas
h_case: dedup F (y :: ms) = hd :: tl
h_last': y.last β₯ hd.last
h_cost': y.cost = hd.costhd.last β€ m.lastΞ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Factory.le F y.cost m.cost = true
hd: Meas
tl: List Meas
h_case: dedup F (y :: ms) = hd :: tl
h_last': y.last β₯ hd.last
h_cost': y.cost = hd.costhd.last β€ m.lastGoals accomplished! πΞ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Factory.le F y.cost m.cost = true
hd: Meas
tl: List Meas
h_case: dedup F (y :: ms) = hd :: tlΞ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Factory.le F y.cost m.cost = true
hd: Meas
tl: List Meas
h_case: dedup F (y :: ms) = hd :: tl
h_last': y.last β₯ hd.last
h_cost': y.cost = hd.costFactory.le F hd.cost m.cost = trueΞ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Factory.le F y.cost m.cost = true
hd: Meas
tl: List Meas
h_case: dedup F (y :: ms) = hd :: tl
h_last': y.last β₯ hd.last
h_cost': y.cost = hd.costFactory.le F hd.cost m.cost = trueΞ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Factory.le F y.cost m.cost = true
hd: Meas
tl: List Meas
h_case: dedup F (y :: ms) = hd :: tl
h_last': y.last β₯ hd.last
h_cost': y.cost = hd.costFactory.le F y.cost m.cost = trueΞ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Factory.le F y.cost m.cost = true
hd: Meas
tl: List Meas
h_case: dedup F (y :: ms) = hd :: tl
h_last': y.last β₯ hd.last
h_cost': y.cost = hd.costFactory.le F y.cost m.cost = trueΞ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Factory.le F y.cost m.cost = true
hd: Meas
tl: List Meas
h_case: dedup F (y :: ms) = hd :: tl
h_last': y.last β₯ hd.last
h_cost': y.cost = hd.costFactory.le F hd.cost m.cost = trueGoals accomplished! πΞ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)Ξ±β: Type
m: Meas
F: Factory Ξ±β
y: Meas
ms: List Meas
ih: m β y :: ms β last_decreasing (y :: ms) β cost_increasing_non_strict F (y :: ms) β β m_better, m_better β dedup F (y :: ms) β§ dominates F m_better m = true
h_last: last_decreasing (m :: y :: ms)
h_cost: cost_increasing_non_strict F (m :: y :: ms)
hβ: Β¬Factory.le F y.cost m.cost = trueGoals accomplished! πΞ±β: Type
m: Meas
F: Factory Ξ±β
x: Meas
ms: List Meas
ih: m β ms β last_decreasing ms β cost_increasing_non_strict F ms β β m_better, m_better β dedup F ms β§ dominates F m_better m = true
h: m β x :: ms
h_last: last_decreasing (x :: ms)
h_cost: cost_increasing_non_strict F (x :: ms)Ξ±β: Type
m: Meas
F: Factory Ξ±β
x: Meas
ms: List Meas
ih: m β ms β last_decreasing ms β cost_increasing_non_strict F ms β β m_better, m_better β dedup F ms β§ dominates F m_better m = true
h_last: last_decreasing (x :: ms)
h_cost: cost_increasing_non_strict F (x :: ms)
h: List.Mem m msΞ±β: Type
m: Meas
F: Factory Ξ±β
x: Meas
ms: List Meas
ih: m β ms β last_decreasing ms β cost_increasing_non_strict F ms β β m_better, m_better β dedup F ms β§ dominates F m_better m = true
h_last: last_decreasing (x :: ms)
h_cost: cost_increasing_non_strict F (x :: ms)
hβ: List.Mem m ms
m_better: Meas
h: m_better β dedup F ms
h_dom: dominates F m_better m = trueΞ±β: Type
m: Meas
F: Factory Ξ±β
x: Meas
ms: List Meas
ih: m β ms β last_decreasing ms β cost_increasing_non_strict F ms β β m_better, m_better β dedup F ms β§ dominates F m_better m = true
h_last: last_decreasing (x :: ms)
h_cost: cost_increasing_non_strict F (x :: ms)
h: List.Mem m msΞ±β: Type
m: Meas
F: Factory Ξ±β
x: Meas
ms: List Meas
ih: m β ms β last_decreasing ms β cost_increasing_non_strict F ms β β m_better, m_better β dedup F ms β§ dominates F m_better m = true
h_last: last_decreasing (x :: ms)
h_cost: cost_increasing_non_strict F (x :: ms)
hβ: List.Mem m ms
m_better: Meas
h: m_better β dedup F ms
h_dom: dominates F m_better m = trueΞ±β: Type
m: Meas
F: Factory Ξ±β
x: Meas
ms: List Meas
ih: m β ms β last_decreasing ms β cost_increasing_non_strict F ms β β m_better, m_better β dedup F ms β§ dominates F m_better m = true
h_last: last_decreasing (x :: ms)
h_cost: cost_increasing_non_strict F (x :: ms)
h: List.Mem m msΞ±β: Type
m: Meas
F: Factory Ξ±β
x: Meas
ms: List Meas
ih: m β ms β last_decreasing ms β cost_increasing_non_strict F ms β β m_better, m_better β dedup F ms β§ dominates F m_better m = true
h_last: last_decreasing (x :: ms)
h_cost: cost_increasing_non_strict F (x :: ms)
hβ: List.Mem m ms
m_better: Meas
h_dom: dominates F m_better m = true
h: m_better β dedup F (x :: ms)Ξ±β: Type
m: Meas
F: Factory Ξ±β
x: Meas
ms: List Meas
ih: m β ms β last_decreasing ms β cost_increasing_non_strict F ms β β m_better, m_better β dedup F ms β§ dominates F m_better m = true
h_last: last_decreasing (x :: ms)
h_cost: cost_increasing_non_strict F (x :: ms)
h: List.Mem m msGoals accomplished! πGoals accomplished! π