Built with Alectryon. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑ Ctrl+↓ to navigate, Ctrl+πŸ–±οΈ to focus. On Mac, use ⌘ instead of Ctrl.
Hover-Settings: Show types: Show goals:
import Mathlib.Tactic
import Mathlib.Data.Real.Basic
import Mathlib.Tactic

universe u1 u2 u3

-- See Help.lean for a full list of tactics

/-

  The following follows Lean series on writing tactics

  https://www.vladasedlacek.cz/en/posts/lean-02-demo

-/

Warning: `incidence_geometry`: universes `u1`, `u2`, `u3` only occur together. This usually means there is a `max` expression in the type where none of these universes appear on their own. Note: This linter can be disabled with `set_option linter.checkUnivs false`
Warning: `incidence_geometry`: universes `u1`, `u2`, `u3` only occur together. This usually means there is a `max` expression in the type where none of these universes appear on their own. Note: This linter can be disabled with `set_option linter.checkUnivs false`
Warning: `class ... :=` has been deprecated in favor of `class ... where`. Note: This linter can be disabled with `set_option linter.deprecated false`
Warning: `incidence_geometry`: universes `u1`, `u2`, `u3` only occur together. This usually means there is a `max` expression in the type where none of these universes appear on their own. Note: This linter can be disabled with `set_option linter.checkUnivs false`
variable [
i: incidence_geometry
i
:
incidence_geometry: Type (max (max (u_1 + 1) (u_2 + 1)) (u_3 + 1))
incidence_geometry
] open incidence_geometry lemma
len_pos_of_neq₁: βˆ€ {a b : point}, a β‰  b β†’ 0 < length a b
len_pos_of_neq₁
(
ab: a β‰  b
ab
:
a: point
a
β‰ 
b: point
b
) :
0: ℝ
0
<
length: [self : incidence_geometry] β†’ point β†’ point β†’ ℝ
length
a: point
a
b: point
b
:=

Goals accomplished! πŸ™
i: incidence_geometry
a, b: point
ab: a β‰  b

0 < length a b

Goals accomplished! πŸ™
i: incidence_geometry
a, b: point
ab: a β‰  b
h: length a b = 0

False
i: incidence_geometry
a, b: point
ab: a β‰  b
h: length a b = 0

False
i: incidence_geometry
a, b: point
ab: a β‰  b
h: a = b

False
i: incidence_geometry
a, b: point
ab: a β‰  b
h: a = b

False
i: incidence_geometry
a, b: point
ab: a β‰  b
h: a = b

False

Goals accomplished! πŸ™
i: incidence_geometry
a, b: point
ab: a β‰  b
h₁:= id fun h => absurd (Eq.mp (congrArg (fun _a => _a) (propext length_eq_zero_iff)) h) ab: length a b β‰  0
hβ‚‚:= length_nonneg a b: 0 ≀ length a b

0 < length a b

Goals accomplished! πŸ™
-- #find |- ?a β‰  ?b lemma len_pos_of_neqβ‚‚ (ab : a β‰  b) : 0 < length a b :=

Goals accomplished! πŸ™
i: incidence_geometry
a, b: point
ab: a β‰  b
h1:= (Iff.not length_eq_zero_iff).mpr ab: length a b β‰  0

0 < length a b
i: incidence_geometry
a, b: point
ab: a β‰  b
h1:= (Iff.not length_eq_zero_iff).mpr ab: length a b β‰  0
h2:= length_nonneg a b: 0 ≀ length a b

0 < length a b

Goals accomplished! πŸ™
lemma
len_pos_of_neq₃: βˆ€ {a b : point}, a β‰  b β†’ 0 < length a b
len_pos_of_neq₃
(
ab: a β‰  b
ab
:
a: point
a
β‰ 
b: point
b
) :
0: ℝ
0
<
length: [self : incidence_geometry] β†’ point β†’ point β†’ ℝ
length
a: point
a
b: point
b
:=

Goals accomplished! πŸ™
i: incidence_geometry
a, b: point
ab: a β‰  b
h1:= (Iff.not length_eq_zero_iff).mpr ab: length a b β‰  0

0 < length a b
i: incidence_geometry
a, b: point
ab: a β‰  b
h1:= (Iff.not length_eq_zero_iff).mpr ab: length a b β‰  0
h2:= length_nonneg a b: 0 ≀ length a b

0 < length a b

Goals accomplished! πŸ™
lemma
len_pos_of_neqβ‚„: βˆ€ {a b : point}, a β‰  b β†’ 0 < length a b
len_pos_of_neqβ‚„
(
ab: a β‰  b
ab
:
a: point
a
β‰ 
b: point
b
) :
0: ℝ
0
<
length: [self : incidence_geometry] β†’ point β†’ point β†’ ℝ
length
a: point
a
b: point
b
:=

Goals accomplished! πŸ™
i: incidence_geometry
a, b: point
ab: a β‰  b
h1:= (Iff.not length_eq_zero_iff).mpr ab: length a b β‰  0

0 < length a b
i: incidence_geometry
a, b: point
ab: a β‰  b
h1:= (Iff.not length_eq_zero_iff).mpr ab: length a b β‰  0
h2:= length_nonneg a b: 0 ≀ length a b

0 < length a b

Goals accomplished! πŸ™
lemma
len_pos_of_neq: βˆ€ [i : incidence_geometry] {a b : point}, a β‰  b β†’ 0 < length a b
len_pos_of_neq
(
ab: a β‰  b
ab
:
a: point
a
β‰ 
b: point
b
) :
0: ℝ
0
<
length: [self : incidence_geometry] β†’ point β†’ point β†’ ℝ
length
a: point
a
b: point
b
:=
len_pos_of_neqβ‚‚: βˆ€ [i : incidence_geometry] {a b : point}, a β‰  b β†’ 0 < length a b
len_pos_of_neqβ‚‚
ab: a β‰  b
ab
theorem
length_sum_perm_of_B₁: βˆ€ {a b c : point}, B a b c β†’ 0 < length a b ∧ 0 < length b a
length_sum_perm_of_B₁
(
Babc: B a b c
Babc
:
B: [self : incidence_geometry] β†’ point β†’ point β†’ point β†’ Prop
B
a: point
a
b: point
b
c: point
c
) :
0: ℝ
0
<
length: [self : incidence_geometry] β†’ point β†’ point β†’ ℝ
length
a: point
a
b: point
b
∧
0: ℝ
0
<
length: [self : incidence_geometry] β†’ point β†’ point β†’ ℝ
length
b: point
b
a: point
a
:=

Goals accomplished! πŸ™
i: incidence_geometry
a, b, c: point
Babc: B a b c
ab:= ne_12_of_B Babc: a β‰  b

0 < length a b ∧ 0 < length b a
i: incidence_geometry
a, b, c: point
Babc: B a b c
ab:= ne_12_of_B Babc: a β‰  b
ab_pos:= len_pos_of_neq ab: 0 < length a b

0 < length a b ∧ 0 < length b a
i: incidence_geometry
a, b, c: point
Babc: B a b c
ab:= ne_12_of_B Babc: a β‰  b
ab_pos:= len_pos_of_neq ab: 0 < length a b

left
0 < length a b
i: incidence_geometry
a, b, c: point
Babc: B a b c
ab:= ne_12_of_B Babc: a β‰  b
ab_pos:= len_pos_of_neq ab: 0 < length a b
0 < length b a
i: incidence_geometry
a, b, c: point
Babc: B a b c
ab:= ne_12_of_B Babc: a β‰  b
ab_pos:= len_pos_of_neq ab: 0 < length a b

left
0 < length a b

Goals accomplished! πŸ™
i: incidence_geometry
a, b, c: point
Babc: B a b c
ab:= ne_12_of_B Babc: a β‰  b
ab_pos:= len_pos_of_neq ab: 0 < length a b

right
0 < length b a
i: incidence_geometry
a, b, c: point
Babc: B a b c
ab:= ne_12_of_B Babc: a β‰  b
ab_pos:= len_pos_of_neq ab: 0 < length a b

right
0 < length b a
i: incidence_geometry
a, b, c: point
Babc: B a b c
ab:= ne_12_of_B Babc: a β‰  b
ab_pos: 0 < length b a

right
0 < length b a
i: incidence_geometry
a, b, c: point
Babc: B a b c
ab:= ne_12_of_B Babc: a β‰  b
ab_pos: 0 < length b a

right
0 < length b a
i: incidence_geometry
a, b, c: point
Babc: B a b c
ab:= ne_12_of_B Babc: a β‰  b
ab_pos: 0 < length b a

right
0 < length b a

Goals accomplished! πŸ™
theorem
length_sum_perm_of_Bβ‚‚: βˆ€ {a b c : point}, B a b c β†’ 0 < length a b ∧ 0 < length b a
length_sum_perm_of_Bβ‚‚
(
Babc: B a b c
Babc
:
B: [self : incidence_geometry] β†’ point β†’ point β†’ point β†’ Prop
B
a: point
a
b: point
b
c: point
c
) :
0: ℝ
0
<
length: [self : incidence_geometry] β†’ point β†’ point β†’ ℝ
length
a: point
a
b: point
b
∧
0: ℝ
0
<
length: [self : incidence_geometry] β†’ point β†’ point β†’ ℝ
length
b: point
b
a: point
a
:=

Goals accomplished! πŸ™
i: incidence_geometry
a, b, c: point
Babc: B a b c

left
0 < length a b
i: incidence_geometry
a, b, c: point
Babc: B a b c
0 < length b a
i: incidence_geometry
a, b, c: point
Babc: B a b c

left
0 < length a b

Goals accomplished! πŸ™
i: incidence_geometry
a, b, c: point
Babc: B a b c

right
0 < length b a

Goals accomplished! πŸ™
theorem
length_sum_perm_of_B₃: βˆ€ [i : incidence_geometry] {a b c : point}, B a b c β†’ 0 < length a b ∧ 0 < length b a
length_sum_perm_of_B₃
(
Babc: B a b c
Babc
:
B: [self : incidence_geometry] β†’ point β†’ point β†’ point β†’ Prop
B
a: point
a
b: point
b
c: point
c
) :
0: ℝ
0
<
length: [self : incidence_geometry] β†’ point β†’ point β†’ ℝ
length
a: point
a
b: point
b
∧
0: ℝ
0
<
length: [self : incidence_geometry] β†’ point β†’ point β†’ ℝ
length
b: point
b
a: point
a
:=

Goals accomplished! πŸ™
i: incidence_geometry
a, b, c: point
Babc: B a b c

0 < length a b ∧ 0 < length b a
Warning: This simp argument is unused: ne_eq Hint: Omit it from the simp argument list. simp only [ne_eΜ΅qΜ΅,Μ΅ Μ΅nΜ΅eΜ΅_Μ΅12_of_B Babc, len_pos_of_neq, length_symm, and_self] Note: This linter can be disabled with `set_option linter.unusedSimpArgs false`
i: incidence_geometry
a, b, c: point
Babc: B a b c

0 < length a b ∧ 0 < length b a
i: incidence_geometry
a, b, c: point
Babc: B a b c

0 < length a b ∧ 0 < length b a
Warning: This simp argument is unused: ne_12_of_B Babc Hint: Omit it from the simp argument list. simp only [ne_eq, nΜ΅eΜ΅_Μ΅1Μ΅2Μ΅_Μ΅oΜ΅fΜ΅_Μ΅BΜ΅ Μ΅BΜ΅aΜ΅bΜ΅cΜ΅,Μ΅ Μ΅len_pos_of_neq, length_symm, and_self] Note: This linter can be disabled with `set_option linter.unusedSimpArgs false`
i: incidence_geometry
a, b, c: point
Babc: B a b c

0 < length a b ∧ 0 < length b a
i: incidence_geometry
a, b, c: point
Babc: B a b c

0 < length a b ∧ 0 < length b a
Warning: This simp argument is unused: len_pos_of_neq Hint: Omit it from the simp argument list. simp only [ne_eq, ne_12_of_B Babc, len_Μ΅pΜ΅oΜ΅sΜ΅_Μ΅oΜ΅fΜ΅_Μ΅nΜ΅eΜ΅qΜ΅,Μ΅ Μ΅lΜ΅eΜ΅nΜ΅gth_symm, and_self] Note: This linter can be disabled with `set_option linter.unusedSimpArgs false`
i: incidence_geometry
a, b, c: point
Babc: B a b c

0 < length a b ∧ 0 < length b a
i: incidence_geometry
a, b, c: point
Babc: B a b c

0 < length a b

Goals accomplished! πŸ™