Я хотел бы упростить доказательство индукцией по бережливому производству.
Я определил индуктивный тип с 3 конструкторами в Lean и бинарным отношением для этого типа. Я включил аксиомы, потому что Lean не позволил бы мне использовать их в качестве конструкторов для rel.
inductive Fintype : Type
| a : Fintype
| b : Fintype
| c : Fintype
inductive rel : Fintype → Fintype → Prop
| r1 : rel Fintype.a Fintype.b
| r2 : ∀ p : Prop, (p → rel Fintype.a Fintype.c )
| r3 : ∀ p : Prop, (¬ p → rel Fintype.c Fintype.b)
axiom asymmetry_for_Fintype : ∀ x y : Fintype, rel x y → ¬ rel y x
axiom trivial1 : ¬ rel Fintype.c Fintype.a
axiom trivial2 : ¬ rel Fintype.b Fintype.c
axiom trivial3 : ∀ p : Prop, rel Fintype.a Fintype.c → p
axiom trivial4 : ∀ p : Prop, rel Fintype.c Fintype.b → ¬ p
Целью было доказать следующую теорему:
def nw_o_2 (X : Type) (binrel : X → X → Prop) (x y : X) : Prop := ¬ binrel y x
def pw_o_2 (X : Type) (binrel : X → X → Prop )(x y : X) : Prop := ∀ z : X, (binrel z x → binrel z y) ∧ (binrel y z → binrel x z)
theorem simple17: ∀ x y : Fintype, nw_o_2 Fintype rel x y → pw_o_2 Fintype rel x y :=
Я доказал это индукцией по x, y и z; "z" происходит из определения pw_o_2 выше. Но доказательство довольно длинное (~ 136 строк). Есть ли другой способ получить более короткое доказательство?
all_goals
,try
иrepeat
. Однако я не удивлюсь, если вы действительно сможете превратить его в однострочник сdec_trivial
. Возможно, вы захотите прочитать последний. - person jmc   schedule 01.05.2019