415ca2b93f
It is the f_equal described at issue #500.
34 lines
714 B
Text
34 lines
714 B
Text
import data.list
|
|
|
|
example (f : nat → nat → nat) (a b c : nat) : b = c → f a b = f a c :=
|
|
begin
|
|
intro bc,
|
|
congruence,
|
|
assumption
|
|
end
|
|
|
|
example (f g : nat → nat → nat) (a b c : nat) : f = g → b = c → f a b = g a c :=
|
|
begin
|
|
intro fg bc,
|
|
congruence,
|
|
exact fg,
|
|
exact bc
|
|
end
|
|
|
|
example (f g : nat → nat → nat) (a b c : nat) : f = g → b = c → f a b = g a c :=
|
|
by intros; congruence; assumption
|
|
|
|
open list
|
|
|
|
example (a b : nat) : a = b → [a] ++ [b] = [b] ++ [a] :=
|
|
begin
|
|
intro ab,
|
|
congruence,
|
|
{congruence,
|
|
exact ab},
|
|
{congruence,
|
|
exact (eq.symm ab)}
|
|
end
|
|
|
|
example (a b : nat) : a = b → [a] ++ [b] = [b] ++ [a] :=
|
|
by intros; repeat (congruence | assumption | apply eq.symm)
|