lean4-htt/tests/lean/run/monotone.lean
Leonardo de Moura 9e980b2a78 fix: bug at decAux?
We are getting a few "stuck at universe constraint" errors after the
fix. We may need to add some kind of approximation in the future.
2021-09-20 07:12:57 -07:00

34 lines
1.6 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

class Preorder (α : Type u) extends LE α where
le_refl (a : α) : a ≤ a
le_trans {a b c : α} : a ≤ b → b ≤ c → a ≤ c
instance {α : Type u} {β : α → Type v} [(a : α) → Preorder (β a)] : Preorder ((a : α) → β a) where
le f g := ∀ a, f a ≤ g a
le_refl f := fun a => Preorder.le_refl (f a)
le_trans := fun h₁ h₂ a => Preorder.le_trans (h₁ a) (h₂ a)
-- In Lean 3, we defined `monotone` using the strict implicit notation `{{ ... }}`.
-- Implicit lambdas in Lean 4 allow us to use the regular `{...}`
def Monotone [Preorder α] [Preorder β] (f : α → β) :=
∀ {a b}, a ≤ b → f a ≤ f b
theorem monotone_id [Preorder α] : Monotone (α := α) id :=
fun h => h
theorem monotone_id' [Preorder α] : Monotone (α := α) id :=
@fun a b h => h -- `@` disables implicit lambdas
theorem monotone_id'' [Preorder α] : Monotone (α := α) id :=
fun {a b} (h : a ≤ b) => h -- `{a b}` disables implicit lambdas
theorem monotone_const [Preorder α] [Preorder β] (b : β) : Monotone (fun a : α => b) :=
fun _ => Preorder.le_refl b
theorem monotone_comp [Preorder α] [Preorder β] [Preorder γ] {g : β → γ} {f : α → β} (m_g : Monotone g) (m_f : Monotone f) : Monotone (g ∘ f) :=
fun h => m_g (m_f h)
theorem monotone_fun {α : Type u} {β : Type v} [Preorder α] [Preorder γ] {f : α → β → γ} (m : (b : β) → Monotone (fun a => f a b)) : Monotone f :=
fun h b => m b h
theorem ex [Preorder α] {f g h : αα} (m_h : Monotone h) (m_g : Monotone g) (m_f : Monotone f) : Monotone (h ∘ g ∘ f) :=
monotone_comp m_h (monotone_comp m_g m_f) -- implicit lambdas in action here