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.Factory
import Pretty.Tactic

/-!
Basic facts about cost factories.
-/

namespace Factory 

def 
lt: {α : Type} → Factory αααProp
lt
(
F: Factory α
F
:
Factory: TypeType
Factory
α: ?m.3
α
) (
c₁: α
c₁
c₂: α
c₂
:
α: ?m.3
α
) :
Prop: Type
Prop
:=
F: Factory α
F
.
le: {α : Type} → Factory αααBool
le
c₁: α
c₁
c₂: α
c₂
c₁: α
c₁
c₂: α
c₂
section FactoryImplicit variable {
F: Factory α
F
:
Factory: TypeType
Factory
α: ?m.110
α
} lemma
le_refl: ∀ {α : Type} {F : Factory α} (c : α), le F c c = true
le_refl
(
c: α
c
:
α: ?m.116
α
) :
F: Factory α
F
.
le: {α : Type} → Factory αααBool
le
c: α
c
c: α
c
:=

Goals accomplished! 🐙
α: Type

F: Factory α

c: α


le F c c = true
α: Type

F: Factory α

c: α


le F c c = true
α: Type

F: Factory α

c: α

h✝: le F c c = true


inl
le F c c = true
α: Type

F: Factory α

c: α

h✝: le F c c = true


inr
le F c c = true

Goals accomplished! 🐙
lemma
not_eq_of_not_le: ∀ {c₁ c₂ : α}, ¬le F c₁ c₂ = truec₁ c₂
not_eq_of_not_le
(
h: ¬le F c₁ c₂ = true
h
: ¬
F: Factory α
F
.
le: {α : Type} → Factory αααBool
le
c₁: ?m.228
c₁
c₂: ?m.233
c₂
) :
c₁: ?m.228
c₁
c₂: ?m.233
c₂
:=

Goals accomplished! 🐙
α: Type

F: Factory α

c₁, c₂: α

h: ¬le F c₁ c₂ = true


c₁ c₂
α: Type

F: Factory α

c₁, c₂: α

h: ¬le F c₁ c₂ = true

h': c₁ = c₂


α: Type

F: Factory α

c₁, c₂: α

h: ¬le F c₁ c₂ = true


c₁ c₂
α: Type

F: Factory α

c₁: α

h: ¬le F c₁ c₁ = true


α: Type

F: Factory α

c₁, c₂: α

h: ¬le F c₁ c₂ = true


c₁ c₂
α: Type

F: Factory α

c₁: α

h: ¬False


¬¬le F c₁ c₁ = true
α: Type

F: Factory α

c₁, c₂: α

h: ¬le F c₁ c₂ = true


c₁ c₂
α: Type

F: Factory α

c₁: α

h: ¬False


le F c₁ c₁ = true
α: Type

F: Factory α

c₁, c₂: α

h: ¬le F c₁ c₂ = true


c₁ c₂

Goals accomplished! 🐙
lemma
not_le_iff_lt: ∀ {α : Type} {F : Factory α} {c₁ c₂ : α}, ¬le F c₁ c₂ = true lt F c₂ c₁
not_le_iff_lt
: ¬
F: Factory α
F
.
le: {α : Type} → Factory αααBool
le
c₁: ?m.449
c₁
c₂: ?m.454
c₂
F: Factory α
F
.
lt: {α : Type} → Factory αααProp
lt
c₂: ?m.454
c₂
c₁: ?m.449
c₁
:=

Goals accomplished! 🐙
α: Type

F: Factory α

c₁, c₂: α


¬le F c₁ c₂ = true lt F c₂ c₁
α: Type

F: Factory α

c₁, c₂: α


mp
¬le F c₁ c₂ = truelt F c₂ c₁
α: Type

F: Factory α

c₁, c₂: α


mpr
lt F c₂ c₁¬le F c₁ c₂ = true
α: Type

F: Factory α

c₁, c₂: α


¬le F c₁ c₂ = true lt F c₂ c₁
α: Type

F: Factory α

c₁, c₂: α


¬le F c₁ c₂ = truelt F c₂ c₁
α: Type

F: Factory α

c₁, c₂: α

h: ¬le F c₁ c₂ = true


lt F c₂ c₁
α: Type

F: Factory α

c₁, c₂: α


¬le F c₁ c₂ = truelt F c₂ c₁
α: Type

F: Factory α

c₁, c₂: α

h: ¬le F c₁ c₂ = true


le F c₂ c₁ = true ¬c₂ = c₁
α: Type

F: Factory α

c₁, c₂: α


¬le F c₁ c₂ = truelt F c₂ c₁
α: Type

F: Factory α

c₁, c₂: α

h: ¬le F c₁ c₂ = true


le F c₂ c₁ = true ¬c₂ = c₁
α: Type

F: Factory α

c₁, c₂: α

h: ¬le F c₁ c₂ = true

h✝: le F c₂ c₁ = true


inl
le F c₂ c₁ = true ¬c₂ = c₁
α: Type

F: Factory α

c₁, c₂: α

h: ¬le F c₁ c₂ = true

h✝: le F c₁ c₂ = true


inr
le F c₂ c₁ = true ¬c₂ = c₁
α: Type

F: Factory α

c₁, c₂: α

h: ¬le F c₁ c₂ = true

h✝: le F c₂ c₁ = true


inl
le F c₂ c₁ = true ¬c₂ = c₁
α: Type

F: Factory α

c₁, c₂: α


¬le F c₁ c₂ = truelt F c₂ c₁
α: Type

F: Factory α

c₁, c₂: α

h: ¬le F c₁ c₂ = true

h': le F c₂ c₁ = true


le F c₂ c₁ = true ¬c₂ = c₁
α: Type

F: Factory α

c₁, c₂: α

h: ¬le F c₁ c₂ = true

h': le F c₂ c₁ = true


¬c₂ = c₁
α: Type

F: Factory α

c₁, c₂: α

h: ¬le F c₁ c₂ = true

h': le F c₂ c₁ = true


le F c₂ c₁ = true ¬c₂ = c₁
α: Type

F: Factory α

c₁, c₂: α

h✝: ¬le F c₁ c₂ = true

h': le F c₂ c₁ = true

h: c₂ = c₁


α: Type

F: Factory α

c₁, c₂: α

h: ¬le F c₁ c₂ = true

h': le F c₂ c₁ = true


le F c₂ c₁ = true ¬c₂ = c₁
α: Type

F: Factory α

c₁, c₂: α

h✝: ¬le F c₁ c₂ = true

h': le F c₂ c₁ = true

h: c₂ = c₁


α: Type

F: Factory α

c₁, c₂: α

h✝: ¬le F c₁ c₂ = true

h': le F c₂ c₁ = true

h: c₂ = c₁


h
¬le ?F ?c₁ ?c₂ = true
α: Type

F: Factory α

c₁, c₂: α

h✝: ¬le F c₁ c₂ = true

h': le F c₂ c₁ = true

h: c₂ = c₁


a
?c₁ = ?c₂
α: Type

F: Factory α

c₁, c₂: α

h✝: ¬le F c₁ c₂ = true

h': le F c₂ c₁ = true

h: c₂ = c₁


α
α: Type

F: Factory α

c₁, c₂: α

h✝: ¬le F c₁ c₂ = true

h': le F c₂ c₁ = true

h: c₂ = c₁


F
α: Type

F: Factory α

c₁, c₂: α

h✝: ¬le F c₁ c₂ = true

h': le F c₂ c₁ = true

h: c₂ = c₁


c₁
α: Type

F: Factory α

c₁, c₂: α

h✝: ¬le F c₁ c₂ = true

h': le F c₂ c₁ = true

h: c₂ = c₁


c₂
α: Type

F: Factory α

c₁, c₂: α

h✝: ¬le F c₁ c₂ = true

h': le F c₂ c₁ = true

h: c₂ = c₁


a
c₁ = c₂
α: Type

F: Factory α

c₁, c₂: α

h: ¬le F c₁ c₂ = true

h': le F c₂ c₁ = true


le F c₂ c₁ = true ¬c₂ = c₁
α: Type

F: Factory α

c₁, c₂: α

h✝: ¬le F c₁ c₂ = true

h': le F c₂ c₁ = true

h: c₂ = c₁


a
c₁ = c₂
α: Type

F: Factory α

c₁, c₂: α

h✝: ¬le F c₁ c₂ = true

h': le F c₂ c₁ = true

h: c₂ = c₁


a
c₂ = c₁
α: Type

F: Factory α

c₁, c₂: α

h✝: ¬le F c₁ c₂ = true

h': le F c₂ c₁ = true

h: c₂ = c₁


a
c₁ = c₂

Goals accomplished! 🐙
α: Type

F: Factory α

c₁, c₂: α


¬le F c₁ c₂ = true lt F c₂ c₁
α: Type

F: Factory α

c₁, c₂: α


lt F c₂ c₁¬le F c₁ c₂ = true
α: Type

F: Factory α

c₁, c₂: α

h: lt F c₂ c₁


¬le F c₁ c₂ = true
α: Type

F: Factory α

c₁, c₂: α


lt F c₂ c₁¬le F c₁ c₂ = true
α: Type

F: Factory α

c₁, c₂: α

h: le F c₂ c₁ = true ¬c₂ = c₁


le F c₁ c₂ = false
α: Type

F: Factory α

c₁, c₂: α


lt F c₂ c₁¬le F c₁ c₂ = true
α: Type

F: Factory α

c₁, c₂: α

h: le F c₂ c₁ = true ¬c₂ = c₁

h₁: le F c₂ c₁ = true

h₂: ¬c₂ = c₁


le F c₁ c₂ = false
α: Type

F: Factory α

c₁, c₂: α


lt F c₂ c₁¬le F c₁ c₂ = true
α: Type

F: Factory α

c₁, c₂: α

h: le F c₂ c₁ = true ¬c₂ = c₁

h₁: le F c₂ c₁ = true

h₂: ¬le F c₁ c₂ = false


¬¬c₂ = c₁
α: Type

F: Factory α

c₁, c₂: α


lt F c₂ c₁¬le F c₁ c₂ = true
α: Type

F: Factory α

c₁, c₂: α

h: le F c₂ c₁ = true ¬c₂ = c₁

h₁: le F c₂ c₁ = true

h₂: le F c₁ c₂ = true


¬¬c₂ = c₁
α: Type

F: Factory α

c₁, c₂: α


lt F c₂ c₁¬le F c₁ c₂ = true
α: Type

F: Factory α

c₁, c₂: α

h: le F c₂ c₁ = true ¬c₂ = c₁

h₁: le F c₂ c₁ = true

h₂: le F c₁ c₂ = true

h': c₂ = c₁


¬¬c₂ = c₁
α: Type

F: Factory α

c₁, c₂: α


lt F c₂ c₁¬le F c₁ c₂ = true

Goals accomplished! 🐙
lemma
lt_trans: ∀ {α : Type} {F : Factory α} {c₁ c₂ c₃ : α}, lt F c₁ c₂lt F c₂ c₃lt F c₁ c₃
lt_trans
(
h₁: lt F c₁ c₂
h₁
:
F: Factory α
F
.
lt: {α : Type} → Factory αααProp
lt
c₁: ?m.1277
c₁
c₂: ?m.1286
c₂
) (
h₂: lt F c₂ c₃
h₂
:
F: Factory α
F
.
lt: {α : Type} → Factory αααProp
lt
c₂: ?m.1286
c₂
c₃: ?m.1302
c₃
) :
F: Factory α
F
.
lt: {α : Type} → Factory αααProp
lt
c₁: ?m.1277
c₁
c₃: ?m.1302
c₃
:=

Goals accomplished! 🐙
α: Type

F: Factory α

c₁, c₂, c₃: α

h₁: lt F c₁ c₂

h₂: lt F c₂ c₃


lt F c₁ c₃
α: Type

F: Factory α

c₁, c₂, c₃: α

h₁: le F c₁ c₂ = true ¬c₁ = c₂

h₂: le F c₂ c₃ = true ¬c₂ = c₃


le F c₁ c₃ = true ¬c₁ = c₃
α: Type

F: Factory α

c₁, c₂, c₃: α

h₁: lt F c₁ c₂

h₂: lt F c₂ c₃


lt F c₁ c₃
α: Type

F: Factory α

c₁, c₂, c₃: α

h₁✝: le F c₁ c₂ = true ¬c₁ = c₂

h₂: le F c₂ c₃ = true ¬c₂ = c₃

h₁: le F c₁ c₂ = true

right✝: ¬c₁ = c₂


le F c₁ c₃ = true ¬c₁ = c₃
α: Type

F: Factory α

c₁, c₂, c₃: α

h₁: lt F c₁ c₂

h₂: lt F c₂ c₃


lt F c₁ c₃
α: Type

F: Factory α

c₁, c₂, c₃: α

h₁✝: le F c₁ c₂ = true ¬c₁ = c₂

h₂✝: le F c₂ c₃ = true ¬c₂ = c₃

h₁: le F c₁ c₂ = true

right✝¹: ¬c₁ = c₂

h₂: le F c₂ c₃ = true

right✝: ¬c₂ = c₃


le F c₁ c₃ = true ¬c₁ = c₃
α: Type

F: Factory α

c₁, c₂, c₃: α

h₁: lt F c₁ c₂

h₂: lt F c₂ c₃


lt F c₁ c₃
α: Type

F: Factory α

c₁, c₂, c₃: α

h₁✝: le F c₁ c₂ = true ¬c₁ = c₂

h₂✝: le F c₂ c₃ = true ¬c₂ = c₃

h₁: le F c₁ c₂ = true

right✝¹: ¬c₁ = c₂

h₂: le F c₂ c₃ = true

right✝: ¬c₂ = c₃


left
le F c₁ c₃ = true
α: Type

F: Factory α

c₁, c₂, c₃: α

h₁✝: le F c₁ c₂ = true ¬c₁ = c₂

h₂✝: le F c₂ c₃ = true ¬c₂ = c₃

h₁: le F c₁ c₂ = true

right✝¹: ¬c₁ = c₂

h₂: le F c₂ c₃ = true

right✝: ¬c₂ = c₃


right
¬c₁ = c₃
α: Type

F: Factory α

c₁, c₂, c₃: α

h₁: lt F c₁ c₂

h₂: lt F c₂ c₃


lt F c₁ c₃
α: Type

F: Factory α

c₁, c₂, c₃: α

h₁✝: le F c₁ c₂ = true ¬c₁ = c₂

h₂✝: le F c₂ c₃ = true ¬c₂ = c₃

h₁: le F c₁ c₂ = true

right✝¹: ¬c₁ = c₂

h₂: le F c₂ c₃ = true

right✝: ¬c₂ = c₃


le F c₁ c₃ = true
α: Type

F: Factory α

c₁, c₂, c₃: α

h₁✝: le F c₁ c₂ = true ¬c₁ = c₂

h₂✝: le F c₂ c₃ = true ¬c₂ = c₃

h₁: le F c₁ c₂ = true

right✝¹: ¬c₁ = c₂

h₂: le F c₂ c₃ = true

right✝: ¬c₂ = c₃


le F c₁ c₃ = true
α: Type

F: Factory α

c₁, c₂, c₃: α

h₁✝: le F c₁ c₂ = true ¬c₁ = c₂

h₂✝: le F c₂ c₃ = true ¬c₂ = c₃

h₁: le F c₁ c₂ = true

right✝¹: ¬c₁ = c₂

h₂: le F c₂ c₃ = true

right✝: ¬c₂ = c₃


a
le F c₁ ?m.1673 = true
α: Type

F: Factory α

c₁, c₂, c₃: α

h₁✝: le F c₁ c₂ = true ¬c₁ = c₂

h₂✝: le F c₂ c₃ = true ¬c₂ = c₃

h₁: le F c₁ c₂ = true

right✝¹: ¬c₁ = c₂

h₂: le F c₂ c₃ = true

right✝: ¬c₂ = c₃


a
le F ?m.1673 c₃ = true
α: Type

F: Factory α

c₁, c₂, c₃: α

h₁✝: le F c₁ c₂ = true ¬c₁ = c₂

h₂✝: le F c₂ c₃ = true ¬c₂ = c₃

h₁: le F c₁ c₂ = true

right✝¹: ¬c₁ = c₂

h₂: le F c₂ c₃ = true

right✝: ¬c₂ = c₃


α

Goals accomplished! 🐙
α: Type

F: Factory α

c₁, c₂, c₃: α

h₁: lt F c₁ c₂

h₂: lt F c₂ c₃


lt F c₁ c₃
α: Type

F: Factory α

c₁, c₂, c₃: α

h₁✝: le F c₁ c₂ = true ¬c₁ = c₂

h₂✝: le F c₂ c₃ = true ¬c₂ = c₃

h₁: le F c₁ c₂ = true

right✝¹: ¬c₁ = c₂

h₂: le F c₂ c₃ = true

right✝: ¬c₂ = c₃


¬c₁ = c₃
α: Type

F: Factory α

c₁, c₂, c₃: α

h₁✝: le F c₁ c₂ = true ¬c₁ = c₂

h₂✝: le F c₂ c₃ = true ¬c₂ = c₃

h₁: le F c₁ c₂ = true

right✝¹: ¬c₁ = c₂

h₂: le F c₂ c₃ = true

right✝: ¬c₂ = c₃

h: c₁ = c₃


α: Type

F: Factory α

c₁, c₂, c₃: α

h₁✝: le F c₁ c₂ = true ¬c₁ = c₂

h₂✝: le F c₂ c₃ = true ¬c₂ = c₃

h₁: le F c₁ c₂ = true

right✝¹: ¬c₁ = c₂

h₂: le F c₂ c₃ = true

right✝: ¬c₂ = c₃


¬c₁ = c₃
α: Type

F: Factory α

c₁, c₂: α

h₁✝: le F c₁ c₂ = true ¬c₁ = c₂

h₁: le F c₁ c₂ = true

right✝¹: ¬c₁ = c₂

h₂✝: le F c₂ c₁ = true ¬c₂ = c₁

h₂: le F c₂ c₁ = true

right✝: ¬c₂ = c₁


α: Type

F: Factory α

c₁, c₂, c₃: α

h₁✝: le F c₁ c₂ = true ¬c₁ = c₂

h₂✝: le F c₂ c₃ = true ¬c₂ = c₃

h₁: le F c₁ c₂ = true

right✝¹: ¬c₁ = c₂

h₂: le F c₂ c₃ = true

right✝: ¬c₂ = c₃


¬c₁ = c₃
α: Type

F: Factory α

c₁, c₂: α

h₁✝: le F c₁ c₂ = true ¬c₁ = c₂

h₁: le F c₁ c₂ = true

right✝¹: ¬c₁ = c₂

h₂✝: le F c₂ c₁ = true ¬c₂ = c₁

h₂: le F c₂ c₁ = true

right✝: ¬c₂ = c₁


α: Type

F: Factory α

c₁, c₂: α

h₁✝: le F c₁ c₂ = true ¬c₁ = c₂

h₁: le F c₁ c₂ = true

right✝¹: ¬c₁ = c₂

h₂✝: le F c₂ c₁ = true ¬c₂ = c₁

h₂: le F c₂ c₁ = true

right✝: ¬c₂ = c₁

this: c₁ = c₂



Goals accomplished! 🐙
lemma
le_of_lt: ∀ {c c' : α}, lt F c c'le F c c' = true
le_of_lt
(
h₁: lt F c c'
h₁
:
F: Factory α
F
.
lt: {α : Type} → Factory αααProp
lt
c: ?m.1755
c
c': ?m.1764
c'
) :
F: Factory α
F
.
le: {α : Type} → Factory αααBool
le
c: ?m.1755
c
c': ?m.1764
c'
:=

Goals accomplished! 🐙
α: Type

F: Factory α

c, c': α

h₁: lt F c c'


le F c c' = true
α: Type

F: Factory α

c, c': α

h₁: le F c c' = true ¬c = c'


le F c c' = true
α: Type

F: Factory α

c, c': α

h₁: lt F c c'


le F c c' = true

Goals accomplished! 🐙
lemma
invalid_inequality: ∀ {c₁ c₂ c₃ : α}, le F c₁ c₂ = truelt F c₂ c₃le F c₃ c₁ = trueFalse
invalid_inequality
(
h₁: le F c₁ c₂ = true
h₁
:
F: Factory α
F
.
le: {α : Type} → Factory αααBool
le
c₁: ?m.1921
c₁
c₂: ?m.1926
c₂
) (
h₂: lt F c₂ c₃
h₂
:
F: Factory α
F
.
lt: {α : Type} → Factory αααProp
lt
c₂: ?m.1926
c₂
c₃: ?m.1952
c₃
) (
h₃: le F c₃ c₁ = true
h₃
:
F: Factory α
F
.
le: {α : Type} → Factory αααBool
le
c₃: ?m.1952
c₃
c₁: ?m.1921
c₁
) :
False: Prop
False
:=

Goals accomplished! 🐙
α: Type

F: Factory α

c₁, c₂, c₃: α

h₁: le F c₁ c₂ = true

h₂: lt F c₂ c₃

h₃: le F c₃ c₁ = true


α: Type

F: Factory α

c₁, c₂, c₃: α

h₁: le F c₁ c₂ = true

h₂: le F c₂ c₃ = true ¬c₂ = c₃

h₃: le F c₃ c₁ = true


α: Type

F: Factory α

c₁, c₂, c₃: α

h₁: le F c₁ c₂ = true

h₂: lt F c₂ c₃

h₃: le F c₃ c₁ = true


α: Type

F: Factory α

c₁, c₂, c₃: α

h₁: le F c₁ c₂ = true

h₂: le F c₂ c₃ = true ¬c₂ = c₃

h₃: le F c₃ c₁ = true

h_trans: le F c₁ c₃ = true


α: Type

F: Factory α

c₁, c₂, c₃: α

h₁: le F c₁ c₂ = true

h₂: lt F c₂ c₃

h₃: le F c₃ c₁ = true


α: Type

F: Factory α

c₁, c₂, c₃: α

h₁: le F c₁ c₂ = true

h₂: le F c₂ c₃ = true ¬c₂ = c₃

h₃: le F c₃ c₁ = true

h_trans: le F c₁ c₃ = true

h: c₁ = c₃


α: Type

F: Factory α

c₁, c₂, c₃: α

h₁: le F c₁ c₂ = true

h₂: lt F c₂ c₃

h₃: le F c₃ c₁ = true


α: Type

F: Factory α

c₁, c₂: α

h₁: le F c₁ c₂ = true

h₂: le F c₂ c₁ = true ¬c₂ = c₁

h₃, h_trans: le F c₁ c₁ = true


α: Type

F: Factory α

c₁, c₂, c₃: α

h₁: le F c₁ c₂ = true

h₂: lt F c₂ c₃

h₃: le F c₃ c₁ = true


α: Type

F: Factory α

c₁, c₂: α

h₁: le F c₁ c₂ = true

h₂: le F c₂ c₁ = true ¬c₂ = c₁

h₃, h_trans: le F c₁ c₁ = true

h: c₁ = c₂


α: Type

F: Factory α

c₁, c₂, c₃: α

h₁: le F c₁ c₂ = true

h₂: lt F c₂ c₃

h₃: le F c₃ c₁ = true


α: Type

F: Factory α

c₁: α

h₃, h_trans, h₁: le F c₁ c₁ = true

h₂: le F c₁ c₁ = true ¬c₁ = c₁


α: Type

F: Factory α

c₁, c₂, c₃: α

h₁: le F c₁ c₂ = true

h₂: lt F c₂ c₃

h₃: le F c₃ c₁ = true



Goals accomplished! 🐙
end FactoryImplicit end Factory