exit
import data.list
open nat

set_option blast.strategy "cc"

constant f : nat → nat

example (a b c d : nat) : f d = f b → succ a = f b → f d = succ c → a = c :=
by blast

example (a b c d e : nat) : f d = f b → f e = f b → succ a = f b → f e = succ c → a = c :=
by blast

example (a b c d e : nat) : f d = f b → f e = f b → succ a = f b → f e = zero → false :=
by blast

example (a b c d e : nat) : f d = f b → f e = f b → succ a = f b → f e = 0 → false :=
by blast

open list
example (a b c d e f : nat) (l1 l2 l3 l4 : list nat) : l1 = l2 → l2 = l3 → l4 = [a, b, succ c] → l1 = [c, d, succ e] → l3 = l4 → c = e :=
by blast

example (a b c d e f : nat) (l1 l2 l3 l4 : list nat) : l4 = [a, b, succ (succ c)] → l1 = [c, d, succ (succ e)] → l3 = l4 → l1 = l2 → l2 = l3 → c = e :=
by blast

example (a b c d e f : nat) (l1 l2 l3 l4 : list nat) : l4 = [a, b, succ c] → l1 = [c, d, 0] → l3 = l4 → l1 = l2 → l2 = l3 → false :=
by blast

example (a b c d e f : nat) (l1 l2 l3 l4 : list nat) : l4 = [a, b, succ c] → l1 = nil → l3 = l4 → l1 = l2 → l2 = l3 → false :=
by blast

example (a b c d e f : nat) (l1 l2 l3 l4 : list nat) : l1 = l2 → l2 = l3 → l4 = [a, b, succ c] → l1 = nil → l3 = l4 → false :=
by blast
