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.
/-
Copyright (c) 2021 Yaël Dillies. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yaël Dillies

! This file was ported from Lean 3 source module order.circular
! leanprover-community/mathlib commit 213b0cff7bc5ab6696ee07cceec80829ce42efec
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
import Mathlib.Data.Set.Basic

/-!
# Circular order hierarchy

This file defines circular preorders, circular partial orders and circular orders.

## Hierarchy

* A ternary "betweenness" relation `btw : α → α → α → Prop` forms a `CircularOrder` if it is
  - reflexive: `btw a a a`
  - cyclic: `btw a b c → btw b c a`
  - antisymmetric: `btw a b c → btw c b a → a = b ∨ b = c ∨ c = a`
  - total: `btw a b c ∨ btw c b a`
  along with a strict betweenness relation `sbtw : α → α → α → Prop` which respects
  `sbtw a b c ↔ btw a b c ∧ ¬ btw c b a`, analogously to how `<` and `≤` are related, and is
  - transitive: `sbtw a b c → sbtw b d c → sbtw a d c`.
* A `CircularPartialOrder` drops totality.
* A `CircularPreorder` further drops antisymmetry.

The intuition is that a circular order is a circle and `btw a b c` means that going around
clockwise from `a` you reach `b` before `c` (`b` is between `a` and `c` is meaningless on an
unoriented circle). A circular partial order is several, potentially intersecting, circles. A
circular preorder is like a circular partial order, but several points can coexist.

Note that the relations between `CircularPreorder`, `CircularPartialOrder` and `CircularOrder`
are subtler than between `Preorder`, `PartialOrder`, `LinearOrder`. In particular, one cannot
simply extend the `btw` of a `CircularPartialOrder` to make it a `CircularOrder`.

One can translate from usual orders to circular ones by "closing the necklace at infinity". See
`LE.toBtw` and `LT.toSBtw`. Going the other way involves "cutting the necklace" or
"rolling the necklace open".

## Examples

Some concrete circular orders one encounters in the wild are `ZMod n` for `0 < n`, `Circle`,
`Real.Angle`...

## Main definitions

* `Set.cIcc`: Closed-closed circular interval.
* `Set.cIoo`: Open-open circular interval.

## Notes

There's an unsolved diamond on `OrderDual α` here. The instances `LE α → Btw αᵒᵈ` and
`LT α → SBtw αᵒᵈ` can each be inferred in two ways:
* `LE α` → `Btw α` → `Btw αᵒᵈ` vs
  `LE α` → `LE αᵒᵈ` → `Btw αᵒᵈ`
* `LT α` → `SBtw α` → `SBtw αᵒᵈ` vs
  `LT α` → `LT αᵒᵈ` → `SBtw αᵒᵈ`
The fields are propeq, but not defeq. It is temporarily fixed by turning the circularizing instances
into definitions.

## TODO

Antisymmetry is quite weak in the sense that there's no way to discriminate which two points are
equal. This prevents defining closed-open intervals `cIco` and `cIoc` in the neat `=`-less way. We
currently haven't defined them at all.

What is the correct generality of "rolling the necklace" open? At least, this works for `α × β` and
`β × α` where `α` is a circular order and `β` is a linear order.

What's next is to define circular groups and provide instances for `ZMod n`, the usual circle group
`Circle`, and `RootsOfUnity M`. What conditions do we need on `M` for this last one
to work?

We should have circular order homomorphisms. The typical example is
`days_to_month : days_of_the_year →c months_of_the_year` which relates the circular order of days
and the circular order of months. Is `α →c β` a good notation?

## References

* https://en.wikipedia.org/wiki/Cyclic_order
* https://en.wikipedia.org/wiki/Partial_cyclic_order

## Tags

circular order, cyclic order, circularly ordered set, cyclically ordered set
-/


/-- Syntax typeclass for a betweenness relation. -/
class 
Btw: {α : Type u_1} → (αααProp) → Btw α
Btw
(
α: Type ?u.2
α
:
Type _: Type (?u.2+1)
Type _
) where /-- Betweenness for circular orders. `btw a b c` states that `b` is between `a` and `c` (in that order). -/
btw: {α : Type u_1} → [self : Btw α] → αααProp
btw
:
α: Type ?u.2
α
α: Type ?u.2
α
α: Type ?u.2
α
Prop: Type
Prop
#align has_btw
Btw: Type u_1 → Type u_1
Btw
export Btw (btw) /-- Syntax typeclass for a strict betweenness relation. -/ class
SBtw: Type u_1 → Type u_1
SBtw
(
α: Type ?u.18
α
:
Type _: Type (?u.18+1)
Type _
) where /-- Strict betweenness for circular orders. `sbtw a b c` states that `b` is strictly between `a` and `c` (in that order). -/
sbtw: {α : Type u_1} → [self : SBtw α] → αααProp
sbtw
:
α: Type ?u.18
α
α: Type ?u.18
α
α: Type ?u.18
α
Prop: Type
Prop
#align has_sbtw
SBtw: Type u_1 → Type u_1
SBtw
export SBtw (sbtw) /-- A circular preorder is the analogue of a preorder where you can loop around. `≤` and `<` are replaced by ternary relations `btw` and `sbtw`. `btw` is reflexive and cyclic. `sbtw` is transitive. -/ class
CircularPreorder: {α : Type u_1} → [toBtw : Btw α] → [toSBtw : SBtw α] → (∀ (a : α), Btw.btw a a a) → (∀ {a b c : α}, Btw.btw a b cBtw.btw b c a) → autoParam (∀ {a b c : α}, SBtw.sbtw a b c Btw.btw a b c ¬Btw.btw c b a) _auto✝(∀ {a b c d : α}, SBtw.sbtw a b cSBtw.sbtw b d cSBtw.sbtw a d c) → CircularPreorder α
CircularPreorder
(
α: Type ?u.105
α
:
Type _: Type (?u.105+1)
Type _
) extends
Btw: Type ?u.110 → Type ?u.110
Btw
α: Type ?u.105
α
,
SBtw: Type ?u.114 → Type ?u.114
SBtw
α: Type ?u.105
α
where /-- `a` is between `a` and `a`. -/
btw_refl: ∀ {α : Type u_1} [self : CircularPreorder α] (a : α), Btw.btw a a a
btw_refl
(
a: α
a
:
α: Type ?u.105
α
) :
btw: αααProp
btw
a: α
a
a: α
a
a: α
a
/-- If `b` is between `a` and `c`, then `c` is between `b` and `a`. This is motivated by imagining three points on a circle. -/
btw_cyclic_left: ∀ {α : Type u_1} [self : CircularPreorder α] {a b c : α}, Btw.btw a b cBtw.btw b c a
btw_cyclic_left
{
a: α
a
b: α
b
c: α
c
:
α: Type ?u.105
α
} :
btw: αααProp
btw
a: α
a
b: α
b
c: α
c
btw: αααProp
btw
b: α
b
c: α
c
a: α
a
sbtw := fun
a: ?m.132
a
b: ?m.135
b
c: ?m.138
c
=>
btw: αααProp
btw
a: ?m.132
a
b: ?m.135
b
c: ?m.138
c
∧ ¬
btw: αααProp
btw
c: ?m.138
c
b: ?m.135
b
a: ?m.132
a
/-- Strict betweenness is given by betweenness in one direction and non-betweenness in the other. I.e., if `b` is between `a` and `c` but not between `c` and `a`, then we say `b` is strictly between `a` and `c`. -/
sbtw_iff_btw_not_btw: ∀ {α : Type u_1} [self : CircularPreorder α] {a b c : α}, SBtw.sbtw a b c Btw.btw a b c ¬Btw.btw c b a
sbtw_iff_btw_not_btw
{
a: α
a
b: α
b
c: α
c
:
α: Type ?u.105
α
} :
sbtw: αααProp
sbtw
a: α
a
b: α
b
c: α
c
btw: αααProp
btw
a: α
a
b: α
b
c: α
c
∧ ¬
btw: αααProp
btw
c: α
c
b: α
b
a: α
a
:= by intros; rfl /-- For any fixed `c`, `fun a b ↦ sbtw a b c` is a transitive relation. I.e., given `a` `b` `d` `c` in that "order", if we have `b` strictly between `a` and `c`, and `d` strictly between `b` and `c`, then `d` is strictly between `a` and `c`. -/
sbtw_trans_left: ∀ {α : Type u_1} [self : CircularPreorder α] {a b c d : α}, SBtw.sbtw a b cSBtw.sbtw b d cSBtw.sbtw a d c
sbtw_trans_left
{
a: α
a
b: α
b
c: α
c
d: α
d
:
α: Type ?u.105
α
} :
sbtw: αααProp
sbtw
a: α
a
b: α
b
c: α
c
sbtw: αααProp
sbtw
b: α
b
d: α
d
c: α
c
sbtw: αααProp
sbtw
a: α
a
d: α
d
c: α
c
#align circular_preorder
CircularPreorder: Type u_1 → Type u_1
CircularPreorder
export CircularPreorder (btw_refl btw_cyclic_left sbtw_trans_left) /-- A circular partial order is the analogue of a partial order where you can loop around. `≤` and `<` are replaced by ternary relations `btw` and `sbtw`. `btw` is reflexive, cyclic and antisymmetric. `sbtw` is transitive. -/ class
CircularPartialOrder: Type u_1 → Type u_1
CircularPartialOrder
(
α: Type ?u.217
α
:
Type _: Type (?u.217+1)
Type _
) extends
CircularPreorder: Type ?u.222 → Type ?u.222
CircularPreorder
α: Type ?u.217
α
where /-- If `b` is between `a` and `c` and also between `c` and `a`, then at least one pair of points among `a`, `b`, `c` are identical. -/
btw_antisymm: ∀ {α : Type u_1} [self : CircularPartialOrder α] {a b c : α}, Btw.btw a b cBtw.btw c b aa = b b = c c = a
btw_antisymm
{
a: α
a
b: α
b
c: α
c
:
α: Type ?u.217
α
} :
btw: αααProp
btw
a: α
a
b: α
b
c: α
c
btw: αααProp
btw
c: α
c
b: α
b
a: α
a
a: α
a
=
b: α
b
b: α
b
=
c: α
c
c: α
c
=
a: α
a
#align circular_partial_order
CircularPartialOrder: Type u_1 → Type u_1
CircularPartialOrder
export CircularPartialOrder (btw_antisymm) /-- A circular order is the analogue of a linear order where you can loop around. `≤` and `<` are replaced by ternary relations `btw` and `sbtw`. `btw` is reflexive, cyclic, antisymmetric and total. `sbtw` is transitive. -/ class
CircularOrder: {α : Type u_1} → [toCircularPartialOrder : CircularPartialOrder α] → (∀ (a b c : α), Btw.btw a b c Btw.btw c b a) → CircularOrder α
CircularOrder
(
α: Type ?u.296
α
:
Type _: Type (?u.296+1)
Type _
) extends
CircularPartialOrder: Type ?u.301 → Type ?u.301
CircularPartialOrder
α: Type ?u.296
α
where /-- For any triple of points, the second is between the other two one way or another. -/
btw_total: ∀ {α : Type u_1} [self : CircularOrder α] (a b c : α), Btw.btw a b c Btw.btw c b a
btw_total
: ∀
a: α
a
b: α
b
c: α
c
:
α: Type ?u.296
α
,
btw: αααProp
btw
a: α
a
b: α
b
c: α
c
btw: αααProp
btw
c: α
c
b: α
b
a: α
a
#align circular_order
CircularOrder: Type u_1 → Type u_1
CircularOrder
export CircularOrder (btw_total) /-! ### Circular preorders -/ section CircularPreorder variable {
α: Type ?u.1009
α
:
Type _: Type (?u.922+1)
Type _
} [
CircularPreorder: Type ?u.1012 → Type ?u.1012
CircularPreorder
α: Type ?u.428
α
] theorem
btw_rfl: ∀ {α : Type u_1} [inst : CircularPreorder α] {a : α}, btw a a a
btw_rfl
{
a: α
a
:
α: Type ?u.377
α
} :
btw: {α : Type ?u.385} → [self : Btw α] → αααProp
btw
a: α
a
a: α
a
a: α
a
:=
btw_refl: ∀ {α : Type ?u.408} [self : CircularPreorder α] (a : α), btw a a a
btw_refl
_: ?m.409
_
#align btw_rfl
btw_rfl: ∀ {α : Type u_1} [inst : CircularPreorder α] {a : α}, btw a a a
btw_rfl
-- TODO: `alias` creates a def instead of a lemma. -- alias btw_cyclic_left ← has_btw.btw.cyclic_left theorem
Btw.btw.cyclic_left: ∀ {a b c : α}, btw a b cbtw b c a
Btw.btw.cyclic_left
{
a: α
a
b: α
b
c: α
c
:
α: Type ?u.428
α
} (
h: btw a b c
h
:
btw: {α : Type ?u.440} → [self : Btw α] → αααProp
btw
a: α
a
b: α
b
c: α
c
) :
btw: {α : Type ?u.462} → [self : Btw α] → αααProp
btw
b: α
b
c: α
c
a: α
a
:=
btw_cyclic_left: ∀ {α : Type ?u.481} [self : CircularPreorder α] {a b c : α}, btw a b cbtw b c a
btw_cyclic_left
h: btw a b c
h
#align has_btw.btw.cyclic_left
Btw.btw.cyclic_left: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, btw a b cbtw b c a
Btw.btw.cyclic_left
theorem
btw_cyclic_right: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, btw a b cbtw c a b
btw_cyclic_right
{
a: α
a
b: α
b
c: α
c
:
α: Type ?u.506
α
} (
h: btw a b c
h
:
btw: {α : Type ?u.518} → [self : Btw α] → αααProp
btw
a: α
a
b: α
b
c: α
c
) :
btw: {α : Type ?u.540} → [self : Btw α] → αααProp
btw
c: α
c
a: α
a
b: α
b
:=
h: btw a b c
h
.
cyclic_left: ∀ {α : Type ?u.559} [inst : CircularPreorder α] {a b c : α}, btw a b cbtw b c a
cyclic_left
.
cyclic_left: ∀ {α : Type ?u.574} [inst : CircularPreorder α] {a b c : α}, btw a b cbtw b c a
cyclic_left
#align btw_cyclic_right
btw_cyclic_right: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, btw a b cbtw c a b
btw_cyclic_right
alias
btw_cyclic_right: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, btw a b cbtw c a b
btw_cyclic_right
Btw.btw.cyclic_right: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, btw a b cbtw c a b
Btw.btw.cyclic_right
#align has_btw.btw.cyclic_right
Btw.btw.cyclic_right: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, btw a b cbtw c a b
Btw.btw.cyclic_right
/-- The order of the `↔` has been chosen so that `rw btw_cyclic` cycles to the right while `rw ←btw_cyclic` cycles to the left (thus following the prepended arrow). -/ theorem
btw_cyclic: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, btw a b c btw c a b
btw_cyclic
{
a: α
a
b: α
b
c: α
c
:
α: Type ?u.593
α
} :
btw: {α : Type ?u.605} → [self : Btw α] → αααProp
btw
a: α
a
b: α
b
c: α
c
btw: {α : Type ?u.618} → [self : Btw α] → αααProp
btw
c: α
c
a: α
a
b: α
b
:= ⟨
btw_cyclic_right: ∀ {α : Type ?u.633} [inst : CircularPreorder α] {a b c : α}, btw a b cbtw c a b
btw_cyclic_right
,
btw_cyclic_left: ∀ {α : Type ?u.654} [self : CircularPreorder α] {a b c : α}, btw a b cbtw b c a
btw_cyclic_left
#align btw_cyclic
btw_cyclic: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, btw a b c btw c a b
btw_cyclic
theorem
sbtw_iff_btw_not_btw: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, sbtw a b c btw a b c ¬btw c b a
sbtw_iff_btw_not_btw
{
a: α
a
b: α
b
c: α
c
:
α: Type ?u.672
α
} :
sbtw: {α : Type ?u.684} → [self : SBtw α] → αααProp
sbtw
a: α
a
b: α
b
c: α
c
btw: {α : Type ?u.697} → [self : Btw α] → αααProp
btw
a: α
a
b: α
b
c: α
c
∧ ¬
btw: {α : Type ?u.707} → [self : Btw α] → αααProp
btw
c: α
c
b: α
b
a: α
a
:=
CircularPreorder.sbtw_iff_btw_not_btw: ∀ {α : Type ?u.714} [self : CircularPreorder α] {a b c : α}, sbtw a b c btw a b c ¬btw c b a
CircularPreorder.sbtw_iff_btw_not_btw
#align sbtw_iff_btw_not_btw
sbtw_iff_btw_not_btw: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, sbtw a b c btw a b c ¬btw c b a
sbtw_iff_btw_not_btw
theorem
btw_of_sbtw: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, sbtw a b cbtw a b c
btw_of_sbtw
{
a: α
a
b: α
b
c: α
c
:
α: Type ?u.742
α
} (
h: sbtw a b c
h
:
sbtw: {α : Type ?u.754} → [self : SBtw α] → αααProp
sbtw
a: α
a
b: α
b
c: α
c
) :
btw: {α : Type ?u.776} → [self : Btw α] → αααProp
btw
a: α
a
b: α
b
c: α
c
:= (
sbtw_iff_btw_not_btw: ∀ {α : Type ?u.802} [inst : CircularPreorder α] {a b c : α}, sbtw a b c btw a b c ¬btw c b a
sbtw_iff_btw_not_btw
.
1: ∀ {a b : Prop}, (a b) → ab
1
h: sbtw a b c
h
).
1: ∀ {a b : Prop}, a ba
1
#align btw_of_sbtw
btw_of_sbtw: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, sbtw a b cbtw a b c
btw_of_sbtw
alias
btw_of_sbtw: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, sbtw a b cbtw a b c
btw_of_sbtw
SBtw.sbtw.btw: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, sbtw a b cbtw a b c
SBtw.sbtw.btw
#align has_sbtw.sbtw.btw
SBtw.sbtw.btw: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, sbtw a b cbtw a b c
SBtw.sbtw.btw
theorem
not_btw_of_sbtw: ∀ {a b c : α}, sbtw a b c¬btw c b a
not_btw_of_sbtw
{
a: α
a
b: α
b
c: α
c
:
α: Type ?u.835
α
} (
h: sbtw a b c
h
:
sbtw: {α : Type ?u.847} → [self : SBtw α] → αααProp
sbtw
a: α
a
b: α
b
c: α
c
) : ¬
btw: {α : Type ?u.869} → [self : Btw α] → αααProp
btw
c: α
c
b: α
b
a: α
a
:= (
sbtw_iff_btw_not_btw: ∀ {α : Type ?u.888} [inst : CircularPreorder α] {a b c : α}, sbtw a b c btw a b c ¬btw c b a
sbtw_iff_btw_not_btw
.
1: ∀ {a b : Prop}, (a b) → ab
1
h: sbtw a b c
h
).
2: ∀ {a b : Prop}, a bb
2
#align not_btw_of_sbtw
not_btw_of_sbtw: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, sbtw a b c¬btw c b a
not_btw_of_sbtw
alias
not_btw_of_sbtw: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, sbtw a b c¬btw c b a
not_btw_of_sbtw
SBtw.sbtw.not_btw: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, sbtw a b c¬btw c b a
SBtw.sbtw.not_btw
#align has_sbtw.sbtw.not_btw
SBtw.sbtw.not_btw: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, sbtw a b c¬btw c b a
SBtw.sbtw.not_btw
theorem
not_sbtw_of_btw: ∀ {a b c : α}, btw a b c¬sbtw c b a
not_sbtw_of_btw
{
a: α
a
b: α
b
c: α
c
:
α: Type ?u.922
α
} (
h: btw a b c
h
:
btw: {α : Type ?u.934} → [self : Btw α] → αααProp
btw
a: α
a
b: α
b
c: α
c
) : ¬
sbtw: {α : Type ?u.956} → [self : SBtw α] → αααProp
sbtw
c: α
c
b: α
b
a: α
a
:= fun
h': ?m.976
h'
=>
h': ?m.976
h'
.
not_btw: ∀ {α : Type ?u.978} [inst : CircularPreorder α] {a b c : α}, sbtw a b c¬btw c b a
not_btw
h: btw a b c
h
#align not_sbtw_of_btw
not_sbtw_of_btw: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, btw a b c¬sbtw c b a
not_sbtw_of_btw
alias
not_sbtw_of_btw: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, btw a b c¬sbtw c b a
not_sbtw_of_btw
Btw.btw.not_sbtw: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, btw a b c¬sbtw c b a
Btw.btw.not_sbtw
#align has_btw.btw.not_sbtw
Btw.btw.not_sbtw: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, btw a b c¬sbtw c b a
Btw.btw.not_sbtw
theorem
sbtw_of_btw_not_btw: ∀ {a b c : α}, btw a b c¬btw c b asbtw a b c
sbtw_of_btw_not_btw
{
a: α
a
b: α
b
c: α
c
:
α: Type ?u.1009
α
} (
habc: btw a b c
habc
:
btw: {α : Type ?u.1021} → [self : Btw α] → αααProp
btw
a: α
a
b: α
b
c: α
c
) (
hcba: ¬btw c b a
hcba
: ¬
btw: {α : Type ?u.1043} → [self : Btw α] → αααProp
btw
c: α
c
b: α
b
a: α
a
) :
sbtw: {α : Type ?u.1048} → [self : SBtw α] → αααProp
sbtw
a: α
a
b: α
b
c: α
c
:=
sbtw_iff_btw_not_btw: ∀ {α : Type ?u.1076} [inst : CircularPreorder α] {a b c : α}, sbtw a b c btw a b c ¬btw c b a
sbtw_iff_btw_not_btw
.
2: ∀ {a b : Prop}, (a b) → ba
2
habc: btw a b c
habc
,
hcba: ¬btw c b a
hcba
#align sbtw_of_btw_not_btw
sbtw_of_btw_not_btw: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, btw a b c¬btw c b asbtw a b c
sbtw_of_btw_not_btw
alias
sbtw_of_btw_not_btw: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, btw a b c¬btw c b asbtw a b c
sbtw_of_btw_not_btw
Btw.btw.sbtw_of_not_btw: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, btw a b c¬btw c b asbtw a b c
Btw.btw.sbtw_of_not_btw
#align has_btw.btw.sbtw_of_not_btw
Btw.btw.sbtw_of_not_btw: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, btw a b c¬btw c b asbtw a b c
Btw.btw.sbtw_of_not_btw
theorem
sbtw_cyclic_left: ∀ {a b c : α}, sbtw a b csbtw b c a
sbtw_cyclic_left
{
a: α
a
b: α
b
c: α
c
:
α: Type ?u.1115
α
} (
h: sbtw a b c
h
:
sbtw: {α : Type ?u.1127} → [self : SBtw α] → αααProp
sbtw
a: α
a
b: α
b
c: α
c
) :
sbtw: {α : Type ?u.1149} → [self : SBtw α] → αααProp
sbtw
b: α
b
c: α
c
a: α
a
:=
h: sbtw a b c
h
.
btw: ∀ {α : Type ?u.1168} [inst : CircularPreorder α] {a b c : α}, sbtw a b cbtw a b c
btw
.
cyclic_left: ∀ {α : Type ?u.1183} [inst : CircularPreorder α] {a b c : α}, btw a b cbtw b c a
cyclic_left
.
sbtw_of_not_btw: ∀ {α : Type ?u.1194} [inst : CircularPreorder α] {a b c : α}, btw a b c¬btw c b asbtw a b c
sbtw_of_not_btw
fun
h': ?m.1208
h'
=>
h: sbtw a b c
h
.
not_btw: ∀ {α : Type ?u.1210} [inst : CircularPreorder α] {a b c : α}, sbtw a b c¬btw c b a
not_btw
h': ?m.1208
h'
.
cyclic_left: ∀ {α : Type ?u.1223} [inst : CircularPreorder α] {a b c : α}, btw a b cbtw b c a
cyclic_left
#align sbtw_cyclic_left
sbtw_cyclic_left: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, sbtw a b csbtw b c a
sbtw_cyclic_left
alias
sbtw_cyclic_left: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, sbtw a b csbtw b c a
sbtw_cyclic_left
SBtw.sbtw.cyclic_left: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, sbtw a b csbtw b c a
SBtw.sbtw.cyclic_left
#align has_sbtw.sbtw.cyclic_left
SBtw.sbtw.cyclic_left: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, sbtw a b csbtw b c a
SBtw.sbtw.cyclic_left
theorem
sbtw_cyclic_right: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, sbtw a b csbtw c a b
sbtw_cyclic_right
{
a: α
a
b: α
b
c: α
c
:
α: Type ?u.1244
α
} (
h: sbtw a b c
h
:
sbtw: {α : Type ?u.1256} → [self : SBtw α] → αααProp
sbtw
a: α
a
b: α
b
c: α
c
) :
sbtw: {α : Type ?u.1278} → [self : SBtw α] → αααProp
sbtw
c: α
c
a: α
a
b: α
b
:=
h: sbtw a b c
h
.
cyclic_left: ∀ {α : Type ?u.1297} [inst : CircularPreorder α] {a b c : α}, sbtw a b csbtw b c a
cyclic_left
.
cyclic_left: ∀ {α : Type ?u.1312} [inst : CircularPreorder α] {a b c : α}, sbtw a b csbtw b c a
cyclic_left
#align sbtw_cyclic_right
sbtw_cyclic_right: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, sbtw a b csbtw c a b
sbtw_cyclic_right
alias
sbtw_cyclic_right: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, sbtw a b csbtw c a b
sbtw_cyclic_right
SBtw.sbtw.cyclic_right: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, sbtw a b csbtw c a b
SBtw.sbtw.cyclic_right
#align has_sbtw.sbtw.cyclic_right
SBtw.sbtw.cyclic_right: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, sbtw a b csbtw c a b
SBtw.sbtw.cyclic_right
/-- The order of the `↔` has been chosen so that `rw sbtw_cyclic` cycles to the right while `rw ←sbtw_cyclic` cycles to the left (thus following the prepended arrow). -/ theorem
sbtw_cyclic: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, sbtw a b c sbtw c a b
sbtw_cyclic
{
a: α
a
b: α
b
c: α
c
:
α: Type ?u.1331
α
} :
sbtw: {α : Type ?u.1343} → [self : SBtw α] → αααProp
sbtw
a: α
a
b: α
b
c: α
c
sbtw: {α : Type ?u.1356} → [self : SBtw α] → αααProp
sbtw
c: α
c
a: α
a
b: α
b
:= ⟨
sbtw_cyclic_right: ∀ {α : Type ?u.1371} [inst : CircularPreorder α] {a b c : α}, sbtw a b csbtw c a b
sbtw_cyclic_right
,
sbtw_cyclic_left: ∀ {α : Type ?u.1392} [inst : CircularPreorder α] {a b c : α}, sbtw a b csbtw b c a
sbtw_cyclic_left
#align sbtw_cyclic
sbtw_cyclic: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, sbtw a b c sbtw c a b
sbtw_cyclic
-- TODO: `alias` creates a def instead of a lemma. -- alias btw_trans_left ← has_btw.btw.trans_left theorem
SBtw.sbtw.trans_left: ∀ {a b c d : α}, sbtw a b csbtw b d csbtw a d c
SBtw.sbtw.trans_left
{
a: α
a
b: α
b
c: α
c
d: α
d
:
α: Type ?u.1410
α
} (
h: sbtw a b c
h
:
sbtw: {α : Type ?u.1424} → [self : SBtw α] → αααProp
sbtw
a: α
a
b: α
b
c: α
c
) :
sbtw: {α : Type ?u.1447} → [self : SBtw α] → αααProp
sbtw
b: α
b
d: α
d
c: α
c
sbtw: {α : Type ?u.1458} → [self : SBtw α] → αααProp
sbtw
a: α
a
d: α
d
c: α
c
:=
sbtw_trans_left: ∀ {α : Type ?u.1480} [self : CircularPreorder α] {a b c d : α}, sbtw a b csbtw b d csbtw a d c
sbtw_trans_left
h: sbtw a b c
h
#align has_sbtw.sbtw.trans_left
SBtw.sbtw.trans_left: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c d : α}, sbtw a b csbtw b d csbtw a d c
SBtw.sbtw.trans_left
theorem
sbtw_trans_right: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c d : α}, sbtw a b csbtw a c dsbtw a b d
sbtw_trans_right
{
a: α
a
b: α
b
c: α
c
d: α
d
:
α: Type ?u.1512
α
} (
hbc: sbtw a b c
hbc
:
sbtw: {α : Type ?u.1526} → [self : SBtw α] → αααProp
sbtw
a: α
a
b: α
b
c: α
c
) (
hcd: sbtw a c d
hcd
:
sbtw: {α : Type ?u.1548} → [self : SBtw α] → αααProp
sbtw
a: α
a
c: α
c
d: α
d
) :
sbtw: {α : Type ?u.1560} → [self : SBtw α] → αααProp
sbtw
a: α
a
b: α
b
d: α
d
:= (
hbc: sbtw a b c
hbc
.
cyclic_left: ∀ {α : Type ?u.1583} [inst : CircularPreorder α] {a b c : α}, sbtw a b csbtw b c a
cyclic_left
.
trans_left: ∀ {α : Type ?u.1598} [inst : CircularPreorder α] {a b c d : α}, sbtw a b csbtw b d csbtw a d c
trans_left
hcd: sbtw a c d
hcd
.
cyclic_left: ∀ {α : Type ?u.1613} [inst : CircularPreorder α] {a b c : α}, sbtw a b csbtw b c a
cyclic_left
).
cyclic_right: ∀ {α : Type ?u.1625} [inst : CircularPreorder α] {a b c : α}, sbtw a b csbtw c a b
cyclic_right
#align sbtw_trans_right
sbtw_trans_right: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c d : α}, sbtw a b csbtw a c dsbtw a b d
sbtw_trans_right
alias
sbtw_trans_right: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c d : α}, sbtw a b csbtw a c dsbtw a b d
sbtw_trans_right
SBtw.sbtw.trans_right: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c d : α}, sbtw a b csbtw a c dsbtw a b d
SBtw.sbtw.trans_right
#align has_sbtw.sbtw.trans_right
SBtw.sbtw.trans_right: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c d : α}, sbtw a b csbtw a c dsbtw a b d
SBtw.sbtw.trans_right
theorem
sbtw_asymm: ∀ {a b c : α}, sbtw a b c¬sbtw c b a
sbtw_asymm
{
a: α
a
b: α
b
c: α
c
:
α: Type ?u.1646
α
} (
h: sbtw a b c
h
:
sbtw: {α : Type ?u.1658} → [self : SBtw α] → αααProp
sbtw
a: α
a
b: α
b
c: α
c
) : ¬
sbtw: {α : Type ?u.1680} → [self : SBtw α] → αααProp
sbtw
c: α
c
b: α
b
a: α
a
:=
h: sbtw a b c
h
.
btw: ∀ {α : Type ?u.1692} [inst : CircularPreorder α] {a b c : α}, sbtw a b cbtw a b c
btw
.
not_sbtw: ∀ {α : Type ?u.1707} [inst : CircularPreorder α] {a b c : α}, btw a b c¬sbtw c b a
not_sbtw
#align sbtw_asymm
sbtw_asymm: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, sbtw a b c¬sbtw c b a
sbtw_asymm
alias
sbtw_asymm: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, sbtw a b c¬sbtw c b a
sbtw_asymm
SBtw.sbtw.not_sbtw: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, sbtw a b c¬sbtw c b a
SBtw.sbtw.not_sbtw
#align has_sbtw.sbtw.not_sbtw
SBtw.sbtw.not_sbtw: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b c : α}, sbtw a b c¬sbtw c b a
SBtw.sbtw.not_sbtw
theorem
sbtw_irrefl_left_right: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b : α}, ¬sbtw a b a
sbtw_irrefl_left_right
{
a: α
a
b: α
b
:
α: Type ?u.1734
α
} : ¬
sbtw: {α : Type ?u.1744} → [self : SBtw α] → αααProp
sbtw
a: α
a
b: α
b
a: α
a
:= fun
h: ?m.1763
h
=>
h: ?m.1763
h
.
not_btw: ∀ {α : Type ?u.1765} [inst : CircularPreorder α] {a b c : α}, sbtw a b c¬btw c b a
not_btw
h: ?m.1763
h
.
btw: ∀ {α : Type ?u.1787} [inst : CircularPreorder α] {a b c : α}, sbtw a b cbtw a b c
btw
#align sbtw_irrefl_left_right
sbtw_irrefl_left_right: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b : α}, ¬sbtw a b a
sbtw_irrefl_left_right
theorem
sbtw_irrefl_left: ∀ {a b : α}, ¬sbtw a a b
sbtw_irrefl_left
{
a: α
a
b: α
b
:
α: Type ?u.1806
α
} : ¬
sbtw: {α : Type ?u.1816} → [self : SBtw α] → αααProp
sbtw
a: α
a
a: α
a
b: α
b
:= fun
h: ?m.1835
h
=>
sbtw_irrefl_left_right: ∀ {α : Type ?u.1837} [inst : CircularPreorder α] {a b : α}, ¬sbtw a b a
sbtw_irrefl_left_right
h: ?m.1835
h
.
cyclic_left: ∀ {α : Type ?u.1845} [inst : CircularPreorder α] {a b c : α}, sbtw a b csbtw b c a
cyclic_left
#align sbtw_irrefl_left
sbtw_irrefl_left: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b : α}, ¬sbtw a a b
sbtw_irrefl_left
theorem
sbtw_irrefl_right: ∀ {a b : α}, ¬sbtw a b b
sbtw_irrefl_right
{
a: α
a
b: α
b
:
α: Type ?u.1878
α
} : ¬
sbtw: {α : Type ?u.1888} → [self : SBtw α] → αααProp
sbtw
a: α
a
b: α
b
b: α
b
:= fun
h: ?m.1907
h
=>
sbtw_irrefl_left_right: ∀ {α : Type ?u.1909} [inst : CircularPreorder α] {a b : α}, ¬sbtw a b a
sbtw_irrefl_left_right
h: ?m.1907
h
.
cyclic_right: ∀ {α : Type ?u.1917} [inst : CircularPreorder α] {a b c : α}, sbtw a b csbtw c a b
cyclic_right
#align sbtw_irrefl_right
sbtw_irrefl_right: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b : α}, ¬sbtw a b b
sbtw_irrefl_right
theorem
sbtw_irrefl: ∀ (a : α), ¬sbtw a a a
sbtw_irrefl
(
a: α
a
:
α: Type ?u.1950
α
) : ¬
sbtw: {α : Type ?u.1958} → [self : SBtw α] → αααProp
sbtw
a: α
a
a: α
a
a: α
a
:=
sbtw_irrefl_left_right: ∀ {α : Type ?u.1974} [inst : CircularPreorder α] {a b : α}, ¬sbtw a b a
sbtw_irrefl_left_right
#align sbtw_irrefl
sbtw_irrefl: ∀ {α : Type u_1} [inst : CircularPreorder α] (a : α), ¬sbtw a a a
sbtw_irrefl
end CircularPreorder /-! ### Circular partial orders -/ section CircularPartialOrder variable {
α: Type ?u.2003
α
:
Type _: Type (?u.2003+1)
Type _
} [
CircularPartialOrder: Type ?u.2000 → Type ?u.2000
CircularPartialOrder
α: Type ?u.2003
α
] -- TODO: `alias` creates a def instead of a lemma. -- alias btw_antisymm ← has_btw.btw.antisymm theorem
Btw.btw.antisymm: ∀ {a b c : α}, btw a b cbtw c b aa = b b = c c = a
Btw.btw.antisymm
{
a: α
a
b: α
b
c: α
c
:
α: Type ?u.2003
α
} (
h: btw a b c
h
:
btw: {α : Type ?u.2015} → [self : Btw α] → αααProp
btw
a: α
a
b: α
b
c: α
c
) :
btw: {α : Type ?u.2048} → [self : Btw α] → αααProp
btw
c: α
c
b: α
b
a: α
a
a: α
a
=
b: α
b
b: α
b
=
c: α
c
c: α
c
=
a: α
a
:=
btw_antisymm: ∀ {α : Type ?u.2075} [self : CircularPartialOrder α] {a b c : α}, btw a b cbtw c b aa = b b = c c = a
btw_antisymm
h: btw a b c
h
#align has_btw.btw.antisymm
Btw.btw.antisymm: ∀ {α : Type u_1} [inst : CircularPartialOrder α] {a b c : α}, btw a b cbtw c b aa = b b = c c = a
Btw.btw.antisymm
end CircularPartialOrder /-! ### Circular orders -/ section CircularOrder variable {
α: Type ?u.2184
α
:
Type _: Type (?u.2452+1)
Type _
} [
CircularOrder: Type ?u.2650 → Type ?u.2650
CircularOrder
α: Type ?u.2379
α
] theorem
btw_refl_left_right: ∀ (a b : α), btw a b a
btw_refl_left_right
(
a: α
a
b: α
b
:
α: Type ?u.2113
α
) :
btw: {α : Type ?u.2123} → [self : Btw α] → αααProp
btw
a: α
a
b: α
b
a: α
a
:= (
or_self_iff: ∀ (p : Prop), p p p
or_self_iff
_: Prop
_
).
1: ∀ {a b : Prop}, (a b) → ab
1
(
btw_total: ∀ {α : Type ?u.2171} [self : CircularOrder α] (a b c : α), btw a b c btw c b a
btw_total
a: α
a
b: α
b
a: α
a
) #align btw_refl_left_right
btw_refl_left_right: ∀ {α : Type u_1} [inst : CircularOrder α] (a b : α), btw a b a
btw_refl_left_right
theorem
btw_rfl_left_right: ∀ {a b : α}, btw a b a
btw_rfl_left_right
{
a: α
a
b: α
b
:
α: Type ?u.2184
α
} :
btw: {α : Type ?u.2194} → [self : Btw α] → αααProp
btw
a: α
a
b: α
b
a: α
a
:=
btw_refl_left_right: ∀ {α : Type ?u.2237} [inst : CircularOrder α] (a b : α), btw a b a
btw_refl_left_right
_: ?m.2238
_
_: ?m.2238
_
#align btw_rfl_left_right
btw_rfl_left_right: ∀ {α : Type u_1} [inst : CircularOrder α] {a b : α}, btw a b a
btw_rfl_left_right
theorem
btw_refl_left: ∀ {α : Type u_1} [inst : CircularOrder α] (a b : α), btw a a b
btw_refl_left
(
a: α
a
b: α
b
:
α: Type ?u.2257
α
) :
btw: {α : Type ?u.2267} → [self : Btw α] → αααProp
btw
a: α
a
a: α
a
b: α
b
:=
btw_rfl_left_right: ∀ {α : Type ?u.2310} [inst : CircularOrder α] {a b : α}, btw a b a
btw_rfl_left_right
.
cyclic_right: ∀ {α : Type ?u.2317} [inst : CircularPreorder α] {a b c : α}, btw a b cbtw c a b
cyclic_right
#align btw_refl_left
btw_refl_left: ∀ {α : Type u_1} [inst : CircularOrder α] (a b : α), btw a a b
btw_refl_left
theorem
btw_rfl_left: ∀ {a b : α}, btw a a b
btw_rfl_left
{
a: α
a
b: α
b
:
α: Type ?u.2379
α
} :
btw: {α : Type ?u.2389} → [self : Btw α] → αααProp
btw
a: α
a
a: α
a
b: α
b
:=
btw_refl_left: ∀ {α : Type ?u.2432} [inst : CircularOrder α] (a b : α), btw a a b
btw_refl_left
_: ?m.2433
_
_: ?m.2433
_
#align btw_rfl_left
btw_rfl_left: ∀ {α : Type u_1} [inst : CircularOrder α] {a b : α}, btw a a b
btw_rfl_left
theorem
btw_refl_right: ∀ (a b : α), btw a b b
btw_refl_right
(
a: α
a
b: α
b
:
α: Type ?u.2452
α
) :
btw: {α : Type ?u.2462} → [self : Btw α] → αααProp
btw
a: α
a
b: α
b
b: α
b
:=
btw_rfl_left_right: ∀ {α : Type ?u.2505} [inst : CircularOrder α] {a b : α}, btw a b a
btw_rfl_left_right
.
cyclic_left: ∀ {α : Type ?u.2512} [inst : CircularPreorder α] {a b c : α}, btw a b cbtw b c a
cyclic_left
#align btw_refl_right
btw_refl_right: ∀ {α : Type u_1} [inst : CircularOrder α] (a b : α), btw a b b
btw_refl_right
theorem
btw_rfl_right: ∀ {a b : α}, btw a b b
btw_rfl_right
{
a: α
a
b: α
b
:
α: Type ?u.2574
α
} :
btw: {α : Type ?u.2584} → [self : Btw α] → αααProp
btw
a: α
a
b: α
b
b: α
b
:=
btw_refl_right: ∀ {α : Type ?u.2627} [inst : CircularOrder α] (a b : α), btw a b b
btw_refl_right
_: ?m.2628
_
_: ?m.2628
_
#align btw_rfl_right
btw_rfl_right: ∀ {α : Type u_1} [inst : CircularOrder α] {a b : α}, btw a b b
btw_rfl_right
theorem
sbtw_iff_not_btw: ∀ {a b c : α}, sbtw a b c ¬btw c b a
sbtw_iff_not_btw
{
a: α
a
b: α
b
c: α
c
:
α: Type ?u.2647
α
} :
sbtw: {α : Type ?u.2659} → [self : SBtw α] → αααProp
sbtw
a: α
a
b: α
b
c: α
c
↔ ¬
btw: {α : Type ?u.2681} → [self : Btw α] → αααProp
btw
c: α
c
b: α
b
a: α
a
:=

Goals accomplished! 🐙
α: Type u_1

inst✝: CircularOrder α

a, b, c: α


sbtw a b c ¬btw c b a
α: Type u_1

inst✝: CircularOrder α

a, b, c: α


sbtw a b c ¬btw c b a
α: Type u_1

inst✝: CircularOrder α

a, b, c: α


btw a b c ¬btw c b a ¬btw c b a
α: Type u_1

inst✝: CircularOrder α

a, b, c: α


btw a b c ¬btw c b a ¬btw c b a
α: Type u_1

inst✝: CircularOrder α

a, b, c: α


sbtw a b c ¬btw c b a

Goals accomplished! 🐙
#align sbtw_iff_not_btw
sbtw_iff_not_btw: ∀ {α : Type u_1} [inst : CircularOrder α] {a b c : α}, sbtw a b c ¬btw c b a
sbtw_iff_not_btw
theorem
btw_iff_not_sbtw: ∀ {a b c : α}, btw a b c ¬sbtw c b a
btw_iff_not_sbtw
{
a: α
a
b: α
b
c: α
c
:
α: Type ?u.2806
α
} :
btw: {α : Type ?u.2818} → [self : Btw α] → αααProp
btw
a: α
a
b: α
b
c: α
c
↔ ¬
sbtw: {α : Type ?u.2840} → [self : SBtw α] → αααProp
sbtw
c: α
c
b: α
b
a: α
a
:=
iff_not_comm: ∀ {a b : Prop}, (a ¬b) (b ¬a)
iff_not_comm
.
1: ∀ {a b : Prop}, (a b) → ab
1
sbtw_iff_not_btw: ∀ {α : Type ?u.2866} [inst : CircularOrder α] {a b c : α}, sbtw a b c ¬btw c b a
sbtw_iff_not_btw
#align btw_iff_not_sbtw
btw_iff_not_sbtw: ∀ {α : Type u_1} [inst : CircularOrder α] {a b c : α}, btw a b c ¬sbtw c b a
btw_iff_not_sbtw
end CircularOrder /-! ### Circular intervals -/ namespace Set section CircularPreorder variable {
α: Type ?u.2894
α
:
Type _: Type (?u.2894+1)
Type _
} [
CircularPreorder: Type ?u.2897 → Type ?u.2897
CircularPreorder
α: Type ?u.2888
α
] /-- Closed-closed circular interval -/ def
cIcc: ααSet α
cIcc
(
a: α
a
b: α
b
:
α: Type ?u.2894
α
) :
Set: Type ?u.2904 → Type ?u.2904
Set
α: Type ?u.2894
α
:= {
x: ?m.2915
x
|
btw: {α : Type ?u.2917} → [self : Btw α] → αααProp
btw
a: α
a
x: ?m.2915
x
b: α
b
} #align set.cIcc
Set.cIcc: {α : Type u_1} → [inst : CircularPreorder α] → ααSet α
Set.cIcc
/-- Open-open circular interval -/ def
cIoo: ααSet α
cIoo
(
a: α
a
b: α
b
:
α: Type ?u.2949
α
) :
Set: Type ?u.2959 → Type ?u.2959
Set
α: Type ?u.2949
α
:= {
x: ?m.2970
x
|
sbtw: {α : Type ?u.2972} → [self : SBtw α] → αααProp
sbtw
a: α
a
x: ?m.2970
x
b: α
b
} #align set.cIoo
Set.cIoo: {α : Type u_1} → [inst : CircularPreorder α] → ααSet α
Set.cIoo
@[simp] theorem
mem_cIcc: ∀ {a b x : α}, x cIcc a b btw a x b
mem_cIcc
{
a: α
a
b: α
b
x: α
x
:
α: Type ?u.3004
α
} :
x: α
x
cIcc: {α : Type ?u.3021} → [inst : CircularPreorder α] → ααSet α
cIcc
a: α
a
b: α
b
btw: {α : Type ?u.3043} → [self : Btw α] → αααProp
btw
a: α
a
x: α
x
b: α
b
:=
Iff.rfl: ∀ {a : Prop}, a a
Iff.rfl
#align set.mem_cIcc
Set.mem_cIcc: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b x : α}, x cIcc a b btw a x b
Set.mem_cIcc
@[simp] theorem
mem_cIoo: ∀ {a b x : α}, x cIoo a b sbtw a x b
mem_cIoo
{
a: α
a
b: α
b
x: α
x
:
α: Type ?u.3096
α
} :
x: α
x
cIoo: {α : Type ?u.3113} → [inst : CircularPreorder α] → ααSet α
cIoo
a: α
a
b: α
b
sbtw: {α : Type ?u.3135} → [self : SBtw α] → αααProp
sbtw
a: α
a
x: α
x
b: α
b
:=
Iff.rfl: ∀ {a : Prop}, a a
Iff.rfl
#align set.mem_cIoo
Set.mem_cIoo: ∀ {α : Type u_1} [inst : CircularPreorder α] {a b x : α}, x cIoo a b sbtw a x b
Set.mem_cIoo
end CircularPreorder section CircularOrder variable {
α: Type ?u.3581
α
:
Type _: Type (?u.3284+1)
Type _
} [
CircularOrder: Type ?u.3287 → Type ?u.3287
CircularOrder
α: Type ?u.3188
α
] theorem
left_mem_cIcc: ∀ (a b : α), a cIcc a b
left_mem_cIcc
(
a: α
a
b: α
b
:
α: Type ?u.3194
α
) :
a: α
a
cIcc: {α : Type ?u.3219} → [inst : CircularPreorder α] → ααSet α
cIcc
a: α
a
b: α
b
:=
btw_rfl_left: ∀ {α : Type ?u.3264} [inst : CircularOrder α] {a b : α}, btw a a b
btw_rfl_left
#align set.left_mem_cIcc
Set.left_mem_cIcc: ∀ {α : Type u_1} [inst : CircularOrder α] (a b : α), a cIcc a b
Set.left_mem_cIcc
theorem
right_mem_cIcc: ∀ {α : Type u_1} [inst : CircularOrder α] (a b : α), b cIcc a b
right_mem_cIcc
(
a: α
a
b: α
b
:
α: Type ?u.3284
α
) :
b: α
b
cIcc: {α : Type ?u.3309} → [inst : CircularPreorder α] → ααSet α
cIcc
a: α
a
b: α
b
:=
btw_rfl_right: ∀ {α : Type ?u.3354} [inst : CircularOrder α] {a b : α}, btw a b b
btw_rfl_right
#align set.right_mem_cIcc
Set.right_mem_cIcc: ∀ {α : Type u_1} [inst : CircularOrder α] (a b : α), b cIcc a b
Set.right_mem_cIcc
theorem
compl_cIcc: ∀ {α : Type u_1} [inst : CircularOrder α] {a b : α}, cIcc a b = cIoo b a
compl_cIcc
{
a: α
a
b: α
b
:
α: Type ?u.3374
α
} :
cIcc: {α : Type ?u.3388} → [inst : CircularPreorder α] → ααSet α
cIcc
a: α
a
b: α
b
ᶜ =
cIoo: {α : Type ?u.3432} → [inst : CircularPreorder α] → ααSet α
cIoo
b: α
b
a: α
a
:=

Goals accomplished! 🐙
α: Type u_1

inst✝: CircularOrder α

a, b: α


cIcc a b = cIoo b a
α: Type u_1

inst✝: CircularOrder α

a, b, x✝: α


h
x✝ cIcc a b x✝ cIoo b a
α: Type u_1

inst✝: CircularOrder α

a, b: α


cIcc a b = cIoo b a
α: Type u_1

inst✝: CircularOrder α

a, b, x✝: α


h
x✝ cIcc a b x✝ cIoo b a
α: Type u_1

inst✝: CircularOrder α

a, b, x✝: α


h
x✝ cIcc a b sbtw b x✝ a
α: Type u_1

inst✝: CircularOrder α

a, b, x✝: α


h
x✝ cIcc a b x✝ cIoo b a
α: Type u_1

inst✝: CircularOrder α

a, b, x✝: α


h
x✝ cIcc a b ¬btw a x✝ b
α: Type u_1

inst✝: CircularOrder α

a, b, x✝: α


h
x✝ cIcc a b ¬btw a x✝ b
α: Type u_1

inst✝: CircularOrder α

a, b: α


cIcc a b = cIoo b a

Goals accomplished! 🐙
#align set.compl_cIcc
Set.compl_cIcc: ∀ {α : Type u_1} [inst : CircularOrder α] {a b : α}, cIcc a b = cIoo b a
Set.compl_cIcc
theorem
compl_cIoo: ∀ {α : Type u_1} [inst : CircularOrder α] {a b : α}, cIoo a b = cIcc b a
compl_cIoo
{
a: α
a
b: α
b
:
α: Type ?u.3581
α
} :
cIoo: {α : Type ?u.3595} → [inst : CircularPreorder α] → ααSet α
cIoo
a: α
a
b: α
b
ᶜ =
cIcc: {α : Type ?u.3639} → [inst : CircularPreorder α] → ααSet α
cIcc
b: α
b
a: α
a
:=

Goals accomplished! 🐙
α: Type u_1

inst✝: CircularOrder α

a, b: α


cIoo a b = cIcc b a
α: Type u_1

inst✝: CircularOrder α

a, b, x✝: α


h
x✝ cIoo a b x✝ cIcc b a
α: Type u_1

inst✝: CircularOrder α

a, b: α


cIoo a b = cIcc b a
α: Type u_1

inst✝: CircularOrder α

a, b, x✝: α


h
x✝ cIoo a b x✝ cIcc b a
α: Type u_1

inst✝: CircularOrder α

a, b, x✝: α


h
x✝ cIoo a b btw b x✝ a
α: Type u_1

inst✝: CircularOrder α

a, b, x✝: α


h
x✝ cIoo a b x✝ cIcc b a
α: Type u_1

inst✝: CircularOrder α

a, b, x✝: α


h
x✝ cIoo a b ¬sbtw a x✝ b
α: Type u_1

inst✝: CircularOrder α

a, b, x✝: α


h
x✝ cIoo a b ¬sbtw a x✝ b
α: Type u_1

inst✝: CircularOrder α

a, b: α


cIoo a b = cIcc b a

Goals accomplished! 🐙
#align set.compl_cIoo
Set.compl_cIoo: ∀ {α : Type u_1} [inst : CircularOrder α] {a b : α}, cIoo a b = cIcc b a
Set.compl_cIoo
end CircularOrder end Set /-! ### Circularizing instances -/ /-- The betweenness relation obtained from "looping around" `≤`. See note [reducible non-instances]. -/ @[reducible] def
LE.toBtw: (α : Type u_1) → [inst : LE α] → Btw α
LE.toBtw
(
α: Type ?u.3788
α
:
Type _: Type (?u.3788+1)
Type _
) [
LE: Type ?u.3791 → Type ?u.3791
LE
α: Type ?u.3788
α
] :
Btw: Type ?u.3794 → Type ?u.3794
Btw
α: Type ?u.3788
α
where btw
a: ?m.3802
a
b: ?m.3805
b
c: ?m.3808
c
:=
a: ?m.3802
a
b: ?m.3805
b
b: ?m.3805
b
c: ?m.3808
c
b: ?m.3805
b
c: ?m.3808
c
c: ?m.3808
c
a: ?m.3802
a
c: ?m.3808
c
a: ?m.3802
a
a: ?m.3802
a
b: ?m.3805
b
#align has_le.to_has_btw
LE.toBtw: (α : Type u_1) → [inst : LE α] → Btw α
LE.toBtw
/-- The strict betweenness relation obtained from "looping around" `<`. See note [reducible non-instances]. -/ @[reducible] def
LT.toSBtw: (α : Type ?u.3876) → [inst : LT α] → SBtw α
LT.toSBtw
(
α: Type ?u.3876
α
:
Type _: Type (?u.3876+1)
Type _
) [
LT: Type ?u.3879 → Type ?u.3879
LT
α: Type ?u.3876
α
] :
SBtw: Type ?u.3882 → Type ?u.3882
SBtw
α: Type ?u.3876
α
where sbtw
a: ?m.3890
a
b: ?m.3893
b
c: ?m.3896
c
:=
a: ?m.3890
a
<
b: ?m.3893
b
b: ?m.3893
b
<
c: ?m.3896
c
b: ?m.3893
b
<
c: ?m.3896
c
c: ?m.3896
c
<
a: ?m.3890
a
c: ?m.3896
c
<
a: ?m.3890
a
a: ?m.3890
a
<
b: ?m.3893
b
#align has_lt.to_has_sbtw
LT.toSBtw: (α : Type u_1) → [inst : LT α] → SBtw α
LT.toSBtw
/-- The circular preorder obtained from "looping around" a preorder. See note [reducible non-instances]. -/ @[reducible] def
Preorder.toCircularPreorder: (α : Type u_1) → [inst : Preorder α] → CircularPreorder α
Preorder.toCircularPreorder
(
α: Type ?u.3964
α
:
Type _: Type (?u.3964+1)
Type _
) [
Preorder: Type ?u.3967 → Type ?u.3967
Preorder
α: Type ?u.3964
α
] :
CircularPreorder: Type ?u.3970 → Type ?u.3970
CircularPreorder
α: Type ?u.3964
α
where btw
a: ?m.3981
a
b: ?m.3984
b
c: ?m.3987
c
:=
a: ?m.3981
a
b: ?m.3984
b
b: ?m.3984
b
c: ?m.3987
c
b: ?m.3984
b
c: ?m.3987
c
c: ?m.3987
c
a: ?m.3981
a
c: ?m.3987
c
a: ?m.3981
a
a: ?m.3981
a
b: ?m.3984
b
sbtw
a: ?m.4026
a
b: ?m.4029
b
c: ?m.4032
c
:=
a: ?m.4026
a
<
b: ?m.4029
b
b: ?m.4029
b
<
c: ?m.4032
c
b: ?m.4029
b
<
c: ?m.4032
c
c: ?m.4032
c
<
a: ?m.4026
a
c: ?m.4032
c
<
a: ?m.4026
a
a: ?m.4026
a
<
b: ?m.4029
b
btw_refl
a: ?m.4066
a
:=
Or.inl: ∀ {a b : Prop}, aa b
Or.inl
le_rfl: ∀ {α : Type ?u.4080} [inst : Preorder α] {a : α}, a a
le_rfl
,
le_rfl: ∀ {α : Type ?u.4101} [inst : Preorder α] {a : α}, a a
le_rfl
btw_cyclic_left {
a: ?m.4119
a
b: ?m.4122
b
c: ?m.4125
c
}
h: ?m.4128
h
:=

Goals accomplished! 🐙
α: Type ?u.3964

inst✝: Preorder α

a, b, c: α

h: btw a b c


btw b c a
α: Type ?u.3964

inst✝: Preorder α

a, b, c: α

h: btw a b c


b c c a c a a b a b b c
α: Type ?u.3964

inst✝: Preorder α

a, b, c: α

h: btw a b c


btw b c a
α: Type ?u.3964

inst✝: Preorder α

a, b, c: α

h: btw a b c


b c c a c a a b a b b c
α: Type ?u.3964

inst✝: Preorder α

a, b, c: α

h: btw a b c


(b c c a c a a b) a b b c
α: Type ?u.3964

inst✝: Preorder α

a, b, c: α

h: btw a b c


b c c a c a a b a b b c
α: Type ?u.3964

inst✝: Preorder α

a, b, c: α

h: btw a b c


a b b c b c c a c a a b
α: Type ?u.3964

inst✝: Preorder α

a, b, c: α

h: btw a b c


a b b c b c c a c a a b
sbtw_trans_left {
a: ?m.4160
a
b: ?m.4163
b
c: ?m.4166
c
d: ?m.4169
d
} :=

Goals accomplished! 🐙
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α


sbtw a b csbtw b d csbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hab: a < b

hbc: b < c

hbd: b < d

hdc: d < c


inl.intro.inl.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hab: a < b

hbc: b < c

hdc: d < c

hcb: c < b


inl.intro.inr.inl.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hab: a < b

hbc: b < c

hcb: c < b

hbd: b < d


inl.intro.inr.inr.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hbc: b < c

hca: c < a

hbd: b < d

hdc: d < c


inr.inl.intro.inl.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hbc: b < c

hca: c < a

hdc: d < c

hcb: c < b


inr.inl.intro.inr.inl.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hbc: b < c

hca: c < a

hcb: c < b

hbd: b < d


inr.inl.intro.inr.inr.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hca: c < a

hab: a < b

hbd: b < d

hdc: d < c


inr.inr.intro.inl.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hca: c < a

hab: a < b

hdc: d < c

hcb: c < b


inr.inr.intro.inr.inl.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hca: c < a

hab: a < b

hcb: c < b

hbd: b < d


inr.inr.intro.inr.inr.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α


sbtw a b csbtw b d csbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hab: a < b

hbc: b < c

hbd: b < d

hdc: d < c


inl.intro.inl.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hab: a < b

hbc: b < c

hbd: b < d

hdc: d < c


inl.intro.inl.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hab: a < b

hbc: b < c

hdc: d < c

hcb: c < b


inl.intro.inr.inl.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hab: a < b

hbc: b < c

hcb: c < b

hbd: b < d


inl.intro.inr.inr.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hbc: b < c

hca: c < a

hbd: b < d

hdc: d < c


inr.inl.intro.inl.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hbc: b < c

hca: c < a

hdc: d < c

hcb: c < b


inr.inl.intro.inr.inl.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hbc: b < c

hca: c < a

hcb: c < b

hbd: b < d


inr.inl.intro.inr.inr.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hca: c < a

hab: a < b

hbd: b < d

hdc: d < c


inr.inr.intro.inl.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hca: c < a

hab: a < b

hdc: d < c

hcb: c < b


inr.inr.intro.inr.inl.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hca: c < a

hab: a < b

hcb: c < b

hbd: b < d


inr.inr.intro.inr.inr.intro
sbtw a d c

Goals accomplished! 🐙
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α


sbtw a b csbtw b d csbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hab: a < b

hbc: b < c

hdc: d < c

hcb: c < b


inl.intro.inr.inl.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hab: a < b

hbc: b < c

hdc: d < c

hcb: c < b


inl.intro.inr.inl.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hab: a < b

hbc: b < c

hcb: c < b

hbd: b < d


inl.intro.inr.inr.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hbc: b < c

hca: c < a

hbd: b < d

hdc: d < c


inr.inl.intro.inl.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hbc: b < c

hca: c < a

hdc: d < c

hcb: c < b


inr.inl.intro.inr.inl.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hbc: b < c

hca: c < a

hcb: c < b

hbd: b < d


inr.inl.intro.inr.inr.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hca: c < a

hab: a < b

hbd: b < d

hdc: d < c


inr.inr.intro.inl.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hca: c < a

hab: a < b

hdc: d < c

hcb: c < b


inr.inr.intro.inr.inl.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hca: c < a

hab: a < b

hcb: c < b

hbd: b < d


inr.inr.intro.inr.inr.intro
sbtw a d c

Goals accomplished! 🐙
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α


sbtw a b csbtw b d csbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hab: a < b

hbc: b < c

hcb: c < b

hbd: b < d


inl.intro.inr.inr.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hab: a < b

hbc: b < c

hcb: c < b

hbd: b < d


inl.intro.inr.inr.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hbc: b < c

hca: c < a

hbd: b < d

hdc: d < c


inr.inl.intro.inl.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hbc: b < c

hca: c < a

hdc: d < c

hcb: c < b


inr.inl.intro.inr.inl.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hbc: b < c

hca: c < a

hcb: c < b

hbd: b < d


inr.inl.intro.inr.inr.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hca: c < a

hab: a < b

hbd: b < d

hdc: d < c


inr.inr.intro.inl.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hca: c < a

hab: a < b

hdc: d < c

hcb: c < b


inr.inr.intro.inr.inl.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hca: c < a

hab: a < b

hcb: c < b

hbd: b < d


inr.inr.intro.inr.inr.intro
sbtw a d c

Goals accomplished! 🐙
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α


sbtw a b csbtw b d csbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hbc: b < c

hca: c < a

hbd: b < d

hdc: d < c


inr.inl.intro.inl.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hbc: b < c

hca: c < a

hbd: b < d

hdc: d < c


inr.inl.intro.inl.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hbc: b < c

hca: c < a

hdc: d < c

hcb: c < b


inr.inl.intro.inr.inl.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hbc: b < c

hca: c < a

hcb: c < b

hbd: b < d


inr.inl.intro.inr.inr.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hca: c < a

hab: a < b

hbd: b < d

hdc: d < c


inr.inr.intro.inl.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hca: c < a

hab: a < b

hdc: d < c

hcb: c < b


inr.inr.intro.inr.inl.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hca: c < a

hab: a < b

hcb: c < b

hbd: b < d


inr.inr.intro.inr.inr.intro
sbtw a d c

Goals accomplished! 🐙
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α


sbtw a b csbtw b d csbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hbc: b < c

hca: c < a

hdc: d < c

hcb: c < b


inr.inl.intro.inr.inl.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hbc: b < c

hca: c < a

hdc: d < c

hcb: c < b


inr.inl.intro.inr.inl.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hbc: b < c

hca: c < a

hcb: c < b

hbd: b < d


inr.inl.intro.inr.inr.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hca: c < a

hab: a < b

hbd: b < d

hdc: d < c


inr.inr.intro.inl.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hca: c < a

hab: a < b

hdc: d < c

hcb: c < b


inr.inr.intro.inr.inl.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hca: c < a

hab: a < b

hcb: c < b

hbd: b < d


inr.inr.intro.inr.inr.intro
sbtw a d c

Goals accomplished! 🐙
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α


sbtw a b csbtw b d csbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hbc: b < c

hca: c < a

hcb: c < b

hbd: b < d


inr.inl.intro.inr.inr.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hbc: b < c

hca: c < a

hcb: c < b

hbd: b < d


inr.inl.intro.inr.inr.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hca: c < a

hab: a < b

hbd: b < d

hdc: d < c


inr.inr.intro.inl.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hca: c < a

hab: a < b

hdc: d < c

hcb: c < b


inr.inr.intro.inr.inl.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hca: c < a

hab: a < b

hcb: c < b

hbd: b < d


inr.inr.intro.inr.inr.intro
sbtw a d c

Goals accomplished! 🐙
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α


sbtw a b csbtw b d csbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hca: c < a

hab: a < b

hbd: b < d

hdc: d < c


inr.inr.intro.inl.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hca: c < a

hab: a < b

hbd: b < d

hdc: d < c


inr.inr.intro.inl.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hca: c < a

hab: a < b

hdc: d < c

hcb: c < b


inr.inr.intro.inr.inl.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hca: c < a

hab: a < b

hcb: c < b

hbd: b < d


inr.inr.intro.inr.inr.intro
sbtw a d c

Goals accomplished! 🐙
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α


sbtw a b csbtw b d csbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hca: c < a

hab: a < b

hdc: d < c

hcb: c < b


inr.inr.intro.inr.inl.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hca: c < a

hab: a < b

hdc: d < c

hcb: c < b


inr.inr.intro.inr.inl.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hca: c < a

hab: a < b

hcb: c < b

hbd: b < d


inr.inr.intro.inr.inr.intro
sbtw a d c

Goals accomplished! 🐙
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α


sbtw a b csbtw b d csbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hca: c < a

hab: a < b

hcb: c < b

hbd: b < d


inr.inr.intro.inr.inr.intro
sbtw a d c
α: Type ?u.3964

inst✝: Preorder α

a, b, c, d: α

hca: c < a

hab: a < b

hcb: c < b

hbd: b < d


inr.inr.intro.inr.inr.intro
sbtw a d c

Goals accomplished! 🐙
sbtw_iff_btw_not_btw {
a: ?m.4141
a
b: ?m.4144
b
c: ?m.4147
c
} :=

Goals accomplished! 🐙
α: Type ?u.3964

inst✝: Preorder α

a, b, c: α


sbtw a b c btw a b c ¬btw c b a
α: Type ?u.3964

inst✝: Preorder α

a, b, c: α


a < b b < c b < c c < a c < a a < b (a b b c b c c a c a a b) ¬(c b b a b a a c a c c b)
α: Type ?u.3964

inst✝: Preorder α

a, b, c: α


(a b ¬b a) b c ¬c b (b c ¬c b) c a ¬a c (c a ¬a c) a b ¬b a (a b b c b c c a c a a b) ¬(c b b a b a a c a c c b)
α: Type ?u.3964

inst✝: Preorder α

a, b, c: α


(a b ¬b a) b c ¬c b (b c ¬c b) c a ¬a c (c a ¬a c) a b ¬b a (a b b c b c c a c a a b) ¬(c b b a b a a c a c c b)
α: Type ?u.3964

inst✝: Preorder α

a, b, c: α


sbtw a b c btw a b c ¬btw c b a
α: Type ?u.3964

inst✝: Preorder α

a, b, c: α

this: a bb ca c


(a b ¬b a) b c ¬c b (b c ¬c b) c a ¬a c (c a ¬a c) a b ¬b a (a b b c b c c a c a a b) ¬(c b b a b a a c a c c b)
α: Type ?u.3964

inst✝: Preorder α

a, b, c: α


sbtw a b c btw a b c ¬btw c b a
α: Type ?u.3964

inst✝: Preorder α

a, b, c: α

this✝: a bb ca c

this: b cc ab a


(a b ¬b a) b c ¬c b (b c ¬c b) c a ¬a c (c a ¬a c) a b ¬b a (a b b c b c c a c a a b) ¬(c b b a b a a c a c c b)
α: Type ?u.3964

inst✝: Preorder α

a, b, c: α


sbtw a b c btw a b c ¬btw c b a
α: Type ?u.3964

inst✝: Preorder α

a, b, c: α

this✝¹: a bb ca c

this✝: b cc ab a

this: c aa bc b


(a b ¬b a) b c ¬c b (b c ¬c b) c a ¬a c (c a ¬a c) a b ¬b a (a b b c b c c a c a a b) ¬(c b b a b a a c a c c b)
α: Type ?u.3964

inst✝: Preorder α

a, b, c: α


sbtw a b c btw a b c ¬btw c b a

Goals accomplished! 🐙
#align preorder.to_circular_preorder
Preorder.toCircularPreorder: (α : Type u_1) → [inst : Preorder α] → CircularPreorder α
Preorder.toCircularPreorder
/-- The circular partial order obtained from "looping around" a partial order. See note [reducible non-instances]. -/ @[reducible] def
PartialOrder.toCircularPartialOrder: (α : Type u_1) → [inst : PartialOrder α] → CircularPartialOrder α
PartialOrder.toCircularPartialOrder
(
α: Type ?u.241064
α
:
Type _: Type (?u.241064+1)
Type _
) [
PartialOrder: Type ?u.241067 → Type ?u.241067
PartialOrder
α: Type ?u.241064
α
] :
CircularPartialOrder: Type ?u.241070 → Type ?u.241070
CircularPartialOrder
α: Type ?u.241064
α
:= {
Preorder.toCircularPreorder: (α : Type ?u.241076) → [inst : Preorder α] → CircularPreorder α
Preorder.toCircularPreorder
α: Type ?u.241064
α
with btw_antisymm := fun {
a: ?m.241180
a
b: ?m.241183
b
c: ?m.241186
c
} =>

Goals accomplished! 🐙
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α


btw a b cbtw c b aa = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hab: a b

hbc: b c

hcb: c b

hba: b a


inl.intro.inl.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hab: a b

hbc: b c

hba: b a

hac: a c


inl.intro.inr.inl.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hab: a b

hbc: b c

hac: a c

hcb: c b


inl.intro.inr.inr.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hbc: b c

hca: c a

hcb: c b

hba: b a


inr.inl.intro.inl.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hbc: b c

hca: c a

hba: b a

hac: a c


inr.inl.intro.inr.inl.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hbc: b c

hca: c a

hac: a c

hcb: c b


inr.inl.intro.inr.inr.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hca: c a

hab: a b

hcb: c b

hba: b a


inr.inr.intro.inl.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hca: c a

hab: a b

hba: b a

hac: a c


inr.inr.intro.inr.inl.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hca: c a

hab: a b

hac: a c

hcb: c b


inr.inr.intro.inr.inr.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α


btw a b cbtw c b aa = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hab: a b

hbc: b c

hcb: c b

hba: b a


inl.intro.inl.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hab: a b

hbc: b c

hcb: c b

hba: b a


inl.intro.inl.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hab: a b

hbc: b c

hba: b a

hac: a c


inl.intro.inr.inl.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hab: a b

hbc: b c

hac: a c

hcb: c b


inl.intro.inr.inr.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hbc: b c

hca: c a

hcb: c b

hba: b a


inr.inl.intro.inl.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hbc: b c

hca: c a

hba: b a

hac: a c


inr.inl.intro.inr.inl.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hbc: b c

hca: c a

hac: a c

hcb: c b


inr.inl.intro.inr.inr.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hca: c a

hab: a b

hcb: c b

hba: b a


inr.inr.intro.inl.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hca: c a

hab: a b

hba: b a

hac: a c


inr.inr.intro.inr.inl.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hca: c a

hab: a b

hac: a c

hcb: c b


inr.inr.intro.inr.inr.intro
a = b b = c c = a

Goals accomplished! 🐙
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α


btw a b cbtw c b aa = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hab: a b

hbc: b c

hba: b a

hac: a c


inl.intro.inr.inl.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hab: a b

hbc: b c

hba: b a

hac: a c


inl.intro.inr.inl.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hab: a b

hbc: b c

hac: a c

hcb: c b


inl.intro.inr.inr.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hbc: b c

hca: c a

hcb: c b

hba: b a


inr.inl.intro.inl.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hbc: b c

hca: c a

hba: b a

hac: a c


inr.inl.intro.inr.inl.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hbc: b c

hca: c a

hac: a c

hcb: c b


inr.inl.intro.inr.inr.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hca: c a

hab: a b

hcb: c b

hba: b a


inr.inr.intro.inl.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hca: c a

hab: a b

hba: b a

hac: a c


inr.inr.intro.inr.inl.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hca: c a

hab: a b

hac: a c

hcb: c b


inr.inr.intro.inr.inr.intro
a = b b = c c = a

Goals accomplished! 🐙
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α


btw a b cbtw c b aa = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hab: a b

hbc: b c

hac: a c

hcb: c b


inl.intro.inr.inr.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hab: a b

hbc: b c

hac: a c

hcb: c b


inl.intro.inr.inr.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hbc: b c

hca: c a

hcb: c b

hba: b a


inr.inl.intro.inl.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hbc: b c

hca: c a

hba: b a

hac: a c


inr.inl.intro.inr.inl.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hbc: b c

hca: c a

hac: a c

hcb: c b


inr.inl.intro.inr.inr.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hca: c a

hab: a b

hcb: c b

hba: b a


inr.inr.intro.inl.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hca: c a

hab: a b

hba: b a

hac: a c


inr.inr.intro.inr.inl.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hca: c a

hab: a b

hac: a c

hcb: c b


inr.inr.intro.inr.inr.intro
a = b b = c c = a

Goals accomplished! 🐙
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α


btw a b cbtw c b aa = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hbc: b c

hca: c a

hcb: c b

hba: b a


inr.inl.intro.inl.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hbc: b c

hca: c a

hcb: c b

hba: b a


inr.inl.intro.inl.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hbc: b c

hca: c a

hba: b a

hac: a c


inr.inl.intro.inr.inl.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hbc: b c

hca: c a

hac: a c

hcb: c b


inr.inl.intro.inr.inr.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hca: c a

hab: a b

hcb: c b

hba: b a


inr.inr.intro.inl.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hca: c a

hab: a b

hba: b a

hac: a c


inr.inr.intro.inr.inl.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hca: c a

hab: a b

hac: a c

hcb: c b


inr.inr.intro.inr.inr.intro
a = b b = c c = a

Goals accomplished! 🐙
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α


btw a b cbtw c b aa = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hbc: b c

hca: c a

hba: b a

hac: a c


inr.inl.intro.inr.inl.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hbc: b c

hca: c a

hba: b a

hac: a c


inr.inl.intro.inr.inl.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hbc: b c

hca: c a

hac: a c

hcb: c b


inr.inl.intro.inr.inr.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hca: c a

hab: a b

hcb: c b

hba: b a


inr.inr.intro.inl.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hca: c a

hab: a b

hba: b a

hac: a c


inr.inr.intro.inr.inl.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hca: c a

hab: a b

hac: a c

hcb: c b


inr.inr.intro.inr.inr.intro
a = b b = c c = a

Goals accomplished! 🐙
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α


btw a b cbtw c b aa = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hbc: b c

hca: c a

hac: a c

hcb: c b


inr.inl.intro.inr.inr.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hbc: b c

hca: c a

hac: a c

hcb: c b


inr.inl.intro.inr.inr.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hca: c a

hab: a b

hcb: c b

hba: b a


inr.inr.intro.inl.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hca: c a

hab: a b

hba: b a

hac: a c


inr.inr.intro.inr.inl.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hca: c a

hab: a b

hac: a c

hcb: c b


inr.inr.intro.inr.inr.intro
a = b b = c c = a

Goals accomplished! 🐙
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α


btw a b cbtw c b aa = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hca: c a

hab: a b

hcb: c b

hba: b a


inr.inr.intro.inl.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hca: c a

hab: a b

hcb: c b

hba: b a


inr.inr.intro.inl.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hca: c a

hab: a b

hba: b a

hac: a c


inr.inr.intro.inr.inl.intro
a = b b = c c = a
α: Type ?u.241064

inst✝: PartialOrder α

src✝:= Preorder.toCircularPreorder α: CircularPreorder α

a, b, c: α

hca: c a

hab: a b

hac: a c

hcb: c b


inr.inr.intro.inr.inr.intro
a = b b = c c = a