Yes, this is correct. The 'base case' for the coinduction is the Pure
constructor, and the induction is over levels of nesting of the Free
constructor.
The complete proofs are
-- 1. First functor law
-- a. Base case
fmap id (Pure a) = Pure (id a) -- Functor instance for Free
= Pure a -- definition of id
-- b. Inductive case
fmap id (Free fa) = Free (fmap (fmap id) fa) -- Functor instance for Free
= Free (fmap id fa) -- coinductive hypothesis
= Free fa -- 1st functor law for f
-- 2. Second functor law
-- a. Base case
fmap f (fmap g (Pure a)) = fmap f (Pure (g a)) -- Functor instance for Free
= Pure (f (g a)) -- Functor instance for Free
= Pure ((f . g) a) -- Definition of (.)
= fmap (f . g) (Pure a) -- Functor instance for Free
-- b. Inductive case
fmap f (fmap g (Free fa)) = fmap f (Free (fmap (fmap g) fa)) -- Functor instance for Free
= Free (fmap (fmap f) (fmap (fmap g) fa)) -- Functor instance for Free
= Free (fmap (fmap f . fmap g) fa) -- 2nd functor law for f
= Free (fmap (fmap (f . g) fa)) -- Coinductive hypothesis
= fmap (f . g) (Free fa) -- Functor instance for Free