There are lots of routine software generation and
maintenance tasks that make for simple, effective
reasoning about program artifacts and logic validation,
that it's an abstraction itself of the syntax, the
theorem-proving in usually deterministic models of
defined behavior in usual computational settings.
Software purposing and generation from schema is
so usual that term-rewriting systems and so on
pretty much make "logic" and the artifact fungible
(tractable).
https://en.wikipedia.org/wiki/Stratego/XT
Model-based software engineering has that there are
lots of lessons in formal automata usually un-learned
by usual coders given an entry point and I/O's
(and a miniature specification).
Discovering and extracting de facto models is
"a" and sometimes "the" usual exercise in coding
more-than-less "standard" logic of automata.