lean4-htt/tests/lean/rewrite1.lean
2016-07-29 13:03:23 -07:00

48 lines
1,020 B
Text

import data.nat
open nat tactic
example (a b : nat) : a * 0 + 0 + b + 0 = b :=
by do
rewrite `mul_zero,
trace_state,
rewrite `add_zero,
repeat $ rewrite `zero_add
print "---------"
example (a b : nat) (H : a + b * 0 + 0 = b) : b = a :=
by do
rewrite_at `mul_zero `H,
trace_state,
rewrite_at `add_zero `H,
rewrite_at `add_zero `H,
symmetry,
assumption
print "---------"
example (a : nat) : (0 + a) + (0 + a) + (0 + a) = a + a + a :=
by rewrite `zero_add
meta_definition rewrite_occs (th_name : name) (occs : list nat) : tactic unit :=
do th ← mk_const th_name,
rewrite_core reducible tt (occurrences.pos occs) ff th,
try reflexivity
print "---------"
example (a : nat) : (0 + a) + (0 + a) + (0 + a) = a + a + a :=
by do
rewrite_occs `zero_add [1, 3],
trace_state,
rewrite `zero_add
print "---------"
example (a : nat) : (0 + a) + (0 + a) + (0 + a) = a + a + a :=
by do
rewrite_occs `zero_add [2],
trace_state,
rewrite_occs `zero_add [2],
trace_state,
rewrite `zero_add