lean4-htt/tests/lean/run/Ord.lean
Kim Morrison c193195a05
chore: fixing short-circuiting issue in Ordering.then (#6907)
Thanks to @PatrickMassot for noticing the bug, and @digama0 for
diagnosing, fixing, and testing.
2025-02-03 00:44:45 +00:00

49 lines
1 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.

inductive SimpleInd
| A
| B
deriving Ord
mutual
inductive Foo
| A : Int → (3 = 3) → String → Foo
| B : Bar → Foo
deriving Ord
inductive Bar
| C
| D : Foo → Bar
deriving Ord
end
inductive ManyConstructors | A | B | C | D | E | F | G | H | I | J | K | L
| M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z
deriving Ord
structure Person :=
firstName : String
lastName : String
age : Nat
deriving Ord
example : compare { firstName := "A", lastName := "B", age := 10 : Person } ⟨"B", "A", 9⟩ = Ordering.lt := rfl
structure Company :=
name : String
ceo : Person
numberOfEmployees : Nat
deriving Ord
structure Fixed (α : Type u) where
val : Int
deriving Ord
inductive Fixed' : Type → Type 1 where
| mk : Int → Fixed' α
deriving Ord
-- Before fixing the definition of `Ordering.then`, this would panic,
-- because short-circuiting was not working.
def foo (a : List Nat) := Ordering.then (compare a.length 1) (compare a[0]! 1)
/-- info: Ordering.lt -/
#guard_msgs in
#eval foo []