Coq рдХреЗ рд▓рд┐рдП рдирд░рдо рдкрд░рд┐рдЪрдп: рд░рдгрдиреАрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рд╕рд░рд▓реАрдХрд░рдг рдкреНрд░рдорд╛рдг


рдЗрд╕рд▓рд┐рдП, рдкрд┐рдЫрд▓реЗ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╣рдордиреЗ рдЙрдирдХреЗ рдКрдкрд░ рдирдП рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ред рдпрд╣ рд╕рдордп рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдЕрдкрдиреЗ рдЧреБрдгреЛрдВ рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕рд╛рдмрд┐рдд рдХрд░рдирд╛ рдФрд░ рд╕рд╛рдмрд┐рдд рдХрд░рдирд╛ рд╣реИред рдПрдХ рдЕрд░реНрде рдореЗрдВ, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдРрд╕рд╛ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ - рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ рд╣рдордиреЗ рдХреАрд╡рд░реНрдб Example рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рд╛ рд▓рд┐рдЦреА рдереА, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рддрд░реНрдХреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдХрдерди рд╢рд╛рдорд┐рд▓ рдереЗред рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, Coq рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рдорд╛рдирддрд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рдмрд╛рдПрдВ рдФрд░ рджрд╛рдПрдВ рдкрдХреНрд╖реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред

рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рд╛рдХреНрд╖реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдо рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ 0 рдмрд╛рдИрдВ рдУрд░ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдПрдХ рддрдЯрд╕реНрде рддрддреНрд╡ рд╣реИ:

 рдкреНрд░рдореЗрдп plus_O_n: forall n: nat, 0 + n = nред
 рд╕рдмреВрддред
   simplред  рд░рд┐рдлреНрд▓реЗрдХреНрд╕рд┐рд╡рд┐рдЯреАред  QEDред

рддреБрд▓рдирд╛ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ reflexivity рдХрдорд╛рдВрдб рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рджреЛрдиреЛрдВ рдкрдХреНрд╖реЛрдВ рдХреЛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИред

рдХреАрд╡рд░реНрдб simpl рдФрд░ reflexivity , рд░рдгрдиреАрддрд┐ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред рд░рдгрдиреАрддрд┐ рдХрд╛ рдореБрдЦреНрдп рд▓рдХреНрд╖реНрдп рдХреЛрдХ рдХреЛ рдпрд╣ рдмрддрд╛рдирд╛ рд╣реИ рдХрд┐ рдЖрд╡рд╢реНрдпрдХ рдмрдпрд╛рдиреЛрдВ рдХреА рд╢реБрджреНрдзрддрд╛ рдХреЛ рдХреИрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдХрд╛рд░реНрдпреЛрдВ рдХреА рдмрдЬрд╛рдп рд╕рдВрдХреАрд░реНрдг рд╕реАрдорд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рд╢реБрджреНрдзрддрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рд╛рдмрд┐рдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдЖрдЗрдП рд╣рдо рд╕рд╛рдмрд┐рдд рдХрд░реЗрдВ рдХрд┐ 2 + 2 = 4:

 Coq <Lemma using_auto: 2 + 2 = 4
 1 рд╕рдмрдЬреЗрд▓
  
   ============================
    2 + 2 = 4

 using_auto <рдкреНрд░рдорд╛рдгред  рдСрдЯреЛред  QEDред

 рдкреНрд░рдорд╛рдг рдкреВрд░рд╛ рд╣реБрдЖред

 рдСрдЯреЛред

 using_auto рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

рдЕрдзрд┐рдХрд╛рдВрд╢ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд░рдгрдиреАрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рд░рдгрдиреАрддрд┐ intros


рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬреЛ рддрд░реНрдХреЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдкрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рдЙрди рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рд╕рд╛рдмрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд▓реЗрдВрдЧреЗ рдЬрд┐рдирдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдЧрдгрд┐рддреАрдп рдХреНрд╡рд╛рдВрдЯрд┐рдлрд╛рдпрд░ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "рд╕рднреА рдкреНрд░рд╛рдХреГрддрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП n ") рдФрд░ рдкрд░рд┐рдХрд▓реНрдкрдирд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, " a = b ")ред intros рд░рдгрдиреАрддрд┐ intros рдорд╛рддреНрд░рд╛рддреНрдордХ рдФрд░ рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рдХреЛ рдмрдпрд╛рдиреЛрдВ рд╕реЗ рд╡рд░реНрддрдорд╛рди рддрд░реНрдХ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдЖрдЗрдП рд╣рдо рдпрд╣ рд╕рд╛рдмрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХрд┐рд╕реА рднреА рдкреНрд░рд╛рдХреГрддрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд╛рдПрдВ рдЧреБрдгрд╛ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╢реВрдиреНрдп рд╣реИ:

 рдкреНрд░рдореЗрдп рдмрд╣реБ_рд░реЛрдЬреЛ: forall n: nat, 0 * n = 0ред
 рд╕рдмреВрддред  рдЗрдВрдЯреНрд░реЛ рдПрдиред  рд░рд┐рдлреНрд▓реЗрдХреНрд╕рд┐рд╡рд┐рдЯреАред  QEDред

рдкреНрд░рдорд╛рдг рджреЗрдирд╛


рдПрдХ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

 рдкреНрд░рдореЗрдп plus_id_example: forall nm: nat,
 n = m ->
 n + m = m + nред

рдХрд┐рд╕реА рднреА n рдФрд░ m рд╕рдВрдмрдВрдз рдореЗрдВ рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдХрдерди рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдФрд░ рд╕рд┐рджреНрдз рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдпрд╣ рдкреНрд░рдореЗрдп рдЕрдзрд┐рдХ рд╕рдВрдХреАрд░реНрдг рдЧреБрдгреЛрдВ рдХреА рдмрд╛рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ n = m рд▓рд┐рдП рдзрд╛рд░рдг рдХрд░рддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ n рдФрд░ m рдордирдорд╛рдиреА рд╕рдВрдЦреНрдпрд╛ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рд╕рд╛рдмрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░рд▓реАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рд╕рд╛рдмрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдерд┐рддрд┐ рдореЗрдВ n рд╕рд╛рде m рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ ( n = m рдорд╛рдирддреЗ рд╣реБрдП), рд╣рдореЗрдВ рд╕рд╣реА рдкрд╣рдЪрд╛рди рдорд┐рд▓рддреА рд╣реИред рдХреЛрдХ рдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдмрджрд▓рд╛рд╡ рдХреЗ рд▓рд┐рдП рдмрддрд╛рдиреЗ рд╡рд╛рд▓реА рд░рдгрдиреАрддрд┐ рдХреЛ rewrite рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:

 рд╕рдмреВрддред
  intros n mред
  рдЗрдВрдЯреНрд░реЛ рдПрдЪред
  рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ -> рдПрдЪред
  рд░рд┐рдлреНрд▓реЗрдХреНрд╕рд┐рд╡рд┐рдЯреАред  QEDред

рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реБрдЖ, рдЗрд╕реЗ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЕрддреНрдпрдзрд┐рдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП CoqIDE рдХреЛ рдЪрд▓рд╛рдиреЗ рдФрд░ рдЗрд╕ рдкреНрд░рдорд╛рдг рдХреЛ рдПрдХ-рдПрдХ рдХрд░рдХреЗ рджреЗрдЦрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдБред

рдЗрд╕рд▓рд┐рдП, рд╣рдо рдкреНрд░рдореЗрдп рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рдорд╛рдг рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:

рдЫрд╡рд┐

рдЕрдЧрд▓рд╛ рдХрджрдо рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдХреНрд╡рд╛рдВрдЯрд┐рдлрд╛рдпрд░ рдФрд░ рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рд╕реЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рдорд╛рдг рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реИ (рдХреЛрдХреНрд╡рд┐рдб рдХреЗ рдКрдкрд░реА рджрд╛рд╣рд┐рдиреЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рд╣рдо рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рдорд╛рдг рдХрд╛ рд╡рд░реНрддрдорд╛рди рд╕рдВрджрд░реНрдн рдХреИрд╕реЗ рдмрджрд▓рддрд╛ рд╣реИ):

рдЫрд╡рд┐

рд╣рдо рдкреНрд░рдорд╛рдг рдХреЗ рд╡рд░реНрддрдорд╛рди рдЙрджреНрджреЗрд╢реНрдп рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

рдЫрд╡рд┐

рд╣рдо рдкреНрд░рдорд╛рдг рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдХрд░ рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:

рдЫрд╡рд┐

рдирд┐рд╖реНрдХрд░реНрд╖


рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рдЕрдзрд┐рдХ рдЙрдиреНрдирдд рдпреБрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЬрд╛рдиреЗрдВрдЧреЗ рдФрд░ Coq рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗред рдПрдХ рдмрд╛рд░ рдлрд┐рд░, рдореИрдВ рдкрд╛рдардХ рдХрд╛ рдзреНрдпрд╛рди рдХреЛрдХрд┐рджреЗ рдореЗрдВ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдорд╣рддреНрд╡ рдкрд░ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реВрдВред

рдкрд┐рдЫрд▓реЗ рднрд╛рдЧреЛрдВ рдХреЗ рд▓рд┐рдВрдХ:
  1. рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ ред
  2. рдкреНрд░реЗрд░рдХ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ ред

Source: https://habr.com/ru/post/In182936/


All Articles