LLM4PLC: Harnessing Large Language Models for Verifiable Programming of PLCs in Industrial Control Systems